Базовый CS с нуля
Процессор: тест с множественным выбором
Шесть вопросов, проходящих через весь юнит. Ни один не требует пересказать определение — каждый заставляет собрать инструкцию, цикл, регистры и байты в памяти в одну работающую машину.
Убедитесь, что вы можете связать части, которые уроки строили по отдельности: инструкция — это операция плюс операнды, CPU выполняет их в цикле fetch-decode-execute под управлением счётчика команд (program counter), регистры хранят рабочие значения, а вся программа — это просто байты машинного кода в памяти.
Программа складывает миллион чисел в цикле. Почему CPU держит текущую сумму в регистре, а не в основной памяти?
CPU только что выполнил обычную инструкцию ADD (не переход). Что происходит со счётчиком команд (program counter) и почему?
Джуниор говорит: 'Мой код написан на Python, значит, CPU выполняет Python напрямую.' Что здесь неверно?
На шаге декодирования (Decode) цикла какая часть CPU выполняет работу и что она производит?
Две ячейки памяти по адресам 100 и 101 хранят байты, кодирующие инструкцию. Те же значения байтов есть и по адресам 200 и 201, где программа хранит данные. Что делает одну пару инструкцией, а другую — данными?
Программа, скомпилированная для Mac на Apple Silicon (ARM), не запустится как есть на ноутбуке Intel (x86-64), хотя оба процессора 64-битные. Почему?
Сквозная нить юнита — одна машина. Инструкция — это операция плюс операнды; CPU выполняет инструкции в цикле fetch-decode-execute, где счётчик команд называет следующую и сдвигается на размер инструкции, если только переход не переопределит это. Регистры хранят рабочие значения на скорости CPU, потому что RAM в 100-300 раз медленнее. Decode — это устройство управления, превращающее опкод в сигналы управления. А вся программа — это просто байты машинного кода в общей памяти, инструкции лишь потому, что счётчик команд проходит по ним. Набор инструкций — это контракт, решающий, какой чип может выполнить какие байты.