| Thí sinh cần có thể: | Ghi chú và hướng dẫn |
|---|---|
| Thể hiện sự hiểu biết về Máy tính tập lệnh đơn giản (RISC) và Máy tính tập lệnh phức tạp (CISC) | Sự khác biệt giữa RISC và CISC Hiểu cách xử lý ngắt trên bộ xử lý CISC và RISC |
| Thể hiện sự hiểu biết về tầm quan trọng/sử dụng pipelining và ký hiệu registers trong bộ xử lý RISC | |
| Thể hiện sự hiểu biết về bốn kiến trúc máy tính cơ bản | SISD, SIMD, MISD, MIMD |
| Thể hiện sự hiểu biết về đặc điểm của máy tính song song quy mô lớn | |
| Thể hiện sự hiểu biết về khái niệm máy ảo | Đưa ra ví dụ về vai trò của máy ảo Hiểu lợi ích và hạn chế của máy ảo |
Phần cứng và máy ảo
Khoa học máy tính A-Level · Chủ đề 15
15:02
RISC, Đường ống & Logic
Hai nhà thiết kế chip đối mặt với cùng một vấn đề: làm cho chương trình chạy nhanh. Người này nói — hãy xây dựng các lệnh mạnh mẽ, để mỗi lệnh làm rất nhiều việc. Người kia nói — hãy giữ…
Giọng đọc tiếng Anh · phụ đề tiếng Anh + 中文 được ghi trực tiếp
15.1
Bộ xử lý RISC so với CISC
Chương trình
Nguồn: Chương trình Cambridge International
Hai kiểu thiết kế CPU. Bản thân CPU cắm vào bo mạch chủ (motherboard), là bo mạch chính kết nối bộ xử lý, bộ nhớ và mọi linh kiện khác của máy tính với nhau.


CISC
CISC (Complex Instruction Set Computers - Máy tính tập lệnh phức tạp) có nhiều, thường phức tạp các lệnh (một lệnh có thể thực hiện nhiều truy cập bộ nhớ và thao tác), có độ dài biến đổi, do đó giải mã rất phức tạp. Nó thực hiện nhiều hơn trong mỗi lệnh bằng phần cứng. Ví dụ: Intel x86.
RISC
RISC (Reduced Instruction Set Computers - Máy tính tập lệnh rút gọn) có một tập hợp nhỏ các lệnh đơn giản, mỗi lệnh thực hiện một thao tác cơ bản, tất cả đều có độ dài cố định (giải mã nhanh). Chỉ có load và store tiếp xúc với bộ nhớ; mọi thứ còn lại là từ register sang register. Chương trình dài hơn nhưng mỗi lệnh chạy nhanh và dự đoán được, phù hợp với kỹ thuật pipeline. Ví dụ: ARM, RISC-V.
| Tính năng | CISC | RISC |
|---|---|---|
| Tập lệnh | nhiều | ít |
| Độ dài lệnh | biến đổi | cố định |
| Truy cập bộ nhớ | nhiều lệnh | chỉ load/store |
| Thân thiện với pipeline | khó hơn | tự nhiên |
| Chu kỳ trên mỗi lệnh | thay đổi | thường là 1 |
Sự đánh đổi là làm nhiều hơn trong mỗi lệnh (CISC) so với việc thực hiện mỗi lệnh nhanh hơn và dự đoán được hơn (RISC). Các chip Intel hiện đại dịch các lệnh CISC thành các micro-ops RISC đơn giản hơn bên trong.
"Xác định bốn đặc điểm của bộ xử lý RISC." Bất kỳ bốn đặc điểm nào: một tập hợp nhỏ các lệnh đơn giản; các lệnh có độ dài cố định (một từ); hầu hết các lệnh hoàn thành trong một chu kỳ xung nhịp; nhiều thanh ghi đa năng; chỉ các lệnh load và store truy cập bộ nhớ (tất cả phép toán là register sang register); điều khiển cứng (không có microcode); được thiết kế cho pipeline; trình biên dịch làm nhiều công việc hơn, nên chương trình chứa nhiều lệnh hơn và cần nhiều bộ nhớ hơn. "Xác định bốn đặc điểm của bộ xử lý CISC." Bất kỳ bốn đặc điểm nào: một tập hợp lớn các lệnh, nhiều trong số đó phức tạp (một lệnh có thể thực hiện nhiều thao tác); các lệnh có độ dài biến đổi; các lệnh mất vài chu kỳ xung nhịp; ít thanh ghi hơn; các lệnh có thể truy cập bộ nhớ trực tiếp; điều khiển viên lập trình (microprogrammed); ít phù hợp với pipeline; ngắn hơn, nên trình biên dịch đơn giản hơn và cần ít bộ nhớ hơn. "Mô tả ý nghĩa của RISC và CISC" (hai điểm mỗi câu): nêu tên viết tắt và đưa ra ý tưởng định nghĩa (các lệnh đơn giản một chu kỳ ít; các lệnh phức tạp nhiều chu kỳ nhiều).
Xử lý ngắt trên hai kiến trúc. Trên bộ xử lý CISC, lệnh hiện tại, dù phức tạp thế nào đi nữa, cũng phải được hoàn thành trước khi ngắt được phục vụ; sau đó, bộ xử lý lưu nội dung các thanh ghi (bao gồm bộ đếm chương trình) lên ngăn xếp, nhảy đến thủ tục xử lý ngắt, và khôi phục các thanh ghi sau này. Trên bộ xử lý RISC có pipeline, vài lệnh đang ở giữa quá trình thực thi ngay khi ngắt xuất hiện, vì vậy bộ xử lý phải hoặc để mọi lệnh trong pipeline finish, hoặc xóa bỏ (flush) các lệnh đã thực thi một phần và khởi động lại chúng sau khi ngắt; theo bất kỳ cách nào, pipeline bị trống, các thanh ghi được lưu, và thủ tục phục vụ chạy. Cách diễn đạt đề thi: "kỹ thuật pipeline làm việc xử lý ngắt phức tạp hơn, vì nội dung của pipeline phải được xử lý trước khi ngắt có thể được phục vụ".
| English | Tiếng Việt |
|---|---|
| motherboard/ˈmʌðəbɔːd/ | bo mạch chủ |
| CISC/sɪsk/ | CISC |
| RISC/rɪsk/ | RISC |
| register/ˈredʒɪstə/ | đăng ký (register) |
| interrupt/ˈɪntərʌpt/ | ngắt |
| pipeline/ˈpaɪplaɪn/ | dòng chảy |
15.1
Pipeline
Một pipeline xử lý các lệnh theo các giai đoạn xen kẽ, giống như dây chuyền lắp ráp: Nhặt lệnh → Giải mã → Thực thi (trong ALU) → Truy cập bộ nhớ → Ghi lại. Mỗi giai đoạn làm việc với một lệnh khác nhau cùng lúc, vì vậy một khi pipeline đầy, một lệnh hoàn thành mỗi chu kỳ. Các lệnh RISC độ dài cố định, đơn giản khiến mỗi giai đoạn mất cùng một khoảng thời gian. Một pipeline có thể bị tắc nghẽn do một nguy hiểm — nguy hiểm dữ liệu (một lệnh cần kết quả chưa sẵn có) hoặc nguy hiểm điều khiển (nhánh làm địa chỉ tiếp theo không xác định).

Các chip RISC giữ dữ liệu trong nhiều thanh ghi vì bộ nhớ chậm và thanh ghi nhanh; trình biên dịch phân bổ giá trị cho các thanh ghi một cách thông minh.
"Mô tả việc sử dụng pipeline trong bộ xử lý RISC" (ba điểm). (1) Chu kỳ nhặt-thực thi được chia thành các giai đoạn (nhặt, giải mã, thực thi, truy cập bộ nhớ, ghi lại); (2) nhiều lệnh nằm trong pipeline cùng lúc, mỗi lệnh ở một giai đoạn khác nhau, nên trong khi một lệnh đang được thực thi thì lệnh tiếp theo đang được giải mã và lệnh sau đó đang được nhặt; (3) một lệnh mới được bắt đầu, và một lệnh hoàn thành, trong mỗi chu kỳ xung nhịp một khi pipeline đầy, điều này tăng thông lượng (số lệnh hoàn thành mỗi giây), mặc dù mỗi lệnh vẫn mất cùng một thời gian nếu xét riêng lẻ. Các lệnh RISC độ dài cố định một chu kỳ là yếu tố khiến các giai đoạn bằng nhau và cho phép pipeline hoạt động.
Ví dụ có lời giải. Một bộ xử lý sử dụng năm giai đoạn pipeline (IF, ID, OF, EX, WB). Bốn lệnh đi vào pipeline lần lượt. Lệnh cuối cùng hoàn thành ở chu kỳ nào, và sẽ mất bao nhiêu chu kỳ để bốn lệnh đó hoàn thành nếu không có pipeline?
Lệnh 1 chiếm IF ở chu kỳ 1, ID ở 2, OF ở 3, EX ở 4 và WB ở 5; lệnh 2 bắt đầu sau một chu kỳ và hoàn thành ở chu kỳ 6; lệnh 3 ở chu kỳ 7; lệnh 4 ở chu kỳ 8. Nhìn chung $n$ lệnh qua $k$ giai đoạn mất $n + k - 1$ chu kỳ, ở đây là $4 + 5 - 1 = 8$. Không có pipelining, mỗi lệnh cần cả năm chu kỳ trước khi lệnh tiếp theo bắt đầu: $4 \times 5 = 20$ chu kỳ. Bảng đề thi được điền bằng cách viết các giai đoạn của từng lệnh theo đường chéo, mỗi lệnh nằm một cột về phía bên phải so với lệnh trước đó.
Một bộ xử lý chạy nhanh này sinh ra rất nhiều nhiệt, vì vậy một tản nhiệt và quạt đặt ngay trên nó. Các cánh tản nhiệt kim loại spread nhiệt và quạt thổi đi, giữ cho CPU đủ mát để hoạt động.

Cách pipeline được lấp đầy
Xét qua các chu kỳ đồng hồ. Một khi pipeline đã đầy, một lệnh mới hoàn thành sau mỗi chu kỳ — mặc dù mỗi lệnh vẫn mất nhiều giai đoạn — vì các giai đoạn của các lệnh khác nhau trùng lặp với nhau.
| English | Tiếng Việt |
|---|---|
| ALU/ˌeɪ el ˈjuː/ | ALU |
| hazard/ˈhæzəd/ | nguy cơ |
| throughput/ˈθruːpʊt/ | throughput |
| heat-sink/hiːt sɪŋk/ | tản nhiệt |
| Flynn's taxonomy/flɪnz tækˈsɒnəmi/ | Phân loại Flynn |
15.1
Phân loại Flynn
Phân loại Flynn sắp xếp máy tính dựa trên số lượng luồng lệnh và luồng dữ liệu:
- SISD — một lệnh, một luồng dữ liệu (lõi đơn truyền thống).
- SIMD — một lệnh thực hiện trên nhiều mục dữ liệu cùng lúc (GPU, mở rộng vector CPU). Phù hợp cho hình ảnh, video, mảng khoa học.
- MISD — nhiều thao tác trên cùng một dữ liệu; hiếm gặp, chủ yếu là lý thuyết.
- MIMD — nhiều bộ xử lý chạy các lệnh khác nhau trên các dữ liệu khác nhau (CPU đa lõi, cụm máy). Phổ biến nhất.
Mô tả bốn kiến trúc (mỗi câu hai điểm). SISD: một bộ xử lý duy nhất thực thi một lệnh tại một thời điểm trên một mục dữ liệu; không có song song, máy von Neumann truyền thống. SIMD: một lệnh được áp dụng đồng thời lên nhiều mục dữ liệu, bởi nhiều phần tử xử lý hoạt động cùng nhịp; dùng cho xử lý mảng và đồ họa. MISD: nhiều bộ xử lý áp dụng các lệnh khác nhau lên cùng một dữ liệu; ít dùng, ví dụ hệ thống chịu lỗi nơi nhiều bộ xử lý kiểm tra một luồng. MIMD: nhiều bộ xử lý, mỗi cái thực thi lệnh riêng của nó trên dữ liệu riêng của nó, độc lập; máy đa lõi và cụm máy.

Một card đồ họa (với GPU của nó) là ví dụ thực tế của phần cứng SIMD: nó có hàng nghìn nhân nhỏ chạy cùng một lệnh trên nhiều pixel hoặc số cùng lúc, đó là lý do tại sao GPU rất nhanh đối với hình ảnh, video và học máy.


| English | Tiếng Việt |
|---|---|
| SIMD/ˈsɪmdiː/ | SIMD |
| MIMD/ˈmɪmdiː/ | MIMD |
| graphics card/ˈɡræfɪks kɑːd/ | card đồ họa |
| massively parallel/ˈmæsɪvli ˈpærəlel/ | tính song song cực lớn |
| distributed memory/ˈdɪstrɪbjuːtɪd ˈmeməri/ | b bộ nhớ phân tán |
| machine learning/məˈʃiːn ˈlɜːnɪŋ/ | học máy |
| supercomputers/ˌsuːpəkəmˈpjuːtəz/ | siêu máy tính |
15.1
Máy tính song song cực lớn
Hệ thống song song cực lớn sử dụng hàng nghìn bộ xử lý trên mạng tốc độ cao, mỗi bộ có bộ nhớ riêng (bộ nhớ phân tán), trao đổi dữ liệu qua tin nhắn. Nó là MIMD, cần phần mềm được viết đặc biệt (MPI, CUDA), và phù hợp cho mô phỏng khí hậu, huấn luyện học máy quy mô lớn, và thiên văn vật lý. Các siêu máy tính lớn nhất đều là song song cực lớn.
"Nêu đặc điểm của máy tính song song cực lớn" (ba điểm). Một số lượng rất lớn bộ xử lý (hàng nghìn), mỗi cái có bộ nhớ riêng, được kết nối bởi mạng (cổng kết nối tốc độ cao hoặc bus) để chúng có thể gửi tin nhắn cho nhau; chúng làm việc đồng thời trên các phần của cùng một vấn đề, vì vậy vấn đề phải được viết dưới dạng chương trình có thể chia thành các phần chạy song song và tổng hợp kết quả. Đây là cấu hình MIMD.
Các bộ xử lý sống trong các giá máy chủ cao, thường lấp đầy cả một phòng (một trung tâm dữ liệu), được đấu dây với nhau để chúng có thể giải quyết cùng một vấn đề lớn cùng lúc.

| English | Tiếng Việt |
|---|---|
| server/ˈsɜːvə/ | máy chủ |
| data centre/ˈdeɪtə ˈsentə/ | trung tâm dữ liệu |
15.1
Máy ảo
Một máy ảo (VM) là sự mô phỏng phần mềm của toàn bộ máy tính — phần mềm bên trong thấy một CPU, bộ nhớ và ổ đĩa trông thật nhưng được quản lý bởi phần mềm máy chủ.
- một system VM chạy một OS hoàn chỉnh. Một hypervisor tạo và quản lý VMs, mỗi cái khởi động guest OS riêng của nó. Ứng dụng: chạy các OS khác nhau trên một máy; gộp máy chủ; sandboxing (phần mềm rủi ro chạy cô lập); ảnh chụp nhanh.
- một process (language) VM chạy một chương trình trong bytecode di động — JVM (Java), CLR (.NET), CPython. Lợi ích: portability ("viết một lần, chạy mọi nơi"), kiểm tra an toàn runtime, và just-in-time compilation cho tốc độ gần như bản địa. Chi phí là thêm một lớp và cần cài đặt VM.

"Mô tả ý nghĩa của một máy ảo" (hai điểm). Một sự mô phỏng (triển khai) phần mềm của một hệ thống máy tính chạy trên máy chủ và hoạt động, đối với các chương trình chạy bên trong nó, giống như một máy tính vật lý riêng biệt có bộ xử lý, bộ nhớ và bộ lưu trữ riêng. Hệ điều hành chủ chạy trên phần cứng thực tế, quản lý tài nguyên thực và (thông qua hypervisor) tạo ra và kiểm soát các máy ảo; mỗi hệ điều hành khách chạy bên trong một máy ảo, quản lý các ứng dụng trong đó, và không nhận biết được phần cứng của mình là ảo.
Lợi ích (đưa ra hai). Nhiều hệ điều hành khác nhau có thể chạy trên một máy cùng lúc; phần mềm có thể được kiểm thử trên nhiều hệ thống mà không cần mua phần cứng; một hệ thống máy tính mới có thể được mô phỏng và thử nghiệm trước khi chế tạo; mỗi VM được cô lập, nên lỗi sập hoặc malware trong một VM sẽ không ảnh hưởng đến máy chủ hay các VM khác; các VM có thể được sao chép, di chuyển và sao lưu dưới dạng tệp, và một máy chủ có thể được chia sẻ giữa nhiều người dùng, giảm chi phí phần cứng. Hạn chế (đưa ra hai). Một VM chạy chậm hơn phần cứng thực vì mọi lệnh đều phải đi qua lớp mô phỏng; nó tiêu thụ bộ nhớ và công suất xử lý của máy chủ, do đó máy chủ phải mạnh mẽ; một số tính năng hoặc thiết bị phần cứng không được mô phỏng chính xác, nên phần mềm được kiểm thử có thể hoạt động khác trên máy thực; cần bản quyền cho mỗi hệ điều hành khách, và việc thiết lập hệ thống đòi hỏi chuyên môn.
Phòng thí nghiệm khái niệm tin học
Phân loại các ví dụ cụ thể theo ý tưởng tin học mà chúng minh họa.
| English | Tiếng Việt |
|---|---|
| virtual machine/ˈvɜːtʃuːəl məˈʃiːn/ | máy ảo |
| hypervisor/ˌhaɪpəˈvaɪzə/ | hypervisor |
| sandboxing/ˈsændbɒksɪŋ/ | phòng cách ly |
| bytecode/ˈbaɪtkəʊd/ | bytecode |
| just-in-time compilation/dʒʌst ɪn taɪm ˌkɒmpɪˈleɪʃn/ | compilation tức thì (JIT) |
| host operating system/həʊst ˈɒpəreɪtɪŋ ˈsɪstəm/ | hệ điều hành chủ |
| guest operating system/ɡest ˈɒpəreɪtɪŋ ˈsɪstəm/ | hệ điều hành khách |
| Boolean algebra/ˈbuːlɪən ˈældʒɪbrə/ | Đại số Boole |
15.2
Đại số Boole
Chương trình
| Thí sinh cần có thể: | Ghi chú và hướng dẫn |
|---|---|
| Lập bảng chân lý cho các mạch logic bao gồm bộ cộng nửa (half adders) và bộ cộng đầy đủ (full adders) | Có thể bao gồm cửa logic với nhiều hơn hai đầu vào |
| Thể hiện sự hiểu biết về flip-flop (SR, JK) | Vẽ mạch logic và rút ra bảng chân lý cho flip-flop Hiểu vai trò của flip-flops như các phần tử lưu trữ dữ liệu |
| Thể hiện sự hiểu biết về đại số Boolean | Hiểu định luật De Morgan Thực hiện đại số Boolean bằng định luật De Morgan Rút gọn mạch logic/biểu thức bằng đại số Boolean |
| Thể hiện sự hiểu biết về bản đồ Karnaugh (K-map) | Hiểu lợi ích của việc sử dụng bản đồ Karnaugh Giải quyết bài toán logic bằng bản đồ Karnaugh |
Nguồn: Chương trình Cambridge International
Đại số Boole rút gọn biểu thức Boole, những biểu thức này cũng có thể được mô tả bằng bảng chân lý. Ký hiệu: + cho OR, · cho AND (thường bị bỏ qua), gạch ngang phía trên cho NOT.
Các định luật quan trọng bao gồm giao hoán, kết hợp và phân phối (như trong đại số thông thường), cùng:
- định danh $A + 0 = A$, $A \cdot 1 = A$; vô hiệu $A + 1 = 1$, $A \cdot 0 = 0$.
- lũy đẳng $A + A = A$; nghịch đảo $A + \overline{A} = 1$, $A \cdot \overline{A} = 0$.
- Định luật De Morgan: $(A + B)' = A' \cdot B'$; $(A \cdot B)' = A' + B'$ — phủ định toàn bộ, đổi chỗ AND/OR, phủ định từng toán hạng.
- hấp thụ: $A + AB = A$.
Việc rút gọn làm giảm số lượng toán hạng, do đó mạch logic thu được có ít cổng hơn. Ví dụ: $Z = AB + A\overline{B} = A(B + \overline{B}) = A$.
Các định luật kèm tên gọi (trích dẫn tên định luật ở mỗi bước khi yêu cầu "hiện thị tất cả các bước giải").
| Định luật | Dạng OR | Dạng AND |
|---|---|---|
| định danh | $A + 0 = A$ | $A \cdot 1 = A$ |
| vô hiệu (phủ định) | $A + 1 = 1$ | $A \cdot 0 = 0$ |
| lũy đẳng | $A + A = A$ | $A \cdot A = A$ |
| bổ sung (nghịch đảo) | $A + \overline{A} = 1$ | $A \cdot \overline{A} = 0$ |
| giao hoán | $A + B = B + A$ | $A \cdot B = B \cdot A$ |
| kết hợp | $A + (B + C) = (A + B) + C$ | $A(BC) = (AB)C$ |
| phân phối | $A + BC = (A + B)(A + C)$ | $A(B + C) = AB + AC$ |
| hấp thụ | $A + AB = A$ | $A(A + B) = A$ |
| De Morgan | $\overline{A + B} = \overline{A} \cdot \overline{B}$ | $\overline{A \cdot B} = \overline{A} + \overline{B}$ |
| phủ định kép | $\overline{\overline{A}} = A$ |
Ví dụ có hướng dẫn. Rút gọn $X = \overline{\overline{(A \cdot B)} \cdot \overline{(A + B)}}$, hiện thị tất cả các bước giải.
$X = \overline{\overline{(A \cdot B)}} + \overline{\overline{(A + B)}}$ (De Morgan trên vạch ngoài) $= A \cdot B + A + B$ (phủ định kép) $= A + B$ (hấp thụ, $A + AB = A$, áp dụng với $A + B$ đang hấp thụ $AB$).
Ví dụ có hướng dẫn. Rút gọn $(\overline{A + B}) \cdot (\overline{A} + B)$.
$= \overline{A} \cdot \overline{B} \cdot (\overline{A} + B)$ (De Morgan) $= \overline{A}\,\overline{B}\,\overline{A} + \overline{A}\,\overline{B}\,B$ (phân phối) $= \overline{A}\,\overline{B} + 0$ (lũy đẳng, bổ sung) $= \overline{A}\,\overline{B}$.
Ví dụ có hướng dẫn. Rút gọn $Y = \overline{A}\,\overline{B}\,\overline{C} + \overline{A}\,\overline{B}\,C + A\,\overline{B}\,C$.
$= \overline{A}\,\overline{B}(\overline{C} + C) + A\,\overline{B}\,C$ (phân phối) $= \overline{A}\,\overline{B} + A\,\overline{B}\,C$ (bổ sung, định danh) $= \overline{B}(\overline{A} + AC)$ (phân phối) $= \overline{B}(\overline{A} + C)$, sử dụng $\overline{A} + AC = (\overline{A} + A)(\overline{A} + C) = \overline{A} + C$. Áp dụng De Morgan cho một biểu thức ba đầu vào hoạt động tương tự: $\overline{A + B + C} = \overline{A} \cdot \overline{B} \cdot \overline{C}$.
Tổng-tích từ bảng chân lý. Lấy mỗi hàng mà đầu ra là 1, viết tích AND của các đầu vào của hàng đó (biến bị gạch ngang nếu giá trị là 0), sau đó cộng OR các toán hạng: một hàng với $A = 1, B = 0, C = 1$ sẽ tạo ra $A\,\overline{B}\,C$. Đây là dạng tổng-tích mà đề thi yêu cầu, và đây là điểm xuất phát cho cả việc rút gọn đại số lẫn bản đồ Karnaugh.
Đại số Boole
A·B, A+B, Ā …
Đại số Boole chỉ là các cổng logic viết dưới dạng biểu thức — hãy so sánh bảng chân lý.
Bảng chân lý Boolean
Chọn toán tử và đầu vào để xây dựng bảng chân lý của nó — đại số đằng sau các mạch logic.
| English | Tiếng Việt |
|---|---|
| half adder/hɑːf ˈædə/ | bộ cộng nửa |
15.2
Bản đồ Karnaugh
Một bản đồ Karnaugh (K-map) rút gọn biểu thức Boole bằng cách nhóm các số 1 kề nhau từ bảng chân lý. Các cột và hàng sử dụng thứ tự mã Gray (00, 01, 11, 10) để các ô kề nhau chỉ khác nhau ở một biến.
Đặt số 1 vào mỗi ô mà đầu ra là 1. Tìm các nhóm hình chữ nhật gồm các số 1 có cạnh là lũy thừa của 2 (1, 2, 4, 8), có thể cuộn quanh các cạnh nếu giúp tạo thành nhóm lớn hơn. Nhóm càng lớn thì toán hạng càng đơn giản: một nhóm 2 loại bỏ một biến, nhóm 4 loại bỏ hai biến, v.v. — các biến thay đổi bên trong nhóm sẽ biến mất. Cộng OR các toán hạng nhóm lại để có biểu thức rút gọn. Bao phủ tất cả các số 1 bằng số lượng nhóm ít nhất, nhưng mỗi nhóm phải lớn nhất có thể.
Ví dụ có hướng dẫn. Một bản đồ Karnaugh cho $A$ và $B$ có các số 1 tại các ô $\overline{A}B$ và $AB$. Rút gọn. Hai số 1 này là kề nhau - chúng chia sẻ cột $B=1$ - nên nhóm chúng thành một hình chữ nhật gồm 2. Bên trong nhóm đó $B$ luôn giữ nguyên giá trị 1 trong khi $A$ thay đổi từ 0 sang 1, và bất kỳ biến nào thay đổi bên trong một nhóm sẽ biến mất. Vậy nhóm này chỉ còn lại đơn giản là $X = B$. So sánh điều đó với tổng-tích đọc trực tiếp từ bảng, $\overline{A}B + AB$: cùng một mạch điện, nhưng ít hơn hai cổng. Hai quy tắc thực hiện hầu hết công việc - hãy tạo mỗi nhóm lớn nhất có thể (nhóm 2 loại bỏ một biến, 4 loại bỏ hai, 8 loại bỏ ba), và nhớ rằng bản đồ cuộn quanh các cạnh, nên cột trái cùng và cột phải cùng là kề nhau. Sự cuộn quanh này là phần nhóm mà hầu hết các thí sinh bỏ sót.

Xây dựng và đọc bản đồ Karnaugh. Gán nhãn cho các cột $AB$ và các hàng $C$ (hoặc $CD$) theo thứ tự mã Gray 00 01 11 10, sao cho các ô lân cận chỉ khác nhau ở một biến duy nhất. Đặt số 1 vào mọi ô mà minterm của nó xuất hiện trong biểu thức (hoặc ô có hàng bảng chân lý tương ứng cho kết quả là 1). Sau đó vẽ số lượng ít nhất, lớn nhất các vòng bao phủ tất cả các số 1: mỗi vòng phải là hình chữ nhật gồm $1, 2, 4$ hoặc $8$ ô, các vòng có thể chồng lên nhau, có thể vòng qua các cạnh trái–phải và trên–dưới, và bốn góc cùng tạo thành một vòng. Với mỗi vòng, viết ra các biến không đổi bên trong nó (có bar nếu bằng 0), sau đó OR các thừa số của các vòng lại với nhau: đó chính là tổng của các tích tối ưu. Tại sao sử dụng? Nó mang lại biểu thức đơn giản nhất mà không cần đại số, chỉ qua vài bước, giảm thiểu sai sót, và cùng một bản đồ cũng áp dụng được cho ba hoặc bốn biến.
Ví dụ minh họa. $Z = \overline{A}\,\overline{B}\,\overline{C} + \overline{A}\,\overline{B}\,C + \overline{A}\,B\,\overline{C} + \overline{A}\,B\,C + A\,\overline{B}\,\overline{C} + A\,\overline{B}\,C$.
Trên bản đồ ba biến, các số 1 điền đầy các cột 00, 01 và 10 ở cả hai hàng. Vòng gồm bốn ô trên các cột 00 và 01 có $A = 0$ không đổi throughout và $B$, $C$ đều thay đổi: thừa số $\overline{A}$. Vòng gồm bốn ô trên các cột 00 và 10 (quay vòng) có $B = 0$ không đổi throughout: thừa số $\overline{B}$. Vậy $Z = \overline{A} + \overline{B}$, điều này cũng được đại số Boolean xác nhận: $\overline{A}(\overline{B} + B) + \ldots = \overline{A} + \overline{B}$. Hai vòng gồm hai ô cũng đúng nhưng không tối ưu; một vòng sẽ lớn đến mức các số 1 cho phép.
Ví dụ minh họa (bốn biến). Một bản đồ chỉ có các số 1 ở bốn góc: $\overline{A}\,\overline{B}\,\overline{C}\,\overline{D}$, $A\,\overline{B}\,\overline{C}\,\overline{D}$, $\overline{A}\,\overline{B}\,C\,\overline{D}$ và $A\,\overline{B}\,C\,\overline{D}$. Vì hàng trên và hàng dưới liền kề, và các cột ngoài cũng liền kề, nên bốn góc tạo thành một vòng gồm bốn ô; $B = 0$ và $D = 0$ không đổi trong tất cả chúng trong khi $A$ và $C$ thay đổi, do đó $Z = \overline{B}\,\overline{D}$.
| English | Tiếng Việt |
|---|---|
| Boolean/ˈbuːlɪən/ | Boolean |
| truth tables/truːθ ˈteɪblz/ | bảng chân lý |
| De Morgan's laws/də ˈmɔːɡənz lɔːz/ | định luật De Morgan |
| absorption/əbˈsɔːpʃn/ | sự hấp thụ |
| sum-of-products/sʌm ɒv ˈprɒdʌkts/ | tổng của các tích |
| Karnaugh map/ˈkɑːnɔː mæp/ | bản đồ Karnaugh |
15.2
Bộ cộng nửa và bộ cộng đầy đủ
Một bộ cộng nửa cộng hai bit đơn lẻ $A$ và $B$, cho ra tổng $S$ và cước $C$:
| A | B | S | C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Vậy $S = A \text{ XOR } B$ và $C = A \text{ AND } B$. Nó bỏ qua任何 carry-in — vì vậy gọi là "nửa".

Một bộ cộng đầy đủ cộng ba bit ($A$, $B$, carry-in), cho ra tổng và carry-out: $S = A \text{ XOR } B \text{ XOR } C_{\text{in}}$. Nó có thể được xây dựng từ hai bộ cộng nửa cộng với một cổng OR. Nối tiếp các bộ cộng đầy đủ (mỗi carry-out cung cấp carry-in cho bộ tiếp theo) tạo thành bộ cộng "ripple-carry" nhiều bit.

Bảng chân lý của bộ cộng đầy đủ. Với các đầu vào $A$, $B$ và carry-in $C_{\text{in}}$: tổng $S$ bằng 1 khi có số lượng đầu vào là lẻ bằng 1, và carry-out bằng 1 khi hai hoặc nhiều hơn đầu vào bằng 1.
| $A$ | $B$ | $C_{\text{in}}$ | $S$ | $C_{\text{out}}$ |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
Các câu hỏi mạch điện mà đề thi đưa ra. Cho một mạch gồm một cổng XOR và một cổng AND chia sẻ hai đầu vào, hoặc hai bộ cộng nửa và một cổng OR, yêu cầu "hoàn thành bảng chân lý (trình bày lời giải)" nghĩa là thêm một cột cho từng đầu ra trung gian của cổng và điền các hàng theo thứ tự; "nêu tên của mạch" là bộ cộng nửa hoặc bộ cộng đầy đủ; "nêu mục đích của từng đầu ra" là tổng của các bit và cước sang cột tiếp theo. Tổng của các tích cho bộ cộng nửa: $S = \overline{A}B + A\overline{B}$, $C = AB$. Một chuỗi các bộ cộng đầy đủ, mỗi bộ truyền carry-out của nó sang carry-in của bộ kế tiếp, để cộng hai số nhiều bit.
Các cổng bên trong máy cộng
Bit tổng của máy cộng bán phần là cổng XOR và bit carry là cổng AND — hãy đảo A và B và xem hàng bảng chân lý nào sáng lên.
| English | Tiếng Việt |
|---|---|
| carry/ˈkæri/ | bật carry |
| full adder/fʊl ˈædə/ | cộng đầy đủ |
15.2
Flip-flop
Một flip-flop là một mạch b ổn định — có hai trạng thái ổn định (0 và 1) — nhớ trạng thái của nó. Nó lưu trữ một bit và là phần tử cơ bản của registers và SRAM.
Flip-flop SR
Một flip-flop SR có đầu vào S (set) và R (reset) và các đầu ra Q và $\overline{Q}$. S=1,R=0 đặt Q về 1; S=0,R=1 đặt nó về 0; S=0,R=0 giữ nguyên; S=1,R=1 là không hợp lệ. Được xây dựng từ hai cổng NOR ghép chéo.

"Vẽ một mạch logic cho flip-flop SR và gán nhãn các đầu vào." Hai cổng NOR (hoặc hai cổng NAND), đầu ra của mỗi cổng được nối ngược lại một đầu vào của cổng kia; đầu vào còn lại của cổng này là S, của cổng kia là R; các đầu ra là $Q$ và $\overline{Q}$. Phản hồi chính là điểm đánh giá: nếu không có phản hồi thì không có bộ nhớ. "Nêu mục đích của một flip-flop." Để lưu trữ một bit dữ liệu; nó là phần tử bộ nhớ cơ bản được xây dựng từ đó các register và static RAM, và nó giữ giá trị cho đến khi bị thay đổi cố ý. Đầu vào không hợp lệ $S = R = 1$ khiến cả hai đầu ra bằng 0, do đó $\overline{Q}$ không còn là phần bổ của $Q$, và trạng thái sau khi cả hai đầu vào trở về 0 là khó dự đoán, đây là điểm yếu của flip-flop SR.
Flip-flop JK
Một flip-flop JK cải tiến loại này bằng cách sử dụng đầu vào trước đây không hợp lệ 1,1 làm toggle (đầu ra đảo chiều). Điều này khiến nó lý tưởng để xây dựng bộ đếm (một chuỗi các flip-flop toggle). Nó thường được đồng bộ hóa — các đầu vào chỉ tác động tại cạnh xung clock, giúp đồng bộ hóa các flip-flop.

Flip-flops là các khối xây dựng của registers (n bit = n flip-flop), bộ đếm, và các ô nhớ SRAM.
Bảng chân lý flip-flop JK. Đầu vào clock quyết định thời điểm đọc các đầu vào J và K, do đó đầu ra chỉ thay đổi khi có xung clock: với $J = K = 0$ đầu ra được giữ nguyên; $J = 1, K = 0$ đặt $Q$ thành 1; $J = 0, K = 1$ xóa nó thành 0; $J = K = 1$ lật ngược (Q trở thành $\overline{Q}$). Dòng cuối cùng chính là đầu vào cấm của flip-flop SR được biến thành một đầu vào hữu ích, đó là lý do JK được ưu tiên: mọi tổ hợp đầu vào đều hợp lệ, và hoạt động có xung clock khiến nó trở thành khối xây dựng cơ bản của bộ đếm và thanh ghi dịch chuyển.
| English | Tiếng Việt |
|---|---|
| flip-flop/flɪp flɒp/ | flip-flop |
| bistable/baɪˈsteɪbl/ | lưỡng ổn định |
| toggle/ˈtɒɡl/ | chuyển trạng thái |
| counters/ˈkaʊntəz/ | bộ đếm |
| SRAM/ˈesræm/ | SRAM |
| clock/klɒk/ | đồng hồ |
| SR flip-flop/ˌes ˈɑː flɪp flɒp/ | Flip-flop SR |
| JK flip-flop/ˌdʒeɪ ˈkeɪ flɪp flɒp/ | Flip-flop JK |
15.2
Các định nghĩa mà giám khảo chấp nhận
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 |
|---|---|
| RISC | một bộ xử lý với tập lệnh đơn giản, độ dài cố định nhỏ, hầu hết thực hiện trong một chu kỳ đồng hồ, sử dụng nhiều thanh ghi và kỹ thuật pipeline |
| CISC | một bộ xử lý với tập lệnh phức tạp, độ dài biến thiên lớn, nhiều lệnh mất nhiều chu kỳ đồng hồ và truy cập bộ nhớ trực tiếp |
| pipeline | chia chu kỳ lấy lệnh-thực thi thành các giai đoạn sao cho nhiều lệnh được xử lý đồng thời, mỗi lệnh ở một giai đoạn khác nhau |
| SISD / SIMD / MISD / MIMD | một lệnh trên một dữ liệu; một lệnh trên nhiều dữ liệu; nhiều lệnh trên một dữ liệu; nhiều lệnh trên nhiều dữ liệu |
| máy tính song song quy mô lớn | hàng nghìn bộ xử lý, mỗi cái có bộ nhớ riêng, kết nối qua mạng và làm việc đồng thời trên cùng một bài toán |
| máy ảo | sự giả lập phần mềm của một hệ thống máy tính chạy trên máy chủ và hoạt động như một máy tính vật lý độc lập |
| hypervisor | phần mềm tạo ra các máy ảo và chia sẻ phần cứng của máy chủ giữa chúng |
| bảng chân lý | bảng liệt kê mọi tổ hợp đầu vào của mạch logic với đầu ra tương ứng |
| tổng của tích | biểu thức Boolean viết dưới dạng OR của các AND, mỗi term ứng với một tổ hợp đầu vào cho kết quả 1 |
| bản đồ Karnaugh | lưới các đầu ra từ bảng chân lý, sắp xếp theo thứ tự Gray-code, trong đó các vòng bao gồm các số 1 liền kề giúp thu gọn biểu thức |
| half adder | mạch cộng hai bit, tạo ra tổng và carry |
| full adder | mạch cộng hai bit và carry-in, tạo ra tổng và carry-out |
| flip-flop | mạch hai trạng thái ổn định lưu trữ một bit, giữ nguyên đầu ra cho đến khi đầu vào thay đổi nó |
| English | Tiếng Việt |
|---|---|
| Gray code/ɡreɪ kəʊd/ | mã Gray |
15.2
Mẹo làm bài thi
- RISC và CISC được trả lời dưới dạng danh sách đặc điểm: đơn giản, cố định, một chu kỳ, nhiều thanh ghi, load/store, pipeline so với phức tạp, biến thiên, đa chu kỳ, ít thanh ghi hơn, truy cập bộ nhớ trực tiếp, microcode. Bốn đặc điểm cho mỗi loại.
- Pipelining: các giai đoạn, nhiều lệnh cùng lúc, hoàn thành một lệnh mỗi chu kỳ, thông lượng cao hơn; $n + k - 1$ chu kỳ để xử lý $n$ lệnh qua $k$ giai đoạn; ngắt phải làm rỗng pipeline.
- Bốn phân loại Flynn là "số luồng lệnh" theo "số luồng dữ liệu"; nói rõ cái gì chạy trên cái gì. Song song quy mô lớn: nhiều bộ xử lý, bộ nhớ riêng, mạng, cùng một bài toán.
- Máy ảo: giả lập máy tính trên máy chủ; OS máy chủ trên phần cứng, hypervisor chia sẻ, OS khách bên trong. Hai lợi ích và hai hạn chế, mỗi câu đầy đủ.
- Đại số Boolean: gọi tên từng luật khi áp dụng; De Morgan đảo toán tử và phủ định từng term; kiểm tra lại bằng bảng chân lý nếu không chắc chắn.
- Bản đồ K: thứ tự Gray-code, vòng lớn nhất 1/2/4/8, phép cuộn allowed, một term cho mỗi vòng với các biến không đổi. Giải thích tại sao: biểu thức đơn giản nhất mà không cần đại số.
- Half adder cho tổng và carry; full adder còn nhận carry-in; SR flip-flop gồm hai cổng NOR/NAND ghép chéo và lưu một bit; JK với đầu vào 1,1 sẽ chuyển trạng thái.
Lỗi thường gặp
- Đảo ngược danh sách đặc điểm RISC và CISC, hoặc đưa "nhanh hơn" làm đặc điểm; hãy đưa đặc điểm thiết kế, không phải phán xét.
- Miêu tả pipeline là "chạy lệnh song song trên nhiều nhân"; thực tế là các giai đoạn của một bộ xử lý xen kẽ.
- Nhầm lẫn SIMD (một lệnh, nhiều dữ liệu) với MIMD (nhiều cả hai), hoặc mô tả MISD là trường hợp phổ biến.
- Định nghĩa máy ảo là "bản sao của máy tính" mà không dùng từ giả lập hay máy chủ và máy khách.
- Áp dụng De Morgan chỉ vào một phần biểu thức nằm dưới thanh dài, hoặc bỏ thanh mà không đổi AND sang OR.
- Vẽ vòng bao gồm ba ô, hoặc nhóm không hình chữ nhật trong bản đồ K; sắp xếp cột 00, 01, 10, 11 thay vì thứ tự Gray code.
- Viết carry của half adder là XOR và tổng là AND.
- Vẽ SR flip-flop làm hai cổng không có feedback, hoặc bỏ trạng thái bất hợp lệ khỏi bảng chân lý.
Bài học tương tác về chủ đề này
Làm theo từng bước, kèm theo bài tập kiểm tra ngay lập tức.