Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой




Скачать 128.45 Kb.
НазваниеХотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой
Дата27.11.2012
Размер128.45 Kb.
ТипДокументы
8 глава


Организация памяти


Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см. рис. 8.27, б), чтобы построить память большого объема, требуется другой способ организации, при котором можно обращаться к отдельным словам. Пример организации памяти, которая удовлетворяет этому критерию, показан на рис. 8.28. Эта память содержит четыре 3-разрядных слова. Каждая операция считывает или записывает целое 3-разрядное слово. Хотя общий объем памяти A2 бит) не намного больше, чем у 8-разрядного триггера, такая память требует меньшего количества выводов и, что особенно важно, подобная организация применима для построения памяти большого объема.



Рис. 8.27. Сдвоенный D-триггер (а), «восьмикратный» триггер (б)




Рис. 8.28. Логическая блок-схема для памяти 4x3. Каждый ряд представляет одно

из 3-разрядных слов. При считывании и записи всегда считывается

или записывается целое слово


Хотя организация памяти, изображенной на рис. 8.28, может на первый взгляд показаться сложной, на самом деле она очень проста благодаря своей регулярной структуре. Микросхема содержит 8 входных линий, в частности 3 входа для данных — I0, I1 и I2; 2 входа для адресов — А0 и A1; 3 входа для управления — CS (Chip Select — выбор элемента памяти), RD (ReaD — чтение, этот сигнал позволяет отличать считывание от записи) и ОЕ (Output Enable — разрешение выдачи выходных сигналов), а также 3 выходные линии для данных — О0, О1 и О2. Такую память в принципе можно поместить в корпус с 14 выводами (включая питание и землю), а 8-разрядный триггер требует наличия 20 выводов.

Чтобы выбрать микросхему памяти, внешняя логика должна установить сигнал CS в 1, а также установить сигнал RD в 1 для чтения и в 0 для записи. Две адресные линии должны указывать, какое из четырех 3-разрядных слов нужно считывать или записывать. При считывании входные линии для данных не используются. Выбирается слово и помещается на выходные линии для данных. При записи биты, находящиеся на входных линиях для данных, загружаются в выбранное слово памяти; выходные линии при этом не используются. А теперь давайте посмотрим, как работает память, изображенная на рис. 8.28.

Четыре вентиля И для выбора слов в левой части схемы формируют декодер. Входные инверторы расположены так, что каждый вентиль запускается определенным адресом. Каждый вентиль приводит в действие линию выбора слов (для слов 0, 1, 2 и 3). Когда микросхема должна производить запись, вертикальная линия CS- получает значение 1, запуская один из четырех вентилей записи. Выбор вентиля зависит от того, какая именно линия выбора слов равна 1. Выходной сигнал вентиля записи приводит в действие все сигналы СК для выбранного слова, загружая входные данные в триггеры для этого слова. Запись производится только в том случае, если сигнал CS равен 1, a RD — 0, при этом записывается только слово, выбранное адресами A0 и А1; остальные слова не меняются.

Процесс считывания сходен с процессом записи. Декодирование адреса происходит точно так же, как и при записи. Но в данном случае линия CS-RD принимает значение 0, поэтому все вентили записи блокируются, и ни один из триггеров не меняется. Вместо этого линия выбора слов запускает вентили И, связанные с битами Q выбранного слова. Таким образом, выбранное слово передает свои данные в 4-входовые вентили ИЛИ, расположенные в нижней части схемы, а остальные три слова выдают 0. Следовательно, выход вентилей ИЛИ идентичен значению, сохраненному в данном слове. Остальные три слова никак не влияют на выходные данные.

Мы могли бы разработать схему, в которой три вентиля ИЛИ соединялись бы с тремя линиями вывода данных, но это вызвало бы некоторые проблемы. Мы рассматривали линии ввода данных и линии вывода данных как разные линии. На практике же используются одни и те же линии. Если бы мы связали вентили ИЛИ с линиями вывода данных, микросхема пыталась бы выводить данные (то есть задавать каждой линии определенную величину) даже в процессе записи, мешая нормальному вводу данных. По этой причине желательно каким-то образом соединять вентили ИЛИ с линиями вывода данных при считывании и полностью разъединять их при записи. Все, что нам нужно, — электронный переключатель, который может устанавливать и разрывать связь за несколько наносекунд.

К счастью, такие переключатели существуют. На рис. 8.29, а показано символическое изображение так называемого буферного элемента без инверсии. Он содержит входную линию для данных, выходную линию для данных и входную линию для управления. Когда управляющий вход равен 1, буферный элемент работает как проводник (рис. 8.29, б). Когда управляющий вход равен 0, буферный элемент работает как изолятор (рис. 8.29, в), как будто кто-то отрезает выход для данных от остальной части схемы кусачками. Соединение может быть восстановлено за несколько наносекунд, если сделать сигнал управления равным 1.



Рис. 8.29. Буферный элемент без инверсии (а); представление буферного элемента

без инверсии, когда сигнал управления равен 1 (б); представление буферного элемента

без инверсии, когда сигнал управления равен 0 (в); буферный элемент с инверсией (г)


На рис. 8.29, г показан буферный элемент с инверсией, который действует как обычный инвертор, когда сигнал управления равен 1, и отделяет выход от остальной части схемы, когда сигнал управления равен 0. Оба буферных элемента представляют собой устройства с тремя состояниями, поскольку могут выдавать нулевой сигнал, единичный сигнал или вообще не выдавать никакого сигнала (случай разомкнутой цепи). Буферные элементы, кроме того, усиливают сигналы, поэтому они могут справляться с большим количеством сигналов одновременно. Иногда они используются в схемах именно в качестве усилителей.

Теперь вам уже должно быть понятно, для чего нужны три буферных элемента без инверсии на линиях вывода данных. Когда сигналы CS, RD и ОЕ равны 1, сигнал разрешения выдачи выходных данных также равен 1, в результате запускаются буферные элементы и слово помещается на выходные линии. Когда один из сигналов CS, RD и ОЕ равен 0, выходы отсоединяются от остальной части схемы.

Микросхемы памяти

Преимущество памяти, изображенной на рис. 8.28, состоит в том, что подобная структура применима при разработке памяти большого объема. На рисунке показана схема 4x3 (для четырех слов по 3 бита каждое). Чтобы расширить ее до размеров 4x8, нужно добавить еще 5 колонок триггеров по 4 триггера в каждой, а также 5 входных и 5 выходных линий. Чтобы перейти от схемы 4 х 3 к схеме 8x3, требуется добавить еще четыре ряда триггеров по три триггера в каждом, а также адресную линию К.% При такой структуре число слов в памяти должно быть степенью двойки для максимальной эффективности, а число битов в слове может быть любым.

Технология изготовления интегральных схем идеально соответствует регулярной структуре микросхем памяти. С развитием технологии число битов, которое можно вместить в одной микросхеме, постоянно растет, обычно в два раза каждые 18 месяцев (закон Мура). С появлением больших микросхем маленькие микросхемы не всегда сразу устаревают, поскольку всегда существует компромисс между емкостью, быстродействием, мощностью, ценой и удобством сопряжения. Обычно самые большие современные микросхемы пользуются огромным спросом и, следовательно, стоят гораздо дороже в расчете за 1 бит, чем микросхемы небольшого размера.

При любом объеме памяти существуют несколько вариантов организации микросхемы. На рис. 8.30 показаны две возможные структуры микросхемы емкостью 4 Мбит: 512 К х 8 и 4096 К х 1 (размеры микросхем памяти обычно даются в битах, а не в байтах, поэтому здесь мы будем придерживаться этого соглашения). На рис. 8.30, а можно видеть 19 адресных линий для обращения к одному из 219 байт и 8 линий данных для загрузки или хранения выбранного байта.



Рис. 8.30. Два способа организации памяти объемом 4 Мбит


Сделаем небольшое замечание по поводу терминологии. На одних выводах высокое напряжение вызывает какое-либо действие, на других остается низкое напряжение. Чтобы избежать путаницы, мы будем употреблять термин установить сигнал, когда вызывается какое-то действие, вместо того, чтобы говорить, что напряжение повышается или понижается. Таким образом, для одних выводов установка сигнала означает установку единицы, для других — установку нуля. Названия выводов, которые устанавливаются в 0, содержат сверху черту. То есть сигнал CS — это единица, сигнал — ноль. Противоположный термин — сбросить.

А теперь вернемся к нашей микросхеме. Поскольку обычно компьютер содержит много микросхем памяти, нужен сигнал для выбора необходимой микросхемы, такой, чтобы нужная нам микросхема реагировала на вызов, а остальные нет.

Сигнал (Chip Select — выбор элемента памяти) используется именно для этой цели. Он устанавливается, чтобы запустить микросхему. Кроме того, нужен способ, чтобы отличать считывания от записи. Сигнал (Write Enable — разрешение записи) указывает на то, что данные должны записываться, а не считываться. Наконец, сигнал (Output Enable — разрешение вывода) устанавливается для выдачи выходных сигналов. Когда этого сигнала нет, выход отсоединяется от остальной части схемы.На рис. 8.30, б используется другая схема адресации. Микросхема представляет собой матрицу размером 2048 х 2048 однобитовых ячеек, что составляет 4 Мбит. Чтобы обратиться к микросхеме, сначала нужно выбрать строку. Для этого И-разрядный номер этой строки подается на адресные выводы. Затем устанавливается сигнал (Row Address Strobe — строб адреса строки). После этого на адресные выводы подается номер столбца и устанавливается сигнал (Column Address Strobe — строб адреса столбца). Микросхема реагирует на сигнал, принимая или выдавая 1 бит данных.

Большие микросхемы памяти часто производятся в виде матриц размером

тхп, обращение к которым происходит по строкам и столбцам. Такая организа-

ция памяти сокращает число необходимых выводов, но, с другой стороны, замед-

ляет обращение к микросхеме, поскольку требуется два цикла адресации: один

для строки, другой для столбца. Чтобы ускорить этот процесс, в некоторых мик-

росхемах можно вызывать адрес строки, а затем несколько адресов столбцов для

доступа к последовательным битам строки.

Много лет назад самые большие микросхемы памяти обычно были устроены так, как показано на рис. 8.30, б. Поскольку размер слов увеличился от 8 до 32 бит и выше, использовать подобные микросхемы стало неудобно. Чтобы из микросхем 4096 К х 1 построить память с 32-разрядными словами, требуется 32 микросхемы, работающие параллельно. Эти 32 микросхемы имеют общий объем по крайней мере 16 Мбайт. Если использовать микросхемы 512 К х 8, то потребуется всего 4 микросхемы, но при этом объем памяти составит 2 Мбайт. Чтобы не возиться с 32 микросхемами, большинство производителей выпускают семейства микросхем с длиной слов 1, 4, 8 и 16 бит. Ситуация с 64-разрядными словами, естественно, еще хуже.

Примеры современных микросхем объемом 512 Мбит показаны на рис. 8.31. В каждой такой микросхеме содержится четыре внутренних банка памяти по 128 Мбит; соответственно, для определения банка требуются две линии выбор банка. На микросхеме 32 М х 16, показанной на рис. 8.31, я, 13 линий выделено для сигналов , 10 — для сигналов С AS и 2 линии — для выбора банка. Взятые в целом, 25 сигналов обеспечивают возможность адресации 225 внутренних 16-разрядных ячеек. На микросхеме 128 М х 4, изображенной на рис. 8.31, б, для сигналов RAS выделено 13 линий, для — 12 линий, для выбора банка — 2 линии. Таким образом, 27 сигналов делают возможной адресацию любой из 227 внутренних 4-разрядных ячеек. Количество строк и столбцов в микросхемах определяется на основании инженерных факторов. Матрица не обязательно

должна быть квадратной.

Эти примеры наглядно демонстрируют значимость двух не связанных друг с другом проблем в процессе конструирования микросхем памяти. Первая из них касается ширины выхода (в битах) — иначе говоря, количества битов A, 4, 8, 16 и пр.) в выходном сигнале. Вторая проблема заключается в способе представления битов адреса; здесь есть два варианта: во-первых, биты адресов могут быть представлены одновременно на разных выводах, во-вторых, может быть последовательное представление строк и столбцов — так, как показано на рис. 8.31. Прежде чем приступать к проектированию микросхемы, специалист должен определиться с решением обеих этих проблем.



Рис. 8.31. Два способа организации микросхемы памяти объемом 512 Мбит


ОЗУ и ПЗУ


Все виды памяти, которые мы рассматривали до сих пор, имеют одно общее свойство: они позволяют и записывать, и считывать информацию. Такая память называется ОЗУ (оперативное запоминающее устройство), или RAM (Random Access Memory — оперативная память). Существует два типа ОЗУ: статическое и динамическое. Статическое ОЗУ (Static RAM, SRAM) конструируется с использованием D-триггеров. Информация в ОЗУ сохраняется на протяжении всего времени, пока к нему подается питание: секунды, минуты, часы и даже дни. Статическое ОЗУ работает очень быстро. Обычно время доступа составляет несколько наносекунд. По этой причине статическое ОЗУ часто используется в качестве кэш-памяти второго уровня.

В динамическом ОЗУ (Dynamic RAM, DRAM), напротив, триггеры не используются. Динамическое ОЗУ представляет собой массив ячеек, каждая из которых содержит транзистор и крошечный конденсатор. Конденсаторы могут быть заряженными и разряженными, что позволяет хранить нули и единицы. Поскольку электрический заряд имеет тенденцию исчезать, каждый бит в динамическом ОЗУ должен обновляться (перезаряжаться) каждые несколько миллисекунд, чтобы предотвратить утечку данных. Поскольку об обновлении должна заботиться внешняя логика, динамическое ОЗУ требует более сложного сопряжения, чем статическое, хотя этот недостаток компенсируется большим объемом. Поскольку динамическому ОЗУ нужен только 1 транзистор и 1 конденсатор на бит (статическому ОЗУ требуется в лучшем случае 6 транзисторов на бит), динамическое ОЗУ имеет очень высокую плотность записи (много битов на одну микросхему). По этой причине основная память почти всегда строится на основе динамических ОЗУ. Однако динамические ОЗУ работают очень медленно (время доступа занимает десятки наносекунд). Таким образом, сочетание кэш-памяти на основе статического ОЗУ и основной памяти на основе динамического ОЗУ соединяет в себе преимущества обоих устройств. Существует несколько типов динамических ОЗУ. Самый древний тип, который все еще используется, — FPM (Fast Page Mode — быстрый постраничный режим). Это ОЗУ представляет собой матрицу битов. Аппаратное обеспечение представляет адрес строки, а затем — адреса столбцов (мы описывали этот процесс, когда говорили об устройстве памяти, показанном на рис. 8.31, б). Явные сигналы обеспечивают асинхронную работу памяти и главного тактового генератора системы. FPM постепенно замещается памятью EDO (Extended Data Output — память с расширенными возможностями выводаI, которая позволяет обращаться к памяти еще до того, как закончилось предыдущее обращение. Такой конвейерный режим, хотя и не ускоряет доступ к памяти, повышает пропускную способность, позволяя получить больше слов в секунду.

Память типа FPM и EDO сохраняла актуальность в те времена, когда продолжительность цикла работы микросхем памяти не превышала 12 не. Впоследствии, с увеличением быстродействия процессоров, сформировалась потребность в более быстрых микросхемах памяти, и тогда на смену асинхронным режимам FPM и EDO пришли синхронные динамические ОЗУ (Synchronous DRAM, SDRAM). Синхронное динамическое ОЗУ управляется одним синхронизирующим сигналом. Данное устройство представляет собой гибрид статического и динамического ОЗУ. Основное преимущество синхронного динамического ОЗУ состоит в том, что оно исключает зависимость микросхемы памяти от управляющих сигналов. ЦП сообщает памяти, сколько циклов следует выполнить, а затем запускает эти циклы. Каждый цикл на выходе дает 4, 8 или 16 бит в зависимости от количества выходных строк. Устранение зависимости от управляющих сигналов приводит к увеличению скорости передачи данных между ЦП и памятью. Следующим этапом в развитии памяти SDRA стала память DDR (Double Data Rate — передача данных с двойной скоростью). Эта технология предусматривает вывод данных как на фронте, так и на спаде импульса, вследствие чего скорость передачи увеличивается вдвое. Например, 8-разрядная микросхема такого типа, работающая с частотой 200 МГц, дает на выходе два 8-разрядных значения 200 млн раз в секунду (разумеется, такая скорость удерживается в течение небольшого периода времени); таким образом, теоретически кратковре-

менная скорость может достигать 3,2 Гбайт/с.

Энергонезависимая память


ОЗУ — не единственный тип микросхем памяти. Во многих случаях данные должны сохраняться, даже если питание отключено (например, если речь идет об игрушках, различных приборах и машинах). Более того, после установки ни 1 Динамическая память типа EDO практически вытеснила обычную динамическую память, работающую в режиме FPM, в середине 90-х годов. — Примеч. научн. ред. программы, ни данные не должны изменяться. Эти требования привели к появлению ПЗУ (постоянных запоминающих устройств), или ROM (Read-Only Memory — постоянная память). ПЗУ не позволяют изменять и стирать хранящуюся в них информацию (ни умышленно, ни случайно). Данные записываются в ПЗУ в процессе производства. Для этого изготавливается трафарет с определенным набором битов, который накладывается на фоточувствительный материал, а затем открытые (или закрытые) части поверхности вытравливаются. Единственный способ изменить программу в ПЗУ — поменять всю микросхему. ПЗУ стоят гораздо дешевле ОЗУ, если заказывать их большими партиями, чтобы оплатить расходы на изготовление трафарета. Однако они не допускают изменений после выпуска с производства, а между подачей заказа на ПЗУ и его выполнением может пройти несколько недель. Чтобы компаниям было проще разрабатывать новые устройства, основанные на ПЗУ, были выпущены программируемые ПЗУ (Programmable ROM, PROM). В отличие от обычных ПЗУ, их можно программировать в условиях эксплуатации, что позволяет сократить время выполнения заказа. Многие программируемые ПЗУ содержат массив крошечных плавких перемычек. Чтобы пережечь определенную перемычку, нужно выбрать требуемые строку и столбец, а затем приложить высокое напряжение к определенному выводу микросхемы. Следующая разработка этой линии — стираемое программируемое ПЗУ (Erasable PROM, EPROM), которое можно программировать в условиях эксплуатации, а также стирать с него информацию. Если кварцевое окно в данном ПЗУ подвергать воздействию сильного ультрафиолетового света в течение 15 минут, все биты установятся в 1. Если нужно сделать много изменений во время одного этапа проектирования, стираемые ПЗУ гораздо экономичнее, чем обычные программируемые ПЗУ, поскольку их можно использовать многократно. Стираемые программируемые ПЗУ обычно устроены так же, как статические ОЗУ.

Например, микросхема 27С040 имеет структуру, которая показана на рис. 8.31, а, а такая структура типична для статического ОЗУ. Следующий этап — электронно-перепрограммируемое ПЗУ (Electronically EPROM, EEPROM), с которого можно стирать информацию, прилагая к нему импульсы, и которое не нужно для этого помещать в специальную камеру, чтобы подвергнуть воздействию ультрафиолетовых лучей. Кроме того, чтобы перепрограммировать данное устройство, его не нужно вставлять в специальный аппарат для программирования, в отличие от стираемого программируемого ПЗУ. В то же время самые большие электронно-перепрограммируемые ПЗУ в 64 раза меньше обычных стираемых ПЗУ, и работают они в два раза медленнее. Электронно-перепрограммируемые ПЗУ не могут конкурировать с динамическими и статическими ОЗУ, поскольку работают в 10 раз медленнее, их емкость в 100 раз меньше, и они стоят гораздо дороже. Они используются только в тех ситуациях, когда необходимо сохранять информацию при выключении питания.

Более современный тип электронно-перепрограммируемого ПЗУ — флэш- память. В отличие от стираемого ПЗУ, которое стирается под воздействием ультрафиолетовых лучей, и от электронно-перепрограммируемого ПЗУ, которое стирается по байтам, флэш-память стирается и записывается блоками. Многие изготовители производят небольшие печатные платы, содержащие сотни мегабайтов флэш-памяти. Они используются для хранения изображений в цифровых камерах и для других целей. Возможно, когда-нибудь флэш-память вытеснит диски, что будет грандиозным шагом вперед, учитывая время доступа в 50 не. Основной технической проблемой в данный момент является то, что флэш-память изнашивается после 100 000 операций стирания, а диски могут служить годами независимо от того, сколько раз они перезаписывались. Краткое описание различных типов памяти дано в табл. 8.2.


Таблица 8.2. Характеристики различных типов памяти




Вопросы и задания


1. В памяти размером 4x3, изображенной на рис. 3.28, используются 22 вентиля И и три вентиля ИЛИ. Сколько потребуется вентилей каждого из двух типов, если схему расширить до размера 256 х 8?

2. Применение ПЗУ памяти.

3. Применение ОЗУ памяти.

4. Типы микросхем энергонезависимой памяти, как достигается энергонезависимость памяти?


Материл лекции взят из книги: Э. ТАНЕНБАУМ Архитектура компьютера. 5-е издание. М.: Питер, 2007. 844 с.

Похожие:

Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconБилеты: 1
Единицей измерения объема памяти является бит – наименьшая структурная единица памяти. Для определения емкости обычно используют...
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconЛекционный курс в 6-7 семестрах для специальности 510200 Лекция 2
Мультипроцессорная обработка. Расслоение памяти. Регистр перемещения. Прерывания и опрос состояний. Буферизация. Защита памяти. Периферийные...
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconПамять, виды памяти, методы тренировки памяти
При этом память всегда связывалась с процессом обучения (т е накопления информации), а попытки объяснения памяти всегда совпадали...
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconВсе дело в памяти
Космического кразума. Хотя следует сказать, что и сам разум – продукт той же памяти. Память заложена в малом и большом в мире живой...
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconПараллельные архитектуры
С другой стороны, память гораздо медленнее процессоров, которые к ней обращаются; даже однопроцессорным машинам приходится тратить...
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой icon1. Общие представления о памяти. Круг явлений памяти. Патологии памяти
Ассоциативная теория памяти. Виды ассоциации и законы их образования, критика ассоцианизма
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconЖивая память и/или информационное беспамятство?
Статья посвящена проблеме маргинализации живой памяти, дифференциации единства памяти и понимания, их трансформации в «искусственный...
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconЛекция 5 Внутренняя память
Различают микропроцессорную память, регистровую кэш-память, основную память (оперативное запоминающее устройство, постоянное запоминающее...
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconКурсовая работа по дисциплине «Информатика» на тему «Классификация основных видов памяти персонального компьютера»
Память это один из самих важных элементов персонального компьютера (ПК). Все пк используют три вида памяти: оперативную, постоянную...
Хотя мы и совершили переход от простой памяти емкостью 1 бит к 8-разрядной памяти (см рис. 27, б), чтобы построить память большого объема, требуется другой iconАпраушева Н. Н. Элементарный курс теории принятия решений
Синхронизирующие объекты ос. Сигналы. Управление памятью. Виды адресов, виртуальное адресное пространство и его структурирование....
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница