Устройство центрального процессора
Внутреннее устройство тракта данных типичного фон-неймановского процессора иллюстрирует рисунок. Тракт данныхсостоит из регистров (обычно от 1 до 32), арифметико-логического устройства(АЛУ) и нескольких соединительных шин. Содержимое регистров поступает во входные регистры АЛУ, которые на рисунке обозначены буквами А и В. В них находятся входные данные АЛУ, пока АЛУ производит вычисления. Тракт данных – важная составная часть всех компьютеров.
АЛУ выполняет сложение, вычитание и другие простые операции над входными данными и помещает результат в выходной регистр. Содержимое этого выходного регистра может записываться обратно в один из регистров или сохранятся в памяти, если это необходимо. Рисунок иллюстрирует операцию сложения. Отметим, что входные и выходные регистры есть не у всех компьютеров.
Этот процесс называется циклом тракта данных.В какой-то степени он определяет, что может делать машина. Чем быстрее происходит цикл тракта данных, тем быстрее компьютер работает.
Рисунок – Тракт данных обычной фон-неймановской машины
Выполнение команд.Центральный процессор выполняет каждую команду за несколько шагов:
1. Вызывает следующую команду из памяти и переносит ее в регистр команд.
2. Меняет положение счетчика команд, который после этого указывает на следующую команду.
3. Определяет тип вызванной команды.
4. Если команда использует слово из памяти, определяет, где находится это
слово.
5. Переносит слово, если это необходимо, в регистр центрального процессора.
6. Выполняет команду.
7. Переходит к шагу 1, чтобы начать выполнение следующей команды.
Такая последовательность шагов (выборка – декодирование – выполнение)является основой работы всех компьютеров.
4.2 Основная память. Память –это тот компонент компьютера, в котором хранятся программы и данные. Можно также употреблять термин запоминающее устройство. Без памяти, откуда процессоры считывают и куда записывают информацию, не было бы цифровых компьютеров со встроенными программами.
Бит.Основной единицей хранения данных в памяти является двоичный разряд, который называется битом.Бит может содержать 0 или 1. Эта самая маленькая единица памяти. (Устройство, в котором хранятся только нули, вряд ли могло быть основой памяти. Необходимы по крайней мере два значения.)
Адреса памяти.Память состоит из ячеек,каждая из которых может хранить некоторую порцию информации. Каждая ячейка имеет номер, который называется адресом.По адресу программы могут ссылаться на определенную ячейку. Если память содержит п ячеек, они будут иметь адреса от 0 до п - 1. Все ячейки памяти содержат одинаковое число бит.
Ячейка – минимальная единица памяти, к которой можно обращаться. В последние годы практически все производители выпускают компьютеры с 8-разрядными ячейками, которые называются байтами.Байты группируются в слова.В компьютере с 32-разрядными словами на каждое слово приходится 4 байт, а в компьютере с 64-разрядными словами – 8 байт. Такая единица как слово, необходима, поскольку большинство команд производят операции над целыми словами (например, складывают два слова).
4.3 Кэш-память.Процессоры всегда работали быстрее, чем память. Разработчики памяти обычно используют новые технологии для увеличения емкости, а не быстродействия, что делает разрыв еще большим. На практике такое несоответствие в скорости работы приводит к тому, что, когда процессор обращается к памяти, проходит несколько машинных циклов, прежде чем он получит запрошенное слово. Чем медленнее работает память, тем дольше процессору приходится ждать, тем больше циклов проходит.
Самый простой способ решения проблемы – начать считывать информацию из памяти и при этом продолжать выполнение команд, но если какая-либо команда попытается использовать слово до того, как оно считано из памяти, процессор должен приостановить работу. Чем медленнее работает память, тем чаще будет возникать такая ситуация и тем больше окажется время простоя процессора. Например, если отсрочка составляет 10 циклов, весьма вероятно, что одна из 10 следующих команд попытается использовать слово, которое еще не считано из памяти.
На самом деле эта проблема не технологическая, а экономическая. Инженеры знают, как создать память, которая работает так же быстро, как процессор. Однако ее приходится помещать прямо на микросхему процессора (поскольку информация через шину поступает очень медленно). Размещение памяти большого объема на микросхеме процессора делает его больше и, следовательно, дороже, и даже если бы стоимость не имела значения, все равно существуют ограничения на размеры создаваемых процессоров. Таким образом, приходится выбирать между быстрой памятью небольшого объема и медленной памятью большого объема.
Существуют технологии, объединяющие небольшую и быструю память с большой и медленной, что позволяет по разумной цене получить память и с высокой скоростью работы, и большой емкости. Память небольшого объема с высокой скоростью работы называется кэш-памятью.
Основная идея кэш-памяти проста: в ней находятся слова, которые чаще всего используются. Если процессору нужно какое-нибудь слово, сначала он обращается к кэш-памяти. Только в том случае, если слова там нет, он обращается к основной памяти. Если значительная часть слов находится в кэш-памяти, среднее время доступа значительно сокращается.
Рисунок – Кэш-память по логике вещей должна находиться между процессором и основной памятью
Кэш-память очень важна для высокопроизводительных процессоров. Однако здесь возникает ряд вопросов. Первый вопрос – объем кэш-памяти. Чем больше объем, тем лучше работает память, но тем дороже она стоит.
Сборка модулей памяти и их типы.Со времен появления полупроводниковой памяти и до начала 90-х годов все микросхемы памяти производились, продавались и устанавливались в виде отдельных микросхем. Эти микросхемы вмещали от 1 Кбит до 1 Мбит информации и выше. В первых персональных компьютерах часто оставлялись пустые разъемы, чтобы покупатель в случае необходимости мог вставить дополнительные микросхемы памяти.
В настоящее время распространен другой подход. Группа микросхем (обычно 8 или 16) монтируется на одну крошечную печатную плату и продается как один блок. Он называется SIMM(Single Inline Memory Module – модуль памяти с односторонним расположением выводов) или DIMM(Dual Inline Memory Module – модуль памяти с двухсторонним расположением выводов).На платах SIMM устанавливается один краевой разъем с 72 контактами; при этом скорость передачи данных за один тактовый цикл составляет 32 бит. Модули DIMM, как правило, снабжаются двумя краевыми разъемами (по одному на каждой стороне платы) с 84 контактами; таким образом, общее количество контактов достигает 168, а скорость передачи данных возрастает до 64 бит за цикл. Схема модуля SIMM изображена на рисунке.
Рисунок – Модуль SIMM объемом 256 Мбайт. Модулем управляют две микросхемы
Обычно модули SIMM и DIMM содержат 8 микросхем по 256 Мбит (32 Мбайт) каждая и более. Таким образом, весь модуль вмещает 256 Мбайт информации. Во многих компьютерах предусматривается возможность установки четырех модулей; следовательно, при использовании модулей по 256 Мбайт общий объем памяти достигает 1 Гбайт.
В портативных компьютерах обычно используется модуль DIMM меньшего размера, который называется SO-DIMM(Small Outline DIMM). Модули SIMM и DIMM могут содержать бит четности или код исправления ошибок, однако, поскольку вероятность возникновения ошибок в модуле составляет примерно одну ошибку за 10 лет, в большинстве обычных компьютеров схемы обнаружения и исправления ошибок не применяются.
Иерархическая структура памяти.Иерархическая структура памяти является традиционным решением проблемы хранения больших объемов данных. На самом верху иерархии находятся регистры процессора. Доступ к регистрам осуществляется быстрее всего. Дальше идет кэш-память, объем которой сейчас составляет от 32 Кбайт до нескольких мегабайтов. Затем следует основная память, которая в настоящее время может вмещать от 16 Мбайт до десятков гигабайтов. Затем идут магнитные диски и, наконец, накопители на магнитной ленте и оптические диски, которые используются для хранения архивов.
Рисунок – Пятиуровневая организация памяти
По мере продвижения сверху вниз по иерархии меняются три параметра. Во-первых, увеличивается время доступа. Доступ к регистрам занимает несколько наносекунд, доступ к кэш-памяти – немного больше, доступ к основной памяти – несколько десятков наносекунд. Дальше идет большой разрыв: доступ к дискам занимает по крайней мере 10 мкс, а время доступа к магнитным лентам и оптическим дискам вообще может измеряться в секундах (поскольку эти накопители информации еще нужно поместить в соответствующее устройство).
Во-вторых, растет объем памяти. Регистры могут содержать в лучшем случае 128 байт, кэш-память – несколько мегабайтов, основная память – десятки тысяч мегабайтов, магнитные диски – от нескольких единиц до нескольких десятков гигабайтов. Магнитные ленты и оптические диски хранятся автономно от компьютера, поэтому их совокупный объем ограничивается только финансовыми возможностями владельца.
В третьих, увеличивается количество битов, которое вы получаете за 1 доллар. Стоимость объема основной памяти составляет несколько долларов за мегабайт,магнитных дисков – несколько центов за мегабайт, а магнитной ленты – несколько долларов за гигабайт или еще дешевле.
Магнитные диски
Магнитный диск состоит из одной или нескольких алюминиевых поверхностей, покрытых магнитным слоем. Изначально их диаметр составлял 50 см, сейчас – от 3 до 12 см, у портативных компьютеров – меньше 3 см, причем это значение продолжает уменьшаться. Головка диска, содержащая индукционную катушку, двигается над поверхностью диска, опираясь на воздушную подушку. Отметим, что у дискет головка касается поверхности. Когда через головку проходит положительный или отрицательный ток, он намагничивает поверхность под головкой. При этом магнитные частицы намагничиваются направо или налево в зависимости от полярности тока. Когда головка проходит над намагниченной областью, в ней (в головке) возникает положительный или отрицательный ток, что дает возможность считывать записанные ранее биты. Поскольку диск вращается под головкой, поток битов может записываться, а потом считываться. Конфигурация дорожки диска показана на рисунке.
Рисунок – Фрагмент дорожки диска (два сектора)
Дорожкойназывается круговая последовательность битов, записанных на диск за его полный оборот. Каждая дорожка делится на секторыфиксированной длины. Каждый сектор обычно содержит 512 байт данных. Перед данными располагается преамбула(preamble), которая позволяет головке синхронизироваться перед чтением или записью. После данных идет код исправления ошибок (Error-Correcting Code, ECC), в качестве которого используется код Хэмминга или чаще код Рида-Соломона,позволяющий исправлять множественные ошибки, а не только одиночные. Между соседними секторами находится межсекторный интервал.Многие производители указывают размер неформатированного диска (как будто каждая дорожка содержит только данные), хотя честнее было бы указывать вместимость форматированного диска, на котором не учитываются преамбулы, ЕСС-коды и межсекторные интервалы. Емкость форматированного диска обычно на 15% меньше емкости неформатированного.
У всех дисков есть кронштейны, они могут перемещаться туда и обратно по радиусу на разные расстояния от шпинделя, вокруг которого вращается диск. На разных расстояниях от оси записываются разные дорожки. Таким образом, дорожки представляют собой ряд концентрических кругов, расположенных вокруг шпинделя. Ширина дорожки зависит от величины головки и от точности ее перемещения. На сегодняшний момент диски имеют от 5000 до 10 000 дорожек на см, то есть ширина каждой дорожки составляет от 1 до 2 микрон (1 микрон = = 1/1000 мм). Следует отметить, что дорожка – это не углубление на поверхности диска, а просто кольцо намагниченного материала, которое отделяется от других дорожек небольшими пограничными областями.
Плотность записи битов на концентрических дорожках различается в зависимости от расстояния от центра диска и зависит главным образом от качества поверхности диска и чистоты воздуха. Плотность записи современных дисков разнится от 50 000 до 100 000 бит/см. Таким образом, при записи в радиальном направлении на единицу площади приходится примерно в 50 раз больше данных, чем в направлении по окружности.
Для повышения плотности производители разрабатывают технологии, в которых «длинное» измерение битов проходит не вдоль окружности диска, а вертикально – оно как бы уходит в глубь материала. Эти технологии обобщенно называются перпендикулярной записью,и уже очень скоро появятся первые коммерческие модели дисков на основе этих технологий.
Чтобы достичь высокого качества поверхности и достаточной чистоты воздуха, диски герметично закрываются. Такие диски называются винчестерами.Впервые они были выпущены фирмой IBM. У них было 30 Мбайт фиксированной памяти и 30 Мбайт сменной памяти.
Большинство магнитных дисков состоит из нескольких пластин, расположенных друг под другом, как показано на рисунке. Каждая поверхность снабжена кронштейном и головкой. Кронштейны скреплены таким образом, что одновременно могут перемещаться на разные расстояния от оси. Совокупность дорожек, расположенных на одном расстоянии от центра, называется цилиндром.В современных моделях дисков для ПК устанавливается от 6 до 12 пластин, содержащих от 12 до 24 рабочих поверхностей
Рисунок – Винчестер с четырьмя дисками
Производительность диска зависит от многих факторов. Чтобы считать или записать сектор, головка должна переместиться на нужное расстояние от оси. Этот процесс называется поиском.Среднее время поиска между дорожками, взятыми наугад, составляет от 5 до 10 мс, а поиск между смежными дорожками – менее 1 мс. Когда головка помещается на нужное расстояние от центра, выжидается некоторое время (оно называется временем ожидания сектора),пока нужный сектор не окажется под головкой. Большинство дисков вращаются со скоростью 5400, 7200 или 10 800 оборотов в минуту. Таким образом, среднее время ожидания сектора (половина оборота) составляет от 3 до 6 мс. Время передачи информации зависит от плотности записи и скорости вращения. При скорости передачи от 20 до 40 Мбайт в секунду время передачи одного сектора (512 байт) составляет от 13 до 26 мкс. Следовательно, время поиска и время ожидания сектора определяет время передачи информации. Ясно, что считывание секторов из разных частей диска неэффективно.
Следует упомянуть, что из-за наличия преамбул, ЕСС-кодов, промежутков между секторами, а также из-за того, что определенное время затрачивается на поиск дорожки и ожидание сектора, существует огромная разница между скоростью передачи данных для случаев, когда необходимые данные разбросаны в разных частях диска и когда они находятся в одном месте и считываются последовательно. Максимальная скорость передачи данных в первом случае достигается в тот момент, когда головка располагается над первым битом данных. Однако такая скорость работы может сохраняться только на одном секторе. Для некоторых приложений, например мультимедиа, имеет значение именно средняя скорость передачи за некоторый период с учетом необходимого времени поиска и времени ожидания сектора.
Суммарная длина внешних дорожек больше, чем длина внутренних. Поскольку все магнитные диски вращаются с постоянной угловой скоростью независимо от того, где находятся головки, возникает очевидная проблема. Раньше при производстве дисков изготовители создавали максимально возможную плотность записи на внутренней дорожке, и при продвижении от центра диска плотность записи постепенно снижалась. Если дорожка содержит, например, 18 секторов, то каждый из них занимает дугу в 20°, и не важно, на каком цилиндре находится эта дорожка.
В настоящее время используется другая стратегия. Цилиндры делятся на зоны (на диске их обычно от 10 до 30). При продвижении от центра диска число секторов на дорожке в каждой зоне возрастает. Это усложняет процедуру хранения информации на дорожке, но зато повышает емкость диска, что считается более важным. Все секторы имеют одинаковый размер. Схема диска с пятью зонами изображена на рисунке.
Рисунок – Диск с пятью зонами, каждая зона содержит несколько дорожек
С диском связан так называемый контроллер – микросхема, которая управляет диском. Некоторые контроллеры содержат целый процессор. В задачи контроллера управление перемещением кронштейна, обнаружение и исправление ошибок, преобразование байтов, считываемых из памяти, в непрерывный поток битов и наоборот. Некоторые контроллеры производят буферизацию и кэширование нескольких секторов на случай их дальнейшего использования, а также пропускают поврежденные секторы. Необходимость последней функции вызвана наличием секторов с поврежденным, то есть постоянно намагниченным, участком. Когда контроллер обнаруживает поврежденный сектор, он заменяет его одним из свободных секторов, которые выделяются специально для этой цели в каждом цилиндре или зоне.