1

Etapa 1

Э.Таненбаум, Х.Бос. Современные операционные системы. 4-е изд. — СПб.: Питер, 2015. — 1120 с.

09 marzo—31 mayo

2

Etapa 2

Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.

01 junio—31 agosto

3

Etapa 3

Э.Таненбаум, Д.Уэзеролл, Компьютерные сети. 5-е изд. — СПб.: Питер, 2012. — 960 с.

01 septiembre—30 noviembre

1

Etapa 1

Э.Таненбаум, Х.Бос. Современные операционные системы. 4-е изд. — СПб.: Питер, 2015. — 1120 с.

09 marzo—31 mayo

2

Etapa 2

Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.

01 junio—31 agosto

3

Etapa 3

Э.Таненбаум, Д.Уэзеролл, Компьютерные сети. 5-е изд. — СПб.: Питер, 2012. — 960 с.

01 septiembre—30 noviembre

09 marzo 2016 30 noviembre 2016
Objetivo vencido en % days%

El objetivo está desatendido

El autor lleva sin comentar el objetivo 8 años 6 meses 29 días

Autor del objetivo

leleg

Rusia, Санкт-Петербург

Educación

Осилить Таненбаума чуть более чем наполовину

3 кирпича из 5 будет чуть более чем наполовину. Можно было бы сюда ctrl+c ctrl+v про то, кто такой Эндрю Таненбаум, но он в представлении не нуждается. Если нуждается, то с р = 0.95 вам эта цель не будет интересна.

Вот эта цель тут уже 3 4 месяца в черновиках лежит. Я помаленьку время от времени почитывал старенькие издания "Архитектуры компьютера" и "Компьютерных сетей". Прочитав, как из вот этого делается вот это и вот это, был под впечатлением, как всё прикольно и интересно. Посему решил, что надо наковырять свеженькие издания, начать читать их и вытащить эту цель из черновиков.

Но самое главное, тут, на smartprogress, есть интересные личности :) (в нормальном смысле), с которыми можно обсудить тонкости и толстости, разобраться во всяких нюансах, ну или просто побугуртить на тему "лучшаяОС vs самаяпопулярнаяОС" или как-то там ещё проявить свою холиваро-гражданскую позицию. :)

 Criterio del fin

Шарю историю создания няшек и как оно шпили-вили

 Recursos personales

Время на проглощение и переваривание

 Lo ecológico del objetivo

Чтоб не быть говнокодером, надо иметь представление о том, что из себя представляет архитектура ЭВМ, как работают ОС и сети.

  1. Э.Таненбаум, Х.Бос. Современные операционные системы. 4-е изд. — СПб.: Питер, 2015. — 1120 с.

    1. Глава 1. Введение

    2. Глава 2. Процессы и потоки

    3. Глава 3. Управление памятью

    4. Глава 4. Файловые системы

    5. Глава 5. Ввод и вывод информации

    6. Глава 6. Взаимоблокировка

    7. Глава 7. Виртуализация и облако

    8. Глава 8. Многопроцессорные системы

    9. Глава 9. Безопасность

    10. Глава 10. Изучение конкретных примеров: Unix, Linux и Android

    11. Глава 11. Изучение конкретных примеров: Windows 8

    12. Глава 12. Разработка ОС

    13. Глава 13. Библиография

  2. Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.

    1. Глава 1. Введение

    2. Глава 2. Организация компьютерных систем

    3. Глава 3. Цифровой логический уровень

    4. Глава 4. Уровень микроархитектуры

    5. Глава 5. Уровень архитектуры набора команд

    6. Глава 6. Уровень операционной системы

    7. Глава 7. Уровень ассемблера

    8. Глава 8. Параллельные компьютерные архитектуры

    9. Глава 9. Библиография

    10. Приложение А. Двоичные числа

    11. Приложение Б. Числа с плавающей точкой

    12. Приложение В. Программирование на языке ассемблера

  3. Э.Таненбаум, Д.Уэзеролл, Компьютерные сети. 5-е изд. — СПб.: Питер, 2012. — 960 с.

    1. Глава 1. Введение

    2. Глава 2. Физический уровень

    3. Глава 3. Канальный уровень

    4. Глава 4. Подуровень управления доступом к среде

    5. Глава 5. Сетевой уровень

    6. Глава 6. Транспортный уровень

    7. Глава 7. Прикладной уровень

    8. Глава 8. Безопасность в сетях

    9. Глава 9. Библиография

  • 5692
  • 09 marzo 2016, 09:02

Diario del objetivo

202día
leleg26 sep. 2016, 13:14

Приветствую 2.5 анонимусов!

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

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

Такие дела. Ну а про компуктеры - пост чуть ниже.

Лена01/11/2016

:) Причина о-о-очень уважительная :))) Добра обоим :) ..а главное терпимости и понимания :)

202día

Entrada al escenario «Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.»

leleg26 sep. 2016, 12:55

Глава 4. Уровень микроархитектуры (часть 1)

Над цифровым логическим уровнем находится уровень микроархитектуры. Его задача — интерпретация команд уровня 2 (уровня архитектуры команд), как показано на рис.1. Строение уровня микроархитектуры зависит от того, каков уровень архитектуры команд, а также от стоимости и назначения компьютера. В настоящее время на уровне архитектуры команд обычно находятся простые команды, которые выполняются за один цикл (таковы, в частности, RISC-машины). В других системах (например, в Core i7) на этом уровне имеются более сложные команды; выполнение одной такой команды занимает несколько циклов. Чтобы выполнить команду, нужно найти операнды в памяти, считать их и записать полученные результаты обратно в память. Управление уровнем команд со сложными командами отличается от управления уровнем команд с простыми командами, так как в первом случае выполнение одной команды требует определенно последовательности операций.

Пример микроархитектуры

Каждая разработка индивидуальна. В качестве примера мы выбрали подмножество виртуальной машины Java. Это подмножество содержит только целочисленные команды, поэтому мы назвали его IJVM (Integer Java Virtual Machine — виртуальная машина Java для целых).
Хотя структура IJVM не слишком сложная, она может стать хорошей отправной точкой при описании основных принципов обработки команд и последовательностью их выполнения. Наша микроархитектура содержит микропрограмму (в ПЗУ), которая должна вызывать, декодировать и выполнять IJVM-команды. Мы не можем использовать для этой микропрограммы интерпретатор Oracle JVM, поскольку нам нужна всего лишь крошечная микропрограмма, которая запускает отдельные вентили аппаратного обеспечения. Интерпретатор Oracle JVM был написан на языке C для обеспечения портируемости программного обеспечения, и он не способен управлять аппаратным обеспечением.
Поскольку реальное аппаратное обеспечение состоит только из компонентов, описанных в главе 3, то теоретически после прочтения этой главы читатель сможет пойти в магазин, купить мешок транзисторов и сконструировать машину IJVM. Тому, кто успешно выполнит это задание, полагаются дополнительные баллы (а также обследование у психиатра).
Условимся каждую команду уровня архитектуры команд считать функцией, вызываемой из основной программы. В данном случае основная программа довольно проста - бесконечный цикл. Сначала программа определяет, какую функцию нужно выполнить, затем вызывает эту функцию, после чего все снова повторяется.
Микропрограмма содержит набор переменных, к которым имеют доступ все функции. Этот набор переменных называется состоянием компьютера. Каждая функция изменяет по крайней мере несколько переменных, формируя при этом новое состояние. Например, счетчик команд — это часть состояния. Он указывает местонахождение очередной функции (то есть команды уровня архитектуры команд), которая должна быть выполнена. Во время выполнения каждой команды счетчик команд указывает на следующую команду.
IJVM-команды очень короткие. Каждая команда состоит из нескольких полей, обычно одного или двух, каждое из которых решает определенную задачу. Первое поле содержит код операции. Этот код задает тип команды (например, сложение, переход или еще какая-нибудь команда). Многие команды содержат дополнительное поле, которое определяет тип операнда. Например, команды, которые имеют доступ к локальным переменным, должны иметь специальное поле, чтобы определить, какая это переменная.
Такая модель выполнения команды, называемая иногда циклом выборка-декодирование-исполнение, полезна для теории и может стать основой воплощения уровня архитектуры команд со сложными командами.

Тракт данных

Тракт данных — это часть центрального процессора, состоящая из АЛУ (арифметико-логического устройства), его входов и выходов. Тракт данных нашей микроархитектуры показан на рис.2. Хотя этот тракт данных и был оптимизирован для интерпретации IJVM-программ, он схож с трактами данных большинства компьютеров. Тракт содержит ряд 32-разрядных регистров, которым мы приписали символические названия (например, PC, SP, MDR). Хотя некоторые из этих названий нам знакомы, важно понимать, что эти регистры доступны только на уровне микроархитектуры (для микропрограммы). Им даны такие названия, поскольку они обычно содержат значения, соответствующие переменным с аналогичными названиями на уровне архитектуры команд. Содержание большинства регистров передается на шину B. Выходной сигнал АЛУ управляет схемой сдвига и далее шиной C. Значение с шины C может записываться в один или несколько регистров одновременно. Шину A мы введем позже, а пока представим, что ее нет.
На рис.2 перечеркнутая стрелочка с цифрой 6 сверху указывает на наличие шести линий управления АЛУ. Из них F0 и F1 служат для задания операции, ENA и ENB — для разрешения входных сигналов A и B соответственно, INVA — для инверсии левого входа и INC — для переноса бита в младший разряд, что эквивалентно прибавлению единицы к результату. Впрочем, не все 64 комбинации значений на линиях управления делают что-то полезное.
Некоторые комбинации показаны в табл. на рис.3. Не все из этих функций нужны для машины IJVM, но многие из них могут пригодиться для полнофункциональной машины ( JVM).
АЛУ, изображенное на рис.2, содержит два входа для данных: левый вход (A) и правый вход (B). С левым входом связан регистр временного хранения H. С правым входом связана шина B, на которую могут поступать значения с одного из девяти источников, что показано с помощью девяти серых стрелок, примыкающих к шине.
В регистр H может поступать функция АЛУ, которая проходит через правый вход (из шины B) к выходу АЛУ. Одна из таких функций — сложение входных сигналов АЛУ, только при этом сигнал ENA отрицателен, и левый вход получает значение 0. Если к значению шины B прибавить 0, это значение не изменится. Затем результат проходит через схему сдвига (также без изменений) и сохраняется в регистре H.
Существует еще две линии управления, которые используются независимо от остальных. Они служат для управления выходом АЛУ. Линия SLL8 (Shift Left Logical — логический сдвиг влево) сдвигает число влево на 1 байт, заполняя 8 самых младших двоичных разрядов нулями. Линия SRA1 (Shift Right Arithmetic — арифметический сдвиг вправо) сдвигает число вправо на 1 бит, оставляя самый старший двоичный разряд без изменений.
Операции чтения и записи регистра могут выполняться за один цикл. Для этого, например, нужно поместить значение SP на шину B, закрыть левый вход АЛУ, установить сигнал INC и сохранить полученный результат в регистре SP, увеличив таким образом его значение на 1 (восьмая строка табл. на рис.3). Если один и тот же регистр может считываться и записываться за один цикл, то как при этом предотвратить искажение данных? Дело в том, что процессы чтения и записи происходят в разных частях цикла. Когда в качестве правого входа АЛУ выбирается один из регистров, его значение помещается на шину B в начале цикла и хранится там на протяжении всего цикла. Затем АЛУ выполняет свою работу, результат которой через схему сдвига поступает на шину C. Незадолго до конца цикла, когда значения выходных сигналов АЛУ и схемы сдвига стабилизируются, содержание шины C передается в один или несколько регистров. Одним из этих регистров вполне может быть тот, с которого поступил сигнал на шину B. Точная синхронизация тракта данных делает возможным считывание и запись одного и того же регистра за один цикл.

Синхронизация тракта данных

На рис.4. показано, как происходит синхронизация этих действий. В начале каждого цикла генерируется короткий импульс. На спаде импульса устанавливаются биты, которые будут запускать все вентили. Этот процесс занимает определенный отрезок времени Δw. Затем выбирается регистр, и его значение передается на шину B. На это требуется время Δx. Далее АЛУ и схема сдвига начинают оперировать поступившими к ним данными. После промежутка Δy выходные сигналы АЛУ и схемы сдвига стабилизируются. В течение следующего отрезка Δz результаты проходят по шине С к регистрам, куда они загружаются на фронте следующего импульса. Загрузка должна запускаться фронтом сигнала и осуществляться мгновенно, так что даже в случае изменений каких-либо входных регистров изменения в шине C будут происходить только после полной загрузки регистров. На фронте импульса регистр, запускающий шину B, приостанавливает свою работу и ждет следующего цикла. На рисунке имеются еще регистры MPC и MIR, а также память. Их предназначение мы обсудим чуть позже.
Важно понимать, что хотя в тракте данных нет никаких запоминающих элементов, для прохождения сигнала по нему требуется определенное время. Изменение значения на шине B вызывает изменения на шине C не сразу, а только после паузы (это объясняется задержками на каждом шаге). Следовательно, даже если один из входных регистров изменяется, новое значение сохраняется в регистре задолго до того, как старое (и уже неправильное) значение этого регистра, помещенное на шину B, сможет достичь АЛУ.
Чтобы такая система была работоспособна, требуется жесткая синхронизация и довольно длинный цикл; должно быть известно минимальное время прохождения сигнала через АЛУ; регистры должны загружаться с шины C очень быстро. Если подойти к этому вопросу с достаточным вниманием, можно сделать так, чтобы тракт данных функционировал правильно.
Также цикл тракта данных можно рассматривать как совокупность подциклов. Начало подцикла 1 инициируется спадом синхронизирующего сигнала.
1. Устанавливаются сигналы управления (Δw).
2. Значения регистров загружаются на шину B (Δx).
3. Действуют АЛУ и схемы сдвига (Δy).
4. Результаты проходят по шине C обратно к регистрам (Δz).
На фронте следующего цикла результаты сохраняются в регистрах. Никаких внешних сигналов, указывающих на начало и конец подцикла и сообщающих АЛУ, когда нужно начинать работу и передавать результаты на шину C, нет. В действительности АЛУ и схема сдвига работают постоянно. Однако их входные сигналы остаются недействительными до истечения периода Δw + Δx после спада синхронизирующего сигнала. Точно так же их выходные сигналы недействительны в течение периода Δw + Δx + Δy. Единственными внешними сигналами, управляющими трактом данных, являются спад синхронизирующего сигнала, с которого начинается цикл тракта данных, и фронт синхронизирующего сигнала, инициирующий загрузку регистров с шины C. Границы подциклов определяются только временем прохождения сигнала, поэтому для надежной загрузки регистра разработчики тракта данных должны очень четко рассчитать, чтобы время Δw + Δx + Δy + Δz стабильно предшествовало фронту синхронизирующего сигнала.

Функционирование памяти

Наша машина может взаимодействовать с памятью двумя способами: через порт с пословной адресацией (32-разрядный) и через порт с побайтовой адресацией (8-разрядный). Порт с пословной адресацией управляется двумя регистрами: MAR (Memory Address Register — адресный регистр памяти) и MDR (Memory Data Register — информационный регистр памяти), которые показаны на рис.2 8-разрядный порт управляется регистром PC, который записывает 1 байт в 8 младших битов регистра MBR (Memory Buffer Register — буферный регистр памяти). Этот порт может считывать данные из памяти, но не может записывать их в память.
Каждый из этих регистров, а также все остальные регистры, изображенные на рис.2, запускаются одним из сигналов управления. Белая стрелка под регистром указывает на сигнал управления, который разрешает передавать выходной сигнал регистра на шину B. Регистр MAR не связан с шиной B, поэтому у него нет разрешающего сигнала управления. У регистра H этого сигнала тоже нет, так как он является единственным возможным левым входом АЛУ и поэтому всегда разрешен.
Черная стрелка под регистром указывает на сигнал управления, который записывает (то есть загружает) регистр с шины C. Поскольку регистр MBR не может загружаться с шины C, у него нет записывающего сигнала управления (но зато есть два сигнала разрешения, о которых речь пойдет далее). Чтобы инициировать процесс считывания из памяти или записи в память, нужно загрузить соответствующие регистры памяти, а затем передать памяти сигнал чтения или записи (он не показан на рис.2).
Регистр MAR содержит адреса слов, таким образом, значения 0, 1, 2 и т. д. указывают на последовательные слова. Регистр PC содержит адреса байтов, таким образом, значения 0, 1, 2 и т. д. указывают на последовательные байты. Если значение 2 поместить в регистр PC и начать процесс чтения, то из памяти считается байт 2, который затем будет записан в 8 младших битов регистра MBR. Если значение 2 поместить в регистр MAR и начать процесс чтения, то из памяти считаются байты с 8 по 11 (то есть слово 2), которые затем будут записаны в регистр MDR.
Для чего потребовалось два регистра с разной адресацией? Дело в том, что регистры MAR и PC будут использоваться для обращения к двум разным областям памяти. Зачем это нужно, станет ясно чуть позже. А пока достаточно сказать, что регистры MAR и MDR используются для чтения и записи слов
данных на уровне архитектуры команд, а регистры PC и MBR — для считывания программы уровня архитектуры команд, которая состоит из потока байтов. Во всех остальных регистрах, содержащих адреса, применяется принцип пословной адресации, как и в MAR.
В физической реализации существует только одна память с байтовой адресацией. Как же регистр MAR обращается к словам, если память состоит из байтов? Когда значение регистра MAR помещается на адресную шину, 32 бита этого значения не попадают точно на 32 адресные линии (с 0 по 31). Вместо этого бит 0 соединяется с адресной линией 2, бит один — с адресной линией 3 и т. д. Два старших бита не учитываются, поскольку они нужны только для адресов свыше 2^32, а такие адреса недопустимы в нашей машине на 4 Гбайт. Когда значение MAR равно 1, на шину помещается адрес 4; когда значение MAR равно 2, на шину помещается адрес 8 и т. д. Распределение битов регистра MAR по адресным линиям иллюстрирует рис.5.
Как уже отмечалось, данные, считанные из памяти через 8-разрядный порт, сохраняются в 8-разрядном регистре MBR. Этот регистр может быть скопирован на шину B двумя способами: со знаком и без знака. Когда требуется значение без знака, 32-разрядное слово, помещаемое на шину B, содержит значение MBR в младших 8-ми битах и нули в остальных 24-х битах. Значения без знака нужны для индексирования таблиц или получения целого 16-разрядного числа из двух последовательных байтов (без знака) в потоке команд.
Другой способ превращения 8-разрядного регистра MBR в 32-разрядное слово — считать его значением со знаком от –128 до +127 включительно и использовать это значение для порождения 32-разрядного слова с тем же самым численным значением. Это преобразование делается путем дублирования знакового (самого левого) бита регистра MBR в верхние 24 битовые позиции шины B. Такой процесс называется расширением по знаку, или знаковым расширением. Если выбран данный параметр, то либо все старшие 24 бита примут значение 0, либо все они примут значение 1 в зависимости от того, каков самый левый бит регистра MBR: 0 или 1.
В какое именно 32-разрядное значение (со знаком или без знака) превратится 8-разрядное значение регистра MBR, определяется тем, какой из двух сигналов управления (две белые стрелки под регистром MBR на рис.2) установлен. Пунктирный прямоугольник обозначает способность 8-разрядного регистра MBR действовать в качестве источника 32-разрядных слов для шины B.

Микрокоманды

Для управления трактом данных, изображенном на рис.2, необходимо 29 сигналов. Их можно разделить на пять функциональных групп:
- 9 сигналов для записи данных с шины C в регистры;
- 9 сигналов для разрешения передачи регистров на шину B и в АЛУ;
- 8 сигналов для управления АЛУ и схемой сдвига;
- 2 сигнала, которые указывают, что нужно осуществить чтение или запись через регистры MAR/MDR (на рисунке они не показаны);
- 1 сигнал, который указывает, что нужно осуществить вызов из памяти через регистры PC/MBR (на рисунке также не показан).
Значения этих 29 сигналов управления определяют операции для одного цикла тракта данных. Цикл состоит из передачи значений регистров на шину B, прохождения этих сигналов через АЛУ и схему сдвига, передачи полученных результатов на шину C и записи их в нужный регистр (регистры). Кроме того, если установлен сигнал считывания данных, то в конце цикла после загрузки регистра MAR начинает работать память. Данные из памяти помещаются в MBR или MDR в конце следующего цикла, а использоваться эти данные могут в цикле, который идет после него. Другими словами, если считывание из памяти через любой из портов начинается в конце цикла k, то полученные данные не смогут использоваться в цикле k + 1 (только в цикле k + 2 и позже).
Это поведение, которое на первый взгляд кажется противоестественным, изображено на рис.4. Сигналы управления памятью выдаются только после загрузки регистров MAR и PC, которая происходит на фронте синхронизирующего сигнала незадолго до конца цикла 1. Будем считать, что память помещает результаты на шину памяти в течение одного цикла, поэтому регистры MBR и/или MDR могут загружаться на следующем фронте вместе с другими регистрами.
Другими словами, мы загружаем регистр MAR в конце цикла тракта данных и инициируем работу памяти сразу после этого. Следовательно, мы не можем ожидать, что результаты считывания окажутся в регистре MDR в начале следующего цикла, особенно если длительность импульса небольшая. Этого времени будет недостаточно. Поэтому между началом считывания из памяти и использованием полученного результата должен помещаться один цикл. Конечно, во время этого цикла могут выполняться и другие операции — не только те, которым требуется слово из памяти.
Так как регистры MBR и MDR загружаются на фронте синхронизирующего сигнала вместе с другими регистрами, их можно считывать во время циклов, в течение которых осуществляется передача нового слова из памяти. Они возвращают старые значения, поскольку прошло еще недостаточно времени для того, чтобы они сменились новыми. Здесь нет никакой двусмысленности: до тех пор пока новые значения не загрузятся в регистры MBR и MDR на фронте сигнала, предыдущие значения находятся там и могут использоваться. Отметим, что операции считывания могут проходить одна за другой, то есть в двух последовательных циклах (поскольку сам процесс считывания занимает только один цикл). Кроме того, обе памяти могут функционировать в одно и то же время. Однако попытка чтения и записи одного и того же байта одновременно приводит к неопределенным результатам.
Выходной сигнал шины C можно записать сразу в несколько регистров, однако нежелательно передавать значения более одного регистра на шину B (более того, в некоторых реальных реализациях это приведет к физическому повреждению оборудования). Немного усовершенствовав схемотехнику, мы можем сократить количество битов, необходимых для выбора одного из возможных источников для запуска шины B. Существуют только 9 входных регистров, которые могут запустить шину B (регистры MBR со знаком и без знака учитываются отдельно). Следовательно, мы можем закодировать информацию для шины B в 4 бита и использовать декодер для порождения 16 сигналов управления, 7 из которых не нужны (у разработчиков коммерческих моделей, возможно, возникло бы желание избавиться от одного из регистров, чтобы обойтись тремя битами, но мы, как ученые, предпочитаем иметь один лишний бит, но при этом получить более понятную конструкцию).
Теперь мы можем управлять трактом данных с помощью 9 + 4 + 8 + 2 + 1 = 24 сигналов, следовательно, нам требуется 24 бита. Однако эти 24 бита управляют трактом данных только в течение одного цикла. Задача управления — определить, что нужно делать в следующем цикле. Чтобы учесть это в конструкции контроллера, мы создадим формат для описания операций, выполняемых с использованием 24 бит управления и двух дополнительных полей: поле NEXT_ADDRESS (следующий адрес) и поле JAM. Содержание каждого из этих полей мы обсудим позже. На рис.6 изображен один из возможных форматов. В нем представлены следующие 6 групп, содержащие 36 сигналов:
- Addr — адрес следующей потенциальной микрокоманды;
- JAM — определение того, как выбирается следующая микрокоманда;
- ALU — функции АЛУ и схемы сдвига;
- C — выбор регистров, которые записываются с шины C;
- Mem — функции памяти;
- B — выбор источника для шины B (как он кодируется, было показано ранее).
Порядок групп в принципе произволен, хотя мы долго и тщательно его подбирали, чтобы избежать пересечений на диаграмме, показанной на рис.7. Подобные пересечения на диаграммах часто соответствуют пересечениям проводов на микросхемах. Они значительно затрудняют разработку и их лучше сводить к минимуму.

Управление микрокомандами — микроархитектура Mic-1

До сих пор мы рассказывали об управлении трактом данных и не касались вопроса о том, какой именно сигнал управления и на каком цикле должен устанавливаться. Контроллер последовательности в каждом цикле должен выдавать следующую информацию:
- состояние каждого сигнала управления в системе;
- адрес микрокоманды, которая будет выполняться следующей.
Рис.7 представляет собой подробную диаграмму полной микроархитектуры нашей машины, которую мы назвали Mic-1. Диаграмма состоит из двух частей: тракта данных (слева), который мы уже обсудили, и блока управления (справа), который мы рассмотрим сейчас.
Самой большой и самой важной частью блока управления является управляющая память. Функционально управляющая память представляет собой память, в которой вместо обычных команд хранятся микрокоманды. В нашем примере она содержит 512 слов; каждое слово состоит из одной 36-разрядной микрокоманды, формат которой показан на рис.6.
Управляющая память отличается от основной памяти тем, что команды, хранящиеся в основной памяти, всегда выполняются в порядке адресов (за исключением переходов), а микрокоманды — нет. Вместо этого каждая микрокоманда сама указывает на следующую микрокоманду.
Поскольку управляющая память функционально представляет собой ПЗУ, ей нужны собственные адресный регистр и регистр данных. Ей не требуются сигналы чтения и записи, поскольку процесс считывания происходит постоянно. Мы назовем адресный регистр управляющей памяти MPC (MicroProgram Counter — счетчик микропрограмм). Регистр данных мы назовем MIR (MicroInstruction Register — регистр микрокоманд). Он содержит текущую микрокоманду, биты которой запускают сигналы управления, влияющие на работу тракта данных.
Регистр MIR, изображенный на рис.7, содержит те же шесть групп сигналов, которые показаны на рис.7. Группы Addr и J (то же, что JAM) контролируют выбор следующей микрокоманды. Группа ALU содержит 8 бит, которые позволяют выбрать функцию АЛУ и запустить схему сдвига. Биты C загружают отдельные регистры с шины C. Сигналы M управляют работой памяти.
Наконец, последние 4 бита запускают декодер, который определяет, значение какого регистра будет передано на шину B. В начале каждого цикла (фронт синхронизирующего сигнала) в регистр MIR загружается слово из управляющей памяти, которая на рисунке отмечена буквами MPC. Загрузка регистра MIR занимает период Δw, то есть первый подцикл.

Когда микрокоманда попадает в MIR, в тракт данных поступают различные сигналы. Значение определенного регистра помещается на шину B, а АЛУ узнает, какую операцию нужно выполнять. Все это происходит во время второго подцикла. После периода Δw + Δx входные сигналы АЛУ стабилизируются.
После периода Δy стабилизируются сигналы N и Z АЛУ, а также выходной сигнал схемы сдвига. Затем значения N и Z сохраняются в двух 1-разрядных триггерах. Эти биты, как и биты всех регистров, которые загружаются с шины C и памяти, сохраняются на фронте синхронизирующего сигнала, ближе к концу цикла тракта данных. Выходной сигнал АЛУ не сохраняется, а просто передается в схему сдвига. Работа АЛУ и схемы сдвига происходит во время подцикла 3.
После следующего интервала, Δz, выходной сигнал схемы сдвига, пройдя через шину C, достигает регистров. Регистры загружаются в конце цикла на фронте синхронизирующего сигнала. Во время подцикла 4 происходит загрузка регистров и триггеров N и Z. Подцикл завершается сразу после окончания фронта, когда все значения сохранены, результаты предыдущих операций памяти доступны, регистр MPC загружен. Этот процесс продолжается снова и снова, пока вы не выключите компьютер.
Микропрограмме приходится не только управлять трактом данных, но и определять, какая микрокоманда должна выполняться следующей, поскольку микропрограммы не упорядочены в управляющей памяти. Вычисление адреса следующей микрокоманды начинается после загрузки регистра MIR. Сначала в регистр MPC копируется 9-разрядное поле NEXT_ADDRESS (следующий адрес). Пока происходит копирование, проверяется поле JAM. Если оно содержит значение 000, то ничего больше делать не нужно, и когда копирование поля NEXT_ADDRESS завершится, регистр MPC укажет на следующую микрокоманду.
Если один или несколько битов в поле JAM равны 1, то потребуются еще некоторые действия. Если бит JAMN равен 1, то триггер N соединяется через схему ИЛИ со старшим битом регистра MPC. Если бит JAMZ равен 1, то триггер Z соединяется через схему ИЛИ со старшим битом регистра MPC. Если оба бита равны 1, они оба соединяются через схему ИЛИ с тем же битом. А теперь объясним, зачем нужны триггеры N и Z. Дело в том, что после фронта сигнала (и вплоть до спада) шина B больше не запускается, поэтому выходные сигналы АЛУ уже не могут считаться правильными. Сохранение флагов состояния АЛУ в регистрах N и Z делает правильные значения установившимися и доступными для вычисления регистра MPC, независимо от того, что происходит вокруг АЛУ. Отметим, что в любом случае регистр MPC может принять только одно из двух возможных значений: 1. Значение NEXT_ADDRESS. 2. Значение NEXT_ADDRESS со старшим битом, соединенным операцией ИЛИ с логической единицей.

Чтобы разобраться в следующем материале этой главы, очень важно понимать принципы синхронизации машины, поэтому повторим их еще раз. Синхронизирующий сигнал делится на подциклы, хотя внешние изменения этого сигнала происходят только на спаде, с которого начинается цикл, и на фронте, который загружает регистры и триггеры N и Z. Посмотрите еще раз на рис.4.
Во время подцикла 1, который инициируется спадом сигнала, адрес, находящийся в регистре MPC, загружается в регистр MIR. Во время подцикла 2 регистр MIR устанавливает сигналы, и на шину B загружается выбранный регистр. Во время подцикла 3 работают АЛУ и схема сдвига. Во время подцикла 4 стабилизируются значения шины C, шин памяти и АЛУ. На фронте сигнала загружаются регистры из шины C, загружаются триггеры N и Z, а регистры MBR и MDR получают результаты из памяти, начавшей функционировать в конце предыдущего цикла (если эти результаты вообще имеются). Как только регистр MBR получает свое значение, загружается регистр MPC. Это происходит где-то в середине отрезка между фронтом и спадом, но уже после загрузки регистров MBR и MDR. Регистр MPC может загружаться либо уровнем (но не фронтом) сигнала, либо через фиксированный отрезок времени после фронта. Все это означает, что регистр MPC не получает своего значения до тех пор, пока не будут готовы регистры MBR, N и Z, от которых он зависит. На спаде сигнала, когда начинается новый цикл, регистр MPC может обращаться к памяти.
Отметим, что каждый цикл является самодостаточным. В каждом цикле определяется, значение какого регистра должно поступать на шину B, что должны делать АЛУ и схема сдвига, куда нужно сохранить значение шины C и, наконец, каким должно быть следующее значение регистра MPC.
Следует сделать еще одно замечание по поводу рис.7. До сих пор мы считали MPC регистром, который состоит из 9 бит и загружается на высоком уровне сигнала. В действительности этот регистр вообще не нужен. Все его входные сигналы можно непосредственно связать с управляющей памятью. Поскольку эти сигналы присутствуют в управляющей памяти на спаде синхронизирующего сигнала, когда выбирается и считывается регистр MIR, этого достаточно. Их не нужно хранить в регистре MPC. По этой причине MPC может быть реализован в виде виртуального регистра, который представляет собой просто место объединения сигналов и похож скорее на коммутационное поле, чем на настоящий регистр. Если MPC сделать виртуальным регистром, то процедура синхронизации значительно упрощается: в этом случае события происходят только на фронте и спаде сигнала. Но если вам проще считать MPC реальным регистром, то такой подход тоже вполне допустим.

Daniil02/10/2016

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

162día
leleg17 ago. 2016, 12:10

Привет 2.5 анонимусам! :)

Очередной длиннопост. Сегодня принёс немножко про Core i7, шину PCI и шину PCI Express. На этом, пожалуй, и закончим страдать над главой 3 "Архитектуры компьютера".

162día

Entrada al escenario «Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.»

leleg17 ago. 2016, 12:05

Глава 3. Цифровой логический уровень (часть 5)

Intel Core i7

Core i7 — прямой потомок процессора 8088. Презентация Core i7 состоялась в ноябре 2008 года. Публике было представлено четырехпроцессорное ЦПУ с 731 млн транзисторов, частотой до 3,2 ГГц и технологией 45 нм. Новая версия Core i7 на базе архитектуры «Sandy-Bridge» содержит до 1,16 млрд транзисторов, работает на скорости 3,5 ГГц, технология 32 нм. Хотя Core i7 очень сильно отличается от процессора 8088 с его 29 000 транзисторов, он полностью совместим с ним и может выполнять двоичные программы, написанные для 8088 (как и для всех процессоров Intel, появившихся между Core i7 и 8088).

С точки зрения ПО Core i7 представляет 64-разрядную машину. Он поддерживает ту же стандартную промышленную архитектуру (ISA), что и процессоры 80386, 80486, Pentium, Pentium II, Pentium Pro, Pentium III и Pentium 4, включая те же регистры, те же команды и такую же встроенную систему обработки значений с плавающей точкой стандарта IEEE 754. Помимо этого, в Core i7 имеются новые команды, предназначенные в первую очередь для криптографических операций.

Core i7 продается с разным числом внутренних процессоров — от 2 до 6 (в ближайшем будущем их число должно увеличиться). Если программисты пишут параллельную программу с использованием потоков и блокировок, организация параллельного выполнения на нескольких процессорах обеспечит существенный выигрыш по скорости. Поддерживается технология гиперпоточности, позволяющая нескольким аппаратным потокам быть активными одновременно. Гиперпоточность позволяет осуществлять аппаратное переключение потоков во время коротких задержек (например, промахов кэша). Программное переключение потоков может происходить только во время очень длинных задержек (например, сбоев страниц), поскольку для его реализации требуются сотни тактов.

На уровне микроархитектуры Core i7 базируется на архитектуре своих предшественников Core 2 и Core 2 Duo. Процессор Core i7 может выполнять до четырех команд одновременно, что позволяет рассматривать его как 4-кратную суперскалярную машину. В процессорах Core i7 используется трехуровневый кэш. Каждый процессор Core i7 имеет 32-килобайтный кэш данных первого уровня (L1) и 32-килобайтный кэш команд первого уровня. У каждого ядра также имеется собственный 256-килобайтный кэш второго уровня (L2). Кэш второго уровня унифицирован, то есть позволяет хранить комбинацию команд и данных. Все ядра совместно используют один унифицированный кэш третьего уровня (L3), размер которого составляет от 4 до 15 Мбайт в зависимости от модели процессора.

В системах с процессором Core i7 используются две внешние шины, обе синхронные. Шина памяти DDR3 служит для доступа к главному динамическому ОЗУ; шина PCI Express — для взаимодействия с устройствами ввода-вывода. Высокопроизводительные версии Core i7 содержат несколько шин памяти и PCI Express, а также порт QPI (Quick Path Interconnect). Порт QPI связывает процессор с внешним мультипроцессорным соединением, что открывает возможность построения систем, в которых установлено более шести процессоров. Порт QPI отправляет и получает запросы когерентности кэша, а также другие управляющие сообщения для мультипроцессорных систем — например, межпроцессорные прерывания.

Основная проблема Core i7, как и у всех современных процессоров для настольных систем, заключается в объемах потребляемой мощности и выделяемого тепла. Чтобы избежать повреждения кремниевых компонентов, необходимо отводить тепло от процессора сразу же после его образования. Процессоры Core i7 в зависимости от частоты и модели потребляют от 17 до 1502 Вт. Intel пребывает в постоянном поиске новых решений, которые позволили бы урегулировать проблему тепловыделения.

Микросхемы Core i7 (рис.1) поставляются в квадратном корпусе LGA с длиной стороны 37,5 мм. На нижней плоскости микросхемы находится 1155 площадок, из которых 286 используются для подачи питания, а 360 заземляются в целях шумоподавления. Площадки размещены в виде матрицы 40 х 40, причем ее центральный сегмент 17 х 25 не заполнен. По периметру асимметрично пропущены еще 20 площадок, за счет чего исключается возможность неправильной установки микросхемы в разъём материнской платы. Микросхема снабжена креплением для радиатора, который рассеивает тепло, и вентилятора, который охлаждает процессор. Мощность процессора Core i7 составляет 150 Вт (как электрическая лампочка). В случае с портативным компьютером, который работает от батареи с ограниченным зарядом, потребление большого количества энергии нежелательно. Чтобы решить эту проблему, компания Intel нашла способ переводить центральный процессор в режим пониженного энергоснабжения (состояние «сна»), если он не выполняет никаких действий, и вообще отключать его (вводить в состояние «глубокого сна»), если есть вероятность, что он не будет выполнять никаких действий некоторое время. Всего предусмотрено пять различных состояний — от полной активности до глубокого сна. В промежуточных состояниях одни функции работают (например, функция слежения кэша, обработка прерываний), другие — отключаются. В состоянии глубокого сна значения кэш-памяти и регистров сохраняются, а тактовый генератор и все внутренние блоки отключаются. Выход из «глубокого сна» происходит по специальному аппаратному сигналу. Видит ли Core i7 сны во время «глубокого сна», науке пока не известно.

Цоколевка процессора Core i7

Из 1155 контактов Core i7 для сигналов используются 447, для питания (с различным напряжением) — 286, для «земли» — 360; еще 62 зарезервированы на будущее. Для некоторых логических сигналов требуются два и более выводов (например, для запроса адреса памяти), поэтому существует только 131 вариант сигналов. Цоколевка Core i7 в несколько упрощенном виде представлена на рис.2. С левой стороны рисунка показано 5 основных групп сигналов шины памяти; с правой стороны расположены прочие сигналы. Первые два сигнала шины используются для взаимодействия с DDR3-совместимой динамической памятью. Группа сигналов предоставляет банку динамической памяти адрес, данные, управляющую информацию и синхронизацию. Core i7 поддерживает два независимых канала DDR3, работающих на частоте шины 666 МГц с передачей данных по фронту и по спаду сигнала; таким образом, возможно до 1333 млн взаимодействий в секунду. Интерфейс DDR3 является 64-разрядным, то есть два интерфейса DDR3 совместными усилиями ежесекундно предоставляют программам до 20 Гбайт данных. Третья группа используется интерфейсом PCI, предназначенным для прямой связи периферийных устройств с центральным процессором Core i7. PCI Express — высокоскоростной последовательный интерфейс, в котором каждый последовательный канал образует «тракт» обмена данными с периферийными устройствами. Core i7 поддерживает интерфейс x16, то есть может одновременно использовать 16 трактов с совокупной пропускной способностью 16 Гбайт/с. Хотя канал является последовательным, через PCI Express передаются самые разнообразные команды, включая команды чтения с устройства, записи, прерывания и настройки конфигурации. Следующая группа сигналов образует интерфейс DMI (Direct Media Interface), используемый для связи процессора Core i7 с комплектным чипсетом. Интерфейс DMI схож с PCI Express, хотя и работает на половине скорости последнего, поскольку четыре тракта могут обеспечить скорость передачи данных только до 2,5 Гбайт/с. Чипсет содержит полнофункциональную поддержку дополнительных периферийных интерфейсов, обычно необходимую для высокопроизводительных систем с многочисленными устройствами ввода-вывода. Чипсет Core i7 состоит из микросхем P67 и ICH10. Микросхема P67 обеспечивает поддержку интерфейсов SATA, USB, аудио, PCIe и флэш-памяти.

Микросхема ICH10 обеспечивает поддержку наследных интерфейсов, включая интерфейс PCI и функциональность контроллера прерываний 8259A. Кроме того, ICH10 содержит много других схем: часы реального времени, таймеры событий и контроллеры прямого доступа к памяти (DMA). Существование таких микросхем значительно упрощает сборку полноценного персонального компьютера.

Core i7 может осуществлять прерывания тем же способом, что и 8088 (в целях совместимости), или использовать новую систему прерывания с устройством APIC (Advanced Programmable Interrupt Controller — усовершенствованный программируемый контроллер прерываний). Core i7 может действовать на любом из нескольких предустановленных напряжений, но процессор должен знать, на каком именно напряжении ему предстоит работать. Сигналы управления питанием используются для автоматического выбора напряжения источника питания, оповещения процессора о стабильности питания и ряда других родственных операций. С их же помощью осуществляется переход в различные состояния сна, которые, естественно, являются одними из инструментов управления питанием.

Несмотря на сложный механизм управления питанием, температура Core i7 может достигать очень высоких значений. Группа сигналов температурного контроля позволяет процессору оповещать окружающие устройства об опасности перегрева. Сюда относится, например, сигнал, который выдается центральным процессором, если его внутренняя температура превышает 130 °C (266 °F). Впрочем, даже на таких запредельных температурах вам не придется беспокоиться о безопасности Core i7. Если внутренние датчики обнаруживают, что процессор вскоре перегреется, они запускают терморегуляцию — механизм, быстро снижающий выделение тепла за счет того, что процессор работает только на каждом N-м такте. Конечно, за терморегуляцию приходится расплачиваться снижением производительности системы. До изобретения терморегуляции в случае недостаточно эффективного охлаждения процессор перегорал. Свидетельства этих «мрачных времен» температурного контроля можно найти на YouTube (поищите по запросу «exploding CPU»).

Конвейерный режим шины памяти процессора Core i7

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

1. Фаза активизации (ACT) памяти «открывает» строку динамической памяти, делая ее готовой для последующих обращений.

2. В фазе чтения (READ) или записи (WRITE) могут происходить обращения к отдельным словам открытой строки динамической памяти или к последовательным словам текущей строки динамической памяти с использованием пакетного режима.

3. Фаза предзаряда (PCHRG) «закрывает» текущую строку динамической памяти и готовит память к следующей команде активизации.

Конвейерная работа с памятью процессора Core i7 основана на том, что динамическая память DDR3 на микросхеме состоит из нескольких банков. Банк представляет собой блок динамической памяти, к которому процессор может обращаться параллельно с другими банками, даже находящимися на той же микросхеме.

Временная диаграмма на рис.3 показывает, как Core i7 выдает 3 обращения к трем разным банкам динамической памяти. Обращения полностью перекрываются, так что операции чтения на микросхеме динамической памяти выполняются параллельно. Связь между командами и последующими операциями на временной диаграмме обозначается стрелками. Как видно из рис.3, интерфейс памяти DDR3 имеет четыре основных сигнальных канала: синхронизация шины (CK), команда шины (CMD), адрес (ADDR) и данные (DATA). Сигнал синхронизации шины CK управляет всей работой шины. Командный сигнал CMD указывает, какая операция запрашивается у динамической памяти. Команда ACT задает адрес строки динамической памяти, открытой сигналом ADDR. При выполнении команды READ адрес столбца динамической памяти задается с использованием сигналов ADDR, а динамическая память выдает прочитанное значение спустя фиксированное время через сигналы DATA.

Наконец, команда PCHRG указывает банк, к которому применяется операция предзаряда, через сигналы ADDR. В нашем примере команда ACT должна предшествовать первой команде READ для того же банка на два цикла шины DDR3, а данные выдаются через один цикл после команды READ. Кроме того, операция PCHRG должна произойти по крайней мере на два цикла позже последней операции READ с тем же банком динамической памяти. Параллелизм запросов памяти проявляется в перекрытии запросов READ к разным банкам динамической памяти. Первые два обращения READ к банкам 0 и 1 полностью перекрываются, производя результаты в циклах шины 3 и 4 соответственно. Обращение к банку 2 частично перекрывается с первым обращением к банку 1, и наконец, второе чтение из банка 0 частично перекрывается с обращением к банку 2. Как Core i7 узнает, когда следует ожидать возвращения данных команды READ и когда можно выдавать новый запрос к памяти? Для этого он осуществляет полное моделирование внутренней деятельности каждой подключенной микросхемы DDR3. Соответственно он ожидает возвращения данных в правильно выбранном цикле и знает, что операцию предзаряда не следует начинать раньше чем через два цикла после последней операции чтения. Core i7 может прогнозировать все эти события, потому что интерфейс памяти DDR3 работает синхронно, так что все операции занимают четко определенное количество тактов шины DDR3. Даже при наличии всей этой информации построение высокопроизводительного, полностью конвейерного интерфейса памяти DDR3 — нетривиальная задача, требующая применения многочисленных внутренних таймеров и детекторов конфликтов для реализации эффективной обработки запросов.

Шина PCI

В 1990 году компания Intel разработала новую шину с гораздо более высокой пропускной способностью, чем у шины EISA. Эту шину назвали PCI (Peripheral Component Interconnect — взаимодействие периферийных компонентов). Компания Intel запатентовала шину PCI и сделала все патенты всеобщим достоянием, так что любая компания могла производить периферийные устройства для этой шины без каких-либо выплат за право пользования патентом. Фактически в каждом компьютере Intel (начиная с Pentium), а также во многих других компьютерах есть шина PCI.

Шина PCI — основная шина периферийного ввода-вывода, используемая в современных PC. В первых компьютерах IBM PC большинство приложений были текстовыми. С появлением Windows постепенно вошли в употребление графические пользовательские интерфейсы. Ни одно из этих приложений особо не нагружало шину ISA. Однако с течением времени появилось множество различных приложений, в том числе игр, для которых требовалось полноэкранное видео, и ситуация коренным образом изменилась.

Первая шина PCI передавала 32 бита за цикл и работала на частоте 33 МГц (время цикла — 30 нс), общая пропускная способность составляла 133 Мбайт/с. В 1993 году появилась шина PCI 2.0, а в 1995 году — PCI 2.1. Шина PCI 2.2 подходит и для портативных компьютеров, где требуется экономия заряда батареи. В конце концов удалось получить шину PCI, которая работает на частоте 66 МГц, способна передавать 64 бита за цикл, а ее общая пропускная способность составляет 528 Мбайт/с. При такой производительности полноэкранное видео вполне достижимо (если диск и другие устройства системы справляются со своей частью работы). Во всяком случае, шина PCI не является «узким местом» системы.

Хотя 528 Мбайт/с — достаточно высокая скорость передачи данных, все же здесь есть некоторые проблемы. Во-первых, этого недостаточно для шины памяти. Во-вторых, шина PCI несовместима со всеми старыми платами ISA. По этой причине компания Intel решила разрабатывать компьютеры с тремя и более шинами, как показано на рис.4. Здесь мы видим, что центральный процессор может обмениваться информацией с основной памятью через специальную шину памяти, а шину ISA можно связать с шиной PCI. Такая архитектура в 1990-х годах удовлетворяла всем современным на тот момент требованиям и поэтому использовалась в большинстве систем. Ключевыми компонентами данной архитектуры являются мосты между шинами (эти микросхемы выпускает компания Intel — отсюда такой интерес к проекту). Мост PCI связывает центральный процессор, память и шину PCI. Мост ISA связывает шину PCI с шиной ISA, а также поддерживает один или два IDE-диска.

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

К концу 1990-х годов шина ISA была окончательно похоронена участниками рынка, и в новых системах ее поддержка уже не предусматривалась. В связи с тем, что разрешение экрана постоянно увеличивалось, равно как и спрос на полноэкранное видео со стандартной частотой кадров, особо актуальное в интерактивных играх, компания Intel разработала новую шину, предназначенную исключительно для обмена данными с графическим адаптером. Эта шина называется AGP (Accelerated Graphics Port — ускоренный графический порт). Ее первая версия, AGP 1.0, работала на скорости 264 Мбайт/с, и эта величина была принята за 1х. Недостаток скорости (по сравнению с PCI) компенсировался узкой специализацией на управлении графическим адаптером. Впоследствии были разработаны новые версии шины, в частности, AGP 3.0 работает на скорости 2,1 Гбайт/с (8х). Сегодня даже высокопроизводительная шина AGP 3.0 уступает более быстрым новинкам — прежде всего, PCI Express, способной передавать данные со скоростью до 16 Гбайт/с по высокоскоростному последовательному каналу. Схема современной системы на базе Core i7 показана на рис.5.

В современной системе на базе Core i7 ряд интерфейсов встраивается прямо в микросхему процессора. Два канала памяти DDR3, работающих со скоростью 1333 транзакции/с, соединяются с основной памятью и обеспечивают суммарную пропускную способность 10 Гбайт/с на канал. Также в процессор интегрируется канал PCI Express на 16 линий, который может быть настроен для работы в режиме одной 16-разрядной шины PCI Express или двух независимых 8-разрядных шин PCI Express. 16 линий совместно обеспечивают для устройств ввода-вывода пропускную способность в 16 Гбайт/с.

Процессор соединен с основной мостовой микросхемой P67 через последовательный интерфейс DMI (Direct Media Interface) со скоростью 20 Гбит/с (2 Гбайт/с). P67 предоставляет интерфейс к нескольким современным высокопроизводительным интерфейсам ввода-вывода. Поддерживаются 8 дополнительных линий PCI Express и дисковые интерфейсы SATA. P67 также реализует 15 интерфейсов USB 2.0, 10G Ethernet и аудиоинтерфейс.

Микросхема ICH10 обеспечивает поддержку интерфейсов старых устройств. Она соединяется с P67 через медленный интерфейс DMI. ICH10 реализует шину PCI, 1G Ethernet, порты USB ports и старые версии PCI Express и SATA. В новых системах ICH10 микросхема может отсутствовать; она необходима только в том случае, если система должна поддерживать старые интерфейсы.

Работа шины PCI

Шины PCI являются синхронными, как и все шины PC, восходящие к первой модели IBM PC. Все транзакции в шине PCI осуществляются между задающим и подчиненным устройствами. Чтобы не увеличивать число выводов на плате, адресные и информационные линии объединяются. При этом достаточно 64-х выводов для всей совокупности адресных и информационных сигналов, даже если PCI работает с 64-разрядными адресами и 64-разрядными данными.

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

Арбитраж шины PCI

Чтобы использовать шину PCI, устройство сначала должно получить к ней доступ. Шина PCI управляется централизованным арбитром, как показано на рис.6. В большинстве случаев арбитр шины встраивается в один из мостов между шинами. От каждого PCI-устройства к арбитру тянутся две специальные линии. Одна из них (REQ#) используется для запроса шины, а вторая (GNT#) — для получения разрешения на доступ к шине. (Примечание. REQ# — обозначение REQ в терминологии PCI.) Чтобы сделать запрос на доступ к шине, PCI-устройство (в том числе и центральный процессор) устанавливает сигнал REQ# и ждет, пока арбитр не установит сигнал GNT#. Если арбитр установил сигнал GNT#, то устройство может использовать шину в следующем цикле. Алгоритм, которым руководствуется арбитр, не определяется в спецификации шины PCI. Допустимы циклический арбитраж, приоритетный арбитраж, а также другие схемы арбитража. Разумеется, хороший арбитр должен быть справедлив, чтобы не заставлять отдельные устройства ждать целую вечность.

Шина предоставляется для одной транзакции, хотя продолжительность этой транзакции теоретически не ограничена. Если устройству нужно совершить вторую транзакцию и ни одно другое устройство не запрашивает шину, оно может занять шину снова, хотя обычно между транзакциями требуется вставлять пустой цикл. Однако при особых обстоятельствах (при отсутствии конкуренции на доступ к шине) устройство может совершать последовательные транзакции без пустых циклов между ними. Если задающее устройство выполняет очень длительную передачу, а какое-нибудь другое устройство выдало запрос на доступ к шине, арбитр может сбросить сигнал на линии GNT#. Предполагается, что задающее устройство следит за линией GNT#, и при сбросе сигнала устройство должно освободить шину в следующем цикле. Такая система позволяет осуществлять очень длинные передачи (что весьма рационально) при отсутствии конкуренции на доступ к шине, однако при этом она быстро реагирует на запросы шины, поступающие от других устройств.

Сигналы шины PCI

Шина PCI поддерживает ряд обязательных (табл. на рис.7) и ряд дополнительных сигналов (табл. на рис.8). Оставшиеся выводы используются для питания, земли и разнообразных сопутствующих сигналов. В столбцах «Задающее устройство» и «Подчиненное устройство» указывается, какое из устройств устанавливает сигнал при обычной транзакции. Если сигнал устанавливается другим устройством например, CLK), оба столбца остаются пустыми.

Сигнал CLK управляет шиной. Большинство сигналов синхронизируется с ним. У шины PCI транзакция начинается на спаде сигнала CLK.

Сигналы AD нужны для адресов и данных (для передач по 32 бита). Обычно адрес устанавливается во время первого цикла, а данные — во время третьего. Сигнал PAR — бит четности сигнала AD.

Сигнал C/BE# выполняет две функции. Во время первого цикла он содержит команду (считать одно слово, считать блок и т. п.). Во время второго цикла он содержит массив размером 4 бита, который показывает, какие байты 32-разрядного слова действительны. Используя сигнал C/BE#, можно считать 1, 2 или 3 байта из слова, а также все слово целиком.

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

Сигнал IDSEL связан с тем, что у каждого устройства PCI должно быть конфигурационное пространство на 256 байт, которое другие устройства могут считывать (установив сигнал IDSEL). Это конфигурационное пространство содержит характеристики устройства. В некоторых операционных системах механизм автоматического конфигурирования (Plug and Play, PnP) использует это пространство, чтобы выяснить, какие устройства подключены к шине.

Сигнал DEVSEL# означает, что подчиненное устройство распознало свой адрес на линиях AD и готово участвовать в транзакции. Если сигнал DEVSEL# не поступает в течение определенного промежутка времени, задающее устройство предполагает, что подчиненное устройство, к которому направлено обращение, либо отсутствует, либо неисправно.

Подчиненное устройство устанавливает сигнал TRDY# при чтении, чтобы сообщить, что данные находятся на линиях AD, и при записи, чтобы сообщить, что оно готово принять данные.

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

Сигнал PERR#, используется для сообщения об ошибке четности в данных на предыдущем цикле. Для чтения этот сигнал устанавливается задающим устройством, для записи — подчиненным устройством. Необходимые действия должно предпринимать устройство, получившее этот сигнал.

Сигнал SERR# служит для сообщения об адресных и системных ошибках.

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

Большинство дополнительных сигналов связано с расширением разрядности с 32 до 64 бит. Сигналы REQ64# и ACK 64# позволяют задающему устройству попросить разрешение осуществить 64-разрядную транзакцию, а подчиненному устройству принять эту транзакцию. Сигналы AD, PAR64 и C/BE# являются расширениями соответствующих 32-разрядных сигналов.

Следующие три сигнала не связаны с переходом с 32 на 64 бита. Они используются в многопроцессорных системах. Не все платы PCI поддерживают такие системы, поэтому эти сигналы отнесены к дополнительным. Сигнал LOCK позволяет блокировать шину для параллельных транзакций. Следующие два сигнала связаны с фазой слежения, позволяющей сохранить согласованность кэшей разных процессоров.

Сигналы INTx нужны для запроса прерываний. Плата PCI может содержать до четырех логических устройств, каждое из которых имеет собственную линию запроса прерываний. Сигналы JTAG предназначены для процедуры тестирования IEEE 1149.1 JTAG. Наконец, сигнал M66EN связывается либо с источником питания, либо с землей, что определяет тактовую частоту. Она не должна меняться во время работы системы.

Транзакции на шине PCI

Шина PCI в довольно проста (для современной шины, конечно). Чтобы лучше понять это, рассмотрим временную диаграмму на рис.9. Здесь мы видим транзакцию чтения, за ней следуют пустой цикл и транзакция записи, которая осуществляется тем же задающим устройством.

Во время цикла T1 на спаде синхронизирующего сигнала задающее устройство помещает адрес на линии AD и команду на линии C/BE#. Затем задающее устройство устанавливает сигнал FRAME#, чтобы начать транзакцию.

Во время цикла T2 задающее устройство переключает шину, чтобы подчиненное устройство могло воспользоваться ею во время цикла T3. Задающее устройство также изменяет сигнал C/BE#, чтобы указать, какие байты в слове ему нужно считать.

Во время цикла T3 подчиненное устройство устанавливает сигнал DEVSEL#. Этот сигнал сообщает задающему устройству, что подчиненное устройство получило адрес и собирается ответить. Подчиненное устройство также помещает данные на линии AD и выдает сигнал TRDY#, который сообщает задающему устройству о данном действии. Если подчиненное устройство не может ответить быстро, оно не снимает сигнал DEVSEL#, извещающий о присутствии этого устройства, но при этом не устанавливает сигнал TRDY# до тех пор, пока не сможет передать данные. При такой процедуре вводится один или несколько периодов ожидания.

В нашем примере (а также часто на практике) следующий цикл — пустой. Мы видим, что в цикле T5 то же самое задающее устройство инициирует процесс записи. Сначала оно как обычно помещает адрес и команду на шину. В следующем цикле оно выдает данные. Поскольку линиями AD управляет одно и то же устройство, цикл переключения не требуется. В цикле T7 память принимает данные.

Шина PCI Express

Возможностей шины PCI вполне достаточно для большинства современных приложений, однако потребность в ускорении ввода-вывода постепенно усложняет некогда стройную внутреннюю архитектуру ПК. Рис.5 наглядно свидетельствует о том, что шина PCI более не является центральным элементом, сводящим воедино компоненты ПК. Эту роль теперь исполняет мост.

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

Сейчас предлагается несколько вариантов решения указанных проблем, но, скорее всего, победителем в конкурентной борьбе окажется технология PCI Express, которую активно продвигает Intel. Несмотря на название, она не имеет почти ничего общего с шиной PCI; более того — это вообще не шина. Тем не менее маркетологи решили не избавляться от названия «PCI» — благо, оно у всех на слуху. Сейчас наличие этой шины у компьютера стало уже стандартом.

Суть технологии PCI Express заключается в замене параллельной шины с ее многообразием задающих и подчиненных устройств высокоскоростными двухточечными последовательными соединениями. Это решение знаменует собой окончательный отход от шинной топологии, реализованной в шинах ISA/EISA/PCI, и переход на топологию локальных сетей (особенно коммутируемых сетей Ethernet).

Стандартная конфигурация PCI Express изображена на рис.10. Процессор, память и кэш подключены к мосту традиционным способом. Новым элементом здесь является подключенный к мосту коммутатор. Между каждой микросхемой устройства ввода-вывода, с одной стороны, и коммутатором, с другой, устанавливается двухточечное соединение. Любое такое соединение состоит из двух однонаправленных каналов — по одному в каждом из направлений между устройством и коммутатором. Каналы состоят из двух проводов (сигнального и заземляющего), что обеспечивает высокую помехозащищенность в ходе высокоскоростной передачи сигналов. Такая архитектура отличается от предыдущей большей унификацией и равноправием всех устройств.

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

Стек протоколов PCI Express

Следуя модели сети с коммутацией пакетов, технология PCI Express реализуется на основе многоуровневого стека протоколов.

Рассмотрим уровни по восходящей. Самым нижним является физический уровень. Он отвечает за передачу битов от отправителя к получателю по двухточечному соединению. Каждое такое соединение состоит из одной или нескольких пар симплексных (однонаправленных) каналов. В простейшем случае на каждое направление выделяется по одной паре, но также допустимо наличие 2, 4, 8, 16 или 32 пар. Каналы, входящие в пары, называются полосами (lanes). На каждое направление должно быть выделено одинаковое количество полос. В первом поколении предусматривается скорость передачи данных от 2,5 Гбайт/с для каждого направления, но через некоторое время эта цифра, вероятно, дойдет до 10 Гбайт/с.

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

Во избежание перегрузки медленного получателя пакетами, исходящими от быстрого отправителя, реализуется механизм управления потоками. Этот механизм основывается на выдаче получателем отправителю определенного количества разрешений на передачу пакетов — в зависимости от объема свободного пространства, необходимого для их хранения. Исчерпав ранее выданные разрешения, отправитель должен приостановить передачу и дождаться новых разрешений.

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

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

Информационный поток, характерный для PCI Express, показан на рис.11. Команда, поступающая на программный уровень, передается на уровень транзакций, где из нее формируются заголовок и полезная нагрузка. Затем эти компоненты отправляются на канальный уровень, на котором в заголовке пакета устанавливается порядковый номер, а в хвостовике — CRC-код. Далее расширенный пакет передается на физический уровень, где с обоих концов к нему добавляются параметры кадра, и получившийся в результате физический пакет передается от отправителя получателю. На стороне получателя происходит обратный процесс — заголовок и хвостовик кадра канального уровня удаляются, а результат передается на уровень транзакций.

Концепция присоединения дополнительных данных на каждом последующем уровне стека протоколов применяется в компьютерных сетях уже очень долго и успешно. Основное отличие между сетевыми технологиями и PCI Express заключается в том, что в первом случае код, действующий на различных уровнях стека, почти всегда является программным и управляется операционной системой. В PCI Express, напротив, операции на всех уровнях реализуются аппаратно.

Лена17/08/2016

Ого :)

Лена17/08/2016

Он очень подробно объясняет. Я немного железной литературы читала, но здесь становится понятнее, что происходит внутри. Спасибо.

leleg19/08/2016

Лена, ну дык он профессор же :) учитель иным словом.

160día
leleg15 ago. 2016, 08:46

Привет 2.5 анонимусам! :)

Сегодня пару слов про ОЗУ и ПЗУ вдогонку к предыдущему посту (чатсь 3) и немного про микросхемы процессоров и шины. Вроде всего по чуть-чуть, но всё равно длиннопост.

В книге также описываются конкретные примеры: процессор Core i7, однокристальная система Texas Instruments OMAP4430, микроконтроллер Atmel ATmega168, и шины PCI, PCI Express, USB. Я не буду тащить сюда это, а то уже и так 4 длиннопоста.

Лена15/08/2016

i7? Это мое.. Мож хоть немножечко...

leleg15/08/2016

Лена, нуок, только, пожалуй, не сегодня :)

Лена15/08/2016

leleg, Очень даже не сегодня :))) У меня совсем цейтнот :))))

160día

Entrada al escenario «Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.»

leleg15 ago. 2016, 08:35

Глава 3. Цифровой логический уровень (часть 4)

ОЗУ и ПЗУ
Виды памяти, которые мы рассматривали, имеют одно общее свойство: позволяют и записывать, и считывать информацию. Такая память называется ОЗУ (оперативное запоминающее устройство), или RAM (Random Access Memory — оперативная память). Существует два типа ОЗУ: статическое и динамическое. Статическое ОЗУ (Static RAM, SRAM) конструируется с использованием D-триггеров. Информация в ОЗУ сохраняется на протяжении всего времени, пока подается питание. Статическое ОЗУ работает очень быстро, и по этой причине часто используется в качестве кэш-памяти второго уровня. Обычно время доступа составляет несколько наносекунд.
В динамическом ОЗУ (Dynamic RAM, DRAM), триггеры не используются. Динамическое ОЗУ представляет собой массив ячеек, каждая из которых содержит транзистор и крошечный конденсатор. Конденсаторы могут быть заряженными и разряженными, что позволяет хранить нули и единицы. Поскольку электрический заряд утекает из конденсатора, каждый бит в динамическом ОЗУ должен обновляться каждые несколько миллисекунд. Поскольку об обновлении должна заботиться внешняя логика, динамическое ОЗУ требует более сложного сопряжения, чем статическое, хотя этот недостаток компенсируется большим объемом.
Поскольку динамическому ОЗУ нужен только один транзистор и один конденсатор на бит (статическому ОЗУ требуется в лучшем случае 6 транзисторов на бит), оно имеет высокую плотность записи. Основная память почти всегда строится на основе динамических ОЗУ. Однако динамические ОЗУ работают очень медленно (время доступа занимает десятки наносекунд). Таким образом, сочетание кэшпамяти на основе статического ОЗУ и основной памяти на основе динамического ОЗУ соединяет в себе преимущества обоих устройств.
Существует несколько типов динамических ОЗУ. Самый древний тип, который все еще используется, — FPM (Fast Page Mode — быстрый постраничный режим). Представляет собой матрицу битов. Аппаратное обеспечение представляет адрес строки, а затем — адреса столбцов (мы описывали этот процесс, когда говорили об устройстве памяти, показанном на рис.9(б)).
Благодаря явно передаваемым сигналам память работает асинхронно по отношению к главному тактовому генератору системы. FPM постепенно замещается памятью EDO (Extended Data Output — память с расширенными возможностями вывода), которая позволяет обращаться к памяти еще до того, как закончилось предыдущее обращение. Такой конвейерный режим, повышает пропускную способность, позволяя получить больше слов в секунду.
Память типа FPM и EDO сохраняла актуальность в те времена, когда продолжительность цикла работы микросхем памяти не превышала 12 нс. Впоследствии, с увеличением быстродействия процессоров, сформировалась потребность в более быстрых микросхемах, и тогда на смену асинхронным режимам FPM и EDO пришли синхронные динамические ОЗУ (Synchronous DRAM, SDRAM). Синхронное динамическое ОЗУ управляется от главного системного тактового генератора. Данное устройство представляет собой гибрид статического и динамического ОЗУ. Основное преимущество синхронного динамического ОЗУ в том, что оно исключает зависимость микросхемы памяти от управляющих сигналов. ЦП сообщает памяти, сколько циклов следует выполнить, а затем запускает ее. Каждый цикл на выходе дает 4, 8 или 16 бит в зависимости от количества выходных строк. Устранение зависимости от управляющих сигналов приводит к ускорению передачи данных между ЦП и памятью.
Следующим этапом в развитии памяти SDRAM стала память DDR (Double Data Rate — передача данных с двойной скоростью). Эта технология предусматривает вывод данных как на фронте, так и на спаде импульса, вследствие чего скорость передачи увеличивается вдвое. Например, 8-разрядная микросхема такого типа, работающая с частотой 200 МГц, дает на выходе два 8-разрядных значения 200 миллионов раз в секунду (разумеется, такая скорость удерживается в течение небольшого периода времени); таким образом, теоретически, кратковременная скорость может достигать 3,2 Гбайт/с. Интерфейсы памяти DDR2 и DDR3 обеспечивают дополнительный прирост производительности по сравнению с DDR за счет повышения скорости шины памяти до 533 МГц и 1067 МГц соответственно. На момент издания книги самые быстрые микросхемы DDR3 могли выдавать данные на скорости 17,067 Гбайт/с.
Энергонезависимая память
ОЗУ — не единственный тип микросхем памяти. Во многих случаях данные должны сохраняться даже при отключенном питании. Эти требования привели к появлению ПЗУ (постоянных запоминающих устройств), или ROM (Read-Only Memory — постоянная память). ПЗУ не позволяют изменять и стирать хранящуюся в них информацию (ни умышленно, ни случайно). Данные записываются в ПЗУ в процессе производства. Для этого изготавливается трафарет с определенным набором битов, который накладывается на фоточувствительный материал, а затем открытые (или закрытые) части поверхности вытравливаются. Единственный способ изменить программу в ПЗУ — поменять всю микросхему.
ПЗУ стоят гораздо дешевле ОЗУ, если заказывать их большими партиями. Однако они не допускают изменений после выпуска с производства. Чтобы компаниям было проще разрабатывать новые устройства, основанные на ПЗУ, были выпущены программируемые ПЗУ (Programmable ROM, PROM). В отличие от обычных ПЗУ, их можно программировать в условиях эксплуатации. Многие программируемые ПЗУ содержат массив крошечных плавких перемычек. Чтобы пережечь определенную перемычку, нужно выбрать требуемые строку и столбец, а затем приложить высокое напряжение к определенному выводу микросхемы.
Следующая разработка этой линии — стираемое программируемое ПЗУ (Erasable PROM, EPROM), которое можно не только программировать в условиях эксплуатации, но и стирать с него информацию. Если кварцевое окно в данном ПЗУ подвергать воздействию сильного ультрафиолетового света в течение 15 минут, все биты установятся в 1. Если нужно сделать много изменений во время одного этапа проектирования, стираемые ПЗУ гораздо экономичнее, чем обычные программируемые ПЗУ, поскольку их можно использовать многократно. Стираемые программируемые ПЗУ обычно устроены так же, как статические ОЗУ. Интересно, что подобные «древние» микросхемы не вымирают. Они становятся всё дешевле (закон Мура) и используются в бюджетных продуктах, для которых критична стоимость. Сейчас одиночные микросхемы 27C040 можно купить дешевле $3, а при большом размере партии они обойдутся значительно дешевле.
Следующий этап — электронно перепрограммируемое ПЗУ (Electronically EPROM, EEPROM), которое не нужно для этого помещать в специальную камеру, чтобы подвергнуть воздействию ультрафиолетовых лучей — для стирания информации достаточно подать соответствующие импульсы. Кроме того, чтобы перепрограммировать данное устройство, его не нужно вставлять в специальный аппарат для программирования, в отличие от стираемого программируемого ПЗУ. В то же время самые большие электронно перепрограммируемые ПЗУ в 64 раза меньше обычных стираемых ПЗУ, и работают они в два раза медленнее. Электронно перепрограммируемые ПЗУ не могут конкурировать с динамическими и статическими ОЗУ, поскольку работают в 10 раз медленнее, их емкость в 100 раз меньше, и они стоят гораздо дороже. Они используются только в тех ситуациях, когда необходимо сохранять информацию при выключении питания.
Более современный тип электронно перепрограммируемого ПЗУ — флэш-память. В отличие от стираемого ПЗУ, которое стирается под воздействием ультрафиолетовых лучей, и от электронно перепрограммируемого ПЗУ, которое стирается по байтам, флэш-память стирается и записывается блоками. Многие изготовители производят небольшие печатные платы, содержащие до 64 Гбайт флэш-памяти. Они используются для хранения изображений в цифровых камерах и для других целей. Как было сказано в главе 2, флэш-память постепенно начинает вытеснять диски, что будет грандиозным шагом вперед, учитывая время доступа в 50 нс. Флэш-память обеспечивает лучшее время доступа при более низком энергопотреблении; с другой стороны, стоимость одного бита флэш-памяти существенно выше, чем у дисков. Краткое описание различных типов памяти дано в таблице на рис.1.
Микросхемы процессоров и шины
Вооружившись информацией о микросхемах, тактовых генераторах и микросхемах памяти, мы можем сложить все составные части вместе и начать изучение целых систем.
Микросхемы процессоров
Все современные процессоры помещаются на одной микросхеме, благодаря чему их взаимодействия с остальными частями системы становятся четко определенными. Каждая микросхема процессора содержит набор выводов, через которые происходит обмен информацией с внешним миром. Одни выводы передают сигналы от центрального процессора, другие принимают сигналы от других компонентов, третьи делают то и другое. Изучив функции всех выводов, мы сможем узнать, как процессор взаимодействует с памятью и устройствами ввода-вывода на цифровом логическом уровне.
Выводы микросхемы центрального процессора можно подразделить на три типа: адресные, информационные и управляющие. Эти выводы связаны с соответствующими выводами на микросхемах памяти и микросхемах устройств ввода-вывода через шину. Чтобы вызвать команду, центральный процессор сначала посылает в память адрес этой команды по адресным выводам. Затем он задействует одну или несколько линий управления, чтобы сообщить памяти, что ему нужно (например, прочитать слово). Память выдает ответ, помещая требуемое слово на информационные выводы процессора и посылая сигнал о том, что это сделано. Когда центральный процессор получает этот сигнал, он считывает слово и выполняет вызванную команду.
Команда может требовать чтения или записи слов, содержащих данные. В этом случае весь процесс повторяется для каждого дополнительного слова. Важно понять, что центральный процессор обменивается информацией с памятью и устройствами ввода-вывода, подавая сигналы на выводы и принимая сигналы на входы. Другого способа обмена информацией не существует.
Число адресных выводов и число информационных выводов — два ключевых параметра, которые определяют производительность процессора. Микросхема, содержащая m адресных выводов, может обращаться к 2^m ячейкам памяти. Обычно m равно 16, 32 или 64. Микросхема, содержащая n информационных выводов, может считывать или записывать n-разрядное слово за одну операцию. Обычно n равно 8, 32 или 64. Центральному процессору с 8 информационными выводами понадобится 4 операции, чтобы считать 32-разрядное слово, тогда как процессор, имеющий 32 информационных вывода, может сделать ту же работу в рамках одной операции, но и стоит такой процессор гораздо дороже.
Помимо адресных и информационных выводов, каждый процессор содержит управляющие выводы. Эти выводы позволяют регулировать и синхронизировать поток данных к процессору и от него, а также выполнять другие функции. Все процессоры содержат выводы для питания (обычно +1,2 В или +1,5 В), заземления и синхронизирующего сигнала (меандра). Остальные выводы разнятся от процессора к процессору. Тем не менее управляющие выводы можно разделить на несколько основных категорий:
- управление шиной;
- прерывания;
- арбитраж шины;
- сигналы сопроцессора;
- состояние;
- разное.
Схема типичного центрального процессора, в котором используются эти типы сигналов, изображена на рис.2. Выводы управления шиной по большей части представляют собой выходы из центрального процессора в шину (и, следовательно, входы в микросхем памяти и микросхем устройств ввода-вывода). Они позволяют сообщить, что процессор хочет считать информацию из памяти или записать информацию в память или сделать что-нибудь еще.
Выводы прерывания — это входы из устройств ввода-вывода в процессор. В большинстве систем процессор может дать сигнал устройству ввода-вывода начать операцию, а затем приступить к какому-нибудь другому действию, пока устройство ввода-вывода выполняет свою работу. Когда устройство ввода-вывода ее завершит, контроллер ввода-вывода посылает сигнал на один из выводов прерывания, чтобы прервать работу процессора и заставить его обслужить устройство ввода-вывода (например, проверить ошибки ввода-вывода). Некоторые процессоры содержат вывод для подтверждения сигнала прерывания.
Выводы арбитража шины нужны для регулировки потока информации в шине, то есть для исключения таких ситуаций, когда два устройства пытаются воспользоваться шиной одновременно. В плане арбитража центральный процессор считается просто одним из устройств.
Некоторые центральные процессоры могут работать с различными сопроцессорами (например, с графическими процессорами, процессорами для обработки вещественных данных и т. п.). Чтобы обеспечить обмен информацией между процессором и сопроцессором, используются специальные выводы.
Помимо этих выводов, у некоторых процессоров есть дополнительные выводы. Одни из них выдают или принимают информацию о состоянии, другие нужны для перезагрузки компьютера, третьи призваны обеспечивать совместимость со старыми микросхемами устройств ввода-вывода.
Компьютерные шины
Шины можно разделить на категории в соответствии с выполняемыми функциями. Они могут быть внутренними по отношению к процессору и служить для передачи данных в АЛУ и из АЛУ, а могут быть внешними и связывать процессор с памятью или устройствами ввода-вывода. Каждый тип шины обладает определенными свойствами и к каждому из них предъявляются определенные требования.
Первые ПК имели одну внешнюю шину, которая называлась системной. Она состояла из нескольких медных проводов (от 50 до 100), которые встраивались в материнскую плату. На материнской плате на одинаковых расстояниях друг от друга находились разъемы для микросхем памяти и устройств ввода-вывода. Современные персональные компьютеры обычно содержат специальную шину между центральным процессором и памятью и по крайней мере еще одну шину для устройств ввода-вывода. На рис.3 изображена система с одной шиной памяти и одной шиной ввода-вывода.
Хотя разработчики процессоров могут использовать любой тип шины для микросхемы, должны быть введены четкие правила о том, как работает шина - протокол шины. Существует целый ряд шин, широко используемых в компьютерном мире, например: Omnibus (PDP-8), Unibus (PDP-11), Multibus (8086), VME (оборудование для физической лаборатории), IBM PC (PC/XT), ISA (PC/AT), EISA (80386), Microchannel (PS/2), Nubus (Macintosh), PCI (различные персональные компьютеры), SCSI (различные персональные компьютеры и рабочие станции), Universal Serial Bus (современные персональные компьютеры), FireWire (бытовая электроника). Может быть, все стало бы намного проще, если бы все шины, кроме одной или двух, исчезли с поверхности земли. К сожалению, стандартизация в таком ключе кажется очень маловероятной, поскольку во все эти несовместимые системы уже вложено слишком много средств.
Некоторые устройства, соединенные с шиной, являются активными и могут инициировать передачу информации по шине, тогда как другие являются пассивными и ждут запросов. Активное устройство называется задающим, пассивное — подчиненным. Когда центральный процессор требует от контроллера диска считать или записать блок информации, центральный процессор действует как задающее устройство, а контроллер диска — как подчиненное. Контроллер диска может действовать как задающее устройство, когда он командует памяти принять слова, которые считал с диска. Несколько типичных комбинаций задающего и подчиненного устройств перечислены в таблице на рис.4. Память ни при каких обстоятельствах не может быть задающим устройством.
Двоичным сигналам, которые выдают устройства компьютера, часто не хватает мощности для активизации шины, особенно если она достаточно длинная и если к ней подсоединено много устройств. По этой причине большинство задающих устройств шины обычно связаны с ней через микросхему, которая называется драйвером шины и по существу является цифровым усилителем. Сходным образом большинство подчиненных устройств связаны с шиной приемником шины. Для устройств, которые могут быть и задающим, и подчиненным устройством, используется приемопередатчик, или трансивер шины. Эти микросхемы, предназначенные для взаимодействия с шиной, часто являются устройствами с тремя состояниями, что дает им возможность отсоединяться, когда они не нужны. Иногда они подключаются через открытый коллектор, что дает сходный эффект. Когда одно или несколько устройств на открытом коллекторе требуют доступа к шине в одно и то же время, результатом является булева операция ИЛИ над всеми этими сигналами. Такое соглашение называется монтажным ИЛИ. В большинстве шин одни линии являются устройствами с тремя состояниями, а другие, которым требуется свойство монтажного ИЛИ, — открытым коллектором.
Как и процессор, шина имеет адресные, информационные линии и управляющие линии. Между выводами процессора и сигналами шины может и не быть взаимно однозначного соответствия. Например, некоторые процессоры содержат три вывода, которые выдают сигнал чтения из памяти или записи в память, чтения устройства с ввода-вывода, записи на устройство ввода-вывода или выполнения какой-либо другой операции. Обычная шина может содержать одну линию для чтения из памяти, вторую — для записи в память, третью — для чтения с устройства ввода-вывода, четвертую — для записи на устройство ввода-вывода и т. д. Тогда связывать процессор с такой шиной должна микросхема-декодер, призванная преобразовывать 3-разрядный кодированный сигнал в отдельные сигналы, которые могут управлять линиями шины.
Принципиальными вопросами в разработке являются ширина шины, синхронизация шины, арбитраж шины и функционирование шины.

Ширина шины
Ширина шины — самый очевидный параметр при проектировании. Чем больше адресных линий содержит шина, тем к большему объему памяти может обращаться процессор. Если шина содержит n адресных линий, тогда процессор может использовать ее для обращения к 2^n различным ячейкам памяти. Для памяти большой емкости необходимо много адресных линий. Вроде бы все просто.
Проблема заключается в том, что для широких шин требуется больше проводов, чем для узких, они занимают больше физического пространства и для них нужны разъемы большего размера. Все эти факторы делают шину дорогостоящей. Следовательно, необходим компромисс между максимальным объемом доступной памяти и стоимостью системы. Система с шиной, содержащей 64 адресные линии, и памятью в 2^32 байт будет стоить дороже, чем система с шиной, содержащей 32 адресные линии, и такой же памятью в 2^32 байт. Дальнейшее расширение не бесплатное. Многие разработчики систем оказались недальновидными, что привело к неприятным последствиям. Первая модель IBM PC содержала процессор 8088 и 20-разрядную адресную шину (рис.5(а)). Шина позволяла обращаться к 1 Мбайт памяти.
Когда появился следующий процессор (80286), компания Intel решила увеличить адресное пространство до 16 Мбайт, поэтому пришлось добавить еще 4 линии (не нарушая изначальные 20 по причинам совместимости с предыдущими версиями), рис.5(б). К сожалению, пришлось также добавить управляющие линии для новых адресных линий. Когда появился процессор 80386, было добавлено еще 8 адресных линий и, естественно, несколько управляющих линий, рис.5(в). В результате получилась шина EISA.
Однако архитектура получилась куда более запутанной, чем если бы с самого начала использовались 32 линии.
С течением времени увеличивается не только число адресных линий, но и число информационных линий, хотя это происходит по другой причине. Можно увеличить пропускную способность шины двумя способами: сократить время цикла шины или увеличить ширину шины данных. Можно повысить скорость работы шины, но сделать это довольно сложно, поскольку сигналы на разных линиях передаются с разной скоростью (расфазировка шины). Чем быстрее работает шина, тем больше расфазировка.
При увеличении скорости работы шины возникает еще одна проблема: в этом случае она становится несовместимой с предыдущими версиями. Старые платы, разработанные для более медленной шины, не могут работать с новой. Такая ситуация невыгодна для владельцев и производителей старых плат. Поэтому обычно для увеличения производительности просто добавляются новые линии, как показано на рис.5.
Чтобы обойти эту проблему, разработчики иногда отдают предпочтение мультиплексной шине. В этой шине нет разделения на адресные и информационные линии. В ней может быть, например, 32 линии и для адресов, и для данных. Сначала эти линии используются для адресов, затем — для данных. Чтобы записать информацию в память, нужно сначала передавать в память адрес, а потом — данные. Объединение линий сокращает ширину и стоимость шины, но система работает медленнее. Поэтому проектировщикам приходится взвешивать все за и против, прежде чем сделать выбор.
Синхронизация шины
Шины можно разделить на две категории в зависимости от их синхронизации. Синхронная шина содержит линию, которая запускается кварцевым генератором. Сигнал на этой линии представляет собой меандр с частотой обычно от 5 до 133 МГц. Любое действие шины занимает целое число так называемых циклов шины. Асинхронная шина не содержит задающего генератора. Циклы шины могут быть произвольными и не обязательно одинаковыми для всех пар устройств.
Синхронные шины
В качестве примера работаеты синхронной шины, рассмотрим временную диаграмму на рис.6. В этом примере используется задающий генератор на 100 МГц, который дает цикл шины в 10 нс. Хотя может показаться, что шина работает медленно по сравнению с процессорами на 3 ГГц и выше, не многие современные шины работают быстрее. Например, популярная шина PCI работает с частотой 33 МГц или 66 МГц, а улучшенная (но ныне не используемая) шина PCI-X работала с частотой 133 МГц. О причинах такой низкой скорости современных шин уже рассказывалось: к ним можно отнести такие технические проблемы, как расфазировка шины и необходимость обеспечения совместимости.
В своем примере мы предполагаем, что считывание информации из памяти занимает 15 нс с момента установки адреса. Как мы скоро увидим, для чтения слова понадобится три цикла шины. Первый цикл начинается на фронте отрезка T1, а третий заканчивается на фронте отрезка T4, как показано на рис.6. Отметим, что ни один из фронтов и спадов не нарисован вертикальным, потому что ни один электрический сигнал не может изменять свое значение за нулевое время. В нашем примере мы предполагаем, что для изменения сигнала требуется 1 нс. Генератор и линии адреса и данных, а также линии MREQ, RD, WAIT показаны в том же масштабе времени.
Начало T1 определяется фронтом генератора. За время T1 центральный процессор помещает адрес нужного слова на адресные линии. Поскольку адрес представляет собой не одно значение (в отличие от генератора), мы не можем показать его в виде одной линии на схеме. Вместо этого мы показали его в виде двух линий с пересечениями там, где этот адрес меняется. Серый цвет на схеме показывает, что в этот момент не важно, какое значение принял сигнал. Используя то же соглашение, мы видим, что содержание линий данных не имеет значения до отрезка T3.
После того как у адресных линий появляется возможность приобрести новое значение, устанавливаются сигналы MREQ и RD. Первый указывает, что осуществляется доступ к памяти, а не к устройству ввода-вывода, а второй — что осуществляется чтение, а не запись. Поскольку после установки адреса считывание информации из памяти занимает 15 нс (часть первого цикла), память не может передать требуемые данные за период T2. Чтобы центральный процессор не ожидал поступления данных, память устанавливает сигнал WAIT в начале отрезка T2. Это означает ввод периодов ожидания (дополнительных циклов шины) до тех пор, пока память не сбросит сигнал WAIT. В нашем примере вводится один период ожидания (Т2), поскольку память работает слишком медленно. В начале отрезка Т3, когда есть уверенность в том, что память получит данные в течение текущего цикла, сигнал WAIT сбрасывается.
Во время первой половины отрезка Т3 память помещает данные на информационные линии. На спаде отрезка Т3 центральный процессор стробирует (то есть считывает) информационные линии, сохраняя их значения во внутреннем регистре. Считав данные, центральный процессор сбрасывает сигналы MREQ и RD. В случае необходимости на следующем фронте может начаться еще один цикл памяти. Эта последовательность может повторяться бесконечно.
В хронометражной спецификации на рис.6(б) используются 8 условных обозначений. Tad, например, — это временной интервал между фронтом T1 и установкой адресных линий. В соответствии с требованиями синхронизации Tad ≤ 4 нс. Это значит, что производитель процессора гарантирует, что во время любого цикла считывания центральный процессор сможет выдать требуемый
адрес в пределах 4 нс от середины фронта Т1.
Условия синхронизации также требуют, чтобы данные поступали на информационные линии по крайней мере за 2 нс (Tds) до спада Т3, чтобы дать данным время установиться до того, как процессор начнет их стробировать. Сочетание ограничений на Tad и Tds означает, что в худшем случае в распоряжении памяти будет только 25 — 4 — 2 = 19 нс с момента появления адреса и до момента, когда нужно выдавать данные. Поскольку достаточно 10 нс, память даже в самом худшем случае может всегда ответить за период T3. Если памяти для считывания требуется 20 нс, то необходимо ввести второй период ожидания, и тогда память ответит в течение T4.
Требования синхронизации гарантируют, что адрес будет установлен по крайней мере за 2 нс до того, как появится сигнал MREQ. Это время может быть важно в том случае, если MREQ инициирует выбор элемента памяти, поскольку некоторые типы памяти требуют определенного времени на установку адреса до выбора элемента памяти. Ясно, что разработчику системы не следует выбирать микросхему памяти, которой нужно 3 нс на подготовку.
Ограничения на Tm и Trl означают, что сигналы MREQ и RD будут установлены в пределах 3 нс от спада T1. В худшем случае у микросхемы памяти после установки сигналов MREQ и RD останется всего 10 + 10 — 3 — 2 = 15 нс на передачу данных по шине. Это ограничение вводится дополнительно по отношению к интервалу в 15 нс и не зависит от него.
Интервалы Tmh и Trh определяют, сколько времени требуется на отмену сигналов MREQ и RD после того, как данные стробированы. Наконец, интервал Tdh определяет, сколько времени память должна держать данные на шине после снятия сигнала RD. В нашем примере при данном процессоре память может удалить данные с шины, как только сбрасывается сигнал RD; в случае других процессоров данные могут сохраняться еще некоторое время.
Необходимо подчеркнуть, что наш пример представляет собой весьма упрощенную версию реальных временных ограничений. В действительности таких ограничений гораздо больше. Тем не менее этот пример наглядно демонстрирует, как работает синхронная шина.
Асинхронные шины
Хотя использовать синхронные шины благодаря дискретным временным интервалам достаточно удобно, здесь все же есть некоторые проблемы. Например, если процессор и память способны закончить передачу за 3,1 цикла, они вынуждены продлить ее до 4,0 цикла, поскольку неполные циклы запрещены.
Еще хуже то, что если однажды был выбран определенный цикл шины и в соответствии с ним разработана память и карты ввода-вывода, то в будущем трудно делать технологические усовершенствования. Например, предположим, что через несколько лет после выпуска системы, изображенной на рис.6, появилась новая память с временем доступа не в 15, а в 8 нс. Это время позволяет избавиться от периода ожидания и увеличить скорость работы машины. А теперь представим, что появилась память с временем доступа в 4 нс. При этом улучшения производительности уже не будет, поскольку в данной разработке минимальное время чтения — 2 цикла.
Если синхронная шина соединяет ряд устройств, одни из которых работают быстро, а другие медленно, шина подстраивается под самое медленное устройство, а более быстрые не могут использовать свой потенциал полностью.
По этой причине были разработаны асинхронные шины (рис.7). Работа асинхронной шины не привязывается к генератору. Когда задающее устройство устанавливает адрес, сигнал MREQ, RD или любой другой требуемый сигнал, он выдает специальный синхронизирующий сигнал MSYN (Master SYNchronization). Когда подчиненное устройство получает этот сигнал, оно начинает выполнять свою работу настолько быстро, насколько может. Когда работа заканчивается, подчиненное устройство выдает сигнал SSYN (Slave SYNchronization).
Сигнал SSYN сообщает задающему устройству, что данные доступны. Он фиксирует их, а затем сбрасывает адресные линии вместе с сигналами MREQ, RD и MSYN. Сброс сигнала MSYN означает для подчиненного устройства, что цикл закончен, поэтому устройство сбрасывает сигнал SSYN, и все возвращается к первоначальному состоянию, когда все сигналы сброшены.
Стрелочки на временных диаграммах асинхронных шин (а иногда и синхронных шин) показывают причину и следствие какого-либо действия (см. рис.7). Установка сигнала MSYN приводит к включению информационных линий, а также к установке сигнала SSYN. Установка сигнала SSYN, в свою очередь, вызывает отключение адресных линий, а также линий MREQ, RD и MSYN. Наконец, сброс сигнала MSYN вызывает сброс сигнала SSYN, и на этом процесс считывания заканчивается.
Набор таких взаимообусловленных сигналов называется полным квитированием. Здесь, в сущности, наблюдается 4 события:
1. Установка сигнала MSYN.
2. Установка сигнала SSYN в ответ на сигнал MSYN.
3. Сброс сигнала MSYN в ответ на сигнал SSYN.
4. Сброс сигнала SSYN в ответ на сброс сигнала MSYN.
Разумеется, взаимообусловленность сигналов не является синхронной. Каждое событие вызывается предыдущим событием, а не импульсами генератора. Если какая-то пара устройств (задающее и подчиненное) работает медленно, это никак не влияет на другую пару устройств, которая может работать гораздо быстрее.
Преимущества асинхронной шины очевидны, хотя на самом деле большинство шин являются синхронными. Дело в том, что синхронную систему построить проще, чем асинхронную. Центральный процессор просто выдает сигналы, а память просто реагирует на них. Здесь нет никакой причинно-следственной связи, а если компоненты выбраны удачно, все работает и без квитирования. Кроме того, в разработку синхронных шин вложено очень много ресурсов.
Арбитраж шины
Что происходит, когда задающим устройством шины становятся два или более устройств одновременно? Чтобы предотвратить хаос, который может при этом возникнуть, нужен специальный механизм — так называемый арбитраж шины.
Арбитраж может быть централизованным или децентрализованным. Рассмотрим сначала централизованный арбитраж(рис.8(а)). В данном примере один арбитр шины определяет, чья очередь следующая. Часто механизм арбитража встраивается в микросхему процессора, но иногда используется отдельная микросхема. Шина содержит одну линию запроса (монтажное ИЛИ), которая может запускаться одним или несколькими устройствами в любое время. Арбитр не может определить, сколько устройств запрашивают шину. Он может определить только факт наличия или отсутствия запросов.
Когда арбитр обнаруживает запрос шины, он устанавливает линию предоставления шины. Эта линия последовательно связывает все устройства ввода-вывода. Когда физически ближайшее к арбитру устройство получает сигнал предоставления шины, это устройство проверяет, нет ли запроса шины. Если запрос есть, устройство пользуется шиной, и не распространяет сигнал предоставления дальше по линии. Если запроса нет, устройство передает сигнал предоставления шины следующему устройству. Передача сигнала предоставления шины продолжается до тех пор, пока какое-нибудь устройство не воспользуется предоставленной шиной. Такая система называется системой последовательного опроса.
При этом приоритеты устройств зависят от того, насколько близко они находятся к арбитру. Ближайшее к арбитру устройство обладает наивысшим приоритетом.
Чтобы приоритеты устройств не зависели от расстояния от арбитра, в некоторых шинах поддерживается несколько уровней приоритета. На каждом уровне приоритета есть линия запроса шины и линия предоставления шины. На рис.8(б) изображено 2 уровня (хотя в действительности шины обычно поддерживают 4, 8 или 16 уровней). Каждое устройство связано с одним из уровней запроса шины, причем чем выше уровень приоритета, тем больше устройств привязано к этому уровню. На рис.8(б) можно видеть, что устройства 1, 2 и 4 обладают приоритетом уровня 1, а устройства 3 и 5 — приоритетом уровня 2.
Если одновременно запрашивается несколько уровней приоритета, арбитр предоставляет шину самому высокому уровню. Среди устройств одинакового приоритета реализуется система последовательного опроса.
В системах, где память связана с главной шиной, центральный процессор должен конкурировать со всеми устройствами ввода-вывода практически на каждом цикле шины. Чтобы решить эту проблему, можно предоставить центральному процессору самый низкий приоритет. При этом шина будет предоставляться процессору только в том случае, если она не нужна ни одному другому устройству. Центральный процессор всегда может подождать, а устройства ввода-вывода должны получить доступ к шине как можно быстрее, чтобы не потерять данные. Например, диски, вращающиеся с высокой скоростью, не могут ждать. Во многих современных компьютерах для решения этой проблемы память помещается на одну шину, а устройства ввода-вывода — на другую, поэтому им не приходится завершать работу, чтобы предоставить доступ к шине.
Возможен также децентрализованный арбитраж шины. Например, компьютер может содержать 16 приоритетных линий запроса шины. Когда устройству нужна шина, оно устанавливает свою линию запроса. Все устройства отслеживают все
линии запроса, поэтому в конце каждого цикла шины каждое устройство может определить, обладает ли оно в данный момент наивысшим приоритетом и, следовательно, разрешено ли ей пользоваться шиной в следующем цикле. Такой метод требует большего количества линий, но зато избавляет от потенциальных затрат ресурсов на использование арбитра. В этом случае число устройств ограничивается числом линий запроса.
При другом типе децентрализованного арбитража используются только три линии независимо от того, сколько устройств имеется в наличии (рис.9). Первая линия — монтажное ИЛИ. Она требуется для запроса шины. Вторая линия называется BUSY и означает занятость. Она запускается текущим задающим устройством шины. Третья линия служит для арбитража шины. Она последовательно соединяет все устройства. Начало цепи связано с источником питания с напряжением 5 В.
Когда шина не требуется ни одному из устройств, линия арбитража передает сигнал всем устройствам. Чтобы получить доступ к шине, устройство сначала проверяет, свободна ли шина и установлен ли сигнал арбитража IN. Если сигнал IN не установлен, устройство не может стать задающим устройством шины. В этом случае оно сбрасывает сигнал OUT. Если сигнал IN установлен, устройство также сбрасывает сигнал OUT, в результате чего следующее устройство не получает сигнала IN и, в свою очередь, сбрасывает сигнал OUT. Следовательно, все следующие по цепи устройства не получают сигнал IN и сбрасывают сигнал OUT. В результате остается только одно устройство, у которого сигнал IN установлен, а сигнал OUT сброшен. Оно становится задающим устройством шины, устанавливает линию BUSY и сигнал OUT, после чего начинает передачу данных.
Немного поразмыслив, можно обнаружи

Лена15/08/2016

Эта глава нормально прошла без википедии :)))

157día

Entrada al escenario «Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.»

leleg12 ago. 2016, 12:15

Чуть меньше месяца назад у меня тут проскакивала мысль отсыпать горстку транзисторов немножко про физические основы электроники. Мысль была поддержана двумя с половиной анонимусами (включая меня самого). Так что вот, чуть-чуть про физический уровень из моей тетрадочки, с блэкджеком и шлюхами авторскими картинками в MS Paint. Подставляйте карман, поехали!

Введение в основы электроники и основные понятия

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

Три области промышленной электроники:

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

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

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

Полупроводниковые приборы

К полупроводникам относятся вещества и материалы со значениями удельного сопротивления при комнатной температуре в диапазоне от 0.65 Ом*м (германий) до 10^8 Ом*м (селен). Как правило, элементы IV группы таблицы Д.И. Менделеева (т.е. 4 электрона на внешней оболочке).

При температуре близкой к 0К (-273С), четыре электрона на внешней оболочке атома германия образуют систему прочных ковалентных связей с четырьмя соседними атомами (рис.1). При повышении температуры вследствие колебаний атомов некоторые связи могут разрываться, в результате чего образуются пары подвижных электронов и дырок. Электрон - носитель отрицательного заряда, дырка - носитель равного по модулю положительного заряда. В электрическом и магнитном полях дырка ведет себя как частица с положительным зарядом, равным по модулю элементарному. Процесс образования пары электрон-дырка носит название генерация пары. Обратный процесс носит название рекомбинация пары.

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

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

Полупроводники n-типа и p-типа

Если в расплав чистого германия внести примесь элемента V группы, например, мышьяка, то при остывании образуется кристалл, в котором 4 валентных электрона атома мышьяка, объединившись с 4 валентными электронами соседних атомов германия, образуют систему ковалентных связей (рис.2). Пятый же электрон атома мышьяка оказывается избыточным, отправляется "гулять" по решётке, отставляя положительный ион мышьяка. Число электронов в таком полупроводнике больше числа дырок и его называют полупроводником с электронной проводимостью (n-типа), а примесь называют донорной. Электроны - основные носители, дырки - неосновные.

Если в расплав чистого германия внести примесь элемента III группы, например, индия, то для комплектования ковалентных связей, одного электрона не хватает (рис.3). Число дырок в таком полупроводнике выше числа электронов и его называют полупроводником с дырочной проводимостью (p-типа), а примесь - акцепторной. Основные носители - дырки, неосновные - электроны.

p-n-переход

p-n-переход - область на границе двух полупроводников, один из которых имеет электронную проводимость, а второй - дырочную.

Поскольку концентрация дырок в p-проводнике >> чем в n-проводнике, и наоборот, концентрация электронов в n-проводнике >> чем в p-проводнике, на границе создаётся градиент концентрации дырок и электронов. Это вызывает диффузию дырок из p-области в n-область и электронов в противоположном направлении с последующей рекомбинацией. В результате ухода свободных носителей, образуется обеднённый слой и нескомпенсированный отрицательный заряд (засчёт ионов акцепторной примеси) в приконтактной области p-типа и нескомпенсированный положительный заряд (засчёт ионов донорной примеси) в приконтактной области n-типа (рис.4). Наличие обеднённой области приводит к образованию электрического поля, препятствующего дальнейшей диффузии дырок в n-область и электронов в p-область. В то же время электроны из p-области могут свободно перемещаться в n-область, а дырки из n-области в p-область. Т.о., обеднённый "запирающий" слой препятствует движению основных носителей и не препятствует движению неосновных. Образуемую электрическим полем разность потенциалов называют потенциальным барьером.

При обратном подключении внешнего напряжения (рис.5), обеднённый слой расширяется, под действием электрического поля основные носители смещаются от p-n-перехода, высота потенциального барьера возрастает. Сопротивление перехода велико, ток мал и обусловлен неосновными носителями (дрейфовая составляющая).

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

Прямая ветвь вольт-амперной характеристики (рис.7) состоит из небольшого квадратичного участка ОА и линейного участка АВ. Участок OC обратной ветви - ток практически отсутствует (переход заперт, дрейф неосновных носителей). CD - участок электрического пробоя. Если обратное напряжение > некоего напряжения пробоя, обратный ток резко возрастает. Электрическое поле становится столь сильным, что в состоянии сообщить носителям энергию ударной ионизации перехода с лавинообразным размножением дополнительных пар. Электрический пробой используется в стабилитронах, для которых характерна узкая ширина запирающего слоя и сильное легирование, поэтому носители не приобретают энергии, необходимой для ударной ионизации. При тепловом пробое (DE) переход недопустимо перегревается и выходит из строя.

Биполярный транзистор (БПТ)

БПТ - трёхэлектродный прибор, состоящий из трёх областей с чередующимися типами электропроводности и предназначенные для усиления мощности. Физические процессы в БПТ обоих типов (n-p-n и p-n-p) одинаковы, их схемы отличаются только типами движущихся встречно носителей. Области БПТ отличаются не только типами носителей, но и концентрацией в них носителей, площадями переходов и толщиной (рис.8).

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

При указанной (рис.9) полярности источников питания, переход Б-Э оказывается открыт, его сопротивление мало и возникает ток из эмиттера в базу. Uбэ имеет малую величину (доли Вольта), чтобы ток Iэ не был очень большим. Переход Б-К закрыт, его сопротивление велико, Uбк имеет большую величину (ед-цы, десятки Вольт). Дырки из эмиттера частично рекомбинируют в базе, их убыль пополняется источником Uбэ, т.е. возникает ток Iб. Основная часть дырок диффундирует вглубь базы, попадает в зону действия мощного поля Eбк и втягивается в коллектор, образуя ток коллектора Iк. Доля дырок из эмиттера в коллектор характеризуется коэффициентом передачи по току α = Iк/Iб. В базе рекомбинирует очень малая чать дырок, т.е. Iэ ≈ Iк.

Принцип усиления слабого сигнала заключается в следующем (рис.10). Сопротивления перехода Б-Э мало, поэтому незначительное изменение напряжения на нём (Uвх(t)) вызывает существенное изменение эмиттерного тока Iэ. А Iк ≈ Iэ. Сопротивление перехода Б-К очень большое, намного меньшее сопротивление Rн (1-10 КОм), на режим коллекторного тока практически не влияет. Однако, сопротивление Rн достаточно большое, для того чтоб ток Iк вызывал на нём большие перепады напряжения, во много раз большие, чем перепады Uвх(t). Это усиленное напряжение Uвых(t) поступает на выход схемы.

Лена12/08/2016

Готово. Пошла в Википедию, дабы осознать хоть часть информации :)))) Здесь у меня сплошная дырка без намека на электроны, поэтому с проводимостью [информации] совсем все плохо. Видимо без легирования [немножко Википедии] не обойтись :))))

leleg15/08/2016

Лена, тут вроде бы всё на пальцах, так что не стоит сильно углубляться в матан. Достаточно вспомнить (на школьном уровне) про то, что такое электрон, валентность, потенциал электрического поля, разность потенциалов (напряжение) электрического поля, ток, сопротивление, закон Ома. Физика твёрдого тела рассматривает эти вещи более задорно, с килограммами всяких распределений Бозе-Эйнштейна и Ферми-Дирака, но нам, слава ЛММ, это не потребуется. Так или иначе, надеюсь, Википедия помогла разобраться. :)

Лена15/08/2016

leleg, Да :) Уже немного легче :) Я просто с физикой кроме школы ничего общего не имела :)))

155día
leleg10 ago. 2016, 08:04

Пламенный привет 2.5 анонимусам, читающим тут со мной у Таненбаума про компуктеры!

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

А сегодня, вот, я тут принёс немножко про то, как из вентилей конструируется память. Сюда ещё нужно запилить немного про ОЗУ и ПЗУ в целом, но уже и без того длиннокотпост, так что в следующий раз.

descargado 4 comentario
Лена10/08/2016

leleg, Думаю, что можно было бы привыкнуть... Я на природе дышу как-то по-другому... Хочется так чаще, но сейчас возможности нет ни разу, поэтому пока что дышим в монитор и медитируем в код :))) Видимо для текущего периода моей жизни лучше всего подходит это занятие :)))

leleg10/08/2016

Лена, пара вещей меня там очень сильно удивили, когда мы отправились в горы. Это была экскурсия на целый день. Большую часть пути мы ехали на внедорожнике УАЗ Hunter с откидной крышей. Сперва была асфальтированная дорога, потом грунтовка, потом очень плохая грунтовка, а потом и вовсе направление. Ну вот лежат по всей дороге такие валунища по полметра-метр в диаметре, и через них робко и очень аккуратно переползает наш уазик. И всё это по серпантинам. Не представляю, как там может проехать что-то, с клиренсом меньше 50 см. И так километров 30 - 40. И вот, уже на высоте около 1500 над уровнем моря, среди лесов показались красивые ярко-зелёные луга (вот те, что на фотке). Пасутся лошадки и коровки, стоит пара небольших избушек и надворных построек. А дорога мимо всего этого такая же, состоящая из камней и палок. Рядом с одной из избушек аккуратно припаркован автомобиль ВАЗ 2105. Мы проехали ещё метров 500-800, а дальше 6 км шли пешком по тропе на высоту около 2000, чтоб посмотреть озёра в горах. Туда нас даже уазик уже не повёз. Но вот увидев тот жигуль у избушки, всю оставшуюся часть дня я думал о том, как он туда попал и зачем он вообще там нужен. :-/

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

Лена10/08/2016

leleg, Далеко от большого города - там интернетами всякими, рекламой и политикой людям душу не глушат... По крайней мере, мне так кажется... Там как-то ближе к природе... По крайней мере у меня возникало такое ощущение, когда общалась с теми, кто каждый день смотрит на природу, а не на стенку соседней многоэтажки...

155día

Entrada al escenario «Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.»

leleg10 ago. 2016, 07:25

Глава 3. Цифровой логический уровень (часть 3)

Защелки

Память является необходимым компонентом любого компьютера. Чтобы создать один бит памяти, нужна схема, которая каким-то образом «запоминает» предыдущие входные значения. Такую схему можно сконструировать из двух вентилей НЕ-ИЛИ, как показано на рис. 1(а). Аналогичные схемы можно построить из вентилей НЕ-И, они по существу идентичны схемам с вентилями НЕ-ИЛИ.
Схема, изображенная на рис. 1(а), называется SR-защелкой. У нее есть два входа: S (Set — установка) и R (Reset — сброс). У нее также есть два комплиментарных выхода: Q и Q. В отличие от комбинаторной схемы, выходные сигналы защелки не определяются текущими входными сигналами.
Чтобы понять, как работает защелка, предположим, что S = 0 и R = 0 (вообще сигнал на этих входах равен 0 большую часть времени). Предположим также, что Q = 0. Так как Q возвращается в верхний вентиль НЕ-ИЛИ и оба входа этого вентиля равны 0, то его выход, Q, равен 1. Единица возвращается в нижний вентиль, у которого в итоге один вход равен 0, другой — 1, а на выходе получается Q = 0. Такое состояние по крайней мере логически последовательно (см. рис. 1(а)).
А теперь давайте представим, что Q = 1, а R и S все еще равны 0. Верхний вентиль имеет входы 0 и 1 и выход Q (то есть 0), который возвращается в нижний вентиль. Такое состояние, изображенное на рис. 1(б), также логически последовательно. Положение, когда оба выхода равны 0, не является логически последовательным, поскольку в этом случае оба вентиля имели бы на входе два нуля, что привело бы к единице на выходе, а не к нулю. Точно так же невозможно иметь оба выхода равные 1, поскольку это привело бы к входным сигналам 0 и 1, что вызывает на выходе 0, а не 1. Наш вывод прост: при R = S = 0 защелка имеет два устойчивых состояния, которые мы будем называть 0 и 1 в зависимости от Q.
А сейчас давайте рассмотрим действие входных сигналов на состояние защелки. Предположим, что S принимает значение 1, в то время как Q = 0. Тогда входные сигналы верхнего вентиля равны 1 и 0, что ведет к выходному сигналу Q = 0. Это изменение делает оба входа в нижний вентиль равными 0, и, следовательно, выходной сигнал равняется 1. Таким образом, установка S в значение 1 переключает состояние с 0 на 1. Установка R в значение 1, когда защелка находится в состоянии 0, не вызывает изменений, поскольку выход нижнего вентиля НЕ-ИЛИ равен 0 как для входов 10, так и для входов 11.
Используя подобные рассуждения, легко увидеть, что установка S в значение 1 при состоянии защелки 1 (то есть при Q = 1) не вызывает изменений, но установка R в значение 1 приводит к изменению состояния защелки. Таким образом, если S принимает значение 1, то Q равняется 1 независимо от предыдущего состояния защелки. Сходным образом переход R в значение 1 вызывает Q = 0. Схема «запоминает», какой сигнал был последним: S или R. Используя это свойство, мы можем строить компьютерную память.

Синхронные SR-защелки

Часто бывает удобно, чтобы состояние защелки могло изменяться только в определенные моменты. Чтобы достичь этой цели, немного изменим основную схему и получим синхронную SR-защелку (рис.2). Эта схема имеет дополнительный синхронизирующий вход, который по большей части равен 0. Если этот вход равен 0, то оба выхода вентилей И равны 0, и независимо от значений S и R защелка не меняет свое состояние. Когда значение синхронизирующего входа равно 1, действие вентилей И прекращается,
и состояние защелки становится зависимым от S и R. Для обозначения факта появления единицы на синхронизирующем входе часто используются термины включение и стробирование.
До сих пор мы не выясняли, что происходит, когда S = R = 1. И по понятным причинам: когда и R, и S в конце концов возвращаются к 0, схема становится недетерминированной. Единственное приемлемое состояние при S = R = 1 — это Q = Q = 0, но как только оба входа возвращаются к 0, защелка должна перейти в одно из двух устойчивых состояний. Если один из входов принимает значение 0 раньше, чем другой, оставшийся в состоянии 1 «побеждает», потому что именно единичный вход управляет состоянием защелки. Если оба входа переходят к 0 одновременно (что очень маловероятно), защелка выбирает одно из своих устойчивых состояний произвольным образом.

Синхронные D-защелки

Чтобы разрешить ситуацию с неопределенностью SR-защелки (неопределенность возникает в случае, если S = R = 1), нужно предотвратить ее возникновение. На рис.3 изображена схема защелки только с одним входом D. Так как входной сигнал в нижний вентиль И всегда является обратным кодом входного сигнала в верхний вентиль И, ситуация, когда оба входа равны 1, никогда не возникает. Когда D = 1 и синхронизирующий вход равен 1, защелка переходит в состояние Q = 1. Когда D = 0 и синхронизирующий вход равен 1, защелка переходит в состояние Q = 0. Другими словами, когда синхронизирующий вход равен 1, текущее значение D отбирается и сохраняется в защелке. Такая схема, которая называется синхронной D-защелкой, представляет собой память объемом один бит. Сохраненное значение всегда доступно на выходе Q. Чтобы загрузить в память текущее значение D, нужно пустить положительный импульс по линии синхронизирующего сигнала.
Такая схема требует 11 транзисторов. Более сложные схемы (именно они обычно используются на практике) могут хранить один бит всего на 6 транзисторах. Схема остается в устойчивом состоянии до тех пор, пока на нее подается питание (на рисунке не обозначено). Позднее мы рассмотрим схемы, которые быстро забывают состояние, в котором они находятся, — чтобы этого не происходило, им необходимы постоянные «напоминания».

Триггеры

Многие схемы при необходимости выбирают значение на определенной линии в заданный момент времени и запоминают его. В такой схеме, которая называется триггером (flip-flop), смена состояния происходит не тогда, когда синхронизирующий сигнал равен 1, а при переходе синхронизирующего сигнала с 0 на 1 (фронт) или с 1 на 0 (спад). Следовательно, длина синхронизирующего импульса не имеет значения, поскольку переходы происходят быстро.
Существуют несколько подходов к проектированию триггеров. Например, если бы существовал способ генерирования очень короткого импульса на фронте синхронизирующего сигнала, этот импульс можно было бы подавать в D-защелку. В действительности такой способ существует. Соответствующая схема показана на рис.4(а).
При прохождении сигнала через инвертор происходит небольшая ненулевая задержка, благодаря которой работает данная схема. Предположим, мы измеряем напряжение в четырех точках a, b, c и d. Входной сигнал в точке a представляет собой длинный синхронизирующий импульс (нижний график на рис.4(б)). Сигнал в точке b показан над ним. Отметим, что этот сигнал инвертирован и подается с некоторой задержкой (зависит от типа инвертора и обычно составляет несколько наносекунд).
Сигнал в точке c тоже подается с задержкой, но эта задержка обусловлена только временем прохождения сигнала (со скоростью света), т.о., сигнал в точке c практически идентичен сигналу в точке a.
Когда входные сигналы b и c подвергаются операции И, в результате получается короткий импульс, длина которого (Δ) равна вентильной задержке инвертора (обычно 5 нс и ниже). Выходной сигнал вентиля И — данный импульс, сдвинутый из-за задержки вентиля И (верхний график на рис.4(б)). Этот временной сдвиг означает только то, что D-защелка активизируется с определенной задержкой после фронта синхронизирующего импульса. Он никак не влияет на длину импульса. В памяти со временем цикла в 10 нc импульс в 1 нc (который сообщает, когда нужно выбирать линию D) достаточно короткий, и в этом случае полная схема может быть такой, как на рис.5. Следует упомянуть, что такая схема триггера проста для понимания, но на практике обычно используются более сложные триггеры.
Стандартные обозначения защелок и триггеров показаны на рис.6. На рис.6(а) изображена защелка, состояние которой загружается тогда, когда синхронизирующий сигнал CK (clock) равен 1, в противоположность защелке, изображенной на рис.6(б), у которой синхронизирующий сигнал обычно равен 1, но который переходит на 0, чтобы загрузить состояние из линии D. На рис.6(в) и 6(г) изображены триггеры. Триггер на рис.6(в) изменяет состояние на фронте синхронизирующего импульса, триггер на рис.6(г) изменяет состояние на спаде. Многие (хотя не все) защелки и триггеры также имеют выход Q, а у некоторых
есть два дополнительных входа: Set (установка) или Preset (предварительная установка) и Reset (сброс) или Clear (очистка). Первый вход (Set или Preset) устанавливает Q = 1, а второй (Reset или Clear) — Q = 0.

Регистры

Существуют различные конфигурации триггеров. На рис.7 показано, как восемь триггеров объединяются для формирования 8-разрядного регистра. Регистр получает 8-разрядное входное значение (I0 –I7) при изменении синхронизирующего сигнала CK. Все синхронизирующие линии связаны с одним входным сигналом CK, чтобы при изменении состояния CK регистр получал новое 8-разрядное значение данных с входной шины. Сами триггеры того же типа, что и на рис.6(г), но инвертирующие входы аннулируются инвертором, связанным с CK, поэтому триггеры запускаются при переходе от 0 к 1. Все восемь сигналов
очистки тоже объединены, поэтому когда сигнал сброса CLR переходит в состояние 0, все триггеры переходят в состояние 0. Ответ на вопрос, почему синхронизирующий сигнал CK инвертируется на входе, а затем инвертируется снова в каждом триггере, прост: входной сигнал не имеет достаточной мощности, чтобы запустить все восемь триггеров; входной инвертор на самом деле используется в качестве усилителя. 8-разрядный регистр может использоваться в качестве структурного элемента для построения регистров большей разрядности.
Организация памяти

Для построения памяти большого объема потребуется другой способ организации, при котором можно обращаться к отдельным словам. Пример организации памяти, которая удовлетворяет этому критерию, показан на рис.8. Эта память содержит четыре 3-разрядных слова. Каждая операция считывает или записывает целое 3-разрядное слово. Хотя общий объем памяти (12 бит) не на много больше, чем у 8-разрядного триггера, такая память требует меньшего количества выводов, и, что особенно важно, применима для построения памяти большого объема. Обратите внимание: количество слов всегда равно степени 2.
Хотя организация памяти, изображенной на рис.8, может на первый взгляд показаться сложной, на самом деле она очень проста благодаря своей регулярной структуре. Микросхема содержит 8 входных линий, в частности 3 входа для данных — I0, I1 и I2; 2 входа для адресов — A0 и A1; 3 входа для управления — CS (Chip Select — выбор элемента памяти), RD (ReaD — чтение, этот сигнал позволяет отличать считывание от записи) и OE (Output Enable — разрешение выдачи выходных сигналов), а также 3 выходные линии для данных — O0, O1 и O2.
Такая 12-разрядная память требует меньшего количества выводов (13), чем 8-разрядный регистр из предыдущего примера (20), поскольку в отличие от регистра 4 бита памяти совместно используют один выходной сигнал. Состояние адресного входа определяет, каким четырем битам памяти разрешается ввод или вывод значения.
Чтобы выбрать этот блок памяти, внешняя логика должна установить CS в 1, а RD в 1 для чтения и в 0 для записи. Две адресные линии должны указывать, какое из четырех слов нужно считывать или записывать. При считывании входные линии для данных не используются, а выбранное слово подается на выходные линии для данных. При записи биты, находящиеся на входных линиях, загружаются в выбранное слово, а выходные линии не используются.
Посмотрим, как работает память, изображенная на рис.8. Четыре вентиля И для выбора слов в левой части схемы формируют декодер. Входные инверторы расположены так, что каждый вентиль запускается определенным адресом. Каждый вентиль приводит в действие линию выбора слов (для слов 0, 1, 2 и 3). Когда микросхема должна производить запись, вертикальная линия CS*RD получает значение 1, запуская один из четырех вентилей записи. Выбор вентиля зависит от того, какая именно линия выбора слов равна 1. Выходной сигнал вентиля записи приводит в действие все сигналы CK для выбранного слова, загружая входные данные в триггеры для этого слова. Запись производится только в том случае, если сигнал CS равен 1, а RD — 0, при этом записывается только слово, выбранное адресами А0 и А1; остальные слова не меняются.
Процесс считывания сходен с процессом записи. Декодирование адреса происходит точно так же, как при записи. Но в данном случае линия CS*RD принимает значение 0, поэтому все вентили записи блокируются, и ни один из триггеров не меняется. Вместо этого линия выбора слов запускает вентили И, связанные с битами Q выбранного слова. Таким образом, выбранное слово передает свои данные в 4-входовые вентили ИЛИ, расположенные в нижней части схемы, а остальные три слова выдают 0. Следовательно, выход вентилей ИЛИ идентичен значению, сохраненному в данном слове. Остальные три слова никак не влияют на выходные данные.

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

Преимущество памяти, изображенной на рис.8, в том, что подобная структура применима при разработке памяти большого объема. На рисунке показана схема 4 х 3. Чтобы расширить ее до 4 х 8, нужно добавить еще 5 колонок триггеров по 4 в каждой, а также 5 входных и 5 выходных линий. Чтобы перейти от схемы 4 х 3 к 8 х 3, требуется добавить еще 4 ряда триггеров по 3 в каждом, а также адресную линию А2. При такой структуре число слов в памяти должно быть степенью двойки для максимальной эффективности, а число битов в слове может быть любым.
Технология изготовления интегральных схем идеально соответствует регулярной структуре микросхем памяти. С развитием технологии число битов, которое можно вместить в одной микросхеме, постоянно растет, обычно в два раза каждые 18 месяцев (закон Мура). С появлением больших микросхем маленькие микросхемы не всегда сразу устаревают, поскольку всегда существует компромисс между емкостью, быстродействием, мощностью, ценой и удобством сопряжения. Обычно самые большие современные микросхемы пользуются огромным спросом и, следовательно, стоят дороже в расчете за один бит, чем микросхемы небольшого размера.
При любом объеме памяти существуют несколько вариантов организации микросхемы. На рис.9 показаны две возможные структуры микросхемы емкостью 4 Мбит: 512 К х 8 и 4096 К х 1 (размеры микросхем памяти обычно даются в битах, а не в байтах). На рис.9, а можно видеть 19 адресных линий для обращения к одному из 219 байт и 8 линий данных для загрузки или хранения выбранного байта.
Небольшое замечание по поводу терминологии. На одних выводах высокое напряжение вызывает какое-либо действие, на других остается низкое. Чтобы избежать путаницы, употребляется термин установить сигнал. Таким образом, для одних выводов
установка сигнала означает установку единицы, для других — установку нуля. Названия выводов, которые устанавливаются в 0, содержат сверху черту. То есть сигнал CS — это единица, сигнал CS — ноль. Противоположный термин — сбросить.
Поскольку обычно компьютер содержит много микросхем памяти, нужен сигнал для выбора необходимой микросхемы, такой, чтобы нужная нам микросхема реагировала на вызов, а остальные нет. Сигнал CS (Chip Select — выбор элемента памяти) устанавливается, чтобы запустить микросхему. Кроме того, нужен способ, чтобы отличать считывания от записи. Сигнал WE (Write Enable — разрешение записи) указывает на то, что данные должны записываться, а не считываться. Наконец, сигнал OE (Output Enable — разрешение вывода) устанавливается для выдачи выходных сигналов. Когда этого сигнала нет, выход отсоединяется от остальной части схемы.
На рис.9(б) используется другая схема адресации. Микросхема представляет собой матрицу размером 2048 х 2048 однобитных ячеек (4 Мбит). Чтобы обратиться к микросхеме, сначала нужно выбрать строку. Для этого 11-разрядный номер этой строки подается на адресные выводы. Затем устанавливается сигнал RAS (Row Address Strobe — строб адреса строки). После этого на адресные выводы подается номер столбца и устанавливается сигнал CAS (Column Address Strobe — строб адреса столбца). Микросхема реагирует на сигнал, принимая или выдавая один бит данных. Такая организация памяти сокращает число необходимых выводов, но, с другой стороны, замедляет обращение к микросхеме, поскольку требуется два цикла адресации:
один для строки, другой для столбца. Потеря скорости отчасти компенсируется тем, что в некоторых микросхемах возможна передача адреса строки с последующей передачей нескольких адресов столбцов для обращения к последовательным битам строки.

descargado 3 comentario
leleg10/08/2016

Лена, ну да, просто схемы чуть посложнее. Ну и плюс наверно было бы проще, если бы здесь можно было картинки ставить посреди текста. Ну чтоб читаешь - смотришь. С видео такое можно. А тут как бы все иллюстрации в конце текста, не слишком удобно.

Лена10/08/2016

leleg, У меня две одинаковые странички в браузере одновременно открыты. Можно боль мень удобно переключаться табами :)

leleg10/08/2016

Лена, вариант. Но всё-таки жаль, что нельзя посреди текста запихнуть :(

131día
leleg17 jul. 2016, 12:08

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

Была у меня ещё мысль залить сюда вдогонку немного про физический уровень из своего школьного вузовского конспекта по основам электроники (про полупроводники, про p-n переход, про диод и про транзистор). Это ниже логического уровня,но там здорово рассказано на пальцах и очень понятно. Ну, если вдруг 2.5 анунимусам станет интересно, залью.

descargado 3 comentario
Лена17/07/2016

:)

leleg10/08/2016

Whoops, у меня, помню, экзамен был. Препод душка, но строг и справедлив. Так что Адъ, Израиль, трэш, угар, содомию и прочие интересные варианты времяпрепровождения организовал в полном объёме. 2 раза на экзамен ходил. В первый раз хотел поставить 3, но я попросил 2, чтоб пойти на пересдачу. В итоге 4, так что "поцан к успеху пришёл". Сейчас, правда, кроме основных основ, ваааще фиг что вспомню :)

Puede publicar
su objetivo aquí

Podemos ayudarle a lograrlo!

310 000

ideas afines

instrumentos

para un logro emocionante

Únete a nosotros
Registración

Las posibilidades
están ilimitadas.
Es la hora
de descubrir las suyas

Уже зарегистрированы?
Entrada al sitio

Entre.
Está abierto.

¿Aún no está registrado?
 
Conéctese a cualquiera de sus cuentas, sus datos se tomarán de la cuenta.
¿Ha olvidado la contraseña?
Daniil
Артем
Лена
Champion
Дмитрий Аносов
Раздолбайка
Лена
Daniil
Лена
Лена
Лена
Лена
leleg
Лена
Лена
leleg
Лена
Лена
Лена
leleg
Лена
leleg
Лена
leleg
Лена
Лена
Лена
leleg
Лена
Лена
leleg
Лена