













Preview text:
ĐỀ CƯƠNG ÔN TẬP KIẾN TRÚC MÁY TÍNH VÀ HỢP NGỮ PHẦN 1: LÝ THUYẾT
Chương 1: Đại cương
1. Các phương pháp thực thi chương trình viết bằng ngôn ngữ L2 trở lên?
2. Khác nhau của trình thông dịch và biên dịch? Cho ví dụ?
3. Vẽ sơ đồ cầu trúc phần cứng hệ thống máy tính (sơ đồ tổ chức máy tính)?
4. Chức năng cơ bản các bộ phận phần cứng hệ thống máy tính?
5. Cho ví dụ thông sô kỹ thuật của CPU hiện đại?
6. Sự hiểu biết về một trạng thái trong 4096 trạng thái có thể có ứng với
lượng thông tin là bao nhiêu (nói rõ đơn vị)?
7. Nguyên tắc biểu diễn thông tin trong máy tính điện tử?
8. Cách thông dụng nhất để biểu diễn số âm trong máy tính điện tử là gì? Cho ví dụ?
9. Nguyên tắc chuyển đổi số nguyên thập phân sang nhị phân là gì?
Nguyên tắc tìm nhanh số âm trong máy tính điện tử là gì?
10. Số nguyên không dấu 100 được biểu diễn trong máy tính tối thiểu
bao nhiêu bit? Các bit đó là gì?
11. Số nguyên có dấu +100 được biểu diễn trong máy tính tối thiểu bao
nhiêu bit? Các bit đó là gì?
12. Số nguyên có dấu +16384 được biểu diễn trong máy tính tối thiểu bao nhiêu bit?
13. Số nhị phân 8bit 1001 1010(2), số này tương ứng với số nguyên thập
phân có dấu là bao nhiêu bằng phương pháp bù 2? TL :
Câu 1. Các phương pháp thực thi chương trình viết bằng ngôn ngữ L2 trở
lên bao gồm trình thông dịch (interpreter) và trình biên dịch (compiler).
Câu 2 . Trình thông dịch dịch mã nguồn thành mã máy và thực thi từng
câu lệnh trong chương trình một cách tuần tự. Nó kiểm tra và thực thi mã
nguồn từng dòng một, thường được sử dụng trong các ngôn ngữ như
Python hoặc JavaScript. Ví dụ, trong Python, khi bạn chạy một chương
trình Python, trình thông dịch sẽ dịch và thực thi từng dòng lệnh trong chương trình.
Trình biên dịch dịch mã nguồn thành mã máy hoàn chỉnh trước khi thực
thi. Nó kiểm tra và dịch toàn bộ mã nguồn thành mã máy và tạo ra một
tệp thực thi độc lập. Các ngôn ngữ như C, C++ và Java thường được biên
dịch. Ví dụ, khi bạn biên dịch một chương trình C, trình biên dịch sẽ
chuyển đổi mã nguồn C thành mã máy và tạo ra một tệp thực thi mà bạn có thể chạy.
Câu 3 Sơ đồ cấu trúc phần cứng hệ thống máy tính (sơ đồ tổ chức máy
tính) thường bao gồm các thành phần chính như sau:
1. CPU (Central Processing Unit): Bộ xử lý trung tâm của hệ
thống, thực hiện các phép tính và điều khiển các hoạt động của hệ
thống. 2. Bộ nhớ: Lưu trữ dữ liệu và chương trình trong quá trình thực thi.
3. Bộ điều khiển: Điều khiển và quản lý hoạt động của các thành phần khác trong hệ thống.
4. Bộ nhớ chính (RAM): Lưu trữ dữ liệu tạm thời và chương trình đang thực thi.
5. Bộ nhớ ROM (Read-Only Memory): Lưu trữ các thông tin cố định
vàkhông thay đổi như BIOS (Basic Input/Output System).
6. Bộ điều hợp: Điều chỉnh và điều khiển luồng dữ liệu giữa các thành phần khác nhau.
7. Thiết bị ngoại vi: Bao gồm bàn phím, chuột, màn hình, ổ đĩa, và
các thiết bị khác để giao tiếp với hệ thống.
Câu 4. Các bộ phận phần cứng hệ thống máy tính có các chức năng cơ bản như sau:
1. CPU: Thực hiện các phép tính và quản lý hoạt động của hệ thống.
2. Bộ nhớ: Lưu trữ dữ liệu và chương trình đang thực thi.
3. Bộ điều khiển: Điều khiển và quản lý hoạt động của các thành phần khác trong hệ thống.
4. Bộ nhớ ROM: Lưu trữ thông tin cố định và không thay đổi.
5. Bộ điều hợp: Điều chỉnh và điều khiển luồng dữ liệu giữa các thành phần khác nhau.
6. Thiết bị ngoại vi: Cung cấp giao tiếp với hệ thống, như bàn phím,
chuột, màn hình, và ổ đĩa.
Câu 5. Thông số kỹ thuật của CPU hiện đại có thể được đo bằng các
thông số như tốc độ xử lý (thường được đo bằng GHz), số lõi xử lý, bộ
nhớ cache, kiến trúcSố trạng thái khác nhau có thể có trong 4096 trạng
thái là 2^12 = 4096. Đơn vị đo lường lượng thông tin trong trường hợp
này có thể sử dụng bit.
Câu 6. Nguyên tắc biểu diễn thông tin trong máy tính điện tử là sử dụng
hệ thống nhị phân (binary), trong đó thông tin được biểu diễn bằng cách
sử dụng hai trạng thái hoặc giá trị là 0 và 1. Mỗi bit (binary digit) là đơn
vị nhỏ nhất của thông tin trong máy tính, có thể có giá trị là 0 hoặc 1.
Câu 7. Cách thông dụng nhất để biểu diễn số âm trong máy tính điện tử
là phương pháp bù hai (two's complement). Trong phương pháp này, bit
cao nhất thể hiện dấu của số, và các bit còn lại biểu diễn giá trị tuyệt đối
của số đó. Ví dụ, trong một từ (word) 8 bit, số -10 được biểu diễn bằng dãy bit 11110110.
Câu 8. Nguyên tắc chuyển đổi số nguyên thập phân sang nhị phân theo phương pháp bù hai là:
1. Biểu diễn giá trị tuyệt đối của số nguyên dưới dạng số nhị phân.
2. Nếu số ban đầu là số âm, thực hiện phép bù hai bằng cách đảo ngược
tất cả các bit và cộng 1 vào kết quả.
Ví dụ, để chuyển đổi số -10 từ thập phân sang nhị phân bằng phương
pháp bù hai trong một từ 8 bit, ta thực hiện như sau:
1. Biểu diễn giá trị tuyệt đối của 10 là 00001010.
2. Đảo ngược tất cả các bit: 11110101.
3. Cộng 1 vào kết quả: 11110110.
Vậy, số nhị phân tương ứng với số -10 là 11110110.
Câu 9. Số nguyên không dấu 100 được biểu diễn trong máy tính tối thiểu
7 bit. Các bit đó là 1100100.
Câu 10. Số nguyên có dấu +100 được biểu diễn trong máy tính tối thiểu 8
bit. Các bit đó là 01100100.
Câu 11. Số nguyên có dấu +16384 được biểu diễn trong máy tính tối
thiểu 15 bit. Các bit đó là 010000000000000.
Câu 12. Số nhị phân 8 bit 1001 1010 tương ứng với số nguyên thập phân
có dấu bằng phương pháp bù hai như sau:
1. Số nhị phân này không có bit dấu, vì vậy ta giả sử nó là số dương.
2. Biểu diễn giá trị tuyệt đối của số: 1001 1010.
3. Đây là một số dương, vậy kết quả chính là 1001 1010, tương
đương với số nguyên thập phân có dấu là +154. Chương 2: CPU
1. Kiến trúc máy tính nghiên cứu về gì?Phần mềm bô x ̣ ử lý nghiên cứu gì?
2. Các bộ phận chủ yếu của bộ xử lý? Chức năng chính của từng bộ phận?
3. Một lệnh hợp ngữ gồm các thành phần nào? Cho ví dụ?
4. Cho ví dụ về dạng lệnh hợp ngữ tương ứng lệnh mã máy?
5. Các bước thi hành một lệnh mã máy? Thời gian thi hành một lệnh
mã máy gồm hai thời khoản nào?
6. Chu kỳ thi hành một lệnh mã máy tổng quát gồm các giai đoạn nào?
7. Ngắt quãng là gì? Cho ví dụ trong máy tính điên ṭ ử?
8. Khi có một ngắt quãng xảy ra bộ xử lý làm thế nào?
9. Thế nào là kỹ thuât ống dẫn đơn giản? Vẽ mô hình ḳ ỹ thuât ống dẫn ̣ đơn giản?
10. Trình bày cơ chế đường ống cho 8 lệnh?
11. Kỹ Thuật ống dẫn đơn giản làm tăng tốc độ thi hành lệnh lên bao
nhiêu lần trên lý thuyết? Tại sao trên thực tế sự gia tăng lại ít hơn?
12. Các khó khăn trong kỹ thuật ống dẫn và cách giải quyết khó khăn này?
13. Chức năng các thành phần trong sơ đồ khối của CPU 8086?
14. Gọi CPU 8086/80286 là CPU 16 bit điều này có ý nghĩa gì?
15. CPU 8086 có bus địa chỉ 20 bit điều này có ý nghĩa gì?
16. CPU 80286 có bus địa chỉ bao nhiêu bit?Điều đó có ý nghĩa gì?
17. Trình bày sơ đồ và chức năng của CU và ALU trong CPU 8086? TL :
Câu 1. Kiến trúc máy tính nghiên cứu về cách tổ chức, thiết kế và hoạt
động của hệ thống máy tính. Nó tập trung vào các thành phần phần cứng
và cách chúng tương tác với nhau để thực hiện các tác vụ tính toán. Các
khía cạnh nghiên cứu trong kiến trúc máy tính bao gồm bộ xử lý, bộ nhớ,
bộ điều khiển, giao tiếp và tương tác giữa các thành phần, và hiệu suất của hệ thống.
Phần mềm bộ xử lý nghiên cứu về các phần mềm liên quan đến việc điều
khiển và quản lý hoạt động của bộ xử lý. Điều này bao gồm trình điều
khiển (driver) của bộ xử lý, phần mềm điều khiển hiệu năng (performance
monitoring software), phần mềm quản lý nguồn điện (power management
software), và các công cụ giúp phân tích, kiểm tra và tối ưu hóa hoạt động của bộ xử lý.
Câu 2. Các bộ phận chủ yếu của bộ xử lý (CPU) bao gồm: -
Đơn vị điều khiển (Control Unit): Quản lý và điều khiển các hoạt
độngcủa bộ xử lý. Nó lấy các lệnh từ bộ nhớ và điều khiển các thành
phần khác trong CPU để thực hiện các phép tính. -
Bộ nhớ (Memory Unit): Lưu trữ dữ liệu và chương trình đang được thực thi. -
Đơn vị xử lý (Arithmetic Logic Unit - ALU): Thực hiện các phép
tính số học và logic trong CPU, bao gồm cộng, trừ, nhân, chia và các
phép tính logic như AND, OR, NOT. -
Bộ đệm (Cache): Lưu trữ dữ liệu và chỉ thị được sử dụng thường
xuyên để cung cấp truy cập nhanh hơn cho CPU. -
Bộ tăng tốc (Pipeline): Phân chia các lệnh thành các giai đoạn nhỏ
để cải thiện hiệu suất thực thi của CPU.
Chức năng chính của từng bộ phận: -
Đơn vị điều khiển (Control Unit): Điều khiển và quản lý hoạt động
củacác thành phần khác trong CPU, thực hiện lấy lệnh từ bộ nhớ, giải
mã lệnh và điều khiển luồng dữ liệu. -
Bộ nhớ (Memory Unit): Lưu trữ dữ liệu và chương trình đang thực
thi.- Đơn vị xử lý (ALU): Thực hiện các phép tính số học và logic. -
Bộ đệm (Cache): Lưu trữ dữ liệu và chỉ thị để cung cấp truy cập nhanhhơn cho CPU. -
Bộ tăng tốc (Pipeline): Phân chia các lệnh thành các giai đoạn nhỏ
để cải thiện hiệu suất thực thi.
Câu 3. Một lệnh hợp ngữ (assembly language instruction) bao gồm các thành phần sau: -
Mã lệnh (Opcode): Xác định hoạt động cụ thể mà lệnh thực hiện,
chẳng hạn như cộng, trừ, nhảy, di chuyển dữ liệu, v.v. -
Toán tử (Operand): Đại diện cho dữ liệu hoặc địa chỉ mà lệnh thao
tác.- Chỉ số (Index): Định rõ vị trí của toán tử trong bộ nhớ hoặc thanh ghi.
Ví dụ: Lệnh hợp ngữ "ADD R1, R2, R3" thực hiện phép cộng giữa giá
trị của thanh ghi R2 và R3, rồi lưu kết quả vào thanh ghi R1. Câu 4. Dạng
lệnh hợp ngữ tương ứng với lệnh mã máy phụ thuộc vào kiến trúc và bộ
xử lý cụ thể. Dưới đây là một ví dụ về dạng lệnh hợp ngữ tương ứng với lệnh mã máy x86:
Lệnh mã máy: 10110000 01000001
Dạng lệnh hợp ngữ tương ứng: MOV AL, 41h
Trong ví dụ này, lệnh mã máy 10110000 01000001 thực hiện việc di
chuyển giá trị 41h vào thanh ghi AL.
Câu 5. Các bước thi hành một lệnh mã máy trong một bộ xử lý thông thường bao gồm: 1.
Lấy lệnh: Bộ điều khiển (Control Unit) lấy lệnh từ bộ nhớ chính
(RAM) dựa trên chỉ số của lệnh hiện tại. 2.
Giải mã lệnh: Bộ điều khiển giải mã lệnh, xác định loại lệnh và các toán tử liên quan. 3.
Thực thi: Các bộ phận khác trong bộ xử lý (như ALU và bộ nhớ)
thực hiện các hoạt động cần thiết để thực hiện lệnh, chẳng hạn như thực
hiện phép tính số học, truy cập dữ liệu trong bộ nhớ, v.v. 4.
Ghi kết quả: Kết quả của lệnh được ghi lại vào thanh ghi hoặc vị trí bộ nhớ tương ứng.
Thời gian thi hành một lệnh mã máy gồm hai thời khoản: a)
Thời gian thực hiện (Execution time): Đây là thời gian mà bộ xử lý
thực sự mất để thực hiện các phép tính và hoạt động của lệnh. Thời gian
này phụ thuộc vào tốc độ xử lý của bộ xử lý và loại lệnh cụ thể. b)
Thời gian chu kỳ (Cycle time): Đây là thời gian mà bộ xử lý mất để
hoàn thành một chu kỳ xung (clock cycle). Thời gian chu kỳ thường được
đặt bởi tần số của xung đồng hồ (clock) của bộ xử lý. Thời gian chu kỳ
quyết định tốc độ hoạt động của bộ xử lý.
Câu 6. Chu kỳ thi hành một lệnh mã máy tổng quát gồm các giai đoạn sau đây: a)
Lấy lệnh (Instruction Fetch): Bộ điều khiển (Control Unit) lấy lệnh
từ bộ nhớ chính (RAM) dựa trên chỉ số của lệnh hiện tại. b)
Giải mã lệnh (Instruction Decode): Bộ điều khiển giải mã lệnh, xác
định loại lệnh và các toán tử liên quan. c)
Thực thi (Execution): Các bộ phận khác trong bộ xử lý (như ALU
và bộ nhớ) thực hiện các hoạt động cần thiết để thực hiện lệnh, chẳng hạn
như thực hiện phép tính số học, truy cập dữ liệu trong bộ nhớ, v.v. d)
Ghi kết quả (Write Back): Kết quả của lệnh được ghi lại vào thanh
ghi hoặc vị trí bộ nhớ tương ứng.
Giai đoạn này có thể được thực hiện tuần tự hoặc đồng thời trong các đơn
vị xử lý đa nhân (multicore) hoặc trong kiến trúc ống dẫn (pipeline architecture).
Câu 7. Ngắt quãng (interrupt) là một sự kiện không đồng bộ xảy ra trong
hệ thống máy tính, thường là từ các thiết bị ngoại vi hoặc các hoạt động
nội bộ trong bộ xử lý. Ngắt quãng làm ngắt quá trình thực thi chuỗi lệnh
hiện tại và chuyển sang xử lý một tác vụ khác. Ngắt quãng có thể xảy ra
để xử lý các sự kiện như ngắt từ bàn phím, ngắt từ chuột, hoặc kết thúc
một hoạt động ngoại vi.
Ví dụ: Trong một máy tính điện tử, khi người dùng nhấn một phím trên
bàn phím, một ngắt quãng được tạo ra để báo cho hệ điều hành rằng có
một sự kiện nhấn phím xảy ra. Hệ điều hành sau đó có thể xử lý ngắt này
để đọc dữ liệu từ bàn phím và thực hiện các hành động tương ứng. Câu
8. Khi có một ngắt quãng xảy ra, bộ xử lý thực hiện các bước sau: a)
Lưu trạng thái hiện tại: Bộ xử lý lưu trữ trạng thái hiện tại của
nhiệm vụ đang thực thi, bao gồm giá trị thanh ghi, điểm nhảy và các thông số khác. b)
Xử lý ngắt: Bộ xử lý chuyển sang xử lý ngắt, trong đó nó xác định
nguyên nhân của ngắt và thực hiện các hành động tương ứng theo ngắt đó. c)
Khôi phục trạng thái trước đó: Sau khi xử lý ngắt, bộ xử lý khôi
phục trạng thái trước đó của nhiệm vụ đang thực thi trước khi ngắt xảy ra. d)
Tiếp tục thực thi: Bộ xử lý tiếp tục thực hiện nhiệm vụ ban đầu
hoặc chuyển sang nhiệm vụ khác, tùy thuộc vào quyết định xử lý ngắt.
Câu 9. Kỹ thuật ống dẫn đơn giản (Simple Pipeline) là một cách tổ chức
và thực hiện các lệnhtrong bộ xử lý một cách song song và tuần tự. Đây
là một phương pháp tăng cường hiệu suất của bộ xử lý bằng cách chia
nhỏ quá trình thi hành lệnh thành các giai đoạn và thực hiện các lệnh
khác nhau tại các giai đoạn khác nhau đồng thời.
Mô hình kỹ thuật ống dẫn đơn giản có thể được biểu diễn như sau:
1. Lấy lệnh (Instruction Fetch - IF): Lấy lệnh từ bộ nhớ chính.
2. Giải mã lệnh (Instruction Decode - ID): Giải mã lệnh và chuẩn bị các
giá trị đầu vào cho giai đoạn tiếp theo.
3. Thực thi (Execution - EX): Thực hiện các phép tính và các hoạt động
khác liên quan đến lệnh.
4. Truy cập bộ nhớ (Memory Access - MEM): Truy cập bộ nhớ để đọc hoặc ghi dữ liệu.
5. Ghi kết quả (Write Back - WB): Ghi kết quả của lệnh vào thanh ghi
hoặc vị trí bộ nhớ tương ứng.
Các lệnh được đưa vào các giai đoạn này theo tuần tự và được xử lý tuần
tự thông qua các giai đoạn. Khi một lệnh hoàn thành một giai đoạn, nó
được chuyển đến giai đoạn tiếp theo trong khi lệnh khác tiếp tục di
chuyển qua các giai đoạn trước đó.
Câu 10. Cơ chế đường ống (pipeline) cho 8 lệnh hoạt động như sau:
Lệnh 1: IF -> ID -> EX -> MEM -> WB
Lệnh 2: IF -> ID -> EX -> MEM -> WB
Lệnh 3: IF -> ID -> EX -> MEM -> WB
Lệnh 4: IF -> ID -> EX -> MEM -> WB
Lệnh 5: IF -> ID -> EX -> MEM -> WB
Lệnh 6: IF -> ID -> EX -> MEM -> WB
Lệnh 7: IF -> ID -> EX -> MEM -> WB
Lệnh 8: IF -> ID -> EX -> MEM -> WB
Mỗi lệnh đi qua tất cả các giai đoạn theo một lịch trình tuần tự, và các
lệnh được xử lý song song. Điều này cho phép bộ xử lý xử lý nhiều lệnh
cùng một lúc và tận dụng được các tài nguyên của bộ xử lý một cách hiệu quả.
Câu 11. Kỹ thuật ống dẫn (pipeline) đơn giản có thể làm tăng tốc độ thi
hành lệnh lên khoảng 3-5 lần trên lý thuyết. Tuy nhiên, trên thực tế, sự
gia tăng hiệu suất thực tế thường ít hơn lý thuyết vì một số khó khăn gặp
phải trong quá trình ống dẫn.
Một số nguyên nhân dẫn đến sự giảm thiểu hiệu suất thực tế của kỹ thuật ống dẫn bao gồm: -
Xung đột dữ liệu (data hazards): Khi có các lệnh phụ thuộc vào dữ
liệu từ lệnh trước đó, quá trình ống dẫn có thể bị trì hoãn để đảm bảo tính
chính xác của kết quả. Điều này làm giảm tốc độ thi hành lệnh. - Xung
đột điều khiển (control hazards): Khi các lệnh nhảy hoặc nhánh không thể
được dự đoán chính xác, quá trình ống dẫn phải chờ đợi kết quả của lệnh
nhảy hoặc nhánh để xác định lệnh tiếp theo. Điều này gây ra sự trì hoãn
và làm giảm hiệu suất. -
Xung đột bộ nhớ (memory hazards): Khi có các lệnh truy cập đến
cùng một vùng bộ nhớ, xảy ra xung đột và phải chờ đợi để truy cập bộ nhớ.
Điều này gây ra sự trì hoãn và giảm hiệu suất. -
Chi phí của việc duy trì quá trình ống dẫn: Quá trình ống dẫn đòi
hỏi tài nguyên bộ nhớ và logic phức tạp hơn. Chi phí này có thể làm giảm
hiệu suất toàn bộ hệ thống.
Câu 12. Các khó khăn trong kỹ thuật ống dẫn và cách giải quyết chúng:
- Xung đột dữ liệu (data hazards): Các phương pháp giải quyết bao gồm
việc sử dụng bộ nhớ đệm (cache) để lưu trữ dữ liệu, sử dụng các thanh
ghi (registers) bổ sung để tăng khả năng lưu trữ tạm thời dữ liệu, và sử
dụng kỹ thuật chia lệnh (instruction interleaving) để tận dụng thời gian
trống trong quá trình thi hành. -
Xung đột điều khiển (control hazards): Các phương pháp giải quyết
bao gồm việc sử dụng bộ dự đoán nhánh (branch prediction) để dự đoán
lệnh nhảy và tiên đoán các lệnh tiếp theo, sử dụng bộ nhớ đệm nhảy
(branch target buffer) để lưu trữ thông tin về lệnh nhảy, và sử dụng kỹ
thuật đặt lại (speculation) để tiếp tục thi hành lệnh mà không cần chờ kết
quả chính xác của lệnh nhảy. -
Xung đột bộ nhớ (memory hazards): Các phương pháp giải quyết
bao gồm sử dụng bộ đệm ghi (store buffer) để ghi lại các thao tác ghi vào
bộ nhớ và thực hiện ghi gộp sau cùng, sử dụng kỹ thuật đặt lại
(speculation) để tiếp tục thi hành lệnh mà không cần chờ đợi kếtphần
chúng. Ngoài ra, việc tối ưu hóa cấu trúc bộ xử lý, bộ nhớ và các thành
phần khác của hệ thống cũng có thể giúp cải thiện hiệu suất của kỹ thuật ống dẫn.
Câu 13. Trong sơ đồ khối của CPU 8086, các thành phần chính bao gồm: -
Unit Fetch (UF): Được sử dụng để lấy lệnh từ bộ nhớ chính. -
Instruction Queue (IQ): Lưu trữ các lệnh được lấy ra từ Unit Fetch và sẵn
sàng để được thực thi. -
Instruction Decoder (ID): Giải mã các lệnh và chuẩn bị các tín hiệu
điều khiển cho các thành phần khác của CPU. -
Execution Unit (EU): Bao gồm Arithmetic and Logic Unit (ALU)
và các thanh ghi (registers). Nó thực hiện các phép tính và các hoạt động logic trên dữ liệu. -
Bus Interface Unit (BIU): Điều khiển việc truy cập vào bus dữ liệu
và bus địa chỉ, và quản lý việc truy cập vào bộ nhớ và các thiết bị ngoại
vi. Câu 14. Gọi CPU 8086/80286 là CPU 16 bit có ý nghĩa là nó có khả
năng xử lý dữ liệu và địa chỉ với chiều rộng 16 bit. Điều này có nghĩa là
CPU có thể xử lý dữ liệu và địa chỉ được biểu diễn bằng 16 bit, cho phép
xử lý và truy cập đến khoảng 64KB bộ nhớ.
Câu 15. CPU 8086 có bus địa chỉ 20 bit có ý nghĩa là nó có khả năng truy
cập đến tối đa 1MB bộ nhớ. Với bus địa chỉ 20 bit, CPU có thể tạo ra 220
= 1.048.576 địa chỉ khác nhau, từ 0 đến 1.048.575, cho phép truy cập đến 1MB bộ nhớ.
Câu 16. CPU 80286 có bus địa chỉ 24 bit. Điều này có nghĩa là nó có khả
năng truy cập đến tối đa 16MB bộ nhớ. Với bus địa chỉ 24 bit, CPU có
thể tạo ra 224 = 16.777.216 địa chỉ khác nhau, từ 0 đến 16.777.215, cho
phép truy cập đến 16MB bộ nhớ.
Câu 17. Sơ đồ và chức năng của Control Unit (CU) và Arithmetic Logic
Unit (ALU) trong CPU 8086 như sau: -
Control Unit (CU): Điều khiển và điều phối hoạt động của CPU.
Nó lấy các lệnh từ bộ nhớ, giải mã chúng và tạo ra các tín hiệu điều khiển
để điều khiển các thành phần khác của CPU. CU cũng quản lý các thao
tác nạp và lưu trữ dữ liệu từ và đến bộ nhớ và các thiết bị ngoại vi. -
Arithmetic Logic Unit (ALU): Thực hiện các phép tính số học và logic
trên dữ liệu. ALU có khả năng thực hiện các phép cộng, trừ, nhân, chia,
các phép toán logic như AND, OR, XOR, NOT và các phép so sánh.
ALU sử dụng các thanh ghi (registers) để lưu trữ dữ liệu và kết quả của các phép tính. Chươnng 3: Memory
1. Module nhớ 2n x 2m có ý nghĩa là gì?Dung lượng là bao nhiêu?
2. Vẽ mô hình phân cấp bô nḥ ớ? Mục tiêu của viêc phân c ̣ ấp bô nḥ ớ là gì?
3. Thế nào là chu kỳ bộ nhớ? Cho ví dụ? Chu kỳ bô nḥ ớ càng lớn tốc
đô bộ nḥ ớ càng nhanh hay châm?̣
4. Khái niệm thời gian truy cập bộ nhớ (thời gian đọc/ghi dữ liêu)?̣
5. Khái niệm bộ nhớ Cache? Cấu tạo Cache? Đơn vị truyền dữ liệu từ Ram lên Cache là gì? 6. Vận hành của Cache?
7. Nguyên nhân chính gây thất bại Cache là gì? TL :
Câu 1. Module nhớ 2n x 2m có ý nghĩa là một module nhớ có kích thước
được xác định bằng cách nhân 2 lũy thừa của 2. Đơn vị 2n x 2m đại diện
cho số hàng và số cột trong ma trận các ô nhớ của module đó. Dung
lượng của module nhớ này được tính bằng công thức 2^n x 2^m. Câu 2.
Mô hình phân cấp bộ nhớ là một cấu trúc tổ chức bộ nhớ trong máy tính
được chia thành nhiều cấp độ khác nhau với mục tiêu cung cấp hiệu suất
truy cập nhanh và tối ưu hóa việc sử dụng bộ nhớ. Mục tiêu của việc
phân cấp bộ nhớ là cải thiện hiệu suất bằng cách sử dụng bộ nhớ tốc độ
cao và bộ nhớ lưu trữ dữ liệu có dung lượng lớn một cách hiệu quả. Câu
3. Chu kỳ bộ nhớ là thời gian cần thiết để thực hiện một hoạt động truy
cập vào bộ nhớ, chẳng hạn như đọc dữ liệu từ bộ nhớ hoặc ghi dữ liệu
vào bộ nhớ. Ví dụ, nếu một bộ nhớ có chu kỳ bộ nhớ là 10 nanogian, thì
mỗi hoạt động truy cập vào bộ nhớ sẽ mất khoảng 10 nanogian. Chu kỳ
bộ nhớ không xác định tốc độ bộ nhớ mà chỉ xác định tốc độ truy cập
của bộ nhớ. Tốc độ bộ nhớ phụ thuộc vào nhiều yếu tố khác như tốc độ
xử lý của CPU, tốc độ bus dữ liệu, thời gian truyền dữ liệu giữa các
thành phần của hệ thống.
Câu 4. Thời gian truy cập bộ nhớ là thời gian mất để đọc hoặc ghi dữ liệu
từ hoặc vào bộ nhớ. Nó bao gồm thời gian truyền dữ liệu qua bus, thời
gian truy xuất dữ liệu từ các mức bộ nhớ khác nhau và thời gian xử lý bộ
nhớ để đáp ứng yêu cầu truy cập.
Câu 5. Bộ nhớ Cache là một bộ nhớ tạm thời nhanh được sử dụng để lưu
trữ các dữ liệu và hướng dẫn mà CPU sử dụng thường xuyên nhất. Nó
nằm giữa CPU và bộ nhớ chính (RAM) và có tốc độ truy cập cao hơn so với bộ nhớ chính.
Cấu trúc của bộ nhớ Cache bao gồm các dòng (lines) được chia thành các
khối dữ liệu (data blocks) và các thẻ (tags) để xác định vị trí của dữ liệu
trong bộ nhớ chính. Mỗi dòng trong bộ nhớ Cache có thể lưu trữ một khối
dữ liệu cùng với thông tin thẻ tương ứng.
Đơn vị truyền dữ liệu từ RAM lên Cache được gọi là bộ điều phối
(controller). Bộ điều phối quản lý việc truy cập dữ liệu từ RAM và điều
khiển việc lưu trữ và cập nhật dữ liệu trong bộ nhớ Cache.
Câu 6. Vận hành của bộ nhớ Cache bao gồm các bước sau: -
Khi CPU yêu cầu dữ liệu từ bộ nhớ, bộ nhớ Cache đầu tiên kiểm
tra xem dữ liệu có tồn tại trong Cache không. Nếu có, dữ liệu được truyền từ Cache cho CPU. -
Nếu dữ liệu không tồn tại trong Cache (cache miss), CPU phải truy
cập vào bộ nhớ chính để lấy dữ liệu. Dữ liệu từ bộ nhớ chính được đưa
vào Cache để sử dụng cho các truy cập sau. -
Khi bộ nhớ Cache đã đầy, việc lưu trữ dữ liệu mới đòi hỏi phải
thay thế dữ liệu cũ. Có các thuật toán thay thế dữ liệu như LRU (Least
Recently Used) được sử dụng để quyết định dữ liệu nào sẽ bị thay thế.
Câu 7. Nguyên nhân chính gây thất bại Cache bao gồm: -
Cache miss: Khi CPU yêu cầu một dữ liệu nằm ngoài Cache, xảy
ra cache miss và dữ liệu phải được lấy từ bộ nhớ chính. Điều này dẫn
đến thời gian truy cập tăng lên so với truy cập trực tiếp trong Cache.
Cache miss có thể xảy ra khi dữ liệu được truy cập lần đầu sau khi Cache
được khởi động hoặc khi dữ liệu không còn nằm trong Cache sau quá trình thay thế. -
Cache conflict: Khi có nhiều dữ liệu cần được lưu trữ trong cùng
một dòng của Cache, cache conflict xảy ra. Điều này xảy ra khi các vùng
nhớ khác nhau được ánh xạ vào cùng một dòng trong Cache. Cache
conflict làm tăng khả năng xảy ra cache miss và giảm hiệu suất của
Cache. - Cache coherence: Khi hệ thống có nhiều bộ xử lý (CPU) chia sẻ
cùng một bộ nhớ Cache, việc đảm bảo tính nhất quán của dữ liệu trở
thành một thách thức. Cache coherence là vấn đề liên quan đến việc
đồng bộ hóa các bộ nhớ Cache để đảm bảo rằng các CPU nhìn thấy
phiên bản dữ liệu mới nhất. -
Kích thước Cache hạn chế: Cache có kích thước hữu hạn, do đó,
chỉ một phần nhỏ của dữ liệu và hướng dẫn được lưu trữ trong Cache.
Khi không gian Cache hạn chế, có khả năng xảy ra cache miss và dẫn đến giảm hiệu suất. Chương 4: I/0
1. Trong sơ đồ cấu trúc hệ thống máy tính đơn giản, tại sao phải có bộ ghép nối vào ra?
2. Bus là gì? Có mấy loại bus? kể ra?
3. Kể tên hệ thống bus mà bạn biết? Nhiệm vụ của mỗi bus trong hệ
thống bus của một hệ máy tính đơn giản? Tại sao trong thực tế cần
có một hệ thống bus vào ra?
4. Kể tên các loại BUS chuyên biệt trong hệ thống máy tính điện tử?
Chức năng mỗi BUS đó là gì?
5. Chu kì bus là gì? Thế nào là chu kì đợi?
6. Có mấy loại chu kì bus? Một chu kì bus gồm các thời khoảng nào?
7. Khái niệm đọc bộ nhớ? Ghi (viết) bộ nhớ?
8. Khái niệm đọc vào/ra? Viết vào/ra? TL :
Câu 1. Bộ ghép nối vào ra (I/O Interface) được sử dụng để kết nối các
thiết bị ngoại vi và các thành phần I/O (Input/Output) với hệ thống máy
tính. Nó chịu trách nhiệm cho việc truyền dữ liệu và tương tác giữa các
thiết bị ngoại vi và hệ thống.
Câu 2. Bus trong hệ thống máy tính là một đường truyền dữ liệu chung
được sử dụng để kết nối các thành phần trong hệ thống. Có ba loại bus chính: -
Bus dữ liệu (Data bus): Truyền dữ liệu giữa CPU, bộ nhớ và các thiết bị ngoại vi. -
Bus địa chỉ (Address bus): Truyền địa chỉ của vùng nhớ hoặc thiết
bịngoại vi mà CPU muốn truy cập. -
Bus điều khiển (Control bus): Truyền các tín hiệu điều khiển và tín
hiệu đồng bộ hóa giữa các thành phần của hệ thống.
Câu 3. Một số hệ thống bus trong một hệ máy tính đơn giản bao gồm:
- Bus hệ thống (System bus): Kết nối CPU với bộ nhớ chính và các
thành phần khác như bộ điều khiển bộ nhớ và bộ điều khiển I/O. -
Bus bộ nhớ (Memory bus): Kết nối CPU với bộ nhớ chính để truyền dữ liệu và địa chỉ. -
Bus I/O (I/O bus): Kết nối CPU với các thiết bị ngoại vi để truyền
dữliệu và điều khiển.
Nhiệm vụ của mỗi bus trong hệ thống bus của một hệ máy tính đơn giản như sau: -
Bus hệ thống: Truyền dữ liệu, địa chỉ và tín hiệu điều khiển giữa
CPU, bộ nhớ chính và các bộ điều khiển khác. -
Bus bộ nhớ: Truyền dữ liệu và địa chỉ giữa CPU và bộ nhớ chính.
- Bus I/O: Truyền dữ liệu và điều khiển giữa CPU và các thiết bị ngoại vi.
Hệ thống bus vào ra cần được sử dụng để kết nối CPU với các thiết bị
ngoại vi và các thành phần I/O, như bộ điều khiển đĩa cứng, bàn phím,
chuột, màn hình, và các giao diện khác. Điều này cho phép CPU giao tiếp
và truyền dữ liệu giữa hệ thống và các thiết bị ngoại vi.
Câu 4. Các loại bus chuyên biệt trong hệ thống máy tính điện tử bao gồm: -
Bus đường truyền dữ liệu/đường truyền điều khiển (Data/Control
bus): Truyền dữ liệu và tín hiệu điều khiển giữa CPU và các thiết bị ngoại vi. -
Bus đường truyền địa chỉ (Address bus): Truyền địa chỉ của các
thiếtbị ngoại vi hoặc các vùng nhớ. -
Bus đường truyền nguồn (Power bus): Truyền nguồn điện từ nguồn
cung cấp đến các thành phần trong hệ thống. -
Bus đường truyền đồng bộ (Synchronous bus): Đồng bộ hóa tín
hiệu và truyền dữ liệu giữa các thành phần trong hệ thống.
Chức năng mỗi bus đó như sau: -
Bus đường truyền dữ liệu/đường truyền điều khiển: Truyền dữ liệu
và tín hiệu điều khiển giữa CPU và các thiết bị ngoại vi. -
Bus đườngtruyền địa chỉ: Truyền địa chỉ của các thiết bị ngoại vi
hoặc các vùng nhớ mà CPU muốn truy cập. -
Bus đường truyền nguồn: Truyền nguồn điện từ nguồn cung cấp
đến các thành phần trong hệ thống. -
Bus đường truyền đồng bộ: Đồng bộ hóa tín hiệu và truyền dữ liệu
giữa các thành phần trong hệ thống.
Câu 5. Chu kỳ bus (Bus cycle) là thời gian mà một bus hoặc một tín hiệu
trên bus hoạt động hoặc hoàn thành một chu trình công việc. Chu kỳ bus
có thể bao gồm các thời gian như thời gian truyền dữ liệu, thời gian xử lý và thời gian trống.
Chu kỳ đợi (Wait cycle) xảy ra khi một thành phần hoặc thiết bị phải chờ
đợi để thực hiện một hoạt động trên bus. Chu kỳ đợi xảy ra khi có xung
đột hoặc sự cạnh tranh giữa các thành phần trong hệ thống, và nó có thể
làm gián đoạn quá trình truyền dữ liệu hoặc xử lý.
Câu 6. Có hai loại chu kỳ bus chính: -
Chu kỳ bus đơn (Single bus cycle): Một chu kỳ bus đơn gồm các
thời khoảng như thời gian truyền dữ liệu, thời gian xử lý và thời gian
trống. Nó thường được sử dụng trong các hệ thống đơn giản. -
Chu kỳ bus nhiều (Multiple bus cycle): Một chu kỳ bus nhiều có
thể được chia thành nhiều pha, trong mỗi pha có một hoạt động cụ thể.
Ví dụ, chu kỳ bus nhiều có thể bao gồm các pha như lấy địa chỉ, truyền dữ liệu và xử lý.
Câu 7. Đọc bộ nhớ (Read memory) là quá trình đọc dữ liệu từ bộ nhớ
chính của hệ thống máy tính. Khi CPU cần truy cập dữ liệu từ bộ nhớ, nó
gửi yêu cầu đọc đến bộ điều khiển bộ nhớ, sau đó bộ điều khiển truyền dữ
liệu từ bộ nhớ về cho CPU.
Ghi (viết) bộ nhớ (Write memory) là quá trình ghi dữ liệu vào bộ nhớ
chính của hệ thống máy tính. Khi CPU cần ghi dữ liệu vào bộ nhớ, nó gửi
yêu cầu ghi đến bộ điều khiển bộ nhớ, sau đó bộ điều khiển lưu trữ dữ
liệu vào vị trí tương ứng trong bộ nhớ.
Câu 8. Đọc vào/ra (Input/Output - I/O) là quá trình truyền dữ liệu giữa
CPU và các thiết bị ngoại vi. Khi CPU cần gửi dữ liệu đến thiết bị ngoại
vi, nó gửi yêu cầu ghi vào bộ điều khiển I/O, sau đó bộ điều khiển truyền
dữ liệu từ CPU đến thiết bị ngoại vi.
Viết vào/ra (Output/Output - O/O) là quá trình truyền dữ liệu từ các thiết
bị ngoại vi về CPU. Khi CPU cần đọc dữ liệu từ thiết bị ngoại vi, nó gửi
yêu cầu đọc đến bộ điều khiển I/O, sau đó bộ điều khiển truyền dữ liệu từ
thiết bị ngoại vi đến Chương 5: Assembly
1. Chức năng của hàm 4CH ngắt 21H là gì?
2. Viết đoạn lệnh hợp ngữ cho phép in 1 ký tự bất kỳ (học bảng mã
ASCII) lên màn hình tại vị trí con trỏ?
3. Viết đoạn lệnh hợp ngữ cho phép in 1 chuỗi ký tự “Hello word!” lên
màn hình tại vị trí con trỏ?
4. Cho một chương trình hợp ngữ hoàn chỉnh, giải thích mỗi đoạn lệnh
thực hiện công việc gì? và kết quả sau khi chạy trình như thế nào? TL :
Câu 1. Hàm ngắt 21H với mã chức năng 4CH trong ngôn ngữ hợp ngữ
x86 được sử dụng để kết thúc chương trình và trả về cho hệ điều hành.
Khi hàm này được gọi, chương trình sẽ thoát và quay trở lại hệ điều hành.
Câu 2. Đoạn lệnh hợp ngữ để in một ký tự bất kỳ (học bảng mã ASCII)
lên màn hình tại vị trí con trỏ có thể được viết như sau:
MOV AH, 2 ; Đặt mã chức năng 2 cho việc in ký tự
MOV DL, 'A' ; Đặt ký tự cần in vào thanh ghi DL
INT 21H ; Gọi hàm ngắt 21H
Trong đoạn mã trên, mã chức năng 2 (MOV AH, 2) được sử dụng để chỉ
định rằng chúng ta muốn in một ký tự. Ký tự cần in được lưu trữ trong
thanh ghi DL bằng cách sử dụng lệnh MOV DL, 'A' (ở đây, 'A' là một ví
dụ, bạn có thể thay thế nó bằng ký tự bất kỳ). Cuối cùng, lệnh INT 21H
được sử dụng để gọi hàm ngắt 21H và thực hiện in ký tự lên màn hình.
Câu 3. Đoạn lệnh hợp ngữ để in chuỗi ký tự "Hello world!" lên màn hình
tại vị trí con trỏ có thể được viết như sau:
MOV AH, 9 ; Đặt mã chức năng 9 cho việc in chuỗi
MOV DX, OFFSET MSG ; Đặt địa chỉ của chuỗi vào thanh ghi DX
INT 21H ; Gọi hàm ngắt 21H
Trong đoạn mã trên, mã chức năng 9 (MOV AH, 9) được sử dụng để chỉ
định rằng chúng ta muốn in một chuỗi ký tự. Địa chỉ của chuỗi "Hello
world!" được lưu trữ trong thanh ghi DX bằng cách sử dụng lệnh MOV
DX, OFFSET MSG (ở đây, MSG là một nhãn định danh cho chuỗi
"Hello world!"). Cuối cùng, lệnh INT 21H được sử dụng để gọi hàm
ngắt 21H và thực hiện in chuỗi lên màn hình.