Mục lục bài họcĐang ở d04-b1
← A-Level Computer Science
0/30 bài đã học xong
Chương 4 · Hardware and Processor Fundamentals · Bài 1/3 của chương · bài 10/30 của A-Level Computer Science

Von Neumann architecture, registers and buses

Kiến trúc von Neumann, thanh ghi và bus
← Mục lục bài học
Lý thuyết · English

The stored-program idea

In a von Neumann machine, instructions and data are held in the same memory and travel on the same buses. That is what makes a computer general-purpose — change the program, change the machine. It is also the source of the von Neumann bottleneck: the processor cannot fetch an instruction and its data at the same instant.

Inside the CPU

The control unit decodes instructions and generates the timing signals. The ALU performs arithmetic and logic. Registers, each with one job:

PC (program counter) holds the address of the next instruction.
MAR (memory address register) holds the address being accessed.
MDR (memory data register) holds the data or instruction just fetched, or about to be written.
CIR (current instruction register) holds the instruction being executed.
ACC (accumulator) holds the result of ALU operations.
Status register holds flags such as carry, negative and overflow.

Three buses

The address bus is unidirectional and its width sets the maximum addressable memory ($n$ lines address $2^n$ locations). The data bus is bidirectional and its width sets how many bits move per transfer. The control bus carries signals such as read, write, clock and interrupt request.

What actually makes a processor faster

Clock speed, number of cores, cache size and word length all contribute, and each has a limit. More cores only help software written to use them; a larger cache helps until the working set fits; a faster clock produces more heat. Exam answers must name the limit, not just the benefit.

Giải thích tiếng Việt

Ý tưởng chương trình lưu trữ

Trong máy von Neumann, lệnh và dữ liệu nằm trong cùng một bộ nhớ và đi trên cùng các bus. Chính điều đó khiến máy tính trở thành thiết bị đa dụng — đổi chương trình là đổi công dụng của máy. Nó cũng là nguồn gốc của nút cổ chai von Neumann: bộ xử lý không thể nạp lệnh và nạp dữ liệu của lệnh đó cùng một lúc.

Bên trong CPU

Khối điều khiển giải mã lệnh và phát tín hiệu định thời. ALU thực hiện phép toán số học và logic. Các thanh ghi, mỗi cái một việc:

PC (bộ đếm chương trình) giữ địa chỉ của lệnh kế tiếp.
MAR (thanh ghi địa chỉ bộ nhớ) giữ địa chỉ đang được truy cập.
MDR (thanh ghi dữ liệu bộ nhớ) giữ dữ liệu hoặc lệnh vừa nạp về, hoặc sắp ghi ra.
CIR (thanh ghi lệnh hiện hành) giữ lệnh đang được thực hiện.
ACC (bộ tích luỹ) giữ kết quả các phép của ALU.
Thanh ghi trạng thái giữ các cờ như nhớ, âm và tràn số.

Ba bus

Bus địa chỉ đi một chiều và độ rộng của nó quyết định dung lượng nhớ tối đa ($n$ đường địa chỉ được $2^n$ ô nhớ). Bus dữ liệu đi hai chiều và độ rộng quyết định mỗi lần chuyển được bao nhiêu bit. Bus điều khiển mang các tín hiệu như đọc, ghi, xung nhịp và yêu cầu ngắt.

Thứ gì thật sự làm bộ xử lý nhanh hơn

Tốc độ xung nhịp, số nhân, dung lượng bộ nhớ đệm và độ dài từ đều góp phần, và mỗi thứ đều có giới hạn. Thêm nhân chỉ có ích nếu phần mềm được viết để dùng nhiều nhân; bộ nhớ đệm lớn hơn chỉ giúp tới khi tập dữ liệu đang dùng vừa đủ nằm trong đó; xung nhịp nhanh hơn sinh nhiều nhiệt hơn. Bài thi phải nêu được GIỚI HẠN chứ không chỉ nêu lợi ích.

Kien truc von Neumann — ba bus noi tat caCPUCU · ALUPC · MAR · MDRCIR · ACCBO NHO CHINHlenh VA du lieunam chung mot chobus dia chi (1 chieu)bus du lieu (2 chieu)bus dieu khienNut co chai von Neumann: lenh va du lieu dung CHUNG mot bus-> do rong bus dia chi quyet dinh dung luong nho toi da-> do rong bus du lieu quyet dinh moi lan chuyen duoc bao nhieu bit
Ba bus là ba câu hỏi thi khác nhau: bus địa chỉ hỏi dung lượng nhớ tối đa, bus dữ liệu hỏi thông lượng, bus điều khiển hỏi ngắt và tín hiệu đọc/ghi.
Ví dụ — tính dung lượng nhớ từ độ rộng bus

Một máy tính có bus địa chỉ $20$ đường và bus dữ liệu $16$ đường.

(a) Tính số ô nhớ tối đa có thể địa chỉ hoá. (b) Nếu mỗi ô nhớ chứa một byte, dung lượng nhớ tối đa là bao nhiêu? (c) Nếu mở rộng bus địa chỉ lên $24$ đường thì dung lượng tối đa tăng bao nhiêu lần?

Giải.

(a) $n$ đường địa chỉ cho $2^n$ tổ hợp, mỗi tổ hợp là một địa chỉ.

$2^{20}=1\,048\,576$ ô nhớ, tức $1$ Mi ô nhớ.

(b) Mỗi ô một byte ⇒ dung lượng tối đa $=1\,048\,576$ byte $=\mathbf{1}$ MiB.

Chú ý: bus DỮ LIỆU $16$ đường không ảnh hưởng tới câu này. Nó cho biết mỗi lần chuyển được $16$ bit, tức lấy được hai ô nhớ một lượt — đó là chuyện thông lượng, không phải chuyện dung lượng.

(c) $2^{24}=16\,777\,216$ ô, tức $16$ MiB.

Tăng $\dfrac{2^{24}}{2^{20}}=2^4=\mathbf{16}$ lần.

Bài học về luỹ thừa. Thêm $4$ đường địa chỉ — nghe như một thay đổi nhỏ — làm dung lượng tối đa gấp $16$ lần. Cứ thêm một đường là gấp đôi. Đây cũng là lý do IPv4 với $32$ bit cạn địa chỉ trong khi IPv6 với $128$ bit thì không: chênh lệch không phải bốn lần mà là $2^{96}$ lần.

Bẫy hay mất điểm — Dùng bus DỮ LIỆU để tính dung lượng nhớ tối đa. Dung lượng do bus ĐỊA CHỈ quyết định ($2^n$ ô); bus dữ liệu chỉ quyết định mỗi lần chuyển được bao nhiêu bit. Hoán đổi hai cái này là mất trọn câu tính toán.
Phải nhớ — Thuộc vai trò từng thanh ghi bằng một câu ngắn cho mỗi cái, nhớ bus địa chỉ một chiều và quyết định dung lượng, bus dữ liệu hai chiều và quyết định thông lượng. Khi nói về hiệu năng, luôn kèm giới hạn của biện pháp.

Đọc xong rồi — làm thử ngay

Bài tập của chương Hardware and Processor Fundamentals gồm 14 câu trắc nghiệm và 3 đề tự luận. Đáp án hiện ngay khi chọn, miễn phí.

Làm bài tập chương →