Аппаратное обеспечение

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

Некоторые могут помнить, что системный блок состоит из ЦПУ, ОЗУ и ПЗУ. Это, однако довольно абстрактные слова.

Давайте поговорим о современных персональных компьютерах (в целом, современные ноутбуки и серверы отличаются гораздо меньше, чем можно было бы предположить). Из чего состоит системный блок? Правильный ответ, конечно, из стали, пластика, меди и кремния. Но все же нас интересуют компоненты этого самого блока. Действительно, ЦПУ (процессор), ОЗУ (оперативная память) и ПЗУ (жёсткие или твердотельные диски) присутствуют. Но как они соединяются и взаимодействуют? При помощи материнской платы.

Материнская плата

Что такое материнская плата?

Схематическое изображение материнской платы

Материнская плата это много слотов и портов и две (последнее время все чаще одна) микросхемы, называемые мосты. Условно “верхняя” называется северный мост, условно “нижняя” – южный мост. Северный мост отвечает за взаимодействие ОЗУ, ЦПУ и графического ускорителя (о них позже). Южный – за взаимодействие слотов расширения, портов I/O, и т.д. Последние годы, северный мост все чаще интегрируют непосредственно на микросхему процессора.

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

Частота системной шины определяет в основном максимальную скорость обмена информацией между ОЗУ, процессором и высокоскоростными слотами расширения.

Процессор

Под словом “процессор” может пониматься любое цифровое вычислительное устройство.

Большинство процессоров общего назначения имеют принципиально одинаковое устройство.

Большинство процессоров классифицируются как процессоры с RISC-архитектурой или CISC-архитектурой.

  • CISC – Complete/Complex Instruction Set Computer
    • переменная длина команды
    • время выполнения команд может отличаться на порядки
    • много команд сходного назначения
    • сравнительно небольшое число регистров
    • доступ к памяти неявный как часть команды
  • RISC – Restricted/Reduced Instruction Set Computer
    • часто длина команды фиксирована
    • время выполнения команд отличается слабо
    • небольшой набор высокоспециализированных команд
    • сравнительно большое число регистров
    • специальные команды для доступа к памяти

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

Принципиальные элементы процессора

Схематическое изображение простейшего процессора

Можно выделить следующие принципиальные элементы процессора:

  • Регистры – быстрые ячейки памяти, расположенные на чипе процессора. Их содержимое непосредственно используется в вычислениях и для управления работой процессора. Часто выделяются регистры общего назначения и регистры специализированного назначения. Из регистров специального назначения обычно выделяют:
    • Счётчик программы – регистр, содержащий адрес текущей инструкции программы.
    • Регистр инструкции – регистр, содержащий текущую инструкцию программы (прочитанную из памяти)
    • Адресный регистр – регистр, содержащий адрес оперативной памяти, с которым процессор работает в данный момент (чтение или запись)
  • Арифметически-логическое устройство (АЛУ) – основной вычислительный компонент, производящий арифметические и логические вычисления.
  • Декодер инструкций – компонент процессора, который на основе текущей инструкции определяет конфигурацию логических вентилей, которая приведёт к исполнению соответствующей инструкции.
  • Логические вентили, управляемые декодером инструкций, часто называются управляющей логикой.
  • Шина данных – соединение с памятью, через которое передаются данные читаемые из или записываемые в память. Обычно, но не обязательно, это оперативная память – это может быть также память устройств расширения, таких как графический сопроцессор, устройства ввода, и т.п.
  • Адресная шина – соединение с памятью, через которое передаётся адрес памяти, с которым процессор будет работать. Процессор передаёт адрес памяти по адресной шине, при этом шина данных подключается к соответствующему содержимому памяти, после чего может напрямую работать с шиной данных.

Физическое устройство

Интегральная схема MOS6502

MOS6502 использовалась в машинах Apple I, Apple II, Commodore 64 и т.д., и в игровых приставках Atari 2600, Nintendo Entertainment System и др.

Слева на схеме расположен декодер инструкций, в центре – управляющая логика, справа сверху – регистры, справа снизу – АЛУ. Шина данных сверху справа, адресная шина справа в центре и внизу.

Закон Мура

Слом кристалла процессора Intel Pentium III. Можно видеть несколько слоёв схемы и металлические дорожки, соединяющие полупроводниковые компоненты (источник: https://habr.com/ru/post/127205/)

В индустрии известен так называемый закон Мура – эмпирическое наблюдение основателя Intel Гордона Мура о том, что количество транзисторов на кристалле интегральной схемы удваивается каждые 2 года.

Иллюстрация закона Мура

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

Прерывания

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

Аппаратные прерывания
порождаются устройствами, и обычно означают, что устройство требует внимания ОС. Реализуются при помощи электрических сигналов, посылаемых на процессор с устройства. Аппаратные прерывания могут возникать в любой момент, в том числе в процессе исполнения инструкции, и требуют осторожности при обращении. Генерирование аппаратного прерывание часто называют IRQ (interrupt request, запрос прерывания). Например, нажатие клавиши на клавиатуре генерирует аппаратное прерывание.
Программные прерывания
генерируются либо исключением при исполнении кода, генерируемым самим процессором, либо специальной инструкцией в коде программы. Например, целочисленное деление на ноль вызывает исключение, в результате которого текущее вычисление может быть прервано.

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

Сигнальные цепи устройств часто подключаются к программируемому контроллеру прерываний (PIC, APIC), который позволяет подключить несколько устройств на одну линию процессора.

Прерывания могут быть разделены на следующие категории:

  • Маскируемые прерывания (IRQ) – аппаратные прерывания, которые могут быть игнорированы процессором (для игнорирования прерываний существует специальный регистр IMR – регистр маски прерываний).
  • Немаскируемые прерывания (NMI) – аппаратные прерывания, которые не могут быть игнорированы. Они используются для задач с наиболее высоким приоритетом, таких как таймеры.
  • Межпроцессорное прерывание (IPI) – прерывание, генерируемое одним процессором для прерывания другого процессора в многопроцессорных системах
  • Программное прерывание – прерывание, сгенерированное процессором в результате исполнения инструкции. Программные прерывания, не являющиеся исключениями, часто используются при работе в защищённом режиме для передачи управления в кольцо с большими привилегиями.
  • Ложное прерывание – нежелательное аппаратное прерывание, возникающее случайно в результате электрической интерференции или ошибок в аппаратном обеспечении.

Типы аппаратных прерываний

Аппаратные прерывания можно классифицировать так же по физическому методу их реализации. Можно выделить четыре основных варианта:

  • Переключаемые по уровню
  • Переключаемые по границе
  • Гибридные
  • MSI

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

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

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

Стандарт слотов расширения ISA требовал переключаемых по границе прерываний.

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

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

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

MSI (message signaled interrupts) – это модель прерываний, не использующая выделенной линии прерывания. Вместо этого, устройство посылает цифровое сообщение на стандартную шину. Обработка такого прерывания аналогична обработке прерывания, переключаемого по границе, однако значительно более устойчиво к ложным прерываниям (поскольку цифровой сигнал в целом более устойчив к шуму) и не требует дополнительных линий для работы. Более того, одно устройство может генерировать десятки или даже тысячи (в стандарте MSI-X) различных прерываний для различных случаев.

Стандарт PCI-Express использует MSI.

Оперативная память

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

  1. Выбору ряда и его активации. При этом соответствующий ряд подключается к выходам
  2. Работы непосредственно с рядом

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

Типы памяти

Существует несколько технологий реализации триггеров в банках оперативной памяти. Два основных это “статический” и “динамический”. Статические триггеры принципиально похожи на RS-триггер, и достаточно дороги в производстве, но зато значительно быстрее динамических. Они обычно используются в качестве кэша процессора (объем кэша обычно в районе нескольких мегабайт). Динамические триггеры по сути представляют собой конденсатор. Основной их недостаток заключается в разрядке конденсатора, и, следовательно, необходимости постоянно перезаряжать конденсатор.

Примерная схема модуля динамической памяти

В соответствии с типом триггера, оперативная память подразделяется на DRAM – динамическую и SRAM – статическую.

Динамическая память, в свою очередь, подразделяется на

FPM DRAM
Оригинальный тип динамическсокй памяти, читающий одну ячейку памяти за раз.
EDO DRAM
Не ожидая окончания чтения ячейки, как только выбраны ряд и столбец, переходит к поиску следующей. Примерно на 5% эффективнее, чем FPM, максимальная скорость чтения на 50% выше, чем у FPM
SDRAM
Не отключает ряд после чтения ячейки, что позволяет значительно ускорять операции последовательного чтения. Примерно на 5% эффективнее, чем EDO, максимальная скорость чтения на 100% выше.
DDR SDRAM
То же, что SDRAM, но совершает две операции за цикл. Позволяет увеличить вдвое эффективную частоту при прочих равных (ценой некоторого увеличения таймингов).

В современных компьютерах основным типом оперативной памяти является DDR SDRAM

Тайминги

Для 4 основных операций существуют 4 тайминга, а именно

  • CL – CAS-latency, количество циклов, проходящих с передачи адреса до появления первого бита на выходах. Определяет скорость последовательного чтения
  • RCD – Время включения ряда. Первичное чтение из произвольного ряда занимает RCD+CL циклов.
  • RP – Время выключения ряда. Чтение из произвольного ряда со сменой ряда занимает RP+RCD+CL циклов
  • RAS – Время, которое должно пройти между чтением/записью в ряд и переключением ряда. RCD+CL ≤ RAS ≤ RCD+2 CL

Тайминги обычно обозначаются тремя-четырьмя цифрами через дефис, например 6-6-6-24.

Постоянные запоминающие устройства

Под ПЗУ обычно подразумеваются жёсткие диски либо твердотельные накопители (flash-память).

Жесткие диски

Жёсткий диск

Типичный жёсткий диск состоит из:

  • Нескольких быстро вращающихся дисков, покрытых магнитным материалом
  • Ротора
  • Магнитных головок чтения-записи
  • Магнитомеханической системы позиционирования головок (в более старых реализациях – электромеханической)
  • Схемы контроллера

Жёсткие магнитные диски изобретены в декабре 1954 года в недрах компании IBM. Первые жёсткие диски обладали потрясающим воображение объёмом в 3.75 MiB и весили по 900 кг. С тех пор, конечно, технология ушла далеко вперёд, однако принципиальное устройство не изменилось.

Скорость вращения первых жёстких дисков составляла 1200 об/мин. У современных варьируется от 4200 до 15000. Чем выше скорость вращения дисков, тем меньшее время необходимо для доступа к ячейке.

Сами диски обычно состоят из немагнитного материала, например алюминиевых сплавов или керамики, и покрыты тонким слоем магнитного сплава толщиной 10-20 нм с высокой коэрцитивной силой (т.е. для изменения направления намагниченности необходимо большое локальное магнитной поле).

Ячейки представляют из себя магнитные микро-домены. Головки чтения-записи находятся на расстоянии нескольких десятков нанометров от поверхности диска, что позволяет создавать достаточно мощные магнитные поля при сравнительно низких энергозатратах (из курса физики известно, что магнитное поле линейно убывает с квадратом расстояния, \(H\sim\frac{1}{r^2}\))

“Классическая” ориентация намагниченности доменов – в плоскости диска. Существует также технология перпендикулярного направления доменов намагниченности. Это позволяет увеличить плотность записи в несколько раз ценой увеличения толщины магнитного слоя и усложнения производства головок чтения-записи.

Параллельная и перпендикулярная запись на диск

Твердотельные накопители

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

EPROM в качестве ячеек памяти использует полевые транзисторы с плавающим затвором.

Схема полевого транзистора с плавающим затвором

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

При записи данных в такую ячейку, используется эффект туннелирования электронов через изолятор (закон Фаулера-Нордгейма). При подаче высокого напряжения (13-15 вольт) между истоком и управляющим затвором (Source и Control Gate на картинке), электроны туннелируют в плавающий затвор (Floating Gate), и начинают экранировать поле управляющего затвора (Control Gate), чем значительно изменяют вольт-амперную характеристику транзистора, повышая сопротивление между истоком и стоком.

При перезаписи, между истоком и управляющим затвором прикладывается электрическое поле с обратным знаком (15-20 вольт), в результате чего электроны из плавающего затвора туннелируют в исток.

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

Наличие электронов на плавающем затворе соответствует логическому нулю (транзистор открыт), отсутствие – логической единице (транзистор закрыт).

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

NOR-flash соединяет транзисторы с плавающим затвором аналогично логическому элементу ИЛИ-НЕ. NAND-flash соединяет транзисторы аналогично элементу И-НЕ. Основными недостатками NOR-flash являются больший расход материалов на проводники, и как следствие, меньшая плотность ячеек. В SSD и USB-flash накопителях сейчас используется в подавляющем большинстве случаев NAND-flash.

Принципиальная схема NOR-flash
Принципиальная схема NAND-flash