Skip to content · ⁨Перейти к содержанию⁩

Processor Fundamentals · ⁨Основы процессора⁩

A-Level Computer Science · ⁨A-Level Информатика⁩ · Topic 4 · ⁨Тема 4⁩

Video lesson for this topic · ⁨Видеоурок по этой теме⁩ Open the video page · ⁨Открыть страницу видео⁩
21:32

Архитектура фон Неймана

На протяжении большей части истории машина выполняла одну задачу. Ткацкий станок ткал ткань. Калькулятор складывал числа. Чтобы заставить её делать что-то новое, нужно было перестроить. Затем появилась коварно простая…

English narration · English + 中文 subtitles burned in · ⁨Английское озвучивание · Английский + китайские субтитры (встроенные)⁩

4.1

Von Neumann architecture · ⁨Архитектура фон Неймана⁩

Syllabus · ⁨Программа⁩
English
Candidates should be able to: Notes and guidance
Show understanding of the basic Von Neumann model for a computer system and the stored program concept
Show understanding of the purpose and role of registers, including the difference between general purpose and special purpose registers Special purpose registers including: • Program Counter (PC) • Memory Data Register (MDR) • Memory Address Register (MAR) • The Accumulator (ACC) • Index Register (IX) • Current Instruction Register (CIR) • Status Register
Show understanding of the purpose and roles of the Arithmetic and Logic Unit (ALU), Control Unit (CU) and system clock, Immediate Access Store (IAS)
Show understanding of how data are transferred between various components of the computer system using the address bus, data bus and control bus
Show understanding of how factors contribute to the performance of the computer system Including: • processor type and number of cores • the bus width • clock speed • cache memory
Understand how different ports provide connection to peripheral devices Including connection to: • Universal Serial Bus (USB) • High Definition Multimedia Interface (HDMI) • Video Graphics Array (VGA)
Describe the stages of the Fetch-Execute (F-E) cycle Describe and use 'register transfer' notation to describe the F-E cycle
Show understanding of the purpose of interrupts Including: • possible causes of interrupts • applications of interrupts • use of an Interrupt Service Routine (ISR) • when interrupts are detected during the fetch-execute cycle • how interrupts are handled
Русский
Кандидаты должны уметь: Примечания и рекомендации
Проявлять понимание базовой модели Вона Неймана для компьютерной системы и концепции хранения программы
Проявлять понимание назначения и роли регистров, включая различие между общего назначения и специального назначения регистрами Специальные регистры включают: • Счетчик команд (PC) • Регистр данных памяти (MDR) • Регистр адреса памяти (MAR) • Аккумулятор (ACC) • Индексный регистр (IX) • Регистр текущей команды (CIR) • Регистр состояния
Проявлять понимание назначения и ролей Арифметико-логического устройства (ALU), Устройства управления (CU) и системных часов, Памяти немедленного доступа (IAS)
Проявлять понимание того, как данные передаются между различными компонентами компьютерной системы с помощью шины адресации, шины данных и шины управления
Проявлять понимание того, какие факторы влияют на производительность компьютерной системы Включая: • тип процессора и количество ядер • ширина шины • частота тактового генератора • кэш-память
Понимать, как различные порты обеспечивают подключение периферийных устройств Включая подключение к: • Универсальной последовательной шине (USB) • Интерфейсу мультимедиа высокой четкости (HDMI) • Видеографическому массиву (VGA)
Описывать этапы цикла Выборка-Исполнение (F-E) Описывать и использовать нотацию 'переноса регистра' для описания цикла F-E
Проявлять понимание назначения прерываний Включая: • возможные причины прерываний • области применения прерываний • использование Подпрограммы обслуживания прерываний (ISR) • когда прерывания обнаруживаются во время цикла выборки-исполнения • как обрабатываются прерывания

Source: Cambridge International syllabus · ⁨Источник: Программа Cambridge International⁩

English
The fetch-decode-execute cycle

The Von Neumann architecture 冯·诺依曼体系结构 underlies almost every general-purpose computer:

  • a single memory — the Immediate Access Store 立即存取存储器 (IAS) — holds both program instructions and data (the stored program 存储程序 concept).
  • a processor 处理器 (CPU) fetches instructions from memory and runs them one at a time.
  • instructions run in order unless a branch changes the flow.

The stored-program idea is what makes a computer flexible: change the program and you change what it does, with no rewiring.

Русский
Цикл выборки-декодирования-исполнения

Архитектура фон Неймана лежит в основе почти каждого универсального компьютера:

  • единая память — Хранилище непосредственного доступа (IAS) — содержит как инструкции программы, так и данные (концепция хранимой программы).
  • процессор (ЦПУ) выбирает инструкции из памяти и выполняет их одну за другой.
  • Инструкции выполняются по порядку, если переход не меняет поток выполнения.

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

Explore · ⁨Исследовать⁩

Tap the parts of a Von Neumann computer · ⁨Нажмите на части компьютера фон Неймана⁩

Explore each block. The CPU (control unit, ALU, registers) talks to a single main memory over the buses — and that one shared memory for instructions AND data is the Von Neumann idea. · ⁨Исследуйте каждый блок. Процессор (блок управления, АЛУ, регистры) общается с единой основной памятью через шины — и это одна общая память для инструкций И данных является идеей фон Неймана.⁩

4.1

The CPU's main parts · ⁨Основные части ЦПУ⁩

English

All of these parts sit inside one small chip. The diagram later in this section shows how they connect; the photo below shows the real thing.

Arithmetic and Logic Unit (ALU)

The ALU 算术逻辑单元 does the arithmetic (add, subtract, …) and logic (AND, OR, comparisons). It takes operands from registers 寄存器 and puts results back in a register.

Control Unit (CU)

The control unit 控制单元 decodes each instruction and sends the control signals to carry it out — opening data paths, telling the ALU what to do, and controlling memory reads and writes.

System clock

The clock sends a steady stream of pulses that keep the CPU in step. Each instruction takes a fixed number of cycles, and the clock speed 时钟频率 (e.g. 3.8 GHz) is one factor in performance.

"Explain how the CU and the system clock work together": the clock emits pulses at a fixed frequency; the control unit uses each pulse to move the fetch-execute cycle on by one step, sending its control signals in time with the pulses, so every part of the processor changes state together. A faster clock means more steps per second, up to the point where the circuits cannot settle between pulses.

Registers

Registers are tiny, very fast stores inside the CPU. The special purpose registers 专用寄存器 each have a fixed job in the cycle:

  • Program Counter 程序计数器 (PC) — the address of the next instruction.
  • Memory Address Register 内存地址寄存器 (MAR) — the address being read or written.
  • Memory Data Register 内存数据寄存器 (MDR) — the data going to or from memory.
  • Current Instruction Register 当前指令寄存器 (CIR) — the instruction being decoded.
  • Accumulator 累加器 (ACC) — the value the ALU is working on.
  • Status Register 状态寄存器 — holds flags 标志 (carry, zero, negative, overflow) used by branches. Each flag is one bit, set or cleared by the ALU after an operation: the zero flag after a comparison that matched, the carry flag when an addition overflowed the register, the negative flag when a result is negative. A conditional jump reads the flags to decide whether to branch, and an overflow flag can raise an interrupt.
  • Index Register 变址寄存器 — an offset added to an address in indexed addressing; incrementing it steps through an array one element at a time.

The "complete the table describing the role of each register" question wants one precise sentence per register in these terms: the PC holds the address of the next instruction to be fetched; the MAR holds the address of the location being read from or written to; the MDR holds the data or instruction just read from, or about to be written to, that location; the CIR holds the instruction currently being decoded and executed; the ACC holds the result of the last arithmetic or logic operation.

General-purpose registers 通用寄存器 are used by the programmer for temporary values during a calculation. Movements of data between registers and memory are written in register transfer 寄存器传送 notation — e.g. MAR ← [PC] ("copy the contents of PC into MAR").

Русский

Все эти части находятся внутри одного маленького чипа. Схема позже в этом разделе показывает, как они соединены; фото ниже демонстрирует реальное устройство.

Обратная сторона чипа процессора Intel на белом фоне, плоский квадрат, покрытый сеткой сотен маленьких золотистых контактных площадок, которые давят на сокет материнской платы
Современный ЦПУ: весь процессор представляет собой один маленький чип (здесь показан снизу, видны контакты)
Квадратный сокет для процессора на материнской плате с сеткой крошечных штырьков и металлическим рычажком фиксации, окруженный дорожками печатной платы
Соответствующий сокет для процессора на материнской плате: контакты чипа давят на эти штырьки

Арифметико-логическое устройство (АЛУ)

АЛУ выполняет арифметические (сложение, вычитание, …) и логические (AND, OR, сравнение) операции. Оно получает операнды из регистров и возвращает результаты обратно в регистр.

Блок управления (БУ)

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

Системный тактовый генератор

Тактовый генератор посылает непрерывную последовательность импульсов, синхронизирующих работу ЦПУ. На выполнение каждой инструкции требуется фиксированное число тактов, а тактовая частота (например, 3,8 ГГц) является одним из факторов производительности.

"Объясните, как БУ и системный тактовый генератор работают вместе": тактовый генератор испускает импульсы с постоянной частотой; блок управления использует каждый импульс для продвижения цикла выборки-исполнения на один шаг, отправляя управляющие сигналы в ритме с импульсами, так что все части процессора изменяют свое состояние одновременно. Более высокая тактовая частота означает больше шагов в секунду, вплоть до момента, когда цепи не успевают стабилизироваться между импульсами.

Регистры

Регистры — это крошечные, очень быстрые хранилища внутри ЦПУ. Специальные регистры выполняют в цикле строго определенные функции:

  • Счетчик команд (PC) — адрес следующей инструкции.
  • Регистр адреса памяти (MAR) — адрес, который сейчас читается или записывается.
  • Регистр данных памяти (MDR) — данные, передаваемые в память или из нее.
  • Регистр текущей инструкции (CIR) — инструкция, которая декодируется.
  • Аккумулятор (ACC) — значение, с которым работает АЛУ.
  • Регистр флагов — хранит флаги (перенос, ноль, отрицательный, переполнение), используемые переходами. Каждый флаг занимает один бит, устанавливается или сбрасывается АЛУ после операции: флаг нуля после сравнения, совпавшего, флаг переноса при переполнении регистра при сложении, флаг знака при отрицательном результате. Условный переход считывает флаги для принятия решения о ветвлении, а флаг переполнения может вызвать прерывание.
  • Индексный регистр — смещение, добавляемое к адресу при индексированной адресации; его инкремент позволяет перебирать элементы массива по одному за раз.

Вопрос "дополните таблицу, описывающую роль каждого регистра" требует одного точного предложения для каждого регистра в следующих терминах: PC хранит адрес следующей инструкции, которую нужно выбрать; MAR хранит адрес места, которое читается или записывается; MDR хранит данные или инструкцию, только что прочитанные из этого места или готовые к записи в него; CIR хранит инструкцию, которая в данный момент декодируется и выполняется; ACC хранит результат последней арифметической или логической операции.

Регистры общего назначения используются программистом для хранения промежуточных значений во время вычислений. Перемещение данных между регистрами и памятью записывается в нотации передачи по регистрам — например, MAR ← [PC] ("скопировать содержимое PC в MAR").

Блок-схема процессора фон Неймана, показывающая PC, MAR, MDR, CIR, ACC, регистр состояния, блок управления, АЛУ и тактовый генератор, соединенные с основной памятью и устройствами ввода/вывода через шины адреса, данных и управления
Процессор фон Неймана: регистры, блок управления и АЛУ, связанные шинами
Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ Архитектура фон Неймана
Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ быстрый доступ к памяти
stored program/stɔːd ˈprəʊɡræm/ хранимая программа
processor/ˈprəʊsesə/ процессор
arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ арифметико-логическое устройство
ALU/ˌeɪ el ˈjuː/ АЛУ
operand/ˈɒpərænd/ операнд
4.1

Buses · ⁨Шины⁩

English

Three internal buses 总线 (sets of parallel wires) connect the parts:

  • address bus 地址总线 — carries the memory address. One-way (CPU → memory).
  • data bus 数据总线 — carries the data. Two-way.
  • control bus 控制总线 — carries control signals (read, write, interrupt). Two-way.

An $n$-bit address bus can reach $2^{n}$ memory locations. The data-bus width sets how many bits move per access (often the word size).

Русский

Три внутренних шины (наборы параллельных проводов) соединяют части:

  • шина адреса — переносит адрес памяти. Односторонняя (CPU → память).
  • шина данных — переносит данные. Двусторонняя.
  • шина управления — переносит управляющие сигналы (чтение, запись, прерывание). Двусторонняя.

Шина адреса на $n$ битов позволяет обратиться к $2^{n}$ ячейкам памяти. Ширина шины данных определяет количество битов, передаваемых за один доступ (часто это разрядность слова).

Процессор, память и устройства ввода/вывода подключены к шине адреса (односторонней), шине данных и шине управления внутри системной шины
Три системные шины, соединяющие процессор, память и устройства ввода/вывода
Материнская плата сверху: сокет процессора, слоты памяти и слоты расширения соединены плотными печатными дорожками
Материнская плата: процессор, память и I/O расположены на единой системе шин — печатных дорожках, идущих между ними
Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
buses/ˈbʌsɪz/ шины
address bus/əˈdres bʌs/ шина адресов
data bus/ˈdeɪtə bʌs/ шина данных
word size/wɜːd saɪz/ размер слова
number of cores/ˈnʌmbə ɒv kɔːz/ количество ядер
cores/kɔːz/ ядра
amount of RAM/əˈmaʊnt ɒv ræm/ объем ОЗУ
RAM/ræm/ RAM
page/peɪdʒ/ страницу
cache memory/kæʃ ˈmeməri/ кэш-память
cache/kæʃ/ кэш
secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ вторичное хранилище
port/pɔːt/ порт
peripheral/pəˈrɪfərəl/ периферийное устройство
register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ нотация передачи между регистрами
interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ подпрограмма обработки прерываний
interrupt register/ˈɪntərʌpt ˈredʒɪstə/ регистр прерываний
stack/stæk/ stack
assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ язык ассемблера
machine code/məˈʃiːn kəʊd/ машинный код
mnemonics/nɪˈmɒnɪks/ мнемоники
assembler/əˈsemblə/ ассемблер
symbol table/ˈsɪmbl ˈteɪbl/ таблица символов
label/ˈleɪbl/ метку
forward references/ˈfɔːwəd ˈrefrənsɪz/ прямые ссылки
opcode/ˈɒpkəʊd/ опкод
4.1

What affects performance · ⁨Что влияет на производительность⁩

English
  • clock speed — more cycles per second.
  • number of cores 核心 — a multi-core CPU runs several threads at once.
  • word size 字长 — a 64-bit CPU handles 64-bit chunks per cycle and can address far more memory than a 32-bit one.
  • amount of RAM 随机存取存储器 — more RAM holds more of the working set; too little forces the OS to page 页 to disk.
  • cache memory 高速缓存 size — more cache cuts average memory access time.
  • secondary storage 辅助存储器 type — an SSD loads programs far faster than an HDD.
  • bus width and speed — wider/faster buses move data more quickly.

Match the specs to the workload: a quad-core beats a dual-core on parallel work, but higher per-core speed wins on single-threaded work.

Each factor is a two-mark answer with a reason attached:

  • More cores: each core can fetch and execute its own instruction at the same time, so several programs, or the threads of one program, run in parallel. But a program must be written to use more than one core, so doubling the cores does not double the speed.
  • Higher clock speed: more fetch-execute cycles per second, so more instructions per second; the limit is the heat produced.
  • Wider bus: a wider data bus moves more bits in each transfer, so fewer transfers are needed for the same data; a wider address bus can address more memory locations.
  • Cache memory: a small, fast memory inside or next to the processor that keeps the instructions and data used most recently or most often. Reading them from cache is much faster than from RAM, so the processor spends less time waiting.

"Explain why the new computer performs better" is answered by comparing the two specifications line by line: a higher clock speed executes more instructions per second, more cores run more tasks at once, more cache means fewer slow accesses to RAM, and more RAM means fewer transfers to disk.

Русский
  • частота тактирования — больше циклов в секунду.
  • количество ядер — многопоточный процессор выполняет несколько потоков одновременно.
  • разрядность слова — 64-битный процессор обрабатывает 64-битные блоки за цикл и может адресовать значительно больше памяти, чем 32-битный.
  • объем ОЗУ — больший объем ОЗУ вмещает больше рабочего набора; его недостаточное количество вынуждает ОС использовать подкачку на диск.
  • кэш-память: больший размер кэша сокращает среднее время доступа к памяти.
  • тип вторичного хранилища: SSD загружает программы гораздо быстрее, чем HDD.
  • ширина и скорость шины: более широкие/быстрые шины передают данные быстрее.

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

Каждый фактор является ответом на 2 балла с указанием причины:

  • Больше ядер: каждое ядро может извлекать и выполнять свою инструкцию одновременно, поэтому несколько программ или потоки одной программы работают параллельно. Однако программа должна быть написана для использования нескольких ядер, поэтому удвоение количества ядер не удваивает скорость.
  • Высокая частота тактирования: больше циклов выборки-исполнения в секунду, следовательно, больше инструкций в секунду; пределом является выделяемое тепло.
  • Более широкая шина: более широкая шина данных переносит больше битов за одну передачу, поэтому для одних и тех же данных требуется меньше передач; более широкая шина адреса позволяет адресовать больше ячеек памяти.
  • Кэш-память: малая быстрая память внутри или рядом с процессором, хранящая наиболее часто или недавно используемые инструкции и данные. Чтение из кэша происходит намного быстрее, чем из ОЗУ, поэтому процессор тратит меньше времени на ожидание.

"Объясните, почему новый компьютер работает лучше" отвечает сравнением двух спецификаций строка за строкой: более высокая частота тактирования выполняет больше инструкций в секунду, больше ядер выполняет больше задач одновременно, больший кэш означает меньше медленных обращений к ОЗУ, а больше ОЗУ означает меньше передач на диск.

4.1

Ports · ⁨Порты⁩

English

A port 端口 is a physical socket for connecting a peripheral 外围设备:

  • USB (Universal Serial Bus) — general-purpose (keyboards, drives, phones).
  • HDMI (High Definition Multimedia Interface) — digital video and audio to a screen.
  • VGA (Video Graphics Array) — older analogue video output to a monitor.
  • Ethernet (RJ-45) — wired LAN. Audio jacks — headphones/microphone.

Different ports use different signals, so an HDMI cable will not fit a USB socket. USB-C is unusual in carrying video, data and power.

"Explain how the computer connects to the monitor through HDMI": the HDMI port sends the video and the audio as one digital signal down a single cable, so no conversion to analogue is needed and the picture is not degraded; the cable carries high-definition resolutions and the monitor's own port decodes the signal. A USB device is plug-and-play: when it is connected the computer detects it, identifies it, loads or installs the driver it needs, and can supply it with power, all without a restart.

Русский

Порт — это физический разъём для подключения периферийного устройства:

  • USB (Universal Serial Bus) — универсальный (клавиатуры, накопители, телефоны).
  • HDMI (High Definition Multimedia Interface) — цифровое видео и звук на экран.
  • VGA (Video Graphics Array) — устаревший аналоговый видеовыход на монитор.
  • Ethernet (RJ-45) — проводная локальная сеть. Аудио джеки — наушники/микрофон.

Разные порты используют разные сигналы, поэтому кабель HDMI не подойдет к разъему USB. USB-C необычен тем, что передает видео, данные и питание.

"Объясните, как компьютер подключается к монитору через HDMI": порт HDMI отправляет видео и звук одним цифровым сигналом по одному кабелю, поэтому преобразование в аналоговый сигнал не требуется, и качество изображения не ухудшается; кабель поддерживает высокоразрешающие форматы, а порт монитора декодирует сигнал. USB-устройство является горячей заменой: при подключении компьютер обнаруживает его, идентифицирует, загружает или устанавливает необходимый драйвер и обеспечивает питанием, всё это без перезагрузки.

4.1

Fetch-Execute cycle · ⁨Цикл выборки-исполнения⁩

English

The CPU repeats the fetch-execute cycle 取指-执行周期, one run per machine instruction.

Fetch

  1. the PC's address is copied to the MAR.
  2. the PC is incremented to point to the next instruction.
  3. a read signal goes over the control bus.
  4. memory puts the instruction on the data bus.
  5. it is copied into the MDR, then into the CIR.

The exam asks for these steps in register transfer notation 寄存器传送记法, where [X] means the contents of register X and [[MAR]] means the contents of the memory location whose address is in the MAR:

The order matters: the PC is incremented straight after its address has been copied, so that a jump executed later can still overwrite it. During execution the same notation describes each instruction; for LDD 200, for example, MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].

Decode

The CU decodes the instruction in the CIR — what operation, and which operands or addresses.

Execute

The CU carries it out: arithmetic/logic goes to the ALU (result to the ACC); a load/store moves data between memory and a register; a branch changes the PC. Then the cycle repeats.

Русский

Процессор повторяет цикл выборки-исполнения, один проход на каждую машинную инструкцию.

Выборка

  1. адрес PC копируется в MAR.
  2. PC инкрементируется, чтобы указывать на следующую инструкцию.
  3. сигнал чтения передается по шине управления.
  4. память помещает инструкцию на шину данных.
  5. она копируется в MDR, затем в CIR.

На экзамене эти шаги требуются в нотации передачи по регистрам, где [X] обозначает содержимое регистра X, а [[MAR]] — содержимое ячейки памяти, адрес которой находится в MAR:

MAR ← [PC]          the address of the next instruction goes to the MAR
PC  ← [PC] + 1      the PC now points to the following instruction
MDR ← [[MAR]]       the instruction at that address is read into the MDR
CIR ← [MDR]         the instruction is copied into the CIR for decoding

Порядок важен: PC инкрементируется сразу после копирования его адреса, чтобы последующий переход мог его перезаписать. Во время выполнения та же нотация описывает каждую инструкцию; например, для⟩LDD 200, это MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].

Передача по регистрам при выборке в порядке: 1 адрес PC идет в MAR; 2 MAR отправляет адрес в память; 3 инструкция возвращается в MDR; 4 MDR копирует ее в CIR; в то же время PC инкрементируется
Передача по регистрам при выборке: PC → MAR → память → MDR → CIR, с инкрементацией PC

Декодирование

Блок управления (CU) декодирует инструкцию в CIR — какую операцию выполнять и какие операнды или адреса использовать.

Выполнение

Блок управления выполняет её: арифметико-логические операции передаются в АЛУ (результат goes to the ACC); загрузка/выгрузка перемещают данные между памятью и регистром; переход изменяет PC. Затем цикл повторяется.

Схема цикла выборки-исполнения от START: этап выборки (PC in MAR, инкремент PC, сигнал чтения, из памяти на шину данных в MDR в CIR), этап декодирования, этап исполнения, затем проверка прерываний с возвратом к START
Цикл выборки-исполнения с проверкой прерываний каждый раз
Explore · ⁨Исследовать⁩

The fetch-execute cycle · ⁨Цикл выборки-исполнения⁩

Tap round the loop the CPU repeats billions of times a second. Watch how fetch uses the PC/MAR/MDR/CIR registers, then decode and execute act on what was fetched. · ⁨Кликайте по кругу, который процессор повторяет миллиарды раз в секунду. Следите, как выборка использует регистры PC/MAR/MDR/CIR, затем декодирование и исполнение действуют с выбранным.⁩

Explore · ⁨Исследовать⁩

The fetch–execute cycle · ⁨Цикл выборки-исполнения⁩

Step through how the CPU runs one instruction — fetch it from memory, decode it, then execute it, over and over. · ⁨Пройдите пошагово, как процессор выполняет одну инструкцию: выберите её из памяти, декодируйте, затем исполните, и так снова и снова.⁩

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ цикл выборки-исполнения
special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ специализированные регистры
Program Counter/ˈprəʊɡræm ˈkaʊntə/ счетчик команд (PC)
Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ регистр адреса памяти (MAR)
Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ регистр данных памяти (MDR)
Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ текущий регистр команд (CIR)
accumulator/əˈkjuːmjʊleɪtə/ аккумулятор
Status Register/ˈsteɪtəs ˈredʒɪstə/ регистр состояния (SR)
flags/flæɡz/ флаги
4.1

Interrupts · ⁨Прерывания⁩

English

An interrupt 中断 is a signal that pauses the normal cycle so the CPU can handle an urgent event (a key press, a packet arriving, a hardware fault, division by zero, the OS timer).

Handling one:

  1. finish the current instruction.
  2. save the state (PC and registers).
  3. load the address of the interrupt service routine 中断服务程序 (ISR) into the PC and run it.
  4. the ISR handles the event.
  5. restore the saved state and carry on.

Interrupts let the system respond promptly without the CPU constantly checking devices, and are how the OS multitasks.

"Explain how an interrupt from an input device is detected and handled in the F-E cycle" is a four-mark answer with these points: the device sends an interrupt signal that sets the interrupt flag in the interrupt register 中断寄存器; the processor checks that register at the end of every fetch-execute cycle, after the current instruction has finished executing; if a flag is set and the interrupt has a higher priority than the current task, the contents of the PC and the other registers are saved onto the stack 栈; the address of the interrupt service routine is loaded into the PC and the routine runs; when it finishes, the saved values are restored from the stack and the interrupted program continues from where it stopped.

Causes worth naming: a hardware interrupt from a device (a key pressed, a printer buffer empty, a network packet arriving), a software interrupt from a fault (division by zero, an illegal instruction, arithmetic overflow), a timer interrupt from the operating system marking the end of a time slice, and a power failure warning.

Русский

Прерывание — это сигнал, который приостанавливает нормальный цикл, чтобы процессор мог обработать срочное событие (нажатие клавиши, поступление пакета, аппаратная неисправность, деление на ноль, таймер ОС).

Обработка одного:

  1. завершить текущую инструкцию.
  2. сохранить состояние (PC и регистры).
  3. загрузить адрес подпрограммы обработки прерываний (ISR) в PC и выполнить его.
  4. ISR обрабатывает событие.
  5. восстановить сохраненное состояние и продолжить работу.

Прерывания позволяют системе реагировать оперативно без постоянного опроса устройств со стороны CPU и обеспечивают многозадачность ОС.

"Объясните, как прерывание от входного устройства обнаруживается и обрабатывается в цикле F-E" — ответ на четыре балла включает следующие пункты: устройство отправляет сигнал прерывания, устанавливающий флаг прерывания в регистра прерываний; процессор проверяет этот регистр в конце каждого цикла выборки-исполнения, после завершения выполнения текущей инструкции; если флаг установлен и приоритет прерывания выше, чем у текущего задания, содержимое PC и других регистров сохраняется в стек; адрес подпрограммы обработки прерываний загружается в PC, иdirname выполняется; когда она завершается, сохраненные значения восстанавливаются из стека, и прерванная программа продолжается с того места, где остановилась.

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

Схема обработки прерываний: выполняемая программа прерывается, CPU завершает текущую инструкцию, сохраняет свое состояние (PC и регистры) в стек, выполняет подпрограмму обработки прерываний, восстанавливает состояние и возобновляет работу
Как прерывание вписывается в цикл выборки-исполнения
Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
interrupt/ˈɪntərʌpt/ прерывание
4.2

Assembly language and machine code · ⁨Язык ассемблера и машинный код⁩

Syllabus · ⁨Программа⁩
English
Candidates should be able to: Notes and guidance
Show understanding of the relationship between assembly language and machine code
Describe the different stages of the assembly process for a two-pass assembler Apply the two-pass assembler process to a given simple assembly language program
Trace a given simple assembly language program
Show understanding that a set of instructions are grouped Including the following groups: • Data movement • Input and output of data • Arithmetic operations • Unconditional and conditional instructions • Compare instructions
Show understanding of and be able to use different modes of addressing Including immediate, direct, indirect, indexed, relative
Русский
Кандидаты должны уметь: Примечания и рекомендации
Проявлять понимание взаимосвязи между ассемблером и машинным кодом
Опишите различные этапы процесса сборки для двухпроходного ассемблера Примените двухпроходный ассемблер к заданной простой программе на языке ассемблера
Проследите выполнение заданной простой программы на языке ассемблера
Проявите понимание того, что набор инструкций группируется Включая следующие группы: • Перемещение данных • Ввод и вывод данных • Арифметические операции • Безусловные и условные инструкции • Инструкции сравнения
Проявите понимание и умение использовать различные режимы адресации Включая непосредственный, прямой, косвенный, индексный, относительный

Source: Cambridge International syllabus · ⁨Источник: Программа Cambridge International⁩

English

The CPU actually runs machine code 机器码 — bit patterns, specific to one architecture. Assembly language 汇编语言 is a readable form, with one instruction per machine instruction, written using mnemonics 助记符 like LDD, ADD, JMP. An assembler 汇编器 translates it to machine code.

Two-pass assembler

A two-pass assembler reads the source twice:

  • pass 1 builds a symbol table 符号表: each time a label 标签 (like LOOP:) appears, record its address; no code yet.
  • pass 2 generates code: translate each instruction, and when one refers to a label (like JMP LOOP), look up its address in the symbol table.

Two passes handle forward references 前向引用 (a jump to a label defined later).

Worked example. Apply the two-pass process to this program, whose first instruction is stored at address 100.

Pass 1 reads each line, counts the address it will occupy, and records every label in the symbol table: LOOP = 101 (the DEC line) and COUNT = 105 (the data line). No code is produced. Pass 2 reads the program again and translates each line into machine code, replacing each mnemonic by its opcode 操作码 and each symbolic address by the number from the symbol table: LDD COUNT becomes the opcode for LDD with operand 操作数 105, and JPN LOOP becomes the opcode for JPN with operand 101. The jump back to LOOP could have been resolved in one pass, but a jump forward to a label not yet seen could not, which is why the assembler makes two.

Example instruction set

Cambridge uses a small generic set, printed in the paper's reference table, with one general-purpose register, the accumulator (ACC), and an index register (IX). An operand written #n is a denary number, Bn a binary number and &n a hexadecimal number; <address> is a location number or a label.

Group Instruction What it does
Data movement LDM #n load the number n into ACC (immediate)
LDD <address> load the contents of the address into ACC (direct)
LDI <address> the address holds another address; load the contents of that one into ACC (indirect)
LDX <address> add IX to the address and load the contents of the result into ACC (indexed)
LDR #n load the number n into IX
MOV <register> copy ACC into the named register (IX)
STO <address> store the contents of ACC at the address
Input and output IN read a key press and put its ASCII code in ACC
OUT output the character whose ASCII code is in ACC
Arithmetic ADD <address> / ADD #n add the contents of the address, or the number, to ACC
SUB <address> / SUB #n subtract from ACC
INC <register> / DEC <register> add 1 to, or subtract 1 from, ACC or IX
Compare CMP <address> / CMP #n compare ACC with the contents of the address, or with n, and set the flag
CMI <address> compare ACC with the contents of the address held at the address (indirect)
Jump JMP <address> jump to the address unconditionally
JPE <address> / JPN <address> jump if the last compare was equal / not equal
Bit manipulation AND, OR, XOR with #n, Bn, &n or <address> bitwise operation on ACC
LSL #n / LSR #n shift ACC logically n places left or right
END end the program

The "assembly language instructions are grouped" question wants the group names, and an instruction from each: data movement, input and output, arithmetic, unconditional and conditional jumps, compare, and bit manipulation.

Русский

Фактически CPU выполняет машинный код — последовательности битов, специфичные для одной архитектуры. Язык ассемблера — это читаемая форма, где одна инструкция соответствует одной машинной инструкции, записанная с использованием мнемоников вроде LDD, ADD, JMP. Ассемблер переводит его в машинный код.

Ассемблер переводит мнемоники языка ассемблера в битовые паттерны машинного кода
Ассемблер преобразует мнемоники в бинарные паттерны машинного кода

Двухпроходный ассемблер

Двухпроходный ассемблер читает исходный код дважды:

  • проход 1 строит таблицу символов: каждый раз, когда встречается метка (например, LOOP:), записывается ее адрес; код еще не генерируется.
  • проход 2 генерирует код: переводит каждую инструкцию, и когда одна ссылается на метку (например, JMP LOOP), ищет ее адрес в таблице символов.

Два прохода обрабатывают перекрестные ссылки (переход к метке, определенной позже).

Разобранный пример. Примените двухпроходный процесс к этой программе, чья первая инструкция хранится по адресу 100.

        LDD  COUNT
LOOP:   DEC  ACC
        CMP  #0
        JPN  LOOP
        END
COUNT:  5

Проход 1 считывает каждую строку, подсчитывает занимаемый адрес и записывает каждую метку в таблицу символов: LOOP = 101 (строка DEC) и COUNT = 105 (строка данных). Код не производится. Проход 2 снова читает программу и переводит каждую строку в машинный код, заменяя каждый мнемоник на его опкод, а каждый символический адрес — на число из таблицы символов: LDD COUNT становится опкодом для LDD с операндом 105, а JPN LOOP становится опкодом для JPN с операндом 101. Переход назад к LOOP можно было бы разрешить за один проход, но переход вперед к метке, которая еще не встречалась, нет, поэтому ассемблер делает два.

Пример набора инструкций

Кембридж использует небольшой универсальный набор, распечатанный в справочной таблице экзаменационного листа, с одним общерегистровым регистром, накопительным аккумулятором (ACC), и индексным регистром (IX). Операнд, записанный как #n, является десятичным числом, Bn — двоичным числом, а &n — шестнадцатеричным числом; <address> — номером ячейки памяти или меткой.

Группа Инструкция Что она делает
Перемещение данных LDM #n загрузить число n в ACC (непосредственно)
LDD <address> загрузить содержимое ячейки по адресу в ACC (прямое)
LDI <address> адрес содержит другой адрес; загрузить содержимое этого другого адреса в ACC (косвенное)
LDX <address> сложить IX с адресом и загрузить содержимое результата в ACC (индексное)
LDR #n загрузить число n в IX
MOV <register> скопировать ACC в указанный регистр (IX)
STO <address> сохранить содержимое ACC по указанному адресу
Ввод и вывод IN считать нажатие клавиши и поместить ASCII-код в ACC
OUT вывести символ, ASCII-код которого находится в ACC
Арифметика ADD <address> / ADD #n добавить содержимое ячейки по адресу или число к ACC
SUB <address> / SUB #n вычесть из ACC
INC <register> / DEC <register> прибавить 1 или вычесть 1 из ACC или IX
Сравнение CMP <address> / CMP #n сравнить ACC с содержимым ячейки по адресу или с числом n и установить флаг
CMI <address> сравнить ACC с содержимым ячейки по адресу, хранящемуся по этому адресу (косвенное)
Переход JMP <address> безусловный переход к указанному адресу
JPE <address> / JPN <address> прыжок, если последнее сравнение было равно / не равно
Манипуляция с битами AND, OR, XOR с #n, Bn, &n или <address> побитовая операция над ACC
LSL #n / LSR #n логический сдвиг ACC на n позиций влево или вправо
END завершение программы

Вопрос «инструкции языка ассемблера сгруппированы» требует перечислить названия групп и по одной инструкции из каждой: перемещение данных, ввод и вывод, арифметика, безусловные и условные переходы, сравнение и манипуляция с битами.

Explore · ⁨Исследовать⁩

How a two-pass assembler works · ⁨Как работает двухпроходный ассемблер⁩

Step through it. The assembler reads your code twice: pass 1 just finds where every label lives, so pass 2 can fill in the addresses — that is how a jump to a label defined later still works. · ⁨Проанализируйте процесс. Ассемблер читает ваш код дважды: первый проход (pass 1) только определяет местоположение каждой метки, поэтому второй проход (pass 2) может подставить адреса — именно так работает переход к метке, определённой позже в коде.⁩

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
register/ˈredʒɪstə/ регистром
control unit/kənˈtrəʊl ˈjuːnɪt/ блок управления
clock speed/klɒk spiːd/ тактовая частота
4.2

Addressing modes · ⁨Режимы адресации⁩

English

The addressing mode 寻址方式 (the modes of addressing) says how the CPU finds the operand:

  • immediate addressing 立即寻址 — the operand is the value in the instruction. LDM #10 loads 10.
  • direct addressing 直接寻址 — the instruction holds an address; the operand is the value there. LDD 200.
  • indirect addressing 间接寻址 — the instruction holds an address that holds another address, which is the data. LDI 200.
  • indexed addressing 变址寻址 — effective address is address + index register; used for arrays. LDX 100 with IR = 5 reads address 105.

(Relative addressing 相对寻址 gives the address as an offset from the PC — used for jumps.)

Worked example. Memory holds: location 200 = 250, location 250 = 99, location 105 = 7. The index register holds 5. What is in the accumulator after each of LDM #200, LDD 200, LDI 200 and LDX 100? Follow how far each mode has to look. LDM #200 is immediate - the operand is the number written in the instruction, so the accumulator holds 200. LDD 200 is direct - go to location 200 and take what is there: 250. LDI 200 is indirect - location 200 holds 250, which is another address, so go on to location 250: 99. LDX 100 is indexed - add the index register to the address, $100 + 5 = 105$, and read location 105: 7. Count the hops to keep them apart: immediate 0, direct 1, indirect 2, indexed 1 (once the index has been added).

Русский

Режим адресации (или режимы адресации) определяет, как процессор находит операнд:

  • непосредственная адресация — операндом является значение в самой инструкции. LDM #10 загружает 10.
  • прямая адресация — инструкция содержит адрес; операндом является значение по этому адресу. LDD 200.
  • косвенная адресация — инструкция содержит адрес, который указывает на другой адрес, содержащий данные. LDI 200.
  • индексная адресация — эффективный адрес равен address + index register; используется для массивов. LDX 100 с индексным регистром 5 читает адрес 105.

(Относительная адресация задает адрес как смещение от PC — используется для переходов.)

Четыре режима адресации, достигающие своего операнда. Непосредственная: LDM #10 дает 10 напрямую. Прямая: LDD 200 читает ячейку памяти 200 (=42). Косвенная: LDI 200 читает ячейку 200 (=250), затем ячейку 250 (=99). Индексная: LDX 100 с индексным регистром 5 читает ячейку 105 (=7)
Как каждый режим адресации достигает своего операнда — непосредственный, прямой, косвенный и индексный

Разобранное решение. В памяти хранится: ячейка 200 = 250, ячейка 250 = 99, ячейка 105 = 7. Индексный регистр содержит 5. Что находится в аккумуляторе после выполнения каждого из LDM #200, LDD 200, LDI 200 и LDX 100? Отследите, насколько далеко должен заглянуть каждый режим. LDM #200 — непосредственная — операнд это число, записанное в инструкции, поэтому аккумулятор содержит 200. LDD 200 — прямая — перейдите к ячейке 200 и возьмите то, что там лежит: 250. LDI 200 — косвенная — в ячейке 200 лежит 250, что является еще одним адресом, поэтому переходим к ячейке 250: 99. LDX 100 — индексная — прибавьте индексный регистр к адресу, $100 + 5 = 105$, и прочитайте ячейку 105: 7. Подсчитайте количество шагов, чтобы их различать: непосредственная 0, прямая 1, косвенная 2, индексная 1 (после того как индекс был добавлен).

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
Index Register/ˈɪndeks ˈredʒɪstə/ индексный регистр
indexed addressing/ˈɪndekst əˈdresɪŋ/ индексная адресация
general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ универсальные регистры
register transfer/ˈredʒɪstə ˈtrænsfɜː/ передача между регистрами
control bus/kənˈtrəʊl bʌs/ шина управления
addressing mode/əˈdresɪŋ məʊd/ адресный режим
immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ непосредственная адресация
direct addressing/daɪˈrekt əˈdresɪŋ/ прямая адресация
indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ косвенная адресация
relative addressing/ˈrelətɪv əˈdresɪŋ/ относительная адресация
logical shift/ˈlɒdʒɪkl ʃɪft/ логический сдвиг
cyclic shift/ˈsaɪklɪk ʃɪft/ циклический сдвиг
4.2

Tracing an assembly program · ⁨Отладка программы на языке ассемблера⁩

English

To trace it: make a table with columns for the PC, ACC, index register, each variable and any flags. Step through the instructions, updating the table after each; follow branches when they change the PC; stop at END. A common pattern is a loop over an array using indexed addressing.

Worked example. Trace this program. Address 200 holds 5 and address 201 holds 0.

Write one row for each instruction executed, filling in only the columns that change:

Instruction ACC 200 201 Output
start 5 0
LDD 200 5
CMP #0
JPE 108 not taken
OUT character with code 5
DEC ACC 4
STO 200 4
LDD 201 0
JMP 100
LDD 200 4

and so on, until LDD 200 loads 0, the compare sets the equal flag, JPE 108 is taken and the program ends. Three things the examiner checks: a CMP changes no register, only a flag; a jump not taken still counts as executed; and OUT outputs a character, so it goes in the output column, not the ACC column. "State the effect of changing LDD 10 to LDM #10": the ACC would hold the number 10 instead of the contents of address 10.

Русский

Чтобы отследить её: составьте таблицу со столбцами для PC, ACC, индексного регистра, каждой переменной и любых флагов. Проходите по инструкциям, обновляя таблицу после каждой; следите за ветвлениями, когда они изменяют PC; остановитесь на END. Распространенной схемой является цикл по массиву с использованием индексной адресации.

Разобранное решение. Отследите эту программу. Адрес 200 содержит 5, а адрес 201 содержит 0.

100   LDD  200
101   CMP  #0
102   JPE  108
103   OUT
104   DEC  ACC
105   STO  200
106   LDD  201
107   JMP  100
108   END

Запишите одну строку для каждой выполненной инструкции, заполняя только те столбцы, которые изменились:

Инструкция ACC 200 201 Вывод
начало 5 0
LDD 200 5
CMP #0
JPE 108 не Taken (переход не выполнен)
OUT символ с кодом 5
DEC ACC 4
STO 200 4
LDD 201 0
JMP 100
LDD 200 4

и так далее, пока LDD 200 не загрузит 0, сравнение установит флаг равенства, JPE 108 будет выполнен, и программа завершится. Экзаменатор проверяет три вещи: a CMP не изменяет ни один регистр, только флаг; невыполненный переход все равно считается выполненной инструкцией; и OUT выводит символ, поэтому он записывается в столбец вывода, а не в столбец ACC. "Укажите эффект изменения LDD 10 на LDM #10": в аккумуляторе было бы число 10 вместо содержимого адреса 10.

4.3

Binary shifts · ⁨Бинарные сдвиги⁩

Syllabus · ⁨Программа⁩
English
Candidates should be able to: Notes and guidance
Show understanding of and perform binary shifts Logical, arithmetic and cyclic Left shift, right shift
Show understanding of how bit manipulation can be used to monitor/control a device Carry out bit manipulation operations Test and set a bit (using bit masking)
Instruction Label | Opcode | Operand Explanation
AND #n / Bn / &n Bitwise AND operation of the contents of ACC with the operand
AND
Bitwise AND operation of the contents of ACC with the contents of
XOR #n / Bn / &n Bitwise XOR operation of the contents of ACC with the operand
XOR
Bitwise XOR operation of the contents of ACC with the contents of
OR #n / Bn / &n Bitwise OR operation of the contents of ACC with the operand
OR
Bitwise OR operation of the contents of ACC with the contents of
LSL #n Bits in ACC are shifted logically n places to the left. Zeros are introduced on the right hand end
LSR #n Bits in ACC are shifted logically n places to the right. Zeros are introduced on the left hand end
Labels an instruction
Gives a symbolic address
All questions will assume there is only one general purpose register available (Accumulator) ACC denotes Accumulator IX denotes Index Register
can be an absolute or symbolic address # denotes a denary number, e.g. #123 B denotes a binary number, e.g. B01001010 & denotes a hexadecimal number, e.g. &4A
Русский
Кандидаты должны уметь: Примечания и рекомендации
Проявите понимание и выполните бинарные сдвиги Логический, арифметический и циклический. Сдвиг влево, сдвиг вправо
Проявите понимание того, как манипуляции с битами могут использоваться для мониторинга/управления устройством Выполняйте операции манипуляций с битами. Проверка и установка бита (с использованием маскирования битов)
Метка инструкции | Операнд | Операция Пояснение
AND #n / Bn / &n Побитовая операция И содержимого ACC с операндом
AND
Побитовая операция И содержимого ACC со содержимым
XOR #n / Bn / &n Побитовая операция исключающего ИЛИ содержимого ACC с операндом
XOR
Побитовая операция исключающего ИЛИ содержимого ACC со содержимым
OR #n / Bn / &n Побитовая операция ИЛИ содержимого ACC с операндом
OR
Побитовая операция ИЛИ содержимого ACC со содержимым
LSL #n Биты в ACC логически сдвигаются на n позиций влево. Нули добавляются в правый конец
LSR #n Биты в ACC логически сдвигаются на n позиций вправо. Нули добавляются в левый конец
Метка инструкции
Присваивает символьное имя
Все вопросы предполагают наличие только одного общепроизводительного регистра (Аккумулятора). ACC обозначает Аккумулятор, IX обозначает Индексный регистр.
может быть абсолютным или символьным адресом. # обозначает десятичное число, например #123. B обозначает двоичное число, например B01001010. & обозначает шестнадцатеричное число, например &4A

Source: Cambridge International syllabus · ⁨Источник: Программа Cambridge International⁩

English

A logical shift 逻辑移位 moves all the bits left or right by some places, filling new positions with 0.

  • left shift by 1 (LSL #1) — bits move left, a 0 enters on the right; for an unsigned number this is × 2.
  • right shift by 1 (LSR #1) — bits move right, a 0 enters on the left; for an unsigned number this is integer ÷ 2.

Shifting by $n$ places multiplies or divides by $2^{n}$. Example: 00001011 (11) LSL #1 → 00010110 (22).

Bits shifted off the end are lost, so the multiplication is only correct while they were zeros. LSL #2 on the two's-complement integer 11001010 gives 00101000: the two 1s that fell off the left are gone, the sign bit has changed, and the result is no longer four times the original.

An arithmetic right shift keeps the sign bit so a negative signed number stays negative. A cyclic shift 循环移位 (rotate) feeds the bit that drops off one end back in at the other end, so no bits are lost.

"Show the result of an arithmetic right shift of 3 places on 10011110": copy the sign bit into each vacated place, 11110011. The same shift on 01011100 gives 00001011. A cyclic left shift of 1 on 10000110 gives 00001101: the leading 1 reappears on the right.

The difference between the two right shifts is a single bit. Take 11110000, which is 240 read as unsigned and $-16$ read as signed. LSR #1 brings in a 0 and gives 01111000 $= 120$, which is the correct half of 240. ASR #1 copies the sign bit instead and gives 11111000 $= -8$, which is the correct half of $-16$. Neither is wrong — each halves the value under one reading.

Bit manipulation for monitoring/control

Embedded devices often use one bit 位 of a register per signal (e.g. bit $n$ = LED $n$). Using a mask 掩码 — bit masking — you can:

  • set bit $n$: R = R OR a mask with bit $n$ set.
  • clear bit $n$: R = R AND a mask with bit $n$ clear and the rest set.
  • toggle bit $n$: R = R XOR a mask with bit $n$ set.
  • test bit $n$: R AND the mask, then check if the result is non-zero.

Bit manipulation is fast, uses little memory, and lets one byte hold up to 8 on/off states.

In the exam's instruction set these are AND, OR and XOR with a mask written as a denary, binary or hexadecimal operand. With the ACC holding 10101100:

Instruction Mask Result in ACC Effect
AND B00001111 00001111 00001100 keeps only the low four bits (clears the others)
OR #1 00000001 10101101 sets the least significant bit, leaving the rest unchanged
XOR &FF 11111111 01010011 inverts every bit
AND B00001000 then CMP #0 00001000 00001000 tests bit 3: the compare is not equal, so bit 3 was set
LSL #2 10110000 shifts left two places, losing the top two bits
LSR #3 00010101 shifts right three places, zeros entering on the left

"Write the instruction that sets the least significant bit to 1 and leaves the others unchanged": OR #1, or OR B00000001. To clear a bit use AND with a mask that has a 0 in that place and 1s elsewhere; to test a bit, AND with a mask that has a 1 only in that place, then compare the result with zero. In a monitoring device, one bit of a register per sensor lets a single AND check whether a particular sensor is on, and one OR switches an actuator's control bit on without disturbing the others.

Русский

Логический сдвиг перемещает все биты влево или вправо на若干 позиций, заполняя новые позиции 0.

  • сдвиг влево на 1 (LSL #1) — биты движутся влево, справа появляется 0; для беззнакового числа это × 2.
  • сдвиг вправо на 1 (LSR #1) — биты движутся вправо, слева появляется 0; для беззнакового числа это целочисленное деление на 2.

Сдвиг на $n$ позиций умножает или делит на $2^{n}$. Пример: 00001011 (11) LSL #1 → 00010110 (22).

Биты, сдвинувшиеся за пределы, теряются, поэтому умножение корректно только пока они были нулями. LSL #2 от двоичного дополнения числа 11001010 даёт 00101000: два 1, выпавших слева, исчезли, знаковый бит изменился, и результат больше не равен исходному, умноженному на четыре.

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

"Покажите результат арифметического правого сдвига на 3 позиций числа 10011110": скопируйте знаковый бит в каждую освобождённую позицию, 11110011. Тот же сдвиг числа 01011100 даёт 00001011. Циклический левый сдвиг на 1 позиций числа 10000110 даёт 00001101: старший 1 появляется справа.

Три 8-битных сдвига: LSL #1 превращает 00001011 в 00010110 (умножение на 2, справа появляется 0); LSR #1 превращает его в 00000101 (целочисленное деление на 2, слева появляется 0); ASR #1 превращает 10110100 в 11011010, копируя знаковый бит
Логический левый ($\times 2$), логический правый ($\div 2$) и арифметический правый (сохраняет знаковый бит)

Разница между двумя сдвигами вправо заключается в одном бите. Возьмем 11110000, которое равно 240 при чтении как беззнаковое и $-16$ при чтении как знаковое. LSR #1 вносит 0 и дает 01111000 $= 120$, что является правильной половиной от 240. ASR #1 копирует знаковый бит и дает 11111000 $= -8$, что является правильной половиной от $-16$. Ни один вариант не неверен — каждый уменьшает значение вдвое при соответствующей интерпретации.

Байт 11110000, сдвинутый вправо дважды: LSR вносит 0 слева, давая 01111000, что равно 120, тогда как ASR копирует знаковый бит, давая 11111000, что равно -8; два результата отличаются только вошедшим битом
Логический и арифметический сдвиги вправо для одного байта: отличается только входящий слева бит

Манипуляция с битами для мониторинга/управления

Встроенные устройства часто используют один бит регистра для каждого сигнала (например, бит $n$ = светодиод $n$). Используя маску — побитовое маскирование — вы можете:

  • установка бита $n$: R = R OR — маска с установленным битом $n$.
  • сбросить бит $n$: R = R AND маску, в которой бит $n$ сброшен, а остальные установлены.
  • переключить бит $n$: R = R XOR маску, в которой установлен бит $n$.
  • проверить бит $n$: R AND маску, затем проверить, является ли результат ненулевым.
Битовая маска на байте 01001000: установка бита 2 с помощью OR 00000100 дает 01001100; сброс бита 6 с помощью AND 10111111 дает 00001000; переключение бита 3 с помощью XOR 00001000 дает 01000000
Установите бит с помощью OR, сбросьте его с помощью AND, переключите с помощью XOR — каждый раз используя маску

Манипуляция с битами быстрая, требует мало памяти и позволяет одному байту хранить до 8 состояний «вкл/выкл».

В наборе инструкций экзамена это⟩AND, OR и XOR, где маска записана как десятичный, двоичный или шестнадцатеричный операнд. При содержимом ACC, равном 10101100:

Инструкция Маска Результат в ACC Эффект
AND B00001111 00001111 00001100 оставляет только четыре младших бита (сбрасывает остальные)
OR #1 00000001 10101101 устанавливает наименее значащий бит, оставляя остальные без изменений
XOR &FF 11111111 01010011 инвертирует каждый бит
AND B00001000 затем CMP #0 00001000 00001000 проверяет бит 3: сравнение не равно, значит бит 3 был установлен
LSL #2 10110000 сдвигает влево на два места, теряя два старших бита
LSR #3 00010101 сдвигает вправо на три места, слева добавляются нули

"Запишите инструкцию, которая устанавливает наименее значащий бит в 1, оставляя остальные без изменений": OR #1 или OR B00000001. Для очистки бита используйте AND с маской, имеющей 0 на этом месте и 1 в остальных; для проверки бита выполните AND с маской, имеющей 1 только на этом месте, а затем сравните результат с нулем. В устройстве мониторинга один бит регистра на каждый датчик позволяет одной⟩AND проверить, включен ли конкретный датчик, а одна⟩OR включает управляющий бит актуатора, не затрагивая остальные.

Explore · ⁨Исследовать⁩

Shift and mask the bits of a byte · ⁨Сдвиньте и отфильтруйте биты байта⁩

Pick an operator and watch each result bit. A left shift (<<) moves every bit up one place (×2); a right shift (>>) moves them down (÷2); AND with a mask clears the bits you don't want. · ⁨Выберите оператор и посмотрите на каждый результатный бит. Левый сдвиг (<<) moves every bit up one place (×2); a right shift (>>) перемещает их вниз (÷2); AND с маской обнуляет ненужные биты.⁩

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
bit/bɪt/ бит
mask/mæsk/ маска
4.3

Definitions the examiner accepts · ⁨Определения, принимаемые экзаменатором⁩

English

A definition question is marked against fixed wording. Learn these exactly, and give one answer only.

Term Definition
stored program concept the program instructions and the data are both held in main memory, and instructions are fetched and executed one at a time
register a small, very fast storage location inside the processor with a specific purpose
Program Counter the register holding the address of the next instruction to be fetched
Memory Address Register the register holding the address of the memory location being read from or written to
Memory Data Register the register holding the data or instruction just read from, or about to be written to, memory
Current Instruction Register the register holding the instruction currently being decoded and executed
Accumulator the general-purpose register holding the result of the last arithmetic or logic operation
cache memory small, fast memory close to the processor holding frequently used instructions and data
interrupt a signal from a device or program that causes the processor to pause the current task and run an interrupt service routine
assembly language a low-level language in which each mnemonic instruction corresponds to one machine-code instruction
immediate addressing the operand is the value written in the instruction
direct addressing the operand is the contents of the address written in the instruction
indirect addressing the address in the instruction holds the address of the operand
indexed addressing the operand's address is the address in the instruction plus the contents of the index register
relative addressing the operand's address is given as an offset from the address of the current instruction
logical shift every bit moves the given number of places and zeros fill the vacated places
Русский

Вопросы на определение оцениваются по фиксированной формулировке. Выучите их точно и дайте только один ответ.

Термин Определение
концепция хранимой программы инструкции программы и данные хранятся в основной памяти, и инструкции извлекаются и выполняются по одной
регистр небольшое, очень быстрое место хранения внутри процессора со специфической целью
Счетчик программ (PC) регистр, хранящий адрес следующей инструкции для извлечения
Регистр адреса памяти (MAR) регистр, хранящий адрес местоположения памяти, из которого производится чтение или запись
Регистр данных памяти (MDR) регистр, хранящий данные или инструкцию, которые только что были прочитаны из памяти или вот-вот будут записаны в память
Регистр текущей инструкции (CIR) регистр, хранящий инструкцию, которая в данный момент декодируется и выполняется
Аккумулятор (ACC) регистр общего назначения, хранящий результат последней арифметической или логической операции
кэш-память маленькая, быстрая память рядом с процессором, хранящая часто используемые инструкции и данные
прерывание сигнал от устройства или программы, который заставляет процессор приостановить текущую задачу и выполнить подпрограмму обработки прерываний
язык ассемблера низкоуровневый язык, в котором каждая мнемоническая инструкция соответствует одной машинной инструкции
непосредственное адресование операндом является значение, записанное в инструкции
прямое адресование операндом является содержимое адреса, записанного в инструкции
косвенное адресование адрес в инструкции содержит адрес операнда
индексное адресование адресом операнда является адрес в инструкции плюс содержимое индексного регистра
относительное адресование адресом операнда является смещение от адреса текущей инструкции
логический сдвиг каждый бит перемещается на указанное количество мест, освободившиеся места заполняются нулями
4.3

Exam tips · ⁨Советы для экзамена⁩

English
  • Learn the fetch-execute cycle in register-transfer terms (PC, MAR, MDR, CIR, ACC) and what increments the PC.
  • Name each register's job; the address bus is one-way, the data bus is two-way.
  • Distinguish the addressing modes (immediate, direct, indirect, indexed) — a frequent question.
  • Explain how clock speed, number of cores, cache size and word length affect performance.
  • For a binary shift, state whether it is logical or arithmetic; a left shift multiplies by 2, a right shift divides by 2.

Common mistakes

  • Saying the PC holds the current instruction, or the MDR holds an address. The PC holds the address of the next instruction; the MDR holds data or an instruction, never an address.
  • Leaving the increment of the PC out of the fetch, or putting it after the execute. It happens as soon as the address has been copied to the MAR.
  • Reading LDD 10 as "load 10". LDD 10 loads the contents of address 10; LDM #10 loads the number 10.
  • Putting a value in the ACC column for CMP or OUT. A compare sets a flag only; an output goes to the output column.
  • Saying an interrupt is handled "immediately". The processor finishes the current instruction and checks for interrupts at the end of the cycle.
  • Using a logical right shift on a negative two's-complement number. Only an arithmetic shift keeps the sign bit.
Русский
  • Изучите цикл выборки-исполнения в терминах передачи между регистрами (PC, MAR, MDR, CIR, ACC) и то, что увеличивает PC.
  • Назовите задачу каждого регистра; шина адреса односторонняя, шина данных двухсторонняя.
  • Различайте режимы адресования (непосредственный, прямой, косвенный, индексный) — частый вопрос.
  • Объясните, как тактовая частота, количество ядер, размер кэша и длина слова влияют на производительность.
  • Для бинарного сдвига укажите, является ли он логическим или арифметическим; сдвиг влево умножает на 2, сдвиг вправо делит на 2.

Распространенные ошибки

  • Утверждение о том, что PC хранит текущую инструкцию, или MDR хранит адрес. PC хранит адрес следующей инструкции; MDR хранит данные или инструкцию, никогда адрес.
  • Пропуск увеличения PC при выборке или размещение его после выполнения. Это происходит сразу после копирования адреса в MAR.
  • Чтение LDD 10 как "загрузить 10". LDD 10 загружает содержимое адреса 10; LDM #10 загружает число 10.
  • Помещение значения в столбец ACC для CMP или OUT. Сравнение устанавливает флаг только; вывод направляется в столбец вывода.
  • Утверждение о том, что прерывание обрабатывается «немедленно». Процессор завершает текущую инструкцию и проверяет наличие прерываний в конце цикла.
  • Использование логического сдвига вправо для отрицательного числа в дополнении до двух. Только арифметический сдвиг сохраняет знаковый бит.

Interactive lessons on this topic · ⁨Интерактивные уроки по этой теме⁩

Work through it step by step, with instant-check exercises. · ⁨Пройдите его шаг за шагом с упражнениями мгновенной проверки.⁩

Past Papers · ⁨Архив экзаменационных работ⁩

More topics in A-Level Computer Science · ⁨A-Level Информатика⁩ · ⁨Больше тем в A-Level Computer Science · ⁨A-Level Информатика⁩⁩

Log in or create account · ⁨Войти или создать аккаунт⁩

IGCSE, A-Level & AP