Skip to content · ⁨Bỏ qua nội dung⁩

Processor Fundamentals · ⁨Nguyên lý xử lý⁩

A-Level Computer Science · ⁨Khoa học máy tính A-Level⁩ · Topic 4 · ⁨Chủ đề 4⁩

Video lesson for this topic · ⁨Bài học video cho chủ đề này⁩ Open the video page · ⁨Mở trang video⁩
21:32

Kiến trúc Von Neumann

Trong phần lớn lịch sử, một thiết bị chỉ làm một việc. Một chiếc dệt vải dệt cloth. Một chiếc máy tính bỏ túi cộng. Để nó làm điều gì đó mới, bạn phải xây lại nó. Sau đó xuất hiện một cái gì đó tưởng chừng đơn giản nhưng đầy bí ẩn…

English narration · English + 中文 subtitles burned in · ⁨Giọng đọc tiếng Anh · phụ đề tiếng Anh + 中文 được ghi trực tiếp⁩

4.1

Von Neumann architecture · ⁨Kiến trúc Von Neumann⁩

Syllabus · ⁨Chương trình⁩
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
Tiếng Việt
Thí sinh cần có thể: Ghi chú và hướng dẫn
Thể hiện sự hiểu biết về mô hình Von Neumann cơ bản cho hệ thống máy tính và khái niệm chương trình lưu trữ
Thể hiện sự hiểu biết về mục đích và vai trò của b bộ đếm (registers), bao gồm sự khác biệt giữa b bộ đếm mục đích chung và b bộ đếm mục đích đặc biệt B bộ đếm mục đích đặc biệt bao gồm: • B bộ đếm chương trình (PC) • B bộ đếm dữ liệu bộ nhớ (MDR) • B bộ đếm địa chỉ bộ nhớ (MAR) • B bộ tích lũy (ACC) • B bộ đếm chỉ mục (IX) • B bộ đếm lệnh hiện tại (CIR) • B bộ đếm trạng thái
Thể hiện sự hiểu biết về mục đích và vai trò của Đơn vị số học và Logic (ALU), Đơn vị điều khiển (CU) và đồng hồ hệ thống, Bộ nhớ truy cập ngay (IAS)
Thể hiện sự hiểu biết về cách dữ liệu được truyền tải giữa các thành phần khác nhau của hệ thống máy tính sử dụng 总线 địa chỉ (address bus), 总线 dữ liệu (data bus) và 总线 điều khiển (control bus)
Thể hiện sự hiểu biết về các yếu tố đóng góp vào hiệu suất của hệ thống máy tính Bao gồm: • loại bộ xử lý và số lượng lõi • chiều rộng总线 • tốc độ xung nhịp • b bộ nhớ đệm (cache memory)
Hiểu cách các cổng kết nối (ports) khác nhau cung cấp kết nối với thiết bị ngoại vi Bao gồm kết nối với: • Bus Serial phổ quát (USB) • Giao diện đa phương tiện độ phân giải cao (HDMI) • Mảng đồ họa video (VGA)
Mô tả các giai đoạn của chu kỳ Lấy - Thực thi (F-E) Mô tả và sử dụng ký hiệu 'truyền b bộ đếm' để mô tả chu kỳ F-E
Thể hiện sự hiểu biết về mục đích của ngắt Bao gồm: • các nguyên nhân có thể gây ra ngắt • ứng dụng của ngắt • sử dụng Thuật toán dịch vụ ngắt (ISR) • thời điểm ngắt được phát hiện trong chu kỳ lấy-thực thi • cách ngắt được xử lý

Source: Cambridge International syllabus · ⁨Nguồn: Chương trình 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.

Tiếng Việt
Chu kỳ lấy - giải mã - thực thi

Kiến trúc Von Neumann· nằm ở nền tảng của hầu hết mọi máy tính đa năng:

  • một bộ nhớ duy nhất — Bộ nhớ Truy cập Ngay (IAS) — chứa cả chỉ thị chương trình và dữ liệu (khái niệm chương trình được lưu trữ).
  • một bộ xử lý (CPU) lấy chỉ thị từ bộ nhớ và thực thi chúng lần lượt từng cái một.
  • các chỉ thị chạy theo thứ tự trừ khi một nhánh rẽ thay đổi luồng chảy.

Ý tưởng chương trình được lưu trữ là điều làm cho máy tính linh hoạt: thay đổi chương trình thì bạn thay đổi những gì nó làm, mà không cần đi lại dây dẫn.

Explore · ⁨Khám phá⁩

Tap the parts of a Von Neumann computer · ⁨Chạm vào các bộ phận của máy tính Von Neumann⁩

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. · ⁨Khám phá từng khối. CPU (đơn vị điều khiển, ALU, thanh ghi) giao tiếp với một bộ nhớ chính duy nhất qua các总线 — và bộ nhớ chung duy nhất cho cả lệnh VÀ dữ liệu này chính là ý tưởng của Von Neumann.⁩

4.1

The CPU's main parts · ⁨Các bộ phận chính của CPU⁩

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").

Tiếng Việt

Tất cả các bộ phận này đều nằm trong một con chip nhỏ. Sơ đồ ở phần sau sẽ chỉ ra cách chúng kết nối; bức ảnh bên dưới cho thấy mặt thật.

Mặt dưới của một chip CPU Intel trên nền trắng, hình vuông phẳng phủ đầy lưới hàng trăm chấm tiếp xúc vàng nhỏ nhấn lên ổ cắm bo mạch chủ
CPU hiện đại: toàn bộ bộ xử lý là một con chip nhỏ (ở đây nhìn từ dưới lên, hiển thị các tiếp điểm)
Ổ cắm CPU hình vuông trên bo mạch chủ, với lưới các chân pin nhỏ li ti và đòn bẩy giữ bằng kim loại, bao quanh bởi các đường dẫn mạch
Ổ cắm CPU phù hợp trên bo mạch chủ: các tiếp điểm của chip nhấn lên các chân pin này

Bộarit và Logic (ALU)

ALU thực hiện phép tính cộng, trừ, … và các phép logic (AND, OR, so sánh). Nó nhận toán hạng từ các thanh ghi và đặt kết quả trở lại vào thanh ghi.

Bộ điều khiển (CU)

Bộ điều khiển giải mã mỗi chỉ thị và gửi tín hiệu điều khiển để thực thi nó — mở các đường dẫn dữ liệu, bảo ALU biết phải làm gì, và kiểm soát việc đọc/ghi bộ nhớ.

Đồng hồ hệ thống

Đồng hồ gửi một dòng xung liên tục giúp CPU đồng bộ hóa. Mỗi chỉ thị mất một số chu kỳ cố định, và tốc độ xung nhịp (ví dụ: 3.8 GHz) là một yếu tố ảnh hưởng đến hiệu suất.

"Giải thích CU và đồng hồ hệ thống hoạt động phối hợp như thế nào": đồng hồ phát xung ở tần số cố định; bộ điều khiển sử dụng mỗi xung để đẩy chu kỳ lấy-thực thi tiến thêm một bước, gửi tín hiệu điều khiển đồng bộ với các xung, để mọi bộ phận của bộ xử lý thay đổi trạng thái cùng lúc. Đồng hồ nhanh hơn có nghĩa là nhiều bước hơn mỗi giây, cho đến khi các mạch không kịp ổn định giữa các xung.

Thanh ghi

Thanh ghi là các ngân hàng lưu trữ nhỏ bé nhưng cực nhanh bên trong CPU. Các thanh ghi mục đích đặc biệt mỗi cái có một nhiệm vụ cố định trong chu trình:

  • Bộ đếm chương trình (PC) — địa chỉ của chỉ thị tiếp theo.
  • Thanh ghi Địa chỉ Bộ nhớ (MAR) — địa chỉ đang được đọc hoặc ghi.
  • Thanh ghi Dữ liệu Bộ nhớ (MDR) — dữ liệu đang đi vào hoặc ra khỏi bộ nhớ.
  • Thanh Ghi Chỉ Thị Hiện Tại (CIR) — chỉ thị đang được giải mã.
  • Thanh ghi Tích lũy (ACC) — giá trị mà ALU đang xử lý.
  • Thanh ghi Trạng thái — chứa các cờ (cARRY, ZERO, NEGATIVE, OVERFLOW) được dùng bởi các nhánh rẽ. Mỗi cờ là một bit, được set hoặc cleared bởi ALU sau mỗi phép toán: cờ zero sau phép so sánh khớp, cờ carry khi phép cộng vượt quá giới hạn thanh ghi, cờ negative khi kết quả mang dấu âm. Nhánh rẽ có điều kiện đọc các cờ để quyết định rẽ, và cờ overflow có thể kích hoạt tín hiệu ngắt.
  • Thanh ghi Chỉ số — độ lệch được cộng vào địa chỉ trong phương pháp chỉ số hóa; tăng nó lên giúp duyệt qua mảng từng phần tử một.

Câu hỏi "hoàn thành bảng mô tả vai trò của từng thanh ghi" yêu cầu một câu chính xác cho mỗi thanh ghi theo các thuật ngữ này: PC chứa địa chỉ của chỉ thị tiếp theo sẽ được lấy; MAR chứa địa chỉ của vị trí đang được đọc từ hoặc ghi vào; MDR chứa dữ liệu hoặc chỉ thị vừa được đọc từ, hoặc sắp được ghi vào, vị trí đó; CIR chứa chỉ thị đang được giải mã và thực thi hiện tại; ACC chứa kết quả của phép toán số học hoặc logic cuối cùng.

Thanh ghi đa năng được lập trình viên sử dụng để lưu giá trị tạm thời trong quá trình tính toán. Việc di chuyển dữ liệu giữa thanh ghi và bộ nhớ được viết theo ký hiệu chuyển đổi thanh ghi — ví dụ: MAR ← [PC] ("sao chép nội dung PC vào MAR").

Sơ đồ khối của CPU Von Neumann hiển thị PC, MAR, MDR, CIR, ACC, thanh ghi trạng thái, đơn vị điều khiển, ALU và đồng hồ hệ thống, được liên kết với bộ nhớ chính và thiết bị đầu vào/đầu ra qua các总线 địa chỉ, dữ liệu và điều khiển
CPU Von Neumann: các thanh ghi, đơn vị điều khiển và ALU được liên kết bởi các总线
Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
Von Neumann architecture/vɒn ˈnɔɪmən ˈɑːkɪtektʃə/ Kiến trúc Von Neumann
Immediate Access Store/ɪˈmiːdɪət ˈækses stɔː/ Bộ nhớ truy cập tức thì
stored program/stɔːd ˈprəʊɡræm/ chương trình được lưu trữ
processor/ˈprəʊsesə/ bộ xử lý
arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/ bộ xử lý số học và logic
ALU/ˌeɪ el ˈjuː/ ALU
operand/ˈɒpərænd/ toán hạng
bit/bɪt/ bit
4.1

Buses · ⁨Các总线⁩

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).

Tiếng Việt

Ba 总线 bên trong (tập hợp dây song song) kết nối các thành phần:

  • 总线 địa chỉ — truyền địa chỉ bộ nhớ. Một chiều (CPU → bộ nhớ).
  • 总线 dữ liệu — truyền dữ liệu. Hai chiều.
  • 总线 điều khiển — truyền tín hiệu điều khiển (đọc, ghi, ngắt). Hai chiều.

Một 总线 địa chỉ $n$-bit có thể truy cập $2^{n}$ vị trí bộ nhớ. Chiều rộng 总线 dữ liệu quyết định số bit được di chuyển mỗi lần truy cập (thường là kích thước từ).

CPU, bộ nhớ và thiết bị đầu vào/đầu ra đều truy cập 总线 địa chỉ (một chiều), 总线 dữ liệu và 总线 điều khiển bên trong总线 hệ thống
Ba总线 hệ thống kết nối CPU, bộ nhớ và thiết bị đầu vào/đầu ra
Bo mạch chủ nhìn từ trên xuống: chân cắm CPU, khe bộ nhớ và khe mở rộng được nối bằng các đường dẫn in dày đặc
Bo mạch chủ: CPU, bộ nhớ và I/O đều nằm trên cùng một tập总线 — các đường dẫn in chạy giữa chúng
Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
buses/ˈbʌsɪz/ bus
address bus/əˈdres bʌs/ bus địa chỉ
data bus/ˈdeɪtə bʌs/ bus dữ liệu
word size/wɜːd saɪz/ kích thước từ
number of cores/ˈnʌmbə ɒv kɔːz/ số nhân
cores/kɔːz/ lõi xử lý
amount of RAM/əˈmaʊnt ɒv ræm/ lượng RAM
4.1

What affects performance · ⁨Những yếu tố ảnh hưởng đến hiệu suất⁩

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.

Tiếng Việt
  • Tốc độ xung nhịp — nhiều chu kỳ hơn mỗi giây.
  • Số nhân — CPU đa nhân chạy nhiều luồng cùng lúc.
  • Kích thước từ — CPU 64-bit xử lý các khối 64-bit mỗi chu kỳ và có thể truy cập bộ nhớ lớn hơn nhiều so với CPU 32-bit.
  • Dung lượng RAM — nhiều RAM hơn lưu trữ được nhiều dữ liệu hoạt động hơn; thiếu RAM sẽ buộc OS phải pheap vào đĩa.
  • Dung lượng bộ nhớ đệm — bộ nhớ đệm lớn hơn rút ngắn thời gian truy cập bộ nhớ trung bình.
  • Loại lưu trữ thứ cấp — SSD tải chương trình nhanh hơn rất nhiều so với HDD.
  • Chiều rộng và tốc độ总线 —总线 rộng/nhanh hơn di chuyển dữ liệu nhanh hơn.

Gắn thông số kỹ thuật với tác vụ: CPU bốn nhân vượt trội hơn CPU hai nhân trong công việc song song, nhưng tốc độ cao hơn trên mỗi nhân sẽ thắng thế trong công việc đơn luồng.

Mỗi yếu tố là câu trả lời điểm hai kèm theo lý do:

  • Nhiều nhân hơn: mỗi nhân có thể lấy và thực thi lệnh riêng của nó cùng lúc, nên nhiều chương trình hoặc các luồng của một chương trình chạy song song. Tuy nhiên, một chương trình phải được viết để sử dụng nhiều hơn một nhân, nên việc tăng gấp đôi số nhân không làm tăng gấp đôi tốc độ.
  • Tốc độ xung nhịp cao hơn: nhiều chu kỳ lấy-thực hiện hơn mỗi giây, nên nhiều lệnh hơn mỗi giây; giới hạn là nhiệt lượng sinh ra.
  • 总线 rộng hơn: 总线 dữ liệu rộng hơn di chuyển nhiều bit hơn trong mỗi lần truyền, nên ít lần truyền hơn là cần thiết cho cùng một lượng dữ liệu; 总线 địa chỉ rộng hơn có thể truy cập nhiều vị trí bộ nhớ hơn.
  • Bộ nhớ đệm: bộ nhớ nhỏ, nhanh nằm bên trong hoặc cạnh bộ xử lý giữ các lệnh và dữ liệu đã dùng gần đây nhất hoặc thường xuyên nhất. Đọc chúng từ bộ nhớ đệm nhanh hơn nhiều so với từ RAM, nên bộ xử lý dành ít thời gian chờ đợi hơn.

"Giải thích tại sao máy tính mới hoạt động tốt hơn" được trả lời bằng cách so sánh từng dòng hai thông số kỹ thuật: tốc độ xung nhịp cao hơn thực thi nhiều lệnh hơn mỗi giây, nhiều nhân hơn chạy nhiều tác vụ cùng lúc, bộ nhớ đệm lớn hơn nghĩa là ít lần truy cập RAM chậm hơn, và nhiều RAM hơn nghĩa là ít lần truyền vào đĩa hơn.

Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
RAM/ræm/ RAM
page/peɪdʒ/ trang
cache memory/kæʃ ˈmeməri/ bộ nhớ đệm
cache/kæʃ/ cache
secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ bộ nhớ phụ
port/pɔːt/ cổng
peripheral/pəˈrɪfərəl/ ngoại vi
register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ ký hiệu di chuyển thanh ghi
interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ routine phục vụ ngắt
interrupt register/ˈɪntərʌpt ˈredʒɪstə/ thanh ghi ngắt
stack/stæk/ stack
assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ ngôn ngữ assembly
machine code/məˈʃiːn kəʊd/ mã máy
mnemonics/nɪˈmɒnɪks/ mnemonics
4.1

Ports · ⁨Cổng kết nối⁩

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.

Tiếng Việt

Một cổng kết nối là ổ cắm vật lý để kết nối thiết bị ngoại vi:

  • USB (Bus Serial Đa năng) — đa năng (bàn phím, ổ đĩa, điện thoại).
  • HDMI (Giao diện Đa phương tiện Độ phân giải Cao) — video và âm số hóa đến màn hình.
  • VGA (Mảng Đồ họa Video) — tín hiệu video tương tự cũ ra màn hình.
  • Ethernet (RJ-45) — mạng LAN có dây. Jack âm thanh — tai nghe/micro.

Các cổng kết nối khác nhau sử dụng tín hiệu khác nhau, nên cáp HDMI sẽ không vừa với ổ cắm USB. USB-C đặc biệt ở chỗ truyền cả video, dữ liệu và nguồn điện.

"Giải thích cách máy tính kết nối với màn hình qua HDMI": Cổng HDMI gửi video và âm thanh dưới dạng một tín hiệu số duy nhất qua một cáp, nên không cần chuyển đổi sang tín hiệu tương tự và hình ảnh không bị giảm chất lượng; cáp mang độ phân giải cao và cổng của màn hình giải mã tín hiệu đó. Thiết bị USB là cắm và chạy: khi được kết nối, máy tính phát hiện nó, nhận dạng, tải hoặc cài đặt driver cần thiết, và cung cấp nguồn điện cho nó, tất cả mà không cần khởi động lại.

4.1

Fetch-Execute cycle · ⁨Chu kỳ Lấy - Thực thi⁩

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.

Tiếng Việt

CPU lặp lại chu kỳ lấy-thực hiện, mỗi lần chạy ứng với một lệnh máy.

Lấy

  1. địa chỉ của PC được sao chép vào MAR.
  2. PC được tăng lên để trỏ đến lệnh tiếp theo.
  3. tín hiệu đọc đi qua 总线 điều khiển.
  4. bộ nhớ đưa lệnh lên 总线 dữ liệu.
  5. nó được sao chép vào MDR, sau đó vào CIR.

Đề thi yêu cầu các bước này viết theo ký hiệu chuyển đổi thanh ghi, nơi [X] có nghĩa là nội dung của thanh ghi X và [[MAR]] có nghĩa là nội dung của vị trí bộ nhớ có địa chỉ nằm trong 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

Thứ tự quan trọng: PC được tăng ngay sau khi địa chỉ của nó được sao chép, để đảm bảo rằng một lệnh nhảy được thực thi sau vẫn có thể ghi đè lên nó. Trong quá trình thực thi, ký hiệu tương tự mô tả từng lệnh; ví dụ, đối với LDD 200, ta có MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].

Các chuyển đổi thanh ghi trong quá trình lấy theo thứ tự: 1 địa chỉ của PC đi vào MAR; 2 MAR gửi địa chỉ đến bộ nhớ; 3 lệnh quay trở lại MDR; 4 MDR sao chép nó vào CIR; đồng thời PC được tăng lên
Các chuyển đổi thanh ghi trong quá trình lấy: PC → MAR → bộ nhớ → MDR → CIR, với PC được tăng lên

Giải mã

CU giải mã lệnh trong CIR — thao tác nào, và các toán tử hay địa chỉ nào.

Thực thi

CU thực hiện nó: phép tính số học/logic được gửi đến ALU (kết quả về ACC); lệnh tải/lưu di chuyển dữ liệu giữa bộ nhớ và thanh ghi; lệnh nhảy thay đổi PC. Sau đó chu kỳ lặp lại.

Sơ đồ quy trình của chu kỳ lấy-thực thi từ START: giai đoạn lấy (PC đến MAR, tăng PC, tín hiệu đọc, bộ nhớ vào bus dữ liệu vào MDR vào CIR), giai đoạn giải mã, giai đoạn thực thi, sau đó kiểm tra ngắt để quay lại START
Chu kỳ lấy-thực thi, với việc kiểm tra ngắt mỗi lần
Explore · ⁨Khám phá⁩

The fetch-execute cycle · ⁨Chu kỳ lấy lệnh-thực thi⁩

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. · ⁨Chạm vòng quanh loop mà CPU lặp lại hàng tỷ lần mỗi giây. Xem cách lấy lệnh sử dụng các thanh ghi PC/MAR/MDR/CIR, sau đó giải mã và thực thi tác động lên những gì đã được lấy.⁩

Explore · ⁨Khám phá⁩

The fetch–execute cycle · ⁨Chu kỳ lấy — thực thi⁩

Step through how the CPU runs one instruction — fetch it from memory, decode it, then execute it, over and over. · ⁨Từng bước CPU chạy một lệnh — lấy nó từ bộ nhớ, giải mã nó, sau đó thực thi nó, lặp đi lặp lại.⁩

Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ chu kỳ lấy – thực thi
special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ thanh ghi chuyên dụng
Program Counter/ˈprəʊɡræm ˈkaʊntə/ Đếm chương trình (PC)
Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ Thanh ghi Địa chỉ Bộ nhớ (MAR)
Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ Thanh ghi Dữ liệu Bộ nhớ (MDR)
Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ Thanh ghi Lệnh Hiện tại (CIR)
accumulator/əˈkjuːmjʊleɪtə/ bộ cộng gộp
Status Register/ˈsteɪtəs ˈredʒɪstə/ Thanh ghi Trạng thái (PSW)
flags/flæɡz/ cờ
4.1

Interrupts · ⁨Ngắt⁩

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.

Tiếng Việt

Một ngắt là tín hiệu tạm dừng chu kỳ bình thường để CPU xử lý một sự kiện cấp thiết (nhấn phím, gói tin đến, lỗi phần cứng, chia cho không, bộ đếm hệ điều hành).

Xử lý một ngắt:

  1. hoàn thành lệnh hiện tại.
  2. lưu trạng thái (PC và các thanh ghi).
  3. nạp địa chỉ của chương trình phục vụ ngắt (ISR) vào PC và chạy nó.
  4. ISR xử lý sự kiện.
  5. phục hồi trạng thái đã lưu và tiếp tục.

Ngắt giúp hệ thống phản hồi nhanh mà không cần CPU liên tục kiểm tra các thiết bị, và là cách hệ điều hành đa nhiệm hóa.

"Giải thích cách phát hiện và xử lý một ngắt từ thiết bị đầu vào trong chu kỳ F-E" là câu trả lời điểm 4 với các ý sau: thiết bị gửi tín hiệu ngắt đặt cờ ngắt trong đăng ký ngắt; bộ xử lý kiểm tra đăng ký này ở cuối mỗi chu kỳ lấy-thực thi, sau khi lệnh hiện tại đã hoàn thành thực thi; nếu có cờ được đặt và ngắt có mức ưu tiên cao hơn tác vụ hiện tại, nội dung của PC và các thanh ghi khác được lưu lên ngăn xếp; địa chỉ của chương trình phục vụ ngắt được nạp vào PC và chương trình chạy; khi nó kết thúc, các giá trị đã lưu được phục hồi từ ngăn xếp và chương trình bị gián đoạn tiếp tục từ nơi nó đã dừng.

Các nguyên nhân đáng kể tên: ngắt phần cứng từ thiết bị (nhấn phím, bộ đệm máy in trống, gói tin mạng đến), ngắt phần mềm từ lỗi (chia cho không, lệnh bất hợp lệ, tràn số học), ngắt bộ đếm từ hệ điều hành đánh dấu hết thời lượng, và cảnh báo mất điện.

Sơ đồ quy trình xử lý ngắt: chương trình đang chạy bị gián đoạn, CPU hoàn thành lệnh hiện tại, lưu trạng thái (PC và thanh ghi) lên ngăn xếp, chạy chương trình phục vụ ngắt, phục hồi trạng thái và tiếp tục
Cách một ngắt tích hợp vào chu kỳ lấy-thực thi
Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
interrupt/ˈɪntərʌpt/ ngắt
4.2

Assembly language and machine code · ⁨Ngôn ngữ assembly và mã máy⁩

Syllabus · ⁨Chương trình⁩
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
Tiếng Việt
Thí sinh cần có thể: Ghi chú và hướng dẫn
Thể hiện sự hiểu biết về mối quan hệ giữa ngôn ngữ assembly và mã máy
Mô tả các giai đoạn khác nhau của quy trình liên kết cho trình liên kết hai lượt Áp dụng quy trình trình liên kết hai lượt vào một chương trình ngôn ngữIOException đơn giản được cho
Theo dõi một chương trình ngôn ngữIOException đơn giản được cho
Thể hiện sự hiểu biết rằng một tập lệnh được nhóm lại Bao gồm các nhóm sau: • Di chuyển dữ liệu • Nhập và xuất dữ liệu • Phép toán số học • Lệnh không điều kiện và có điều kiện • Lệnh so sánh
Thể hiện sự hiểu biết và có khả năng sử dụng các chế độ địa chỉ khác nhau Bao gồm ngay, trực tiếp, gián tiếp, lưu trữ theo chỉ mục, tương đối

Source: Cambridge International syllabus · ⁨Nguồn: Chương trình 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.

Tiếng Việt

CPU thực tế chạy mã máy — các mẫu bit, đặc thù cho một kiến trúc. Ngôn ngữ assembly là dạng dễ đọc, với một lệnh cho mỗi lệnh máy, được viết bằng biểu tượng như LDD, ADD, JMP. Một trình biên dịch assembly dịch nó sang mã máy.

Một trình biên dịch assembler dịch các ký hiệu assembly thành các mẫu bit mã máy
Trình biên dịch assembly biến biểu tượng thành các mẫu bit mã máy

Trình biên dịch assembly hai lượt

Trình biên dịch assembly hai lượt đọc nguồn hai lần:

  • lượt 1 xây dựng bảng ký hiệu: mỗi lần một nhãn (như LOOP:) xuất hiện, ghi nhận địa chỉ của nó; chưa có mã code nào.
  • lượt 2 tạo mã: dịch từng lệnh, và khi một lệnh tham chiếu đến một nhãn (như JMP LOOP), tra cứu địa chỉ của nó trong bảng ký hiệu.

Hai lượt xử lý các tham chiếu tới trước (lệnh nhảy đến một nhãn được định nghĩa sau).

Ví dụ đã làm. Áp dụng quy trình hai lượt cho chương trình này, với lệnh đầu tiên được lưu tại địa chỉ 100.

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

Lượt 1 đọc từng dòng, đếm địa chỉ sẽ chiếm giữ, và ghi nhận mọi nhãn trong bảng ký hiệu: LOOP = 101 (dòng DEC) và COUNT = 105 (dòng dữ liệu). Không có mã code nào được tạo ra. Lượt 2 đọc lại chương trình và dịch từng dòng thành mã máy, thay thế mỗi biểu tượng bằng opcode của nó và mỗi địa chỉ ký hiệu bằng số từ bảng ký hiệu: LDD COUNT trở thành opcode cho LDD với toán tử 105, và JPN LOOP trở thành opcode cho JPN với toán tử 101. Lệnh nhảy ngược lại LOOP có thể được giải quyết trong một lượt, nhưng một lệnh nhảy tiến đến một nhãn chưa thấy trước đó thì không, đó là lý do trình biên dịch thực hiện hai lượt.

Ví dụ về tập lệnh

Cambridge sử dụng một tập hợp nhỏ chung, được in trong bảng tham chiếu của đề bài, với một thanh ghi đa năng, bộ cộng tích lũy (ACC), và một thanh chỉ mục (IX). Một toán hạng viết #n là số thập phân, Bn là số nhị phân và &n là số thập lục phân; <address> là số vị trí hoặc nhãn.

Nhóm Lệnh Chức năng
Di chuyển dữ liệu LDM #n nạp số n vào ACC (ngay lập tức)
LDD <address> nạp nội dung của địa chỉ vào ACC (trực tiếp)
LDI <address> địa chỉ chứa một địa chỉ khác; nạp nội dung của địa chỉ đó vào ACC (gián tiếp)
LDX <address> thêm IX vào địa chỉ và nạp nội dung của kết quả vào ACC (chỉ mục)
LDR #n nạp số n vào IX
MOV <register> sao chép ACC vào thanh ghi được chỉ định (IX)
STO <address> lưu nội dung của ACC tại địa chỉ
Nhập và xuất IN đọc một lần nhấn phím và đưa mã ASCII của nó vào ACC
OUT xuất ký tự có mã ASCII nằm trong ACC
Số học ADD <address> / ADD #n thêm nội dung của địa chỉ, hoặc số, vào ACC
SUB <address> / SUB #n trừ khỏi ACC
INC <register> / DEC <register> thêm 1 vào, hoặc trừ 1 khỏi, ACC hoặc IX
So sánh CMP <address> / CMP #n so sánh ACC với nội dung của địa chỉ, hoặc với n, và đặt cờ
CMI <address> so sánh ACC với nội dung của địa chỉ được lưu tại địa chỉ (gián tiếp)
Nhảy JMP <address> nhảy đến địa chỉ không điều kiện
JPE <address> / JPN <address> nhảy nếu phép so sánh cuối cùng bằng / không bằng
Thao tác bit AND, OR, XOR với #n, Bn, &n hoặc <address> thao tác bit trên ACC
LSL #n / LSR #n dịch chuyển ACC theo logic n vị trí sang trái hoặc phải
END kết thúc chương trình

Câu hỏi "câu lệnh ngôn ngữ assembly được nhóm lại" yêu cầu tên các nhóm và một câu lệnh từ mỗi nhóm: di chuyển dữ liệu, nhập xuất, số học, nhảy vô điều kiện và có điều kiện, so sánh, và thao tác bit.

Explore · ⁨Khám phá⁩

How a two-pass assembler works · ⁨Cách hoạt động của trình biên dịch assembly hai lượt⁩

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. · ⁨Hãy xem xét từng bước. Trình biên dịch đọc mã nguồn của bạn hai lần: lượt 1 chỉ xác định vị trí của mọi nhãn, để lượt 2 có thể điền đầy đủ các địa chỉ — đó là cách một lệnh nhảy đến một nhãn được định nghĩa sau vẫn hoạt động.⁩

Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
register/ˈredʒɪstə/ đăng ký (register)
control unit/kənˈtrəʊl ˈjuːnɪt/ đơn vị điều khiển
clock speed/klɒk spiːd/ tốc độ xung nhịp
assembler/əˈsemblə/ assembler
symbol table/ˈsɪmbl ˈteɪbl/ bảng ký hiệu
label/ˈleɪbl/ nhãn dán
forward references/ˈfɔːwəd ˈrefrənsɪz/ tham chiếu tới trước
opcode/ˈɒpkəʊd/ opcode
4.2

Addressing modes · ⁨Các chế độ trỏ địa chỉ⁩

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).

Tiếng Việt

Chế độ trỏ địa chỉ (các chế độ truy cập) cho biết CPU tìm toán hạng như thế nào:

  • trỏ địa chỉ ngay lập tức — toán hạng là giá trị trong câu lệnh. LDM #10 nạp 10.
  • trỏ địa chỉ trực tiếp — câu lệnh chứa một địa chỉ; toán hạng là giá trị tại đó. LDD 200.
  • trỏ địa chỉ gián tiếp — câu lệnh chứa một địa chỉ chứa một địa chỉ khác, đó là dữ liệu. LDI 200.
  • địa chỉ hóa chỉ mục — địa chỉ hiệu dụng là address + index register; dùng cho mảng. LDX 100 với IR = 5 đọc địa chỉ 105.

(Trỏ địa chỉ tương đối đưa ra địa chỉ dưới dạng độ lệch từ PC — dùng cho các lệnh nhảy.)

Bốn chế độ trỏ địa chỉ tiếp cận toán hạng của chúng. Ngay lập tức: LDM #10 trả về 10 trực tiếp. Trực tiếp: LDD 200 đọc vị trí bộ nhớ 200 (=42). Gián tiếp: LDI 200 đọc vị trí 200 (=250) sau đó đọc vị trí 250 (=99). Theo chỉ số: LDX 100 với thanh ghi chỉ số 5 đọc vị trí 105 (=7)
Mỗi chế độ trỏ địa chỉ tiếp cận toán hạng của nó như thế nào — ngay lập tức, trực tiếp, gián tiếp và theo chỉ số

Ví dụ đã giải. Bộ nhớ chứa: vị trí 200 = 250, vị trí 250 = 99, vị trí 105 = 7. Thanh chỉ mục chứa 5. Có gì trong bộ cộng tích lũy sau mỗi lệnh LDM #200, LDD 200, LDI 200 và LDX 100? Theo dõi khoảng cách mỗi chế độ phải tìm kiếm. LDM #200 là ngay lập tức - toán hạng là con số được viết trong lệnh, vì vậy bộ cộng tích lũy chứa 200. LDD 200 là trực tiếp - đi đến vị trí 200 và lấy cái gì ở đó: 250. LDI 200 là gián tiếp - vị trí 200 chứa 250, đây là một địa chỉ khác, nên tiếp tục đến vị trí 250: 99. LDX 100 là chỉ mục - thêm thanh chỉ mục vào địa chỉ, $100 + 5 = 105$, và đọc vị trí 105: 7. Đếm số bước nhảy để phân biệt chúng: ngay lập tức 0, trực tiếp 1, gián tiếp 2, chỉ mục 1 (sau khi đã thêm chỉ mục).

Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
Index Register/ˈɪndeks ˈredʒɪstə/ Thanh ghi Chỉ mục (IX)
indexed addressing/ˈɪndekst əˈdresɪŋ/ trỏ theo chỉ mục
general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ thanh ghi đa năng
register transfer/ˈredʒɪstə ˈtrænsfɜː/ di chuyển thanh ghi
control bus/kənˈtrəʊl bʌs/ bus điều khiển
addressing mode/əˈdresɪŋ məʊd/ chế độ trỏ
immediate addressing/ɪˈmiːdɪət əˈdresɪŋ/ trỏ ngay
direct addressing/daɪˈrekt əˈdresɪŋ/ trỏ trực tiếp
indirect addressing/ɪndaɪˈrekt əˈdresɪŋ/ trỏ gián tiếp
relative addressing/ˈrelətɪv əˈdresɪŋ/ trỏ tương đối
logical shift/ˈlɒdʒɪkl ʃɪft/ dịch chuyển logic
cyclic shift/ˈsaɪklɪk ʃɪft/ dịch chuyển tuần hoàn
4.2

Tracing an assembly program · ⁨Theo dõi một chương trình assembly⁩

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.

Tiếng Việt

Để theo dõi nó: tạo bảng với các cột cho PC, ACC, thanh ghi chỉ số, từng biến số và bất kỳ cờ nào. Thực hiện lần lượt các câu lệnh, cập nhật bảng sau mỗi bước; theo dõi các nhánh khi chúng thay đổi PC; dừng lại ở END. Một mẫu phổ biến là vòng lặp qua một mảng sử dụng trỏ địa chỉ theo chỉ số.

Ví dụ đã giải. Theo dõi chương trình này. Địa chỉ 200 chứa 5 và địa chỉ 201 chứa 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

Viết một hàng cho mỗi câu lệnh được thực thi, điền vào chỉ các cột thay đổi:

Câu lệnh ACC 200 201 Kết quả đầu ra
bắt đầu 5 0
LDD 200 5
CMP #0
JPE 108 không được thực hiện
OUT ký tự với mã 5
DEC ACC 4
STO 200 4
LDD 201 0
JMP 100
LDD 200 4

và cứ thế cho đến khi LDD 200 nạp 0, phép so sánh đặt cờ bằng, JPE 108 được thực hiện và chương trình kết thúc. Ba thứ mà giám khảo kiểm tra: một CMP không thay đổi thanh ghi nào, chỉ là cờ; một lệnh nhảy không được thực hiện vẫn tính là đã thực thi; và OUT xuất ra một ký tự, vì vậy nó nằm trong cột kết quả đầu ra, không phải cột ACC. "Nêu ảnh hưởng của việc thay đổi LDD 10 thành LDM #10": ACC sẽ chứa số 10 thay vì nội dung của địa chỉ 10.

4.3

Binary shifts · ⁨Dịch chuyển nhị phân⁩

Syllabus · ⁨Chương trình⁩
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

Source: Cambridge International syllabus · ⁨Nguồn: Chương trình 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.

Tiếng Việt

Dịch chuyển logic di chuyển tất cả các bit sang trái hoặc phải một số vị trí, lấp đầy các vị trí mới bằng 0.

  • dịch chuyển trái 1 (LSL #1) — các bit di chuyển sang trái, một 0 đi vào bên phải; đối với số không dấu thì đây là × 2.
  • dịch chuyển phải 1 (LSR #1) — các bit di chuyển sang phải, một 0 đi vào bên trái; đối với số không dấu thì đây là số nguyên ÷ 2.

Dịch chuyển $n$ vị trí nhân hoặc chia cho $2^{n}$. Ví dụ: 00001011 (11) LSL #1 → 00010110 (22).

Các bit bị đẩy ra khỏi cuối sẽ bị mất, nên phép nhân chỉ chính xác trong khi chúng vẫn là số không. LSL #2 trên số nguyên hai bù 11001010 cho kết quả 00101000: hai 1s bị rơi bên trái đã mất, bit dấu đã thay đổi, và kết quả không còn gấp bốn lần giá trị ban đầu nữa.

Dịch chuyển phải số học giữ nguyên bit dấu để số có dấu âm vẫn giữ âm. Dịch chuyển tuần hoàn (xoay) đưa bit bị rơi ra khỏi một đầu quay trở lại ở đầu kia, vì vậy không có bit nào bị mất.

"Hiển thị kết quả của dịch chuyển phải số học 3 vị trí trên 10011110": sao chép bit dấu vào mỗi vị trí trống, 11110011. Cùng một phép dịch chuyển trên 01011100 cho 00001011. Dịch chuyển trái tuần hoàn 1 trên 10000110 cho 00001101: số 1 đứng đầu xuất hiện lại ở phía bên phải.

Ba phép dịch chuyển 8-bit: LSL #1 biến 00001011 thành 00010110 (times 2, một 0 đi vào bên phải); LSR #1 biến nó thành 00000101 (chia số nguyên cho 2, một 0 đi vào bên trái); ASR #1 biến 10110100 thành 11011010, sao chép bit dấu
Trái logic ($\times 2$), phải logic ($\div 2$) và phải số học (giữ bit dấu)

Sự khác biệt giữa hai phép dịch chuyển phải là một bit duy nhất. Lấy 11110000, là 240 đọc dưới dạng không dấu và $-16$ đọc dưới dạng có dấu. LSR #1 đưa vào một 0 và cho 01111000 $= 120$, đó là nửa đúng của 240. ASR #1 sao chép bit dấu thay vào đó và cho 11111000 $= -8$, đó là nửa đúng của $-16$. Không cái nào sai — mỗi cái đều chia đôi giá trị theo một cách đọc.

Byte 11110000 dịch chuyển phải hai lần: LSR đưa một 0 vào bên trái tạo 01111000 là 120, trong khi ASR sao chép bit dấu tạo 11111000 là trừ 8; hai kết quả chỉ khác nhau ở bit đi vào
Dịch chuyển phải logic và dịch chuyển phải số học trên cùng một byte: chỉ có bit đi vào bên trái khác nhau

Thao tác bit để giám sát/điều khiển

Các thiết bị nhúng thường sử dụng một bit của thanh ghi cho mỗi tín hiệu (ví dụ: bit $n$ = LED $n$). Sử dụng mặt nạ — che mask bit — bạn có thể:

  • bật bit $n$: R = R OR mặt nạ với bit $n$ được bật.
  • tắt bit $n$: R = R AND mặt nạ với bit $n$ tắt và phần còn lại bật.
  • lộn ngược bit $n$: R = R XOR mặt nạ với bit $n$ được bật.
  • kiểm tra bit $n$: R AND mặt nạ, sau đó kiểm tra xem kết quả có khác không.
Che mask bit trên byte 01001000: bật bit 2 bằng OR 00000100 để nhận 01001100; tắt bit 6 bằng AND 10111111 để nhận 00001000; lộn ngược bit 3 bằng XOR 00001000 để nhận 01000000
Bật bit bằng OR, tắt nó bằng AND, lộn ngược nó bằng XOR — mỗi phép toán đều sử dụng một mặt nạ

Thao tác bit nhanh, tốn ít bộ nhớ, và cho phép một byte chứa tối đa 8 trạng thái bật/tắt.

Trong tập lệnh của bài thi, đây là AND, OR và XOR với mặt nạ được viết dưới dạng số thập phân, nhị phân hoặc thập lục phân. Với ACC đang giữ 10101100:

Lệnh Mặt nạ Kết quả trong ACC Tác động
AND B00001111 00001111 00001100 giữ chỉ bốn bit thấp nhất (tắt các bit khác)
OR #1 00000001 10101101 bật bit quan trọng nhất, để nguyên phần còn lại
XOR &FF 11111111 01010011 đảo ngược mọi bit
AND B00001000 sau đó CMP #0 00001000 00001000 kiểm tra bit 3: phép so sánh không bằng nhau, nên bit 3 đã được bật
LSL #2 10110000 dịch chuyển sang trái hai vị trí, mất hai bit đầu
LSR #3 00010101 dịch chuyển sang phải ba vị trí, zeros điền vào bên trái

"Viết lệnh để bật bit quan trọng nhất thành 1 và để nguyên các bit khác": OR #1, hoặc OR B00000001. Để tắt một bit, hãy dùng AND với mặt nạ có 0 ở vị trí đó và 1 ở các vị trí khác; để kiểm tra một bit, hãy AND với mặt nạ chỉ có 1 ở vị trí đó, sau đó so sánh kết quả với 0. Trong thiết bị giám sát, một bit của thanh ghi cho mỗi cảm biến cho phép một đơn vị AND kiểm tra xem cảm biến cụ thể nào đang bật, và một OR bật bit điều khiển cơ cấu chấp hành mà không làm xáo trộn các bit khác.

Explore · ⁨Khám phá⁩

Shift and mask the bits of a byte · ⁨D产业发展 và che masking các bit của một 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. · ⁨Chọn một toán tử và xem từng bit kết quả. D产业发展 (<<) moves every bit up one place (×2); a right shift (>>) di chuyển chúng xuống (÷2); AND với mask xóa các bit bạn không muốn.⁩

Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
English Tiếng Việt
mask/mæsk/ mặt nạ
4.3

Definitions the examiner accepts · ⁨Các định nghĩa mà giám khảo chấp nhận⁩

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
Tiếng Việt

Câu hỏi định nghĩa được chấm dựa trên văn phong cố định. Hãy học thuộc những định nghĩa này và chỉ đưa ra một đáp án duy nhất.

Thuật ngữ Định nghĩa
khái niệm chương trình lưu trữ các lệnh chương trình và dữ liệu đều được lưu trong bộ nhớ chính, và các lệnh được lấy và thực thi từng cái một
thanh ghi một vị trí lưu trữ nhỏ, rất nhanh bên trong bộ xử lý với mục đích cụ thể
Bộ đếm Chương trình thanh ghi chứa địa chỉ của lệnh tiếp theo cần được lấy
Bộ ghi Địa chỉ Bộ nhớ thanh ghi chứa địa chỉ của vị trí bộ nhớ đang đọc từ hoặc ghi vào
Bộ ghi Dữ liệu Bộ nhớ thanh ghi chứa dữ liệu hoặc lệnh vừa được đọc từ, hoặc sắp được ghi vào, bộ nhớ
Bộ ghi Lệnh Hiện tại thanh ghi chứa lệnh đang được giải mã và thực thi
Bộ tích lũy thanh ghi đa năng chứa kết quả của phép toán số học hoặc logic cuối cùng
bộ nhớ đệm bộ nhớ nhỏ, nhanh gần bộ xử lý chứa các lệnh và dữ liệu thường xuyên được sử dụng
ngắt tín hiệu từ thiết bị hoặc chương trình khiến bộ xử lý tạm dừng tác vụ hiện tại và chạy thủ tục xử lý ngắt
ngôn ngữ assembly ngôn ngữ cấp thấp mà mỗi lệnh ký hiệu tương ứng với một lệnh mã máy
địa chỉ ngay lập tức toán tử là giá trị được viết trong lệnh
địa chỉ trực tiếp toán tử là nội dung của địa chỉ được viết trong lệnh
địa chỉ gián tiếp địa chỉ trong lệnh chứa địa chỉ của toán tử
địa chỉ chỉ mục địa chỉ của toán tử là địa chỉ trong lệnh cộng với nội dung của thanh ghi chỉ mục
địa chỉ tương đối địa chỉ của toán tử được đưa ra như một độ lệch từ địa chỉ của lệnh hiện tại
dịch chuyển logic mọi bit di chuyển số vị trí cho trước và zeros điền vào các vị trí trống
4.3

Exam tips · ⁨Mẹo làm bài thi⁩

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.
Tiếng Việt
  • Học chu kỳ lấy-thực thi theo thuật toán truyền thanh ghi (PC, MAR, MDR, CIR, ACC) và thứ gì tăng PC.
  • Tên công việc của mỗi thanh ghi; bus địa chỉ chỉ một chiều, bus dữ liệu hai chiều.
  • Phân biệt các chế độ địa chỉ (ngay lập tức, trực tiếp, gián tiếp, chỉ mục) — câu hỏi thường gặp.
  • Giải thích cách tốc độ xung nhịp, số nhân, kích thước bộ nhớ đệm và độ dài từ ảnh hưởng đến hiệu suất.
  • Đối với dịch chuyển nhị phân, xác định nó là logic hay số học; dịch chuyển sang trái nhân với 2, dịch chuyển sang phải chia cho 2.

Lỗi thường gặp

  • Nói rằng PC chứa lệnh hiện tại, hoặc MDR chứa địa chỉ. PC chứa địa chỉ của lệnh tiếp theo; MDR chứa dữ liệu hoặc lệnh, không bao giờ chứa địa chỉ.
  • Bỏ qua sự gia tăng của PC trong bước lấy, hoặc đặt nó sau bước thực thi. Nó xảy ra ngay khi địa chỉ đã được sao chép sang MAR.
  • Đọc LDD 10 là "tải 10". LDD 10 tải nội dung của địa chỉ 10; LDM #10 tải số 10.
  • Đặt một giá trị vào cột ACC cho CMP hoặc OUT. Phép so sánh chỉ đặt cờ; đầu ra sẽ đi đến cột đầu ra.
  • Nói rằng một ngắt được xử lý "ngay lập tức". Bộ xử lý hoàn thành lệnh hiện tại và kiểm tra ngắt vào cuối chu kỳ.
  • Sử dụng dịch chuyển logic sang phải trên số bù hai âm. Chỉ có dịch chuyển số học mới giữ nguyên bit dấu.

Interactive lessons on this topic · ⁨Bài học tương tác về chủ đề này⁩

Work through it step by step, with instant-check exercises. · ⁨Làm theo từng bước, kèm theo bài tập kiểm tra ngay lập tức.⁩

Past Papers · ⁨Đề thi cũ⁩

More topics in A-Level Computer Science · ⁨Khoa học máy tính A-Level⁩ · ⁨Nhiều chủ đề hơn trong A-Level Computer Science · ⁨Khoa học máy tính A-Level⁩⁩

Log in or create account · ⁨Đăng nhập hoặc tạo tài khoản⁩

IGCSE, A-Level & AP