Копроцесори. Копроцесор - какво е това? Описание и обратна връзка за работата Каква е целта на копроцесора

Математически копроцесор

Математически копроцесор - копроцесор за разширяване на набора от инструкции на централния процесор и предоставянето му на функционалност на модул за работа с плаваща запетая, за процесори, които нямат интегриран модул. На фиг. 4 показва математическия копроцесор на дънната платка.

Фиг. 1. Математически копроцесор

Въпреки факта, че почти всички процесори, като се започне от 486-ия, са оборудвани с интегриран копроцесор, тяхната производителност може да варира. В исторически план копроцесорите на Intel са били по-бързи от тези на AMD и Cyrix, но това започна да се променя през последните години.

Единицата с плаваща запетая (или с плаваща запетая) е част от процесора за извършване на широк набор от математически операции върху реални числа.

Простите процесори за цели числа за работа с реални числа и математически операции изискват подходящи поддържащи процедури и време за тяхното изпълнение. Модулът за операции с плаваща запетая поддържа работа с тях на примитивно ниво - зареждането, разтоварването на реално число (от специализирани регистри) или математическа операция върху тях се извършва с една команда, поради което се постига значително ускоряване на такива операции.

Математическите копроцесори се наричат ​​още процесори с плаваща запетая, тъй като те показват своите възможности особено ярко в тази област на математиката. Числата с плаваща запетая често се използват в научни изчисления и обикновено се представят от мантиса и ордината. Предимството, получено от инсталирането на математически копроцесор, зависи от това какви задачи се решават на компютъра. Според Intel, копроцесорът може да намали времето за изпълнение на математически операции като умножение, деление, степенуване с 80% или повече. Скоростта на извършване на прости операции, като добавяне и изваждане, практически не намалява.

Сигналите, вградени в микропроцесора, позволяват да се прехвърли работата към копроцесора и след това да се получат резултатите от обработката.

За да използвате аритметичния копроцесор, включен в компютъра, са необходими програми, които могат да издават специални кодове, необходими за стартиране на копроцесора.

Микропроцесорите 8088, 80286, 80386 са проектирани така, че да позволяват използването на аритметични копроцесори 8087, 80287, 80387 съответно на Intel. По-късните модели микропроцесори имат вградени копроцесори.

От практическа гледна точка производителността на система, свързана с подготовка на текст и поддръжка на база данни, функции, които не изискват сложни математически изчисления, не може да бъде подобрена от математически копроцесор. Копроцесорът и главният микропроцесор могат да работят на различни тактови честоти (от собствените си тактови генератори).

Изпълнимата програма трябва сама да определи наличието на копроцесор и след това да използва инструкциите, написани за нея; в противен случай копроцесорът само черпи ток и не прави нищо. Повечето съвременни програми, предназначени да използват копроцесори, откриват присъствието му и използват предоставените възможности. Копроцесорите се използват най-ефективно в програми със сложни математически изчисления: в електронни таблици, бази данни, статистически програми и системи за компютърно проектиране. В същото време, когато работите с текстови редактори, копроцесорът изобщо не се използва.

Простите "целочислени" процесори за работа с реални числа и математически операции изискват подходящи поддържащи процедури и време за тяхното изпълнение. Модулът за операции с плаваща запетая поддържа работа с тях на примитивно ниво - зареждането, разтоварването на реално число (от специализирани регистри) или математическа операция върху тях се извършва с една команда, поради което се постига значително ускоряване на такива операции . Вътре в FPU числата се съхраняват в 80-битов формат с плаваща запетая, за запис или четене от паметта те могат да се използват:

Реални числа в три формата: кратък (32 бита), дълъг (64 бита) и разширен (80 бита).

Цели двоични числа в три формата: 16, 32 и 64 бита.

Пакетирани цели десетични числа (BCD) – Максималната дължина на числото е 18 пакетирани десетични цифри (72 бита).

FPU поддържа и специални цифрови стойности:

Деморализираните реални числа са числа, които са по-малки от минималното нормализирано число. При формиране на такава стойност в определен стеков регистър се формира специална стойност (10) в тага на регистъра TWR, съответстващ на този регистър;

Безкрайност (положителна и отрицателна) възниква, когато ненулева стойност се раздели на нула, както и при преливане. Когато такава стойност се формира в определен стеков регистър, се формира специална стойност (10) в тага на регистъра TWR, съответстващ на този регистър.

Не-число, има два вида не-числа:

Сигнални номера. Копроцесорът реагира на появата на това число. В регистъра на стека, повдигане на изключение за невалидна операция. Копроцесорът не генерира числа на сигнала. Програмистите формират такива числа умишлено, за да предизвикат изключение в правилната ситуация.

Спокойни (тихи) неброя. Копроцесорът може да формира тихи не-числа в отговор на определени изключения, като например реалното число на несигурност.

Нула - Във формат с плаваща запетая нулата също се счита за специална стойност.

неясноти и неподдържани формати. Има много набори от битове, които могат да бъдат представени в разширен формат на реални числа. За повечето от техните стойности се хвърля изключение за невалидна операция.

Специален процесор, който е конфигуриран да извършва математически операции и ги изпълнява многократно по-бързо от централния процесор. По този начин беше възможно да се увеличи производителността на централния процесор чрез специален модул - математически копроцесор. За разлика от централния процесор, математическият копроцесор не контролира по-голямата част от схемите на компютъра. Напротив, всички дейности на математическия копроцесор се определят от централния процесор, който може да изпраща команди до математическия копроцесор за изпълнение на програми и генериране на резултати. В нормален режим централния процесор изпълнява всички функции на компютъра. И само когато се срещне задача, с която математическият копроцесор може да се справи по-добре, към нея се подават данни и команди, а централният процесор чака резултатите. Такива задачи включват например математически операции между реални числа (операции между числа с плаваща запетая), където числата са представени от мантисата и ординатата (десетичната степен на числото, която определя позицията на десетичната запетая). Ако по-рано, в компютрите от първите поколения (i80386, i80486), модулът на математическия копроцесор беше инсталиран на дънната платка като отделен чип, тогава в съвременните компютри не се изисква използването на математически копроцесор като отделен чип, тъй като той вече е вграден в централния процесор. Ползите, които получавате от използването на математически копроцесор, зависят от вида задачи, които се изпълняват на персонален компютър.

Ползите, които получавате от инсталирането на математически копроцесор, зависят от това какви задачи се решават на вашия компютър. Според Intel копроцесорът може да намали времето за изпълнение на математически операции като умножение, деление и степенуване с 80% или повече. Скоростта на извършване на прости операции, като събиране и изваждане, може изобщо да не се намали.

Копроцесорът е специална интегрална схема, която работи във връзка с

основен процесор. Обикновено копроцесорът е конфигуриран да изпълнява

някаква специфична функция – математическа операция или графична

представителство. И копроцесорът може да изпълнява тази операция много пъти

по-бърз от основния процесор. По този начин, компютър с копроцесор

работи много по-бързо.

Копроцесорът е обикновен микропроцесор, но не толкова универсален. Обикновено

копроцесорът е разработен като специално устройство за реализиране на специфична

специфична функция. Тъй като репертоарът на копроцесора е ограничен, той може да повтори

да анализира възложените му функции като никой друг.

Както всеки друг микропроцесор, копроцесорът работи на същите принципи. Той

просто изпълнява програми, съдържащи последователност от микропроцесор

команди. SoP процесорът не контролира по-голямата част от схемите на компютъра.

В нормален режим микропроцесорът изпълнява всички функции на компютъра. И само когато

има задача, с която копроцесорът може да се справи по-добре, към него се прехвърлят данни

и команди за управление, а процесорът чака резултатите.

Най-често използваните копроцесори в компютрите са математическите копроцесори.

копроцесори. По математика те се специализират в умножение и деление на числа.

Математическите копроцесори се наричат ​​още процесори с плаваща запетая.

защото те показват особено своя потенциал в тази област

математика. Числата с плаваща запетая често се използват в научни изчисления и

обикновено се представят от мантисата и ординатата.

Ползата от инсталирането на математически копроцесор зависи от

какви задачи се изпълняват на компютъра. Според копроцесора на Intel

може да намали времето за изпълнение на математически операции като напр

умножение, деление, степенуване с 80% или повече.

Скоростта на извършване на прости операции като събиране и изваждане е практически

не намалява.

От практическа гледна точка ефективността на системата за обучение

текстове и поддръжка на бази данни – функции, които не изискват сложни математически

изчисленията не могат да бъдат подобрени от математически копроцесор.

Копроцесорът и главният микропроцесор могат да работят на различни тактови честоти

(от собствени тактови генератори).

Когато съотношението на честотите на микропроцесора и копроцесора се изрази като цяло число,

те работят синхронно и могат оптимално да си предават информация

начин. Несинхронизираната работа изисква едното или другото от тях

изчака завършването на цикъла на партньора си, което води до появата

малък, но реален период на изчакване.

Семейството на копроцесорите на Intel се състои от: 8087, 80287, 80387, 80387SX.

Всеки един е специално проектиран да работи със съответния

микропроцесор от основното семейство Intel. Всяка от тези четири има своя собствена

характеристики. Ограничения за еднократна обработка на информация в

8, 16, 32 бита са много назад. Копроцесорите на Intel обработват веднага 80

малко. Всеки копроцесор съдържа осем 80-битови регистъра, в които той и

извършва своите изчисления. Те работят с 32-, 64- или 80-битови числа с

плаваща запетая; 32 или 64 бита цели числа. Като правило, копроцесори

работят като придатъци на центр.

И двата процесора висят на адресните информационни линии на компютъра и изпълняват

всеки със свои собствени команди, както се появяват в програмата. копроцесорите могат

изпълняват функциите си паралелно с работата на централния процесор, т.е

и двата мозъка в случая мислят едновременно, защото всеки от тях чете

техните команди директно от шината и процесорът не трябва да бъде прекъсван,

за подаване на команда към копроцесора.

Този копроцесор е проектиран специално за използване с Intel 8086,

8088, 80186, 80188. Следователно той е идентичен с тези микропроцесори

възможности за адресиране и възприемане на информация. Освен това самият този копроцесор

е конфигуриран за размера на шината за данни - осем или шестнадесет тибита (8086 или

8088 семейства). Инсталира се в стандартен 40-пинов конектор и

увеличава списъка с компютърни команди с 68 единици.

Има три модификации на този копроцесор, които се различават по честота: 5, 8,

По същия начин 80286 е разширение на 8086, 80287 е разширение на 8087.

Основното предимство на 80287 е способността да функционира както в реално, така и в

и в защитен режим 80286 микропроцесор. Има способността да адресира

всички 16M памет.

80287 е почти напълно съвместим с 8087 и може да използва почти всичко

софтуера на последния. Основната функционална разлика между тях

копроцесори в начина на справяне със ситуации на повреда. Когато се открие грешка, тези

чиповете могат да се държат различно. Софтуерът обаче може

компенсира тези несъответствия.

80287 се намира в 40-пинов DIP пакет. Но не като пример за по-младите

колега, 80287 може да работи с различен от централния микропроцесор

тактова честота.

микропроцесор, има вградена делителна верига, която намалява вътр

три пъти по-голяма честота.

Използвайки собствен генератор, 80287 може значително да увеличи своя

производителност.

Точно като 8087, 80287 има четири модификации, които се различават по

80287 е съвместим с 80386 микропроцесор. Те обаче работят по различен начин

честоти и следователно изисква специален интерфейс за достъп до шината

80386. Освен това, тъй като 80287 е 16-битов чип, всички връзки с

80386 трябва да се реализира в 16-битови думи, което потенциално намалява

производителност.

80387 и 80387SX

По същия начин, по който Intel, вземайки предвид уроците от миналото, произведе 80386, 80387 стана

по-нататъшно развитие на копроцесора 80287. Останалият екип е съвместим с

80287, 80387 увеличиха скоростта на манипулиране на данни. Но отново имаше различия

отказ при обработката на грешки. Но възможностите на 80387 бяха по-големи - той се реализира

всички трансцендентални и логаритмични функции.

80387SX - подобен по всякакъв начин на 80387, но проектиран да работи върху него

16-битова шина 80386SX вместо 32-битова шина за данни.

80387 и 80387SX могат да изпълняват всички програми за 80287. Обратното не е

еквивалентен. Основният проблем при 387s са малко по-различните резултати

изчисления на трансценденталната функция от 80287.

80387 работи на същата честота като процесора. На разположение

съответните модификации на този копроцесор до 25 MHz.

Копроцесор - специализиран процесор, който разширява възможностите на централния процесор на компютърна система, но е проектиран като отделен функционален модул. Физически копроцесорът може да бъде отделен чип или може да бъде вграден в централния процесор.

Има следните видове копроцесори:

Математически копроцесори с общо предназначение, обикновено ускоряващи изчисленията с плаваща запетая,

I / O копроцесори (например Intel 8089), които разтоварват централния процесор от управлението на I / O операции или разширяват стандартното адресно пространство на процесора,

Копроцесори за извършване на всякакви високоспециализирани изчисления.

Копроцесорът не е пълноценен процесор, тъй като не изпълнява много операции, характерни за процесора (например не може да работи с програма и да изчислява адреси на паметта), като е периферно устройство на централния процесор.

Една от схемите за взаимодействие между централния процесор и копроцесора, използвана по-специално в копроцесорите x86, се реализира, както следва:

Копроцесорът е свързан към шините на централния процесор, а също така има няколко специални сигнала за синхронизиране на процесорите един с друг.

Част от кодовете на инструкциите на централния процесор са запазени за копроцесора. Централният процесор декодира и изпълнява последователни инструкции. Когато възникне инструкция, която трябва да бъде изпълнена от копроцесора, процесорът изпраща код на операция към копроцесора. В този случай, ако е необходим допълнителен достъп до паметта (за четене или запис на резултати), копроцесорът "захваща" шината за данни.

След получаване на командата и необходимите данни, копроцесорът започва нейното изпълнение. Докато копроцесорът изпълнява инструкцията, процесорът изпълнява програмата по-нататък, успоредно с изчисленията на копроцесора. Ако следващата инструкция също е инструкция на копроцесора, процесорът спира и изчаква копроцесорът да завърши изпълнението на предишната инструкция.

Има специална инструкция за изчакване (FWAIT), която принудително спира процесора преди завършване на изчисленията (ако резултатите са необходими за продължаване на програмата). В момента инструкцията се използва само за обработка на изключения при работа с плаваща запетая, работата на процесора и копроцесора се синхронизира прозрачно за програмиста.

Започвайки с процесора Intel486DX, модулът с плаваща запетая беше интегриран в процесора и наречен FPU. В линията Intel486SX FPU модулът беше деактивиран (първоначално процесорите с дефектен FPU попаднаха в тази линия). За процесорите Intel486SX беше произведен "копроцесор" Intel487SX, но всъщност това беше процесор Intel486DX и когато беше инсталиран, процесорът Intel486SX беше деактивиран.


Въпреки интеграцията, FPU в процесорите i486 е непроменен копроцесор, направен на същия чип, освен това веригата FPU i486 е напълно идентична с копроцесора от предишното поколение 387DX до тактовата честота (половината от честотата на централния процесор). Истинската интеграция на FPU с CPU започна едва с процесорите Pentium MMX.

Копроцесорите за платформата x86, произведени от Weitek, бяха широко използвани през съответния период - те пуснаха 1167, 2167 под формата на чипсет и чипове 3167, 4167 за процесори 8086, 80286, 80386, 80486, съответно. В сравнение с копроцесорите на Intel, те осигуряват 2-3 пъти по-висока производителност, но имат несъвместим софтуерен интерфейс, реализиран чрез технологията за картографиране на паметта. Всичко се свеждаше до факта, че основният процесор трябваше да записва информация в определени области на паметта, контролирани от копроцесора. Конкретният адрес, на който е направен записът, се интерпретира като конкретна команда. Въпреки несъвместимостта, копроцесорите на Weitek бяха широко поддържани както от разработчиците на софтуер, така и от производителите на дънни платки, които включват такъв чип.

Редица други компании произвеждат различни несъвместими математически копроцесори, свързани с тях чрез I/O портове или BIOS прекъсвания, но те не са широко използвани.

Копроцесорът е ASIC, който работи във връзка с процесора, но е по-малко гъвкав. За разлика от централния процесор, копроцесорът няма програмен брояч. Копроцесорът е предназначен да изпълнява определен набор от функции, например: извършване на операции с реални числа - математически копроцесор, подготовка на графични изображения и триизмерни сцени - графичен копроцесор, цифрова обработка на сигнали - сигнален копроцесор и др.

Използването на копроцесори с различна функционалност позволява решаването на широк кръг от проблеми:

обработка на икономическа информация;

моделиране;

· графични трансформации;

Индустриален мениджмънт;

· Системи за цифрово управление;

· роботи;

· навигация;

събиране на данни и др.

Кеш-памет

Кеш паметта е високоскоростна памет, разположена на същия чип с процесора или външна за процесора. Кешът служи като високоскоростен буфер между процесора и относително бавната основна памет. Идеята за кеш памет се основава на прогнозиране на най-вероятните достъпи на процесора до RAM.

Ако процесорът е осъществил достъп до който и да е обект на RAM, тогава с голяма вероятност той скоро отново ще получи достъп до този обект. Пример за тази ситуация би бил код или данни в цикли.

Важно е да се отбележи, че за координиране на съдържанието на кеша и RAM се използват три метода за запис:

· Запис чрез - RAM се актуализира едновременно с кеш паметта.

· Буферирано записване - информацията се забавя в кеш буфера, преди да бъде записана в RAM и пренаписана в RAM в тези цикли, когато процесорът няма достъп до нея.

Обратно записване (обратно записване) - използва се битът за промяна в полето на етикета и редът се пренаписва в RAM само ако битът за промяна е 1.

В структурата на кеша има два типа блокове данни:

Памет за показване на данни (самите данни, дублирани от RAM);

Памет за етикети (функции, указващи местоположението на кеширани данни в RAM).

Пространството на паметта за картографиране на данни в кеша е разделено на редове - блокове с фиксирана дължина (например 32, 64 или 128 байта). Всеки кеш ред може да съдържа непрекъснат подреден блок от байтове от основната памет. Кой блок от RAM е картографиран към даден ред на кеша се определя от тага на реда и алгоритъма за картографиране. Според алгоритмите за съпоставяне на RAM към кеша се разграничават три типа кеш памет:

напълно асоциативен кеш;

кеш за директно картографиране;

· множествен асоциативен кеш.

За напълно асоциативни cache е характерно, че кеш контролерът може да постави всеки блок от RAM във всеки ред на кеша.

В този случай физическият адрес се разделя на две части: отместването в блока (ред на кеша) и номера на блока. Когато блок се постави в кеша, номерът на блока се съхранява в тага на съответния ред. Когато процесорът получи достъп до кеша за необходим блок, пропускът в кеша ще бъде открит само след сравняване на етикетите на всички редове с номера на блока.

Едно от основните предимства на този метод на показване е доброто използване на RAM, т.к. няма ограничения за това кой блок трябва да бъде съпоставен към кой кеш ред. Недостатъците включват сложното хардуерно изпълнение на този метод, което изисква голям брой компоненти на схемата (главно компаратори), което води до увеличаване на времето за достъп до такъв кеш и увеличаване на цената му.

Кеш за директно картографиране(или еднопосочен асоциативен кеш). В този случай адресът на паметта (номерът на блок) еднозначно определя реда на кеша, в който ще бъде поставен този блок. Физическият адрес е разделен на три части: блоково отместване (кеш линия), номер на кеш линия и teᴦ. Този или онзи блок винаги ще бъде поставен в строго определен ред на кеша, замествайки друг блок, съхраняван там, ако е изключително важен. Когато процесорът получи достъп до кеша за необходим блок, той трябва само да провери етикета на един ред, за да определи дали е бил успех или пропуск на кеша.

Очевидните предимства на този алгоритъм са простотата и ниската цена на изпълнение. Недостатъците включват ниската ефективност на такъв кеш поради вероятното често презареждане на редове. Например, при достъп до всяко 64-то място в паметта в системата, кеш контролерът ще бъде принуден постоянно да презарежда един и същ кеш ред, без изобщо да използва останалите.

Множествен асоциативен кеш(или частично асоциативен кеш). Това е компромис между първите два алгоритъма.

При този метод за организиране на кеш паметта редовете се комбинират в групи, които могат да включват 2/4/8/: редове. В съответствие с броя на редовете в такива групи се разграничават 2-вход, 4-вход и т.н. асоциативен кеш. При достъп до паметта физическият адрес се разделя на три части: отместването в блока (ред на кеша), номер на група (набор) и teᴦ. Блокът памет, чийто адрес съответства на определена група, трябва да бъде поставен във всеки ред от тази група, а съответната стойност се поставя в тага на реда. Очевидно в избраната група е спазен принципът на асоциативността. От друга страна, конкретен блок може да попадне само в строго определена група, която отразява принципа на организиране на кеш за директно картографиране. За да може процесорът да идентифицира пропуск в кеша, той ще трябва да провери етикетите само на една група (2/4/8/: линии).

Има следните видове копроцесори:

  • математически копроцесори с общо предназначение, обикновено ускоряващи изчисления с плаваща запетая,
  • входно-изходни копроцесори (например - Intel 8089), разтоварвайки централния процесор от управлението на входно-изходните операции или разширявайки стандартното адресно пространство на процесора,
  • копроцесори за извършване на високоспециализирани изчисления.

Копроцесорите могат да бъдат част от логически набор, разработен от една конкретна компания (например Intel произвежда копроцесори за 8086 и 8088 процесори и 8089, Motorola - Motorola 68881 копроцесор) или произведени от производител на трета страна (например Weitek (английски) за Motorola m68k и 1067 за Intel 80286).

Копроцесор в програмирането

Копроцесорът разширява системата от инструкции на централния процесор, следователно, за да го използва, програмата (компилирана без интерпретация и извикване на външни библиотеки) трябва да съдържа тези инструкции. Настройките на съвременните компилатори за езици на високо ниво за x86 процесори често ви позволяват да изберете дали да използвате математически копроцесор или не, което е особено важно при създаване на код, който ще се изпълнява в хардуерен манипулатор на прекъсвания.

Има и периферни процесори, предназначени да управляват периферни устройства и да разтоварват централния процесор, а именно:

Напишете отзив за статията "Копроцесор"

Бележки

Вижте също

Връзки

  • whatis.techtarget.com/definition/coprocessor
  • www.webopedia.com/TERM/C/coprocessor.html
  • www.pcmag.com/encyclopedia/term/46625/math-coprocessor
  • www.trevormarshall.com/old_papers/Approaching-Desktop-Supercomputer.pdf 1990 – Изчислителни копроцесори, ранни 32-битови изчислителни копроцесори
  • Хансен, Пол Марк, ноември 1988 г

Откъс, характеризиращ копроцесора

Принцеса Мария написа, че е отчаяна от недоразумението, което се е случило между тях. Каквито и да са чувствата на баща й, пише принцеса Мери, тя помоли Наташа да повярва, че не може да не я обича като избрана от брат си, за чието щастие е готова да пожертва всичко.
„Въпреки това, пише тя, не мислете, че баща ми е бил зле настроен към вас. Той е болен и стар човек, който трябва да бъде извинен; но той е мил, щедър и ще обича този, който ще направи сина му щастлив. Освен това принцеса Мери поиска от Наташа да определи време, когато може да я види отново.
След като прочете писмото, Наташа седна на масата за писане, за да напише отговор: „Chere princesse“, [Скъпа принцесо,] тя написа бързо, механично и спря. „Какво друго би могла да напише след всичко, което се случи вчера? Да, да, всичко това беше, а сега всичко е различно ”, помисли си тя, седнала над писмото, което беше започнала. „Да му откажа ли? Наистина ли е необходимо? Ужасно е! ”... И за да не мисли тези ужасни мисли, тя отиде при Соня и заедно с нея започнаха да подреждат моделите.
След вечеря Наташа отиде в стаята си и отново взе писмото на принцеса Мария. „Всичко свърши ли вече? тя мислеше. Нима всичко се случи толкова скоро и унищожи всичко, което беше изчезнало преди? Тя си спомни любовта си към принц Андрей с цялата си предишна сила и в същото време почувства, че обича Курагин. Тя живо си представяше себе си като съпруга на княз Андрей, представяше си картината на щастието с него, повтаряна от въображението й толкова пъти, и в същото време, пламнала от вълнение, си представяше всички подробности от вчерашната си среща с Анатол.
Защо не можеше да бъде заедно? понякога, в съвършено затъмнение, помисли си тя. Само тогава щях да бъда напълно щастлив, но сега трябва да избирам, а без едно от двете не мога да бъда щастлив. „Едно нещо, помисли си тя, да се каже това, което беше на княз Андрей, или да се скрие, е еднакво невъзможно. И в това няма нищо лошо. Но наистина ли е възможно да се разделя завинаги с това щастие на любовта на княз Андрей, което живях толкова дълго?
„Млада госпожице“, прошепна момичето с мистериозен вид, влизайки в стаята. „Един човек ми каза да доставя. Момичето изпрати писмо. „Само за Христа“, все още казваше момичето, когато Наташа, без да се замисля, машинално счупи печата и прочете любовното писмо на Анатол, от което, без да разбере нито дума, разбра само едно - че това писмо е от него, от този човек, когото тя обича. „Да, тя обича, иначе как би могло да се случи това, което се случи? Как може да има любовно писмо от него в ръката й?
С треперещи ръце Наташа държеше това страстно любовно писмо, съставено за Анатол от Долохов, и, четейки го, откриваше в него ехо от всичко, което тя самата смяташе, че чувства.

Продължение на темата:
Windows

Наталия Комарова , 28.05.2009 г. (25.03.2018 г.) Когато четете форум или блог, запомняте авторите на публикациите по псевдоним и ... по снимката на потребителя, така наречения аватар ....

Нови статии
/
Популярен