Полезные заметки/Внутреннее устройство ЭВМ

Материал из Викитропов
Перейти к навигации Перейти к поиску

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

Также заметим, что рассматриваем современное на момент написания статьи состояние.

Что видно внутри корпуса настольного IBM-совместимого компьютера

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

Материнская плата. Уже по внешнему виду опытный увидит производителя платформы, AMD, и примерную датировку, середину 2000-х.

Материнская плата — плата, на которой установлены критически важные для работы компьютера элементы или хотя бы соединения с ними. Что там установлено:

  • Преобразователи питания, также MOSFET’ы (английское название полевых транзисторов — самой большой и греющейся части этого самого преобразователя). Изначально (до середины 1990-х) блок питания реально выдавал те напряжения, которые нужны процессору. Сейчас он (в настольных компьютерах) просто выдаёт несколько стандартных напряжений — 3,3 В (исторически использовалось на процессор), 5 В (стандартный уровень транзисторно-транзисторной логики, напряжение на USB) и куча шин по 12 В × 20 А (исторически использовалось накопителями и COM-портами, сейчас процессором и прожорливыми платами вроде видео-; есть ещё очень низкоамперная шина −12 В только для COM-портов; больше 20 ампер передавать нельзя, чревато перегревами в разъёмах). А нам на процессор нужны 0,8…1,4 вольта, да ещё и меняющиеся (чем больше загрузка процессора, тем выше напряжение) — зато амперов может по разным шинам идти в общей сложности до 150. Отказ преобразователей питания может быть тихим (заменил — и плата снова поехала), а может сопровождаться гирляндой — пробой приводит к тому, что там, где должен быть вольт, сидят двенадцать, пробивается очередная микросхема — и так пока случится не пробой, а выгорание.
    • Для тех, кто не знает: если потихоньку повышать напряжение на транзисторе или диоде — случится одно из двух. Или (если он открыт) произойдёт превышение по силе тока, он перегреется и сгорит — перестанет проводить. Или (если он закрыт) произойдёт превышение по напряжению, он будет пробит и начнёт проводить в обе стороны — ну, не как перемычка, но как резистор в единицы ом. Бывает неполный пробой, или прокол, через закрытый элемент утекает небольшой ток, но он продолжает коммутировать — это деградация, но не поломка.
    • Ноутбуки принимают основное напряжение питания, обычно 10…12 вольт от аккумуляторов (3,6·3 — потому количество аккумуляторных банок кратно трём) и 16…20 от внешнего блока питания, и на месте преобразуют его в 3,3, 5, 12 и всё остальное, что нужно процессору и периферии. Из-за подобного метода преобразования и несменных чипов ноутбуки значительно более уязвимы к «гирляндам», а их исправление — дело дорогое и доступное очень пряморукому ремонтнику.
  • Процессор — основное вычислительное устройство компьютера.
    • На 2010-е годы включает такие дополнительные компоненты, которые некогда в IBM-совместимых компьютерах были отдельными устройствами: математический сопроцессор (с конца 80-х, всегда), северный мост (у AMD во всех x64, у Intel с Core i#, всегда), видеоплату (где-то с 2011, в маломощных моделях, где есть место на видеочип).
  • Контроллер скоростных шин, он же северный мост — микросхема, управляющая самыми быстрыми шинами компьютера. С конца 2000-х находится в процессоре. К нему подключаются память, видеоплата и южный мост. Откуда названия? — северный мост сверху, около процессора, южный — около слотов расширения.
    • Порты для съёмных планок оперативной памяти (ОЗУ) — энергозависимой памяти, нужной для временного сохранения промежуточных или уже даже окончательных результатов вычислений. В некоторых случаях сейчас отдельные планки не нужны, так как некоторые производители (Apple) начали устанавливать оперативную память внутрь корпуса процессора.
    • Порт для видеокарты — специальной платы с аналогом процессора, предназначенным для формирования картинки для монитора. Тоже уже не обязательный элемент, так как в процессоры (особенно мобильного класса) уже давно встраивают свои слабенькие видеокарты. Собственно, чем занимается видеоплата:
      • Даёт доступ к видеопамяти — специальной памяти, где хранится картинка. В современных видеоплатах видеопамять быстрее оперативной, но «заточена» под доступ крупными блоками (в первых — наоборот, медленнее и ниже разрядность). В современных трёхмерных видеоплатах в памяти хранятся ещё и текстуры — потому её так много.
      • Выводит содержимое видеопамяти на монитор через интерфейс VGA, DVI или другой. Изначально видеопамять и генерация видеосигнала была собрана в один чип — RAMDAC, оперативная память и цифроаналоговый преобразователь. Сейчас оперативная память — отдельные чипы, а генерация видеосигнала где-то в графическом процессоре.
      • Занимается аппаратным формированием в видеопамяти («рисованием») различных графических примитив: от линий, прямоугольников и переноса картинок (середина 90-х) до сглаженных трёхмерных треугольников с шейдерами, освещением и размножением (середина 2000-х). Эта функция видеоплаты не обязательна, в стандартном VGA её не было, но поскольку сильно улучшает жизнь в графических интерфейсах и играх — реализовали. Это и есть основное назначение графического процессора (GPU).
      • Занимается так называемым GPGPU (General-purpose computing on GPU) — расчётами на видеоплате. Процессор хорошей игровой видеоплаты в десятки раз мощнее центрального, но он заточен на параллельное исполнение одной и той же несложной программы без ветвлений — потому в фото, видео и переборах может помочь. Собственно, и майнинг-бум с подорожанием видях случился потому, что майнинг — это очень большой перебор. Опять-таки, необязательная функция видеоплаты. С начала 2000-х видеоплаты начали программировать с помощью шейдеров — небольших программ, описывающих, как обработать картинку. А собственно GPGPU появилось с 2007, когда nVidia выкатила технологию CUDA для прямого доступа к шейдерным конвейерам.
    • Контроллер-концентратор ввода-вывода, он же южный мост и (в современной терминологии) чипсет, хаб — содержит контроллеры для шин расширения (ISA/PCI), контроллеры дисков (SATA), USB и немало стандартной аппаратуры компьютера (программируемый таймер — вызывает сигналы таймера и управляет встроенным динамиком, DMA-контроллер — direct memory access, позволяет периферии, в первую очередь накопителям и звуку, общаться с памятью в обход процессора…) Подключается к северному мосту. Изначально чипсетом — набором микросхем — называли северный и южный мост, но сейчас остался один южный, который иногда называют хабом (platform controller hub у Intel и fusion controller hub у AMD). Есть несколько дешёвых ноутбуков, где хаб в процессоре, но в целом такая схема не взлетает: хаб — самое уязвимое место материнской платы и спорит в этом только с контроллером локальной сети, который тоже подключается к южному мосту по шинам расширения.
      • Дополнительный контроллер ввода-вывода, он же Super I/O — в чипсет не входит (разрабатывается сторонними относительно Intel/AMD фирмами), подключается к южному мосту и поддерживает старую аппаратуру вроде COM-портов, флоппи-дисков и клавиатуры.
      • Из выделенных контроллеров чаще всего сеть (как Ethernet, так и Wi-Fi) и звук — сильно аналоговые устройства, требующие особого подхода и также производимые одним-двумя производителями вроде Realtek по устаревшему техпроцессу.
      • Разъёмы для плат расширения, как без них…
      • Микросхема BIOS (также UEFI, Boot и иные названия). Чтобы процессор работал, ему нужна программа, и самая первая программа, которую он выполнит,— ещё до того, как заработает оперативная память — это BIOS. Содержит программы для инициализации и простейшей проверки аппаратуры компьютера и передачи управления загрузчику операционной системы. Когда вы слышите через динамик протяжный бип «нет памяти» — это процессор под управлением BIOS подал команду на программируемый таймер (ныне часть хаба), и к одному из его портов подключён динамик. BIOS можно впихнуть и в другие места матплаты, но для ремонтопригодности лучше всего микросхема в несложном корпусе: сейчас (2023) — планарный монтаж с большим шагов выводов.
        • UEFI — это 64-разрядная разновидность BIOS, которая может иметь встроенную совместимость со старыми, 16-разрядными BIOS и программами, написанными в расчёте на таковые, а может и не иметь. Сейчас большинство BIOS принадлежит именно к этому подвиду, если только речь не идёт о компьютерном старье. Откуда в UEFI слово «interface»: передав управление загрузчику, BIOS остаётся «мостиком» между загрузчиком (или неполноценной ОС) и аппаратурой, и открытому компу — открытый интерфейс, на котором кто угодно может сделать прошивку.
      • Часы реального времени и КМОП-память — два устройства, которые должны работать всегда и запитаны литиевой батарейкой. Часы отвечают за системное время, КМОП-память — за хранение настроек BIOS.

К материнской плате снаружи подключаются:

  • Накопители — постоянные запоминающие устройства, которые сохраняют данные, пока питание выключено. Бывают сменными (флоппи-, DVD…) и несменными. Из несменных на 2020-е годы есть два вида: твердотельные накопители (SSD) и жёсткие диски (винчестеры). SSD быстрые и прочные, но с меньшим объёмом памяти и быстрее изнашиваются. А жёсткие диски медленные и менее прочные, но дешевле, имеют больше памяти и меньше изнашиваются. Жёсткие диски (и дискеты) боятся магнитных полей, а твердотельные (и флэшки) — электрических. А ещё, если HDD может годами лежать выключенным и хранить информацию, то выключенный SSD, если его хранить не в холодильнике, рискует потерять заряд своих ячеек в течении года, а лёжа на жаре и в течении лета. Флешка тоже теряет заряд, но будучи более «дубовой» делает это в разы медленнее, чем более ёмкий и быстрый SSD. Кроме того, HDD перед выходом из строя начинает «сыпаться» и издавать «стук смерти», а SSD выходит из строя неожиданно.
  • Блок питания — подключается к электрической сети и преобразует электричество в подходящий для внутренностей компьютера вид.
  • Кулеры — существует трёхконтактный разъём для контроля оборотов, четырёхконтактный — для контроля и управления оборотами (обычно только для процессорного кулера), и шестиконтактный — для RGB-подсветки. Маловажные кулеры, чья остановка не критична (например, корпусные) могут подключаться прямо к блоку питания, провод контроля оборотов «висит в воздухе».

Необязательные и/или устаревшие компоненты

  • Математический сопроцессор. Девайс, специфичный для IBM-совместимых компьютеров. При этом Intel придумал настолько исчерпывающую спецификацию компьютерных дробных чисел, что она действует и поныне. Считалось, что работа с дробными числами — большая редкость, и если она нужна — покупай отдельную микросхему. В 80486 сопроцессор вошёл в состав процессора и как отдельная микросхема исчез.
  • Видеоплата = видеокарта. Очередная штука, специфичная для расширяемых IBM-совместимых компьютеров. Сейчас (2020-е) встречается в трёх случаях: 1) нужно производительное видео (игровой компьютер); 2) параллельные вычисления на графических процессорах, с использованием целой батареи многопроцессорных видеокарт, и это не обязательно майнинг: некоторые научные расчёты тоже могут требовать сходных вычислений через CUDA или OpenCL[1]; 3) нужен производительный процессор, и всё пространство под крышкой процессора занято ядрами. Если особого видео не нужно, а встроенного видео нет, используют так называемую плату-затычку — недорогую видеоплату, купленную по принципу «лишь бы показывала». Наиболее известные платы-затычки конца 90-х — S3 Trio и S3 Virge. В современности (2022) «затычка» должна поддерживать хоть какой-то аппаратный минимум — слишком много софта (и даже оконный менеджер самой Windows начиная с Vista!) полагается на аппаратное ускорение.
    • Видеочип на материнской плате. А это уже начало-середина 2000-х, если нужно самое простое видео, какое можно.
    • 3D-ускоритель. Существовал в середине-конце 90-х, наиболее известная модель — 3dfx Voodoo 2. Подключался кабелем к видеоплате и отвечал только за 3D и только в полном экране. С конца 90-х объединился с видеоплатой и как отдельное устройство исчез.
  • Физический ускоритель. Непонятно, что хотели в компании Ageia, но покупать недешёвую плату ради улучшенного дыма и осколков в играх народ не захотел. Впоследствии его функции взял на себя GPGPU (расчёты на видеоплате).
  • Звуковая плата = саундбластер. Опять-таки: IBM имел немного встроенной периферии, зато были стандартные слоты расширения. Товарный знак, ставший нарицательным: Creative Labs Sound Blaster — первая звуковая плата, умевшая проигрывать звукозаписи. С начала 2000-х встроена в материнскую, и отдельная имеет смысл, если нужно особое качество.
    • MIDI-плата. Отдельное (и дорогущее) устройство, отвечавшее за синтез музыки. Нужно в основном музыкантам. С конца 1990-х музыка синтезируется программно, правда, нужно редко — попробуй ещё найти прогу/игру, играющую музыку на MIDI-партитурах, а не на звукозаписи… При этом в играх для DOS была интересная возможность: если есть и саундбластер, и MIDI, можно было выводить звукозаписи через саундбластер, а музыку — через MIDI-плату. А ещё легендарный и дорогущий Sound Blaster AWE 32 имел встроенное аппаратное MIDI с расширяемой памятью.
    • Примитивные звуковые устройства, промежуточные между динамиком и саундбластером. Нам больше всего известны Creative Labs AdLib (очень некачественное подобие MIDI-платы — но интерфейс там собственный, а не MIDI; Sound Blaster совместим сверху вниз с этим девайсом) и Covox (простейший моно-ЦАП, включавшийся в принтерный порт). Западные домашние компьютеры 80-х часто содержали какой-то звуковой чип, и даже в позиционировавшемся как домашний IBM PCjr тоже был трёхголосый чип, на поверку мало кем поддерживавшийся.
    • Игровой порт для джойстика. IBM не стала использовать разъём Atari 2600[2], а пошла своим путём предельного упрощения — накопала 4-канальную микросхему-таймер, где время задавалось RC-схемой, и для простоты сделала считывание полупрограммное: процессор запускал таймер, а потом отсчитывал время до срабатывания. Порт и джойстик были в «домашнем» IBM PCjr, для других была плата за 55 $. Подумав, что где игры, там звук и джойстик, Creative стали тянуть в звуковые игровой порт, а избыточные гнёзда 12 и 15 пустили на MIDI. Игровые порты существовали на матплатах грубо до начала 2000-х, и многозадачные ОС считывали их из рук вон плохо. Сейчас уже не важно: USB-джойстики изначально качественнее, и существует достаточно много хороших проектов самодельных USB-джойстиков, например, на Arduino.
  • Сетевая плата. Существует и сейчас, ибо сеть — один из самых уязвимых компонентов матплаты. При выгорании встроенной сети втыкаешь внешнюю сетевую.
  • Мультиплата. Плата, поддерживающая различную периферию ввода-вывода: винчестеры, дисководы, порты… Применялась в IBM-совместимых машинах. Как сейчас южный мост горит — так тогда она была расходником. К середине 1990-х полностью исчезла, уступив место чипу Super I/O.
  • Штыри GPIO (general purpose input-output — ввод-вывод общего назначения). Специфичны для встраиваемых компьютеров и почти не встречаются на IBM-совместимых (бывают на промышленных x86-платах для разного сумрачного заводского оборудования). Представляет собой длинную гребёнку из контактов, к которым можно подключить вообще что угодно. Штыри в гребёнке есть цифровые и аналоговые, разница между ними в том, что на первых напряжение либо есть, либо нет, а на вторых оно может быть больше или меньше. Могут работать в режиме ввода (компьютер будет определять, есть ли напряжение на цифровом штыре, и если есть, то какое на аналоговом), а могут в режиме вывода (соответственно, подавать или выключать напряжение на штыре). К этим штырям подключается вся та нестандартная периферия, ради которой комп и встраивают: станки, замки, ворота, отопительные приборы, научные приблуды, поделки юных техников…

Из периферии:

  • Флоппи-дисковод. К началу 2000-х его ёмкость была явно недостаточной, и он использовался как верный способ загрузить компьютер, обновить BIOS, или чтобы дёшево отдать кому-то немного данных… Сохранилось понятие флоппинет — шуточное название хождения с пачками дискет, чтобы перебросить данные с компа на комп. Из дисководов высокой ёмкости нашумел Iomega Zip, иногда использовавшийся дизайнерами и другими профессионалами, остальные — исчезающая редкость. Сейчас иногда для дешёвой передачи данных используется DVD-R. Дисководы Blu-Ray встречаются на Западе, где есть культура лицензионного кино, но у нас из-за пиратки и хорошего интернета не взлетели.
  • Флэшка. Заменила дискеты и DVD-R диски как портативный накопитель. Устроена аналогично твердотельному накопителю, это тоже чип долговременной памяти типа EEPROM, но в отличие от твердотельного накопителя флэшка более медленная и дешевая.
  • Телефонный модем. Действует и поныне в американской глубинке, где иным способом интернета не получишь. У нас в больших городах дозвон ушёл в начале 2000-х, в городах поменьше — в середине, а в глубинке вообще не появлялся — сразу пришёл наземный интернет или сотовая сеть. То и другое в бСССР дешевле и быстрее, чем в США. Телефонный модем рассчитан на использование с медной парой аналогового телефонного провода, и плохо работает там, где городской телефон уже оцифрован (а в России это уже большинство крупных городов, где стационарные телефоны для бизнеса являются цифровыми все без исключения, а немногочисленные уцелевшие домашние используют медную пару только на части отрезка до АТС).
    • На смену телефонному пришёл мобильный модем, в просторечии именуемый GSM-свистком. Представляет собой стик, вставляемый в USB-порт и позволяющий компу подключаться к мобильному интернету. В российской глубинке мобильный модем зачастую является единственным способом соединить комп с интернетом.
    • В 2000-е годы в крупных городах существовали и другие разновидности модемов, как, к примеру, ADSL-модем, который, как и телефонный, подключался к медной паре, но не использовал собственно телефонный дозвон, а через сплиттер хитрым образом вклинивал в телефонный сигнал высокочастотную компоненту, по которой передавались данные провайдерскому модему далее по линии. Говорить по телефону это не мешало. По факту был не периферией, а сетевым оборудованием типа «мост» или «маршрутизатор» (подключался к локальной сети). Сейчас эти устройства мало где сохранились — только там, где ещё жива медная пара хотя бы до АТС.
  • COM- или LPT-кабель. Самый дешёвый суррогат сети, только между двумя компами. При этом COM-соединение (до 8 кбайт/с) мало отличалось по интерфейсу от модема и безусловно поддерживалось играми, а LPT- (порядка 100 кбайт/с) — быстрее и его любило деловое ПО вроде той же Windows.

А что же было с другими платформами?

Преимущества на коротком сроке: дешевизна и интересная аппаратура в комплекте. Например, ZX-Spectrum, к концу 1980-х изрядно устаревший, можно было как-то собрать вручную, а стоил он даже лицензионный впятеро-вдесятеро меньше IBM-совместимых. Хорошо, открутим время до 1982 — на IBM четырёхцветный CGA, а у Spectrum хоть памяти меньше и на экране конфликтные зоны 8×8, зато изображение значительно более цветастое. На Spectrum 128K в 1986 году уже был звуковой чип, на IBM-совместимых была в основном «пищалка» и редкие Tandy 3 Voice.

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

Недостаток на длинном сроке: крайне ограниченная расширяемость. К 1990-м годам на IBM’ах было множество аппаратуры и софта, и каждый новый комп весь этот зоопарк поддерживал. Последний, кто тянул на пользовательские столы несовместимые по системе команд процессоры,— это Apple с его классическими «маками», протянувшими до начала 2000-х. Сейчас в небольшом количестве существуют десктопы и ноутбуки ARM (стандарта архитектуры, обычно применяющегося для мобильных телефонов, планшетов и прочих «братьев наших меньших»); в случае с десктопами это, как правило, Pi-подобные микрокомпьютеры, которые собраны для такой не совсем типичной роли, а на борту у них ARM-версии Linux, в случае с ноутбуками это дешманские китайские эрзац-ноуты с операционной системой Android.

Процессор

Повторимся: это основное вычислительное устройство компьютера. Также называется CPU (Central Processing Unit).

Основные характеристики процессора:

  • Архитектура набора команд (ISA, instruction set architecture, кратко архитектура) — набор команд, которые может и должен выполнять процессор. На момент написания самые распространённые ISA: x86, x86-64 (также называемая amd64), ARM.
  • Тактовая частота — фактически, частота переключения транзисторов внутри процессора. Когда-то фактически определяла производительность процессора, но сейчас связь частоты и производительности довольно запутанна. Для экономии энергии и для охлаждения процессора при работе может в данный конкретный момент иметь любое значение между минимальным и максимальным. Можно считать, что во избежание перегрева на максимальной частоте могут работать 1-2 ядра единовременно, и то не долго.
  • Количество ядер — количество единиц выполнения программ.
  • TDP — требования процессора по отводимой тепловой мощности. Если они не выполняются, то у процессора наступает перегрев, перед которым он автоматически выключается или снижает частоту до приемлемого по тепловыделению уровня.
  • Разъём (он же сокет, socket) — то, что написано на упаковке. Это дело не стандартизировано, поэтому у каждого производителя может быть свой сокет под каждый отдельный процессор, серию процессоров или все процессоры определённого промежутка времени. Например, AMD делает подобие совместимости сверху вниз и держит один разъём долго (но часто нужно перешить BIOS для использования нового процессора), а Intel меняет разъёмы, как перчатки. На 2022 последний настольный сокет у Intel — Socket 1700 (выпущен в 2021), у AMD — Socket AM4 (выпущен в 2016).

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

Логические части процессора

В современности логически состоит из:

  • Вычислительных ядер.
  • Контроллера памяти и иных контроллеров для портов связи с оперативной памятью, видеокартой и прочими устройствами. А также иногда процессор может иметь контроллер для связи с другим совместимым процессором для создания многопроцессорной системы.
  • Может быть общий кэш — общая для всех ядер быстрая небольшая память для того, чтобы не все данные постоянно протаскивать туда-сюда между процессором и оперативной памятью.

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

Ядро процессора

По-английски будет core.

Основное устройство, производящее вычисления. Можно считать, что одно ядро выполняет один поток команд. Хотя физически некоторые ядра могут выполнять несколько потоков команд, в таких случаях выделяют логические ядра, каждое из которых выполняет один поток команд.

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

  • Исполнительные устройства, каждое из которых может выполнять определённое подмножество команд.
  • Регистры — очень быстрая очень маленькая память для хранения промежуточных результатов вычислений.
  • Кэш-память ядра. Это маленькая быстрая память, которая для обеспечения скорости работы ядра хранит часто используемые данные здесь, чтобы не использовать долгий линк до оперативной памяти. Нормальная иерархия на момент написания статьи такова:
    • $L1I — кэш инструкций. Маленький и очень быстрый.
    • $L1D — кэш данных. Маленький и очень быстрый.
    • $L2 — кэш 2-го уровня. Общий для данных и для инструкций. Побольше объёмом, чем $L1, но помедленнее.
    • Также имеет смысл указать общий $L3, который упоминался про весь процессор. Это кэш ещё медленнее и ещё больше, а также работает для всех ядер разом.

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

Так выглядит кристалл процессора, если вскрыть корпус и достать этот кристалл

Прочие достижения в увеличении производительности ядра:

  • В какой-то момент создатели процессоров упёрлись в то, что некоторые операции выполняются долго, а тем временем устройства считывания команд простаивают. Тогда они сделали конвейер исполнения команд по аналогии с конвейером на производстве: выполнение отдельной команды может занимать даже и десяток тактов, но следующая команда запускается на выполнение уже на следующем такте, проходит те же стадии на такт позже и завершается, вероятнее всего, тоже на следующем такте после завершения предыдущей. Так получается, что хотя каждая команда занимает долгое время, в среднем команды выполняются за время, близкое к одному такту.
    • А ещё так можно поделить работу команд на большее количество тактов и этим снизить требования для увеличения частоты.
    • Но если команды связаны по данным (например, первая команда пишет в регистр, а следующая из него же читает), то на одной из стадий конвейера следующая команда будет вынуждена ждать и тормозить последующие команды, пока её данные не будут приготовлены предыдущей командой. В случае, если речь идет о условных переходах, процессор может попытаться их предсказать. Правда, предсказания находятся на уровне «прошлые три раза шли по этой ветке исполнения, авось, и в четвертый раз также будет». И если эти предсказания не сбудутся, все спекулятивные вычисления придется начинать сначала.
  • Точно так же в какой-то момент заметили, что некоторые команды совершенно точно работают с разными не связанными друг с другом данными и потому могут быть выполнены одновременно или в произвольном порядке друг относительно друга. Из этого выросло сразу несколько идей:
    • Суперскалярность — параллельный запуск сразу нескольких несвязанных команд на нескольких конвейерах. Это один из вариантов instruction-level parallelism — параллелизма уровня инструкций.
    • Внеочередное исполнение команд (out-of-order execution) — выполнение команд в произвольном порядке так, чтобы заполнить неизбежно возникающие паузы в выполнении связанных друг с другом команд. Паузы маскируются выполнением других команд, и программа в сумме выполняется быстрее.
    • Явный параллелизм инструкций — если не хочется в процессор ставить сложное оборудование по обнаружению независимых и параллельных инструкций, эту задачу можно возложить на создателя программ. Так появились подходы с SIMD-инструкциями (single instruction — multiple data), ныне присутствующими практически везде в ПК, и системы команд с широким командным словом (VLIW), где весь код поделён на группы из инструкций, выполняющихся параллельно. Последнее, правда, с конца 1990-х так и не взлетело, хотя и не всегда по техническим причинам.

Физический вид процессора

По сути своей, процессор состоит из небольшого металлического или керамического корпуса, внутри которого:

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

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

Примечания

  1. не путать с OpenGL (Open Graphics Library vs Open Computing Library)
  2. 9-штырьковый разъём Atari 2600 стал стандартом де-факто, и в 50 % машин 80-х использовался именно он — две аналоговых оси, 4 направления крестовины и гашетка. Не путать с 9-штырьковым разъёмом Dendy, он передавал 8 кнопок последовательным кодом!