Как работает компьютер? Добро пожаловать на канал Major Tom Workshop!
00:00:00Процессор Непрерывно Запускает Код Из Памяти При включении питания процессор немедленно ищет исполняемый код во внешней памяти и считывает его байт за байтом. Выполнение продолжается непрерывно до тех пор, пока включено питание. Память представляет собой упорядоченную последовательность байтов, каждый из которых содержит значение от 0 до 255. Каждая ячейка имеет уникальный адрес, нумерация которого начинается с 0.
ПЗУ Содержит Встроенное По; Оперативная память Хранит Временные Данные Постоянная память (ROM) содержит предварительно записанный код, который процессор может только считывать, и сохраняет данные без питания. В энергозависимой памяти (RAM) хранятся временные данные, которые процессор считывает и записывает во время работы, и которые очищаются при отключении питания. Небольшая программа в ПЗУ, часто называемая BIOS или firmware, запускается автоматически при каждой загрузке. Процессор использует ПЗУ для исходного кода и ОЗУ для промежуточных данных, которые он загружает или генерирует.
Адресная шина выбирает ячейки; Управляющая шина выбирает Чтение или запись Процессор выдает двоичный адрес на линии адресной шины, чтобы выбрать конкретную ячейку памяти. Управляющие сигналы RD и WR, оба с активным низким уровнем, указывают, является ли цикл чтением или записью, и не могут быть запущены одновременно. Адресная шина является однонаправленной от процессора к памяти, и все устройства памяти подключаются к ней параллельно. Каждое устройство интерпретирует адрес и уровни управления, чтобы определить, следует ли отвечать.
Ширина шины данных Определяет разрядность системы Данные передаются по двунаправленной шине данных, ширина которой напрямую влияет на пропускную способность системы и такие привычные обозначения, как “8-разрядная” или “16-разрядная”. При использовании 8‑разрядной шины каждая ячейка памяти выдает ровно один байт при чтении. Во время чтения микросхема памяти управляет шиной данных; во время записи ее управляет процессор. Извлеченный байт, например 112, может представлять собой инструкцию, которая направляет последующие операции.
16‑разрядное адресное пространство отображает 64 Кб памяти С помощью 16 адресных строк процессор может адресовать 65 536 ячеек, пронумерованных от 0 до 65 535. Разработчики обычно делят это пространство между ПЗУ и ОЗУ с помощью декодирования, например, по 32 КБ каждая. Поскольку центральный процессор начинает выполнение с адреса 0, ПЗУ размещается по самым низким адресам, поэтому код доступен сразу после сброса. Шестнадцатеричная запись (0x0000–0xFFFF) компактно представляет двоичный код и выделяет границы, такие как 0x8000.
Логика выбора микросхемы Активирует нужную память Простой декодер использует самую значимую строку A15 для выбора между ROM (A15=0) и RAM (A15=1). Микросхемы памяти предоставляют функции CS (chip select) и OE/WE (output/write enable); неактивные устройства переводят выходы в трехфазное состояние, чтобы избежать конфликтов на шине. RD подключается к OE ROM и RAM, в то время как WR подключается только к WE RAM. После того, как reset обнуляет указатель адреса, RD разряжается и ROM выдает первую команду; RAM остается отключенным из-за его неактивного CS.
Инструкции, Считываемые Из ПЗУ, Могут Записывать Данные В Оперативную Память После получения байта из ПЗУ процессор интерпретирует его как команду, которая может сохранить значение в ОЗУ по указанному адресу. Для записи процессор выводит целевой адрес, помещает данные на шину и устанавливает значение WR low. Позже при считывании того же адреса значение RD становится низким, поэтому ОЗУ передает сохраненный байт на шину. Процессор не “знает”, в какой микросхеме хранится адрес; декодирование гарантирует, что устройство ответит правильно.
Гибкое Декодирование Распределяет Пространство Между Многими Устройствами Реальные системы декодируют несколько адресных строк, чтобы разделить пространство на более узкие области для многочисленных блоков памяти и периферийных устройств. Инженеры решают, где находится каждый блок; программисты должны знать эти диапазоны для правильного доступа к оборудованию. Типичная карта содержит экранный буфер, ячейки которого соответствуют позициям на экране, поэтому при записи изображение изменяется. Адресация часто выполняется слева направо и сверху вниз, хотя существуют исключения.
В отдельном адресном пространстве ввода-вывода используются сигналы IORQ и MREQ Помимо памяти, компьютеры предоставляют порты ввода-вывода для взаимодействия с внешним миром. Центральный процессор отличает циклы ввода‑вывода от циклов памяти, используя active-low IORQ для портов и MREQ для памяти, а также RD и WR. Декодеры определяют выбор микросхемы с помощью соответствующего сигнала запроса, чтобы каждое устройство отвечало только на свой домен. Адресные строки остаются общими, в то время как управляющие строки разделяют операции с памятью и портом.
Однобитовый выходной порт мигает светодиодом по адресу 0xFF Простой порт использует D‑триггер, чей D‑вход подключен к шине данных, а тактовый сигнал представляет собой декодированный стробоскоп записи. Элемент AND в адресных строках определяет значение 0xFF (все восемь младших разрядов адреса). Определение импульса с помощью IORQ и WR фиксирует бит: при записи 1 индикатор загорается, при записи 0 он выключается. Без определения IORQ ячейка памяти с тем же адресом также отреагирует, что приведет к непреднамеренной записи.
От Параллельных Шин До Соединений типа "Точка‑Точка" На протяжении десятилетий периферийные устройства совместно использовали параллельные шины адреса, данных и управления, при этом каждая плата декодировала свой назначенный диапазон. Слоты PC ISA и PCI воплощают эту модель, позволяя любой плате расширения работать в любом слоте. Современный PCI Express отказывается от принципа использования общей шины в пользу выделенных каналов "точка-точка" от материнской платы к каждому разъему. Идея декодирования адресов сохраняется, в то время как физическая топология изменилась.
Рабочий процесс с устройством идентификации вызывающего абонента на платформе Z80 Практичная система отслеживает входящий звонок на телефонной линии, как правило, на уровне 80-120 В в классической телефонии. После паузы он перехватывает линию, посылает звуковой сигнал частотой 500 Гц продолжительностью около 200 мс, а затем принимает серию двухтональных сигналов, которые кодируют номер вызывающего абонента. Процессор производит дискретизацию этого звука, извлекает частотные составляющие с помощью дискретного преобразования Фурье и отображает декодированные цифры. В то время эта последовательность считалась сложной.
Карта памяти с декодированием A13 и безопасным управлением ПЗУ Плата Z80 синхронизируется от двух инверторов и сбрасывается через RC-сеть, которая после включения ненадолго удерживает сброс на низком уровне. Адресная строка A13 делит пространство на окна размером 8 КБ: A13=0 выбирает ПЗУ (DD7), а A13=1 выбирает ОЗУ (DD9), оба соответствуют стандарту MREQ. RD и WR поступают в ОЗУ, в то время как ПЗУ игнорирует операции записи; если RD выключен, ПЗУ работает нормально, но может возникнуть конфликт, если неисправности вызовут непреднамеренные операции. Транзисторный каскад и инвертированный MREQ настраивают синхронизацию выбора микросхемы в соответствии с используемой памятью RU10.
Вход/выход с KR580VV55, семисегментным дисплеем и таймером KR580VV55 предоставляет три настраиваемых 8‑разрядных порта с декодированием, которое использует IORQ и адресные строки A0 и A1 для доступа к внутренним регистрам. На девятизначном семисегментном дисплее ALS318A отображаются цифры: выбор цифр осуществляется декодером (DD11), в то время как сегментные линии управляются 8‑разрядной защелкой (DD6, K555IR23), которая определяется IORQ и адресным декодированием. Программируемый таймер (R580VE53) выполняет функцию сторожевого таймера, который декодируется с помощью дополнительных логических элементов с использованием A6 и IORQ. Упрощенное декодирование обеспечивает зеркальное отображение адресов портов в разных диапазонах, что приемлемо при небольшом количестве устройств.
Аналоговый интерфейс и сканирование с клавиатуры дополняют систему Аналоговый интерфейс включает в себя компаратор (DD4), который выделяет двухтональный сигнал из линии, и блок определения сигнала вызова ‑ оба входных сигнала VV55. Клавиатура позволяет набирать номер и динамически сканируется с помощью диодов, подключенных к цифровым линиям дисплея, в то время как индикатор мультиплексирован. В дизайне предпочтение отдается доступным деталям, а не минимализму, даже при использовании редкого таймера в качестве сторожевого таймера, который мог бы быть реализован в простом мультивибраторе. Вместе эти блоки демонстрируют, как декодирование, шины, память и ввод-вывод взаимодействуют в функционирующем компьютере.