Kiến trúc Von Neumann và CPU
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| processor/ˈprəʊsesə/ | bộ xử lý |
| registers/ˈredʒɪstəz/ | bộ nhớ tạm |
| buses/ˈbʌsɪz/ | tổng dữ liệu |
| 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ộ lưu truy cập ngay |
| stored program/stɔːd ˈprəʊɡræm/ | chương trình lưu trữ |
| ALU/ˌeɪ el ˈjuː/ | ALU |
| control unit/kənˈtrəʊl ˈjuːnɪt/ | đơn vị điều khiển |
| system clock/ˈsɪstəm klɒk/ | đồng hồ hệ thống |
| clock speed/klɒk spiːd/ | tốc độ xung nhịp |
| general-purpose registers/ˈdʒenərəl ˈpɜːpəs ˈredʒɪstəz/ | bộ nhớ tạm mục đích chung |
| special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/ | bộ nhớ tạm mục đích đặc biệt |
| Program Counter/ˈprəʊɡræm ˈkaʊntə/ | Bộ đếm chương trình |
| Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/ | Bộ ghi địa chỉ bộ nhớ |
| Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/ | Bộ ghi dữ liệu bộ nhớ |
| Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/ | Thanh ghi lệnh hiện tại |
| accumulator/əˈkjuːmjʊleɪtə/ | Thoday cộng |
| Index Register/ˈɪndeks ˈredʒɪstə/ | Thanh chỉ số |
| Status Register/ˈsteɪtəs ˈredʒɪstə/ | Thanh trạng thái |
| flag/flæɡ/ | Cờ |
| address bus/əˈdres bʌs/ | Bus địa chỉ |
| data bus/ˈdeɪtə bʌs/ | Bus dữ liệu |
| control bus/kənˈtrəʊl bʌs/ | Bus điều khiển |
| register transfer/ˈredʒɪstə ˈtrænsfɜː/ | Truyền thanh |
Bản báo mà mọi máy tính vẫn tuân theo
- Tháng Sáu năm 1945, John von Neumann phát hành một bản nháp đánh máy mô tả một chiếc máy chưa từng được chế tạo: EDVAC.
- Ý tưởng của nó rất đơn giản và mới mẻ. Giữ chương trình trong cùng bộ nhớ với dữ liệu, và để một bộ xử lý lấy và thực thi các lệnh một lần một.
- Bản nháp chưa bao giờ hoàn tất, nhưng thiết kế đã được sao chép khắp nơi. Điện thoại, laptop và máy chủ trường học của bạn đều được xây dựng dựa trên nó.
- Bài học này phân tích mô hình ra: bộ nhớ, các phần của bộ xử lý, các thanh ghi và các bus giữa chúng.
Mô hình Von Neumann
- Kiến trúc Von Neumann có một bộ nhớ duy nhất, Immediate Access Store (IAS), chứa cả lệnh chương trình và dữ liệu. Đó là khái niệm chương trình lưu trữ.
- Bộ xử lý lấy từng lệnh từ bộ nhớ và thực thi nó, một lần một, theo thứ tự địa chỉ trừ khi một lệnh nhánh thay đổi luồng thực thi.
- Lệnh, dữ liệu và địa chỉ đều di chuyển giữa bộ xử lý và bộ nhớ dọc theo các bus chung.

Một bộ nhớ, một bộ xử lý, ba bus
Tại sao chương trình lưu trữ lại quan trọng
- Thay đổi chương trình trong bộ nhớ và cùng phần cứng đó làm một công việc khác. Không cần đi lại dây, không cần máy mới.
- Một chương trình chỉ là dữ liệu cho đến khi nó được lấy, vì vậy nó có thể được tải từ đĩa, gửi qua mạng hoặc viết bởi một chương trình khác.
- Cách diễn đạt đề thi: lệnh và dữ liệu được lưu trong cùng bộ nhớ, và lệnh được lấy một lần một và thực thi bởi bộ xử lý.
Ý tưởng máy lưu trữ chương trình (Von Neumann) có nghĩa là:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Một bộ nhớ chứa cả lệnh và dữ liệu; việc thay đổi chương trình đã lưu sẽ thay đổi những gì máy tính làm, mà không cần đi lại dây điện.
ALU, đơn vị điều khiển và đồng hồ
- ALU (Arithmetic and Logic Unit) thực hiện phép tính (cộng, trừ) và logic (AND, OR, so sánh), lấy toán hạng từ các thanh ghi và đưa kết quả trả lại vào một thanh ghi.
- Đơn vị điều khiển (CU) giải mã từng lệnh và gửi các 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ì, sắp xếp đọc và ghi bộ nhớ.
- Đồng hồ hệ thống gửi một dòng xung liên tục. Đơn vị điều khiển tiến trình chu kỳ thêm một bước mỗi xung, vì vậy mọi bộ phận thay đổi trạng thái cùng lúc; tốc độ đồng hồ, tính bằng GHz, là số xung trong một giây.

Toàn bộ bộ xử lý là một con chip nhỏ
ALU chịu trách nhiệm cho:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Bộ xử lý Số học và Logic thực hiện tính toán và so sánh logic. Giải mã là công việc của đơn vị điều khiển.
Đơn vị ____ giải mã từng lệnh và gửi các tín hiệu điều khiển để thực thi nó.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Đơn vị điều khiển giải mã và phát tín hiệu; ALU làm số học và logic; xung nhịp giữ chúng đồng bộ.
Các thanh ghi
- Thanh ghi là những bộ nhớ nhỏ, cực nhanh bên trong bộ xử lý. Thanh ghi mục đích chung giữ các giá trị tạm thời của lập trình viên. Thanh ghi mục đích đặc biệt mỗi cái có một nhiệm vụ cố định trong chu trình.
| Thanh ghi | Nhiệm vụ |
|---|---|
| Program Counter (PC) | địa chỉ của lệnh tiếp theo sẽ được lấy ra |
| Memory Address Register (MAR) | địa chỉ của vị trí đang đọc hoặc ghi vào |
| Memory Data Register (MDR) | dữ liệu hoặc lệnh vừa được đọc từ, hoặc sắp được ghi vào, vị trí đó |
| Current Instruction Register (CIR) | lệnh đang được giải mã và thực thi hiện tại |
| Accumulator (ACC) | kết quả của phép toán số học hoặc logic cuối cùng |
| Index Register (IX) | độ lệch được thêm vào một địa chỉ trong phương pháp địa chỉ hóa theo chỉ mục |
| Status Register | các dấu hiệu (flags) được thiết lập bởi thao tác cuối cùng |

Các thanh ghi, đơn vị điều khiển và ALU, được liên kết bởi các总线
Chạm vào các bộ phận của máy tính Von Neumann
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.
Ghép mỗi thanh ghi mục đích đặc biệt với nội dung nó chứa.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
PC trỏ đến lệnh tiếp theo, CIR giữ lệnh hiện tại, MAR/MDR là cặp địa chỉ/dữ liệu cho bộ nhớ, ACC giữ kết quả đang chạy.
Ví dụ minh họa: "mô tả vai trò của mỗi thanh ghi"
- Câu hỏi dạng bảng yêu cầu một câu chính xác cho mỗi thanh ghi, và những từ khóa để nhận điểm được in đậm.
- PC: giữ địa chỉ của lệnh tiếp theo cần được lấy ra. MAR: giữ địa chỉ của vị trí đang truy cập.
- MDR: giữ dữ liệu vừa được đọc từ, hoặc sắp được ghi vào, bộ nhớ. CIR: giữ lệnh đang được giải mã và thực thi.
- ACC: giữ kết quả của phép toán ALU lần cuối. Lưu ý rằng hai thanh ghi giữ địa chỉ, hai thanh ghi giữ nội dung, và một thanh ghi giữ kết quả.
Các dấu hiệu (flags) của thanh trạng thái
- Mỗi dấu hiệu (flag) là một bit, được thiết lập hoặc xóa bởi ALU sau một thao tác: dấu hiệu không khi kết quả hoặc so sánh bằng không, dấu hiệu mang khi phép cộng vượt quá giới hạn của thanh ghi, dấu hiệu âm khi kết quả là số âm, dấu hiệu tràn khi kết quả có dấu không vừa khít.
- Lệnh nhảy có điều kiện đọc một dấu hiệu để quyết định có rẽ nhánh hay không. Đó là cách mà
IFvà vòng lặp đạt đến phần cứng. - Dấu hiệu tràn cũng có thể gây ra ngắt interrupt, điều này sẽ được xử lý trong bài học tiếp theo.
Trong số này, cái nào là cờ trong thanh ghi trạng thái? Chọn tất cả những đáp án đúng.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Carry, zero, negative và overflow là các cờ một bit do ALU thiết lập. Bộ đếm chương trình là một thanh ghi riêng biệt chứa địa chỉ.
Ba loại总线
- Địa chỉ总线 (address bus) truyền địa chỉ mà bộ xử lý muốn truy cập. Nó là một chiều, từ bộ xử lý đến bộ nhớ.
- Dữ liệu总线 (data bus) truyền dữ liệu hoặc lệnh bản thân. Nó là hai chiều, vì việc đọc và ghi đi theo hướng ngược nhau.
- Điều khiển总线 (control bus) truyền tín hiệu điều khiển như đọc, ghi, định thời và ngắt. Nó là hai chiều.

Ba总线 hệ thống kết nối bộ xử lý, bộ nhớ và đầu vào/đầu ra
Bus nào là một chiều (chỉ mang thông tin theo một hướng)?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Bus địa chỉ là một chiều (CPU → bộ nhớ). Bus dữ liệu và bus điều khiển là hai chiều.
Ví dụ minh họa: rộng bao nhiêu thì đủ?
- Một địa chỉ总线 $n$-bit có thể truy cập $2^{n}$ vị trí. Bus 16-bit đạt đến $2^{16} = 65\,536$ vị trí; bus 32-bit đạt đến $2^{32}$, khoảng bốn tỷ.
- "Nêu một hệ quả của việc tăng độ rộng của địa chỉ总线": nhiều vị trí bộ nhớ hơn có thể được truy cập.
- "Nêu một hệ quả của việc tăng độ rộng của dữ liệu总线": nhiều bit hơn di chuyển trong mỗi lượt truyền, do đó ít lượt truyền hơn là cần thiết cho cùng một lượng dữ liệu.
- Tăng độ rộng địa chỉ总线 thì bạn có thể có nhiều bộ nhớ hơn; tăng độ rộng dữ liệu总线 thì bạn truyền nó nhanh hơn.
Một bus địa chỉ 16-bit có thể truy cập bao nhiêu ô nhớ?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
$2^{16} = 65\,536$ ô nhớ.
Bus địa chỉ rộng hơn giúp CPU truy cập được nhiều ô nhớ hơn.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Mỗi đường dẫn địa chỉ bổ sung gấp đôi phạm vi truy cập — n đường dẫn truy cập 2ⁿ ô nhớ.
Ký hiệu chuyển đổi thanh ghi
- Các chuyển động giữa các thanh ghi và bộ nhớ được viết theo ký hiệu chuyển đổi thanh ghi:
MAR ← [PC]có nghĩa là "sao chép nội dung của PC vào MAR". - Dấu ngoặc vuông có nghĩa là "nội dung của", và
[[MAR]]có nghĩa là "nội dung của vị trí có địa chỉ nằm trong MAR". - Toàn bộ chu trình lấy-thực thi được viết theo cách này trong bài học tiếp theo; ký hiệu này giống với mũi tên gán pseudocode.
MAR ← [PC] có ý nghĩa gì?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
mũi tên chỉ về điểm đích và dấu ngoặc vuông có nghĩa "nội dung của". Đây là bước đầu tiên của mọi lần lấy lệnh.
Điểm số dễ mất
- PC giữ địa chỉ của lệnh tiếp theo, không phải lệnh hiện tại; CIR giữ lệnh, không phải địa chỉ.
- MAR giữ địa chỉ, MDR giữ dữ liệu. Mixing chúng sẽ mất cả hai điểm.
- Chỉ có địa chỉ总线 là một chiều. Nói "tất cả总线 đều một chiều" hoặc "dữ liệu总线 là một chiều" là một lỗi sai thường gặp.
- Các thanh ghi nằm bên trong bộ xử lý, không phải là một phần của RAM, và chúng nhanh hơn bất kỳ bộ nhớ nào.
Bộ đếm chương trình chứa lệnh đang được thực thi hiện tại.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
PC chứa địa chỉ của lệnh tiếp theo. Lệnh hiện tại nằm trong CIR.
Bạn đã nắm vững
- Von Neumann: một bộ nhớ (IAS) chứa cả lệnh và dữ liệu; bộ xử lý lấy và thực thi chúng từng cái một.
- ALU tính toán, CU giải mã và phát tín hiệu, clock duy trì thời gian các bước.
- PC địa chỉ tiếp theo · MAR địa chỉ đang truy cập · MDR dữ liệu · CIR lệnh hiện tại · ACC kết quả · IX độ lệch · thanh trạng thái dấu hiệu.
- địa chỉ总线 một chiều, $2^{n}$ vị trí; dữ liệu và điều khiển总线 hai chiều;
MAR ← [PC]sao chép nội dung của PC vào MAR