Что является основанием статической памяти компьютера. Статические оперативные запоминающие устройства - ОЗУ (RAM). Статическая оперативная память

Использование микросхем SRAM при высоких требованиях к быстродействию компьютера для кеширования оперативной памяти и данных в механических устройствах хранения информации. Изучение устройства матрицы и типов (синхронная, конвейерная) статической памяти.

РЕСПУБЛИКА КАЗАХСТАН

УНИВЕРСИТЕТ "ТУРАН"

Кафедра "информационных технологий"

тема: "Статическая память"

Выполнил: Айнакулов Д.А. 3курс, "ИС" 9 гр. Проверила: Зиятбекова Г.З.

Алматы 2009 г.

1. ВВЕДЕНИЕ

2. Статическая память

4. Типы статической памяти

5. Заключение

1. ВВЕДЕНИЕ

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

Слово "компьютер" означает "вычислитель". Потребность в автоматизации обработки данных, в том числе вычислений, возникла очень давно. В настоящее время индустрия производства компьютерного железа и программного обеспечения является одной из наиболее важных сфер экономики развитых и развивающихся стран. Причины стремительного роста индустрии персональных компьютеров: невысокая стоимость; сравнительная выгодность для многих деловых применений; простота использования; возможность индивидуального взаимодействия с компьютеров без посредников и ограничений; высокие возможности по переработке, хранению и выдаче информации; высокая надежность, простота ремонта и эксплуатации; компьютерное железо адаптивно к особенностям применения компьютеров; наличие программного обеспечения, охватывающего практически все сферы человеческой деятельности, а также мощных систем для разработки нового программного обеспечения. Мощность компьютеров постоянно увеличивается, а область их применения постоянно расширяется. Компьютеры могут объединяться в сети, что позволяет миллионам людей легко обмениваться информацией с компьютерами, находящимися в любой точке земного шара. Так что же представляет собой это уникальное человеческое изобретение? Первый признак, по которому разделяют компьютеры, - платформа. Можно выделить две основные платформы ПК: Платформа IBM - совместимых компьютеров включает в себя громадный спектр самых различных компьютеров, от простеньких домашних персоналок до сложных серверов. Именно с этим типом платформ обычно сталкивается пользователь. Кстати, совершенно не обязательно, что лучшие IBM - совместимые компьютеры изготовлены фирмой IBM - породивший этот стандарт "голубой гигант" сегодня лишь один из великого множества производителей ПК. Платформа Apple - представлена довольно популярными на Западе компьютерами Macintosh. Они используют своё, особое программное обеспечение, да и "начинка" их существенно отличается от IBM. Обычно IBM-совместимые ПК состоят из трех частей (блоков): системного блока; монитора (дисплея); клавиатуры (устройства, позволяющего вводить символы в компьютер). Развитие электронной промышленности осуществляется такими быстрыми темпами, что буквально через один год, сегодняшнее "чудо техники" становится морально устаревшим вследствие того, что компьютерное железо постоянно модифицируется, появляется новое программное обеспечение. При этом принципы устройства компьютера остаются неизменными еще с того момента, как знаменитый математик Джон фон Нейман в 1945 году подготовил доклад об устройстве и функционировании универсальных вычислительных устройств.

2. Статическая память

Статическая память, или SRAM (Statistic RAM) является наиболее производительным типом памяти. Микросхемы SRAM применяются для кэширования оперативной памяти, в которой используются микросхемы динамической памяти, а также для кэширования данных в механических устройствах хранения информации, в блоках памяти видеоадаптеров и т. д. Фактически, микросхемы SRAM используются там, где необходимый объем памяти не очень велик, но высоки требования к быстродействию, а раз так, то оправдано использование дорогостоящих микросхем. В персональных компьютерах с процессорами, у которых не было интегрированной на кристалле кэш-памяти второго уровня, всегда использовались микросхемы SRAM внешнего кэша. Для удешевления системных плат и возможности их модернизации производители системных плат с процессорами 486 и первых поколений Pentium устанавливали специальные кроватки (разъемы для микросхем с DIP-корпусом), в которые можно было устанавливать различные микросхемы SRAM, отличающиеся как по быстродействию и объему памяти, так и различной разрядностью. Для конфигурирования памяти на системной плате предусматривался набор джамперов. Для справки прямо на системной плате краской наносилась информация об установке джамперов, например, как показано в табл.(в колонках JS1 и JS2 указаны номера контактов, которые надо замкнуть перемычками).

Пример таблицы конфигурирования кэш-памяти на системной плате

Отметим, что изменением конфигурации кэш-памяти занимались только тогда, когда выходила из строя какая-либо микросхема кэш-памяти. В остальных случаях изменять положение джамперов не рекомендовалось. В дальнейшем, по мере разработки более совершенных микросхем SRAM, они непосредственно припаивались на системную плату в количестве 1, 2 или 4 штук. На системных платах, которые выпускаются сегодня, микросхемы SRAM используются, в основном, только для кэширования ввода/вывода и других системных функций.

3. Устройство матрицы статической памяти

Подобно ячейкам динамической, триггеры объединяются в единую матрицу, состоящую из строк (row) и столбцов (column), последние из которых так же называются битами (bit).

В отличии от ячейки динамической памяти, для управления которой достаточно всего одного ключевого транзистора, ячейка статической памяти управляется как минимум двумя. Это не покажется удивительным, если вспомнить, что триггер, в отличии от конденсатора, имеет раздельные входы для записи логического нуля и единицы соответственно. Таким образом, на ячейку статической памяти расходуется целых восемь транзисторов (см. рис.1) - четыре идут, собственно, на сам триггер и еще два - на управляющие "защелки".

Рис. 1. Устройство 6-транзистроной одно-портовой ячейки SRAM-памяти

Причем, шесть транзисторов на ячейку - это еще не предел! Существуют и более сложные конструкции! Основной недостаток шести транзисторной ячейки заключается в том, что в каждый момент времени может обрабатываться всего лишь одна строка матрицы памяти. Параллельное чтение ячеек, расположенных в различных строках одного и того же банка невозможно, равно как невозможно и чтение одной ячейки одновременно с записью другой.

Этого ограничения лишена многопортовая память. Каждая ячейка многопортовой памяти содержит один-единственный триггер, но имеет несколько комплектов управляющих транзисторов, каждый из которых подключен к "своим" линиям ROW и BIT, благодаря чему различные ячейки матрицы могут обрабатываться независимо. Такой подход намного более прогрессивен, чем деление памяти на банки. Ведь, в последнем случае параллелизм достигается лишь при обращении к ячейкам различных банков, что не всегда выполнимо, а много портовая память допускает одновременную обработку любых ячеек, избавляя программиста от необходимости вникать в особенности ее архитектуры.

Наиболее часто встречается двух - портовая память, устройство ячейки которой изображено на рис. 2. (внимание! это совсем не та память которая, в частности, применяется в кэше первого уровня микропроцессоров Intel Pentium). Нетрудно подсчитать, что для создания одной ячейки двух - портовой памяти расходуется аж восемь транзисторов. Пусть емкость кэш-памяти составляет 32 Кб, тогда только на одно ядро уйдет свыше двух миллионов транзисторов!

Рис. 2. Устройство 8-транзистроной двух портовой ячейки SRAM-памяти

Рис. 3. Ячейка динамической памяти воплощенная в кристалле

4. Типы статической памяти

Существует как минимум три типа статической памяти: асинхронная, синхронная и конвейерная. Все они практически ничем не отличаются от соответствующих им типов динамической памяти.

Асинхронная статическая память

Асинхронная статическая память работает независимо от контроллера и потому, контроллер не может быть уверен, что окончание цикла обмена совпадет с началом очередного тактового импульса. В результате, цикл обмена удлиняется по крайней мере на один такт, снижая тем самым эффективную производительность. "Благодаря" последнему обстоятельству, сегодня асинхронная память практически нигде не применяется (последними компьютерами, на которых она еще использовались в качестве кэша второго уровня, стали "трешки" - машины, построенные на базе процессора Intel 80386).

Синхронная статическая память

Синхронная статическая память выполняет все операции одновременно с тактовыми сигналами, в результате чего время доступа к ячейке укладывается в один-единственный такт. Именно на синхронной статической памяти реализуется кэш первого уровня современных процессоров.

Конвейерная статическая память

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

Так же, конвейерная память может обрабатывать несколько смежных ячеек за один рабочий цикл. Достаточно передать лишь адрес первой ячейки пакета, а адреса остальных микросхема вычислит самостоятельно, - только успевай подавать (забирать) записывание (считанные) данные!

За счет большей аппаратной сложности конвейерной памяти, время доступа к первой ячейке пакета увеличивается на один такт, однако, это практически не снижает производительности, т.к. все последующие ячейки пакета обрабатываются без задержек.

Конвейерная статическая память используется в частности в кэше второго уровня микропроцессоров Pentium-II и ее формула выглядит так: 2-1-1-1.

5. Заключение

История создания статической памяти уходит своими корнями в глубину веков. Память первых релейных компьютеров по своей природе была статической и долгое время не претерпевала практически никаких изменений - менялась лишь элементарная база: на смену реле пришли электронные лампы, впоследствии вытесненные сначала транзисторами, а затем TTL- и CMOS-микросхемами: но идея, лежащая в основе статической памяти, была и остается прежней...

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

Так как многие любят собирать компьютер самостоятельно, на сайте приведены самые важные сведения о способах сборки и настройки системного блока. Ведь чтобы собрать что-либо толковое, полезное для использования, надо достаточно ясно представлять, что собираешь, для какой области применения и, конечно, из каких узлов. Примерно так можно сформулировать все многообразие вопросов, возникающих перед человеком, когда он решит не купить готовый компьютер, а собрать его собственными руками выбирая то "железо", которое ему необходимо. В связи со стремительным развитие компьютерных технологий а также вследствие того, что компьютерное железо постоянно модифицируется и в прадажу постоянно поступают новые модели, некоторая информация, приведенная на сайте, постепенно теряет свою актуальность.

Список использованной литературы

1. Информатика. Учебное пособие /Ломтадзе В.В., Шишкина Л.П. - Иркутск: ИрГТУ, 1999. - 116с.

2. Информатика. Учебное пособие /Под ред. В.Г. Кирия. - Иркутск: ИрГТУ,1998 часть 2. - 382с.

3. Макарова Н.В. Информатика.- Москва: Финансы и статистика, 1997.

4. Горев А., Ахаян Р., Макашарипов С. Эффективная работа с СУБД. СПб.: Питер, 1997.





Чтобы скачать работу бесплатно нужно вступить в нашу группу ВКонтакте . Просто кликните по кнопке ниже. Кстати, в нашей группе мы бесплатно помогаем с написанием учебных работ.


Через несколько секунд после проверки подписки появится ссылка на продолжение загрузки работы.
Бесплатная оценка
Повысить оригинальность данной работы. Обход Антиплагиата.

РЕФ-Мастер - уникальная программа для самостоятельного написания рефератов, курсовых, контрольных и дипломных работ. При помощи РЕФ-Мастера можно легко и быстро сделать оригинальный реферат, контрольную или курсовую на базе готовой работы - Статическая память.
Основные инструменты, используемые профессиональными рефератными агентствами, теперь в распоряжении пользователей реф.рф абсолютно бесплатно!

Как правильно написать введение?

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


Секреты идеального заключения дипломной и курсовой работы от профессиональных авторов крупнейших рефератных агентств России. Узнайте, как правильно сформулировать выводы о проделанной работы и составить рекомендации по совершенствованию изучаемого вопроса.



(курсовую, диплом или отчёт) без рисков, напрямую у автора.

Похожие работы:

12.01.2009/презентация

Память для вычислительных систем ее создание и характеристика особенностей. Создание устройств памяти и основные эксплуатационные характеристики. Функциональные схемы и способ организации матрицы запоминающих элементов. Виды магнитной и флеш памяти.

7.08.2007/курсовая работа

Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.

14.10.2010/дипломная работа

Основные направления развития параллелизма, модели параллельного программирования. Автоматические средства разработки параллельного ПО, анализ последовательной программы. Разработка системы автоматического распараллеливания программ на языке Fortran77.

29.09.2008/лекция

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

24.11.2007/реферат

Контроль в управлении проектами в Украине. Системы автоматизированного проектирования. Контроль по возмущению и комбинированный контроль. Автоматический контроль, программное регулирование и следящие системы. Статический и астатический контроль.


Статическая и динамическая оперативная память

Оперативная память - совокупность специальных электронных ячеек, каждая из которых может хранить конкретную 8-значную комбинацию из нулей и единиц - 1 байт (8 бит). Каждая такая ячейка имеет адрес (адрес байта) и содержимое (значение байта). Адрес нужен для обращения к содержимому ячейки, для записи и считывания информации. Оперативное запоминающее устройство (ОЗУ) хранит информацию только во время работы компьютера. Емкость оперативной памяти современного компьютера 32-138 Мбайт.
При выполнении микропроцессором вычислительных операций должен быть в любой момент обеспечен доступ к любой ячейке оперативной памяти. Поэтому ее называют памятью с произвольной выборкой - RAM (Random Access Memory). Оперативная память выполнена обычно на микросхемах динамического типа с произвольной выборкой (Dynamic Random Access Memory, DRAM). Каждый бит такой памяти представляется в виде наличия (или отсутствия) заряда на конденсаторе, образованном в структуре полупроводникового кристалла. Другой, более дорогой тип памяти - статический (Static RAM, SRAM) в качестве элементарной ячейки использует так называемый статический триггер (схема которого состоит из нескольких транзисторов). Статический тип памяти обладает более высоким быстродействием и используется, например, для организации кэш-памяти.

Статическая память
Статическая память (SRAM) в современных ПК обычно применяется в качестве кэш-памяти второго уровня для кэширования основного объема ОЗУ. Статическая память выполняется обычно на основе ТТЛ-, КМОП- или БиКМОП-микросхем и по способу доступа к данным может быть как асинхронной, так и синхронной. Асинхронным называется доступ к данным, который можно осуществлять в произвольный момент времени. Асинхронная SRAM применялась на материнских платах для третьего - пятого поколения процессоров. Время доступа к ячейкам такой памяти составляло от 15 нс (33 МГц) до 8 нс (66 МГц).
Для описания характеристик быстродействия оперативной памяти применяются так называемые циклы чтения/записи. Дело в том, что при обращении к памяти на считывание или запись первого машинного слова расходуется больше тактов, чем на обращение к трем последующим словам. Так, для асинхронной SRAM чтение одного слова выполняется за 3 такта, запись - за 4 такта, чтение нескольких слов определяется последовательностью 3-2-2-2 такта, а запись - 4-3-3-3.
Синхронная память обеспечивает доступ к данным не в произвольные моменты времени, а синхронно с тактовыми импульсами. В промежутках между ними память может готовить для доступа следующую порцию данных. В большинстве материнских плат пятого поколения используется разновидность синхронной памяти - синхронно-конвейерная SRAM (Pipelined Burst SRAM), для которой типичное время одиночной операции чтения/записи составляет 3 такта, а групповая операция занимает 3-1-1-1 такта при первом обращении и 1-1-1-1 при последующих обращениях, что обеспечивает ускорение доступа более, чем на 25%.

Динамическая память
Динамическая память (DRAM) в современных ПК используется обычно в качестве оперативной памяти общего назначения, а также как память для видеоадаптера. Из применяемых в современных и перспективных ПК типов динамической памяти наиболее известны DRAM и FPM DRAM, EDO DRAM и BEDO DRAM, EDRAM и CDRAM, Synchronous DRAM, DDR SDRAM и SLDRAM, видеопамять MDRAM, VRAM, WRAM и SGRAM, RDRAM.
В памяти динамического типа биты представляются в виде отсутствия и наличия заряда на конденсаторе в структуре полупроводникового кристалла. Конструктивно она выполняется в виде модуля SIMM (Single in line memory module). Каждый бит информации записывается в отдельной ячейке памяти, состоящей из конденсатора и транзистора. Наличие заряда на конденсаторе соответствует 1 в двоичном коде, отсутствие - 0. Транзистор при переключении дает возможность считывать бит информации или записывать новый бит в пустую ячейку памяти.
Поиск ячейки по адресу осуществляется специальными дешифрующими схемами, которые образуют матрицу, то есть пересекают кристалл памяти двумя полосами - по горизонтали и вертикали. Когда центральный процессор сообщает адрес ячейки, горизонтальные дешифраторы указывают нужный столбец, а вертикальные - строку. На пересечении находится искомая ячейка. После нахождения ячейки происходит выборка их нее байта данных.

Статическая память - SRAM (Static Random Access Memory), как и следует из ее названия, способна хранить информацию в статическом режиме - то есть сколь угодно долго при отсутствии обращений (но при наличии питающего напряжения). Ячейки статической памяти реализуются на триггерах - элементах с двумя устойчивыми состояниями. По сравнению с динамической памятью эти ячейки более сложны и занимают больше места в кристалле, однако они проще в управлении и не требуют регенерации. Быстродействие и энергопотребление статической памяти определяется технологией изготовления и схемотехникой запоминающих ячеек.
Самая экономичная статическая память КМОП (или CMOS Memory) в тоже время и самая медленная память такого типа, имеет время доступа более 100 наносекунд, но зато пригодна для длительного хранения информации при питании от маломощной батареи. Применяется CMOS память в персональных компьютерах для хранения данных о конфигурации и для реализации внутренних часов.
Самая быстродействующая статическая память имеет время доступа в несколько наносекунд, что позволяет ей работать на частоте системной шины процессора, не требуя от него тактов ожидания. Относительно высокая удельная стоимость хранения информации и высокое энергопотребление при низкой плотности упаковки элементов не позволяет использовать SRAM в качестве оперативной памяти компьютеров.
Статические запоминающие устройства (SRAM) имеют перед динамическими то преимущество, что у них время выборки практически равно времени цикла записи или чтения. Выполненная по той же технологии что и процессор, статическая память имеет высокое быстродействие. Главным ограничением в использовании статической памяти является стоимость. При равной емкости с динамической, статическая память примерно в четыре раза дороже. Поэтому данный вид памяти получил распространение в высокопроизводительных системах в качестве внешней (относительно процессора) кэш памяти. Соотношение цена/производительность в этих системах играет не столь существенную роль. Однако, с появлением микросхем статической памяти большой емкости и ее удешевлением произойдет изменение сложившегося стереотипа использования схем памяти и производители компьютеров, возможно, пойдут на замену динамической памяти статической, пока же элементы статической памяти используются в оперативной динамической памяти, как быстрый конвейерный буфер для подготовки данных к выдаче на шину данных каждый такт системной шины.
Структура микросхемы статической памяти
Элементом памяти в статических ОЗУ является триггер, выполненный на транзисторах. Структура микросхемы статической памяти (рис.1.) включает матрицу накопителя содержащую М x N элементов памяти.

РЕСПУБЛИКА КАЗАХСТАН

УНИВЕРСИТЕТ "ТУРАН"

Кафедра "информационных технологий"

тема:"Статическая память"

Выполнил: Айнакулов Д.А. 3курс, "ИС" 9 гр. Проверила: ЗиятбековаГ.З.

Алматы 2009 г.


1. Введение

2. Статическая память

4. Типы статической памяти

5. Заключение


1. Введение

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

Слово "компьютер" означает "вычислитель". Потребность в автоматизации обработки данных, в том числе вычислений, возникла очень давно. В настоящее время индустрия производства компьютерного железа и программного обеспечения является одной из наиболее важных сфер экономики развитых и развивающихся стран. Причины стремительного роста индустрии персональных компьютеров: невысокая стоимость; сравнительная выгодность для многих деловых применений; простота использования; возможность индивидуального взаимодействия с компьютеров без посредников и ограничений; высокие возможности по переработке, хранению и выдаче информации; высокая надежность, простота ремонта и эксплуатации; компьютерное железо адаптивно к особенностям применения компьютеров; наличие программного обеспечения, охватывающего практически все сферы человеческой деятельности, а также мощных систем для разработки нового программного обеспечения. Мощность компьютеров постоянно увеличивается, а область их применения постоянно расширяется. Компьютеры могут объединяться в сети, что позволяет миллионам людей легко обмениваться информацией с компьютерами, находящимися в любой точке земного шара. Так что же представляет собой это уникальное человеческое изобретение? Первый признак, по которому разделяют компьютеры, - платформа. Можно выделить две основные платформы ПК: Платформа IBM – совместимых компьютеров включает в себя громадный спектр самых различных компьютеров, от простеньких домашних персоналок до сложных серверов. Именно с этим типом платформ обычно сталкивается пользователь. Кстати, совершенно не обязательно, что лучшие IBM – совместимые компьютеры изготовлены фирмой IBM – породивший этот стандарт "голубой гигант" сегодня лишь один из великого множества производителей ПК. Платформа Apple - представлена довольно популярными на Западе компьютерами Macintosh. Они используют своё, особое программное обеспечение, да и "начинка" их существенно отличается от IBM. Обычно IBM-совместимые ПК состоят из трех частей (блоков): системного блока; монитора (дисплея); клавиатуры (устройства, позволяющего вводить символы в компьютер). Развитие электронной промышленности осуществляется такими быстрыми темпами, что буквально через один год, сегодняшнее "чудо техники" становится морально устаревшим вследствие того, что компьютерное железо постоянно модифицируется, появляется новое программное обеспечение. Однако принципы устройства компьютера остаются неизменными еще с того момента, как знаменитый математик Джон фон Нейман в 1945 году подготовил доклад об устройстве и функционировании универсальных вычислительных устройств.


2. Статическая память

Статическая память, или SRAM (Statistic RAM) является наиболее производительным типом памяти. Микросхемы SRAM применяются для кэширования оперативной памяти, в которой используются микросхемы динамической памяти, а также для кэширования данных в механических устройствах хранения информации, в блоках памяти видеоадаптеров и т. д. Фактически, микросхемы SRAM используются там, где необходимый объем памяти не очень велик, но высоки требования к быстродействию, а раз так, то оправдано использование дорогостоящих микросхем. В персональных компьютерах с процессорами, у которых не было интегрированной на кристалле кэш-памяти второго уровня, всегда использовались микросхемы SRAM внешнего кэша. Для удешевления системных плат и возможности их модернизации производители системных плат с процессорами 486 и первых поколений Pentium устанавливали специальные кроватки (разъемы для микросхем с DIP-корпусом), в которые можно было устанавливать различные микросхемы SRAM, отличающиеся как по быстродействию и объему памяти, так и различной разрядностью. Для конфигурирования памяти на системной плате предусматривался набор джамперов. Для справки прямо на системной плате краской наносилась информация об установке джамперов, например, как показано в табл.(в колонках JS1 и JS2 указаны номера контактов, которые надо замкнуть перемычками).

Пример таблицы конфигурирования кэш-памяти на системной плате

Size SRAM JS1 JS2
256 К 32x8 1-2 1-2
512 К 64x8 2-3 1-2
1 М 128x8 2-3 2-3

Отметим, что изменением конфигурации кэш-памяти занимались только тогда, когда выходила из строя какая-либо микросхема кэш-памяти. В остальных случаях изменять положение джамперов не рекомендовалось. В дальнейшем, по мере разработки более совершенных микросхем SRAM, они непосредственно припаивались на системную плату в количестве 1, 2 или 4 штук. На системных платах, которые выпускаются в настоящее время, микросхемы SRAM используются, в основном, только для кэширования ввода/вывода и других системных функций.

3. Устройство матрицы статической памяти

Подобно ячейкам динамической, триггеры объединяются в единую матрицу, состоящую из строк (row) и столбцов (column), последние из которых так же называются битами (bit).

В отличии от ячейки динамической памяти, для управления которой достаточно всего одного ключевого транзистора, ячейка статической памяти управляется как минимум двумя. Это не покажется удивительным, если вспомнить, что триггер, в отличии от конденсатора, имеет раздельные входы для записи логического нуля и единицы соответственно. Таким образом, на ячейку статической памяти расходуется целых восемь транзисторов (см. рис.1) - четыре идут, собственно, на сам триггер и еще два - на управляющие "защелки".

Рис. 1. Устройство 6-транзистроной одно-портовой ячейки SRAM-памяти


Причем, шесть транзисторов на ячейку - это еще не предел! Существуют и более сложные конструкции! Основной недостаток шести транзисторной ячейки заключается в том, что в каждый момент времени может обрабатываться всего лишь одна строка матрицы памяти. Параллельное чтение ячеек, расположенных в различных строках одного и того же банка невозможно, равно как невозможно и чтение одной ячейки одновременно с записью другой.

Этого ограничения лишена многопортовая память. Каждая ячейка многопортовой памяти содержит один-единственный триггер, но имеет несколько комплектов управляющих транзисторов, каждый из которых подключен к "своим" линиям ROW и BIT, благодаря чему различные ячейки матрицы могут обрабатываться независимо. Такой подход намного более прогрессивен, чем деление памяти на банки. Ведь, в последнем случае параллелизм достигается лишь при обращении к ячейкам различных банков, что не всегда выполнимо, а много портовая память допускает одновременную обработку любых ячеек, избавляя программиста от необходимости вникать в особенности ее архитектуры.

Наиболее часто встречается двух - портовая память, устройство ячейки которой изображено на рис. 2. (внимание! это совсем не та память которая, в частности, применяется в кэше первого уровня микропроцессоров Intel Pentium). Нетрудно подсчитать, что для создания одной ячейки двух - портовой памяти расходуется аж восемь транзисторов. Пусть емкость кэш-памяти составляет 32 Кб, тогда только на одно ядро уйдет свыше двух миллионов транзисторов!


Рис. 2. Устройство 8-транзистроной двух портовой ячейки SRAM-памяти

Рис. 3. Ячейка динамической памяти воплощенная в кристалле

4. Типы статической памяти

Существует как минимум три типа статической памяти: асинхронная, синхронная и конвейерная. Все они практически ничем не отличаются от соответствующих им типов динамической памяти.

Асинхронная статическая память

Асинхронная статическая память работает независимо от контроллера и потому, контроллер не может быть уверен, что окончание цикла обмена совпадет с началом очередного тактового импульса. В результате, цикл обмена удлиняется по крайней мере на один такт, снижая тем самым эффективную производительность. "Благодаря" последнему обстоятельству, в настоящее время асинхронная память практически нигде не применяется (последними компьютерами, на которых она еще использовались в качестве кэша второго уровня, стали "трешки" - машины, построенные на базе процессора Intel 80386).

Синхронная статическая память

Синхронная статическая память выполняет все операции одновременно с тактовыми сигналами, в результате чего время доступа к ячейке укладывается в один-единственный такт. Именно на синхронной статической памяти реализуется кэш первого уровня современных процессоров.

Конвейерная статическая память

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

Так же, конвейерная память может обрабатывать несколько смежных ячеек за один рабочий цикл. Достаточно передать лишь адрес первой ячейки пакета, а адреса остальных микросхема вычислит самостоятельно, - только успевай подавать (забирать) записывание (считанные) данные!

За счет большей аппаратной сложности конвейерной памяти, время доступа к первой ячейке пакета увеличивается на один такт, однако, это практически не снижает производительности, т.к. все последующие ячейки пакета обрабатываются без задержек.

Конвейерная статическая память используется в частности в кэше второго уровня микропроцессоров Pentium-II и ее формула выглядит так: 2-1-1-1.


5. Заключение

История создания статической памяти уходит своими корнями в глубину веков. Память первых релейных компьютеров по своей природе была статической и долгое время не претерпевала практически никаких изменений - менялась лишь элементарная база: на смену реле пришли электронные лампы, впоследствии вытесненные сначала транзисторами, а затем TTL- и CMOS-микросхемами: но идея, лежащая в основе статической памяти, была и остается прежней...

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

Так как многие любят собирать компьютер самостоятельно, на сайте приведены самые важные сведения о способах сборки и настройки системного блока. Ведь чтобы собрать что-либо толковое, полезное для использования, надо достаточно ясно представлять, что собираешь, для какой области применения и, конечно, из каких узлов. Примерно так можно сформулировать все многообразие вопросов, возникающих перед человеком, когда он решит не купить готовый компьютер, а собрать его собственными руками выбирая то "железо", которое ему необходимо. В связи со стремительным развитие компьютерных технологий а также вследствие того, что компьютерное железо постоянно модифицируется и в прадажу постоянно поступают новые модели, некоторая информация, приведенная на сайте, постепенно теряет свою актуальность.


Список использованной литературы

1. Информатика. Учебное пособие /Ломтадзе В.В., Шишкина Л.П. – Иркутск: ИрГТУ, 1999. – 116с.

2. Информатика. Учебное пособие /Под ред. В.Г. Кирия. – Иркутск: ИрГТУ,1998 часть 2. – 382с.

3. Макарова Н.В. Информатика.- Москва: Финансы и статистика, 1997.

4. Горев А., Ахаян Р., Макашарипов С. Эффективная работа с СУБД. СПб.: Питер, 1997.

Статическая память выделяется еще до начала работы программы, на стадии компиляции и сборки. Статические переменные имеют фиксированный адрес, известный до запуска программы и не изменяющийся в процессе ее работы. Статические переменные создаются и инициализируются до входа в функцию main , с которой начинается выполнение программы.

Существует два типа статических переменных:

  • глобальные переменные - это переменные, определенные вне функций , в описании которых отсутствует слово static . Обычно описания глобальных переменных, включающие слово extern , выносятся в заголовочные файлы (h-файлы). Слово extern означает, что переменная описывается, но не создается в данной точке программы. Определения глобальных переменных, т.е. описания без слова extern , помещаются в файлы реализации (c-файлы или cpp-файлы). Пример: глобальная переменная maxind описывается дважды:
    • в h-файле с помощью строки

      extern int maxind;

      это описание сообщает о наличии такой переменной, но не создает эту переменную!
    • в cpp-файле с помощью строки

      int maxind = 1000;

      это описание создает переменную maxind и присваивает ей начальное значение 1000 . Заметим, что стандарт языка не требует обязательного присвоения начальных значений глобальным переменным, но, тем не менее, это лучше делать всегда, иначе в переменной будет содержаться непредсказуемое значение (мусор, как говорят программисты). Инициализация всех глобальных переменных при их определении - это правило хорошего стиля.
    Глобальные переменные называются так потому, что они доступны в любой точке программы во всех ее файлах. Поэтому имена глобальных переменных должны быть достаточно длинными, чтобы избежать случайного совпадения имен двух разных переменных. Например, имена x или n для глобальной переменной не подходят;
  • статические переменные - это переменные, в описании которых присутствует слово static . Как правило, статические переменные описываются вне функций . Такие статические переменные во всем подобны глобальным, с одним исключением: область видимости статической переменной ограничена одним файлом, внутри которого она определена, - и, более того, ее можно использовать только после ее описания, т.е. ниже по тексту. По этой причине описания статических переменных обычно выносятся в начало файла. В отличие от глобальных переменных, статические переменные никогда не описываются в h-файлах (модификаторы extern и static конфликтуют между собой). Совет: используйте статические переменные, если нужно, чтобы они были доступны только для функций, описанных внутри одного и того же файла . По возможности не применяйте в таких ситуациях глобальные переменные, это позволит избежать конфликтов имен при реализации больших проектов, состоящих из сотен файлов.
    • Статическую переменную можно описать и внутри функции, хотя обычно так никто не делает. Переменная размещается не в стеке, а в статической памяти, т.е. ее нельзя использовать при рекурсии, а ее значение сохраняется между различными входами в функцию. Область видимости такой переменной ограничена телом функции, в которой она определена. В остальном она подобна статической или глобальной переменной. Заметим, что ключевое слово static в языке Си используется для двух различных целей:
      • как указание типа памяти: переменная располагается в статической памяти, а не в стеке;
      • как способ ограничить область видимости переменной рамками одного файла (в случае описания переменной вне функции).
  • Слово static может присутствовать и в заголовке функции. При этом оно используется только для того, чтобы ограничить область видимости имени функции рамками одного файла. Пример:

    static int gcd(int x, int y); // Прототип ф-ции. . . static int gcd(int x, int y) { // Реализация. . . }

    Совет: используйте модификатор static в заголовке функции, если известно, что функция будет вызываться лишь внутри одного файла. Слово static должно присутствовать как в описании прототипа функции, так и в заголовке функции при ее реализации.

Стековая, или локальная, память

Локальные, или стековые, переменные - это переменные, описанные внутри функции . Память для таких переменных выделяется в аппаратном стеке, см. раздел 2.3.2. Память выделяется в момент входа в функцию или блок и освобождается в момент выхода из функции или блока. При этом захват и освобождение памяти происходят практически мгновенно, т.к. компьютер только изменяет регистр, содержащий адрес вершины стека.

Локальные переменные можно использовать при рекурсии, поскольку при повторном входе в функцию в стеке создается новый набор локальных переменных, а предыдущий набор не разрушается. По этой же причине локальные переменные безопасны при использовании нитей в параллельном программировании (см. раздел 2.6.2). Программисты называют такое свойство функции реентерабельностью , от англ. re-enter able - возможность повторного входа. Это очень важное качество с точки зрения надежности и безопасности программы! Программа, работающая со статическими переменными, этим свойством не обладает, поэтому для защиты статических переменных приходится использовать механизмы синхронизации (см. 2.6.2), а логика программы резко усложняется. Всегда следует избегать использования глобальных и статических переменных, если можно обойтись локальными.

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

Динамическая память, или куча

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

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

адрес содержимое памяти

код программы и данные,

защищенные от изменения

...

статические переменные

программы

динамическая память

max. адрес (2 32 -4)

стек

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

В языке Си для захвата и освобождения динамической памяти применяются стандартные функции malloc и free , описания их прототипов содержатся в стандартном заголовочном файле " stdlib.h ". (Имя malloc является сокращением от memory allocate - "захват памяти".) Прототипы этих функций выглядят следующим образом:

void *malloc(size_t n); // Захватить участок памяти // размером в n байт void free(void *p); // Освободить участок // памяти с адресом p

Здесь n - это размер захватываемого участка в байтах, size_t - имя одного из целочисленных типов, определяющих максимальный размер захватываемого участка. Тип size_t задается в стандартном заголовочном файле " stdlib.h " с помощью оператора typedef (см. c. 117). Это обеспечивает независимость текста Си-программы от используемой архитектуры. В 32-разрядной архитектуре тип size_t определяется как беззнаковое целое число:

typedef unsigned int size_t;

Функция malloc возвращает адрес захваченного участка памяти или ноль в случае неудачи (когда нет свободного участка достаточно большого размера). Функция free освобождает участок памяти с заданным адресом. Для задания адреса используется указатель общего типа void* . После вызова функции malloc его необходимо привести к указателю на конкретный тип, используя операцию приведения типа, см. раздел 3.4.11. Например, в следующем примере захватывается участок динамической памяти размером в 4000 байтов, его адрес присваивается указателю на массив из 1000 целых чисел:

int *a; // Указатель на массив целых чисел. . . a = (int *) malloc(1000 * sizeof(int));

Выражение в аргументе функции malloc равно 4000 , поскольку размер целого числа sizeof(int) равен четырем байтам. Для преобразования указателя используется операция приведения типа (int *) от указателя обобщенного типа к указателю на целое число.

Пример: печать n первых простых чисел

Рассмотрим пример, использующий захват динамической памяти. Требуется ввести целое цисло n и напечатать n первых простых чисел. (Простое число - это число, у которого нет нетривиальных делителей.) Используем следующий алгоритм: последовательно проверяем все нечетные числа, начиная с тройки (двойку рассматриваем отдельно). Делим очередное число на все простые числа, найденные на предыдущих шагах алгоритма и не превосходящие квадратного корня из проверяемого числа. Если оно не делится ни на одно из этих простых чисел, то само является простым; оно печатается и добавляется в массив найденных простых.

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

#include #include #include int main() { int n; // Требуемое количество простых чисел int k; // Текущее количество найденных простых чисел int *a; // Указатель на массив найденных простых int p; // Очередное проверяемое число int r; // Целая часть квадратного корня из p int i; // Индекс простого делителя bool prime; // Признак простоты printf("Введите число простых: "); scanf("%d", &n); if (n <= 0) // Некорректное значение => return 1; // завершаем работу с кодом ошибки // Захватываем память под массив простых чисел a = (int *) malloc(n * sizeof(int)); a = 2; k = 1; // Добавляем двойку в массив printf("%d ", a); // и печатаем ее p = 3; while (k < n) { // Проверяем число p на простоту r = (int)(// Целая часть корня sqrt((double) p) + 0.001); i = 0; prime = true; while (i < k && a[i] <= r) { if (p % a[i] == 0) { // p делится на a[i] prime = false; // => p не простое, break; // выходим из цикла } ++i; // К следующему простому делителю } if (prime) { // Если нашли простое число, a[k] = p; // то добавляем его в массив ++k; // Увеличиваем число простых printf("%d ", p); // Печатаем простое число if (k % 5 == 0) { // Переход на новую строку printf("\n"); // после каждых пяти чисел } } p += 2; // К следующему нечетному числу } if (k % 5 != 0) { printf("\n"); // Перевести строку } // Освобождаем динамическую память free(a); return 0; }

Пример работы данной программы:

Введите число простых: 50 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229

Операторы new и delete языка C++

В языке C++ для захвата и освобождения динамической памяти используются операторы new и delete . Они являются частью языка C++ , в отличие от функций malloc и free , входящих в библиотеку стандартных функций Си.

Пусть T - некоторый тип языка Си или C++ , p - указатель на объект типа T . Тогда для захвата памяти размером в один элемент типа T используется оператор new :

T *p; p = new T;

Например, для захвата восьми байтов под вещественное число типа double используется фрагмент

double *p; p = new double;

При использовании new , в отличие от malloc , не нужно приводить указатель от типа void* к нужному типу: оператор new возвращает указатель на тип, записанный после слова new . Сравните два эквивалентных фрагмента на Си и C++ .