Bỏ qua nội dung

Phần cứng và máy ảo

Khoa học máy tính A-Level · Chủ đề 15

Bài học video cho chủ đề này Mở trang video
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
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

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 có nhiều lệnh phức tạp biến độ dài; RISC có ít lệnh đơn giản cố định độ dài
CISC có nhiều lệnh phức tạp; RISC có ít lệnh đơn giản
Một bo mạch chủ máy tính trên nền trắng, hiển thị ổ cắm CPU hình vuông ở giữa, các khe nhớ dài, một số khe mở rộng và các hàng cổng I/O dọc theo một cạnh
Bo mạch chủ kết nối CPU, bộ nhớ và các bộ phận khác 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ụ".

Từ vựng Luyện tập
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).

Biểu đồ Gantt của năm giai đoạn pipeline IF, ID, EX, MEM, WB qua mười chu kỳ xung nhịp, với sáu lệnh A đến F mỗi lệnh trễ hơn một chu kỳ nên chúng xen chéo nhau theo đường chéo
Pipeline xen kẽ các giai đoạn của sáu lệnh, nên một lệnh hoàn thành mỗi chu kỳ

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.

A tower CPU cooler with a black fan in front, a tall stack of thin metal cooling fins, and copper heat-pipes running up from the flat base that touches the processor
Tản nhiệt và quạt CPU mang nhiệt ra xa khỏi bộ xử lý
Khám phá

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.

Từ vựng Luyện tập
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.

A single control unit broadcasting one instruction stream to four processing units, each of which works on its own data item
SIMD: nhiều bộ xử lý chạy cùng một lệnh trên các dữ liệu khác nhau

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.

A graphics card on a white background, showing the large cooling fan over the GPU and the gold edge connector that plugs into the motherboard
Card đồ họa: GPU của nó chạy cùng một lệnh trên nhiều mục dữ liệu cùng lúc (SIMD)
Four independent processors, each fed by its own separate instruction stream from above and its own data item from below
MIMD: mỗi bộ xử lý chạy các lệnh riêng của nó trên dữ liệu riêng của nó
Từ vựng Luyện tập
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.

A long row of black server racks on a raised white floor in a data centre, packed with equipment and cables
Hàng giá máy chủ trong trung tâm dữ liệu, giống như những gì được dùng cho tính toán song song cực lớn
Từ vựng Luyện tập
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.
A virtual machine stack: the physical hardware at the bottom, the host operating system above it, then the hypervisor, and above that three virtual machines, each holding a guest operating system with its own applications
Một máy thật, nhiều máy giả: hệ điều hành máy chủ và hypervisor chia sẻ phần cứng, và mỗi hệ điều hành khách chạy như thể nó có một máy riêng

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

Khám phá

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.

Từ vựng Luyện tập
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

Bộ cộng nửa: XOR + AND cộng hai bit

Đạ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.

Khám phá

Đạ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ý.

Khám phá

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.

Từ vựng Luyện tập
English Tiếng Việt
half adder/hɑːf ˈædə/ bộ cộng nửa
Xem bài học
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.

Hai bản đồ Karnaugh: bản đồ ba biến cho biểu thức sáu toán hạng với vòng tròn màu đỏ gồm bốn ô dọc theo hai cột đầu tiên tạo ra not A và vòng tròn màu xanh dương gồm bốn ô cuộn quanh các cột ngoài tạo ra not B; và bản đồ bốn biến nơi bốn số 1 ở góc tạo thành một vòng cuộn quanh tạo ra not B và not D
Vòng lặp của 1, 2, 4 hoặc 8 số một; thuật ngữ vòng lặp chỉ giữ lại các biến không thay đổi bên trong nó. Các cạnh nối lại, do đó một vòng lặp có thể quấn quanh, và bốn góc được coi là kề nhau

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}$.

Từ vựng Luyện tập
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ô-đun bộ cộng một nửa với đầu vào A và B, cùng các đầu ra tổng (sum) và mang (carry), bên cạnh sơ đồ mạch nơi A và B đi vào cổng XOR để tạo tổng và cổng AND để tạo mang
Bộ cộng một nửa: dưới dạng mô-đun và dưới dạng mạch gồm một cổng XOR và một cổng AND

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.

Hai bộ cộng một nửa được nối tiếp nhau với một cổng OR để cộng A, B và carry-in: bộ cộng một nửa thứ nhất nhận A và B, bộ cộng thứ hai cộng thêm carry-in, và cổng OR kết hợp hai tín hiệu mang thành carry-out
Bộ cộng đầy đủ được cấu tạo từ hai bộ cộng một nửa và một cổng OR

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.

Khám phá

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.

Từ vựng Luyện tập
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.

An SR flip-flop built from two cross-coupled NOR gates, with S feeding one gate and R the other, each gate's output fed back to the other's input, and its truth table: hold, set, reset and the invalid state
Flip-flop SR: hai cổng NOR liên kết chéo. Khi cả hai đầu vào đều là 0, đầu ra sẽ giữ nguyên giá trị trước đó, đây chính là cơ chế lưu trữ dữ liệu; S đặt Q về 1, R xóa (reset) nó, và việc S = R = 1 là không được phép

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

Ký hiệu khối flip-flop JK với các đầu vào J, K và xung clock, cùng các đầu ra Q và Q-bar, bên cạnh sơ đồ xây dựng từ bốn cổng NAND chéo nối với nhau, trong đó các đầu ra Q và Q-bar được đưa ngược lại các cổng đầu vào
Flip-flop JK: ký hiệu của nó và sơ đồ xây dựng từ các cổng NAND

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.

Từ vựng Luyện tập
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ó
Từ vựng Luyện tập
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.

Đề thi cũ

Nhiều chủ đề hơn trong Khoa học máy tính A-Level

Đăng nhập hoặc tạo tài khoản

IGCSE, A-Level & AP