lOMoARcPSD| 58886076
BÀI TẬP THỰC HÀNH KTMT ÔN TẬP
Bài 1: Chuyển đổi số thập phân sang nhị phân:
a) Chuyển số 4035 từ hệ thập phân sang hệ nhị phân.
b) Chuyển số 4056 từ hệ thập phân sang hệ bát phân.
Giải:
a) 4035 = 111111000011(2)
b) 4056 = 111111011000(2)
(Cách chuyển số thập phân sang nhị phân và ngược lại: Nguyên tắc của phương pháp này
là lấy số cần chuyển đổi chia cho 22 (kết quả chỉ lấy phần nguyên), sau đó tiếp tục lấy kết
quả chia cho 22 (và cũng chỉ lấy phần nguyên), kết quả số nhị phân thu được là tập hợp
các số dư của các phép chia, lấy từ phép chia cuối cùng trở lên trên)
VD:
Bài 2: Bộ nhớ cache có kích thước 32KB với mỗi block là 64 byte. Hãy tính số block
có thể lưu trữ trong cache và giải thích cơ chế xử lý cache miss.
Giải thích cache miss và cache hit:
Cache Hit: Một cache hit là trạng thái trong đó: dữ liệu được yêu cầu, được xử lý bởi
một thành phần hoặc một ứng dụng được tìm thấy trong bộ nhớ cache.
lOMoARcPSD| 58886076
Cache Miss: Là trạng thái nơi dữ liệu được yêu cầu xử lý bởi một thành phần hoặc ứng
dụng không được tìm thấy trong bộ nhớ cache (cache memory). Nó gây ra sự chậm trễ
trong các thực thi bởi chúng cần yêu cầu các chương trình hoặc ứng dụng tìm nạp dữ liệu
từ các cấp bộ nhớ cache khác hoặc bộ nhớ chính. Vì không có sẵn các dữ liệu được yêu
cầu.
Cách tính:
Kích thước cache: 32KB = 32 * 1024 bytes = 32768 bytes.
Mỗi block: 64 bytes.
Số block lưu trữ trong cache = Tổng kích thước cache / Kích thước mỗi block = 32768
bytes / 64 bytes/block = 512 block. => Vậy, cache có thể lưu trữ 512 block.
Bài 3: Biểu diễn số −39 trong hệ nhị phân sử dụng phương pháp bù 2 (2’s
complement) với 8 bit và biểu diễn số 79 trong hệ nhị phân sử dụng phương pháp
bù 2 với 8 bit.
Giải:
a)-39 = 1111111111011001(2)
b) 79 = 0000000001001111(2) (8-bits)
VD1:
VD2:
lOMoARcPSD| 58886076
Bài 4: Một CPU có 4 pipeline và tần số xung nhịp là 2.8GHz. Tính số lệnh được xử
lý trong 5 giây và giải thích lợi ích của pipeline trong việc cải thiện hiệu suất.
Bài 5: Thực hiện phép cộng hai số nhị phân: a)
10111001 + 10110110 . ₂ ₂
b) 11000001 − 10011101 .
Giải: (Sử dụng bằng Casio 580-880)
lOMoARcPSD| 58886076
VD:
VD2:
lOMoARcPSD| 58886076
Cách tính thông thường:
a) 10111001 + 10110110 =
Chuyển đổi phép tính (số) sang thập phân, ta có:
185 + 182 = 367
=> Vậy, 10111001
2
+10110110
2
= 11101101
2
b) 11000001 − 10011101
Chuyển đổi phép tính (số) sang thập phân, ta có:
193 – 157 = 36
=>Vậy, 11000001 − 10011101 = 00100100
2
Bài 6: Bộ nhớ cache có kích thước 64KB với mỗi block là 256 byte. Hãy tính số
block trong cache và giải thích cơ chế thay thế block khi cache bị đầy Kích
thước cache: 64KB = 64 * 1024 bytes = 65536 bytes.
Mỗi block: 256 bytes.
lOMoARcPSD| 58886076
Số block lưu trữ trong cache = Tổng kích thước cache / Kích thước mỗi block = 65536
bytes / 256 bytes/block = 256 block.
Vậy, cache có thể lưu trữ 256 block.
Bài 7: Giả sử CPU có tần số 3 GHz và tiêu thụ công suất 65W.
a) Tính công suất tiêu thụ nếu tần số tăng lên 3.5 GHz mà không thay đổi kiến trúc.
b) Giải thích mối quan hệ giữa tần số xung nhịp và công suất tiêu thụ của CPU.
Giải:
a)
lOMoARcPSD| 58886076
b)
Tần số xung nhịp và công suất êu thụ của CPU có mối quan hệ chặt chẽ với nhau, và
công suất êu thụ tăng khi tần số xung nhịp tăng. Công thức P=C x V
2
x f cho thấy rằng
công suất êu thụ phụ thuộc vào tần số xung nhịp (f) và bình phương điện áp (V^2).
Tần số xung nhịp (f): Khi tần số xung nhịp tăng, số chu kỳ hoạt động của CPU
trong một giây tăng, dẫn đến việc CPU thực hiện nhiều lệnh hơn và tiêu thụ nhiều
năng lượng hơn.
Điện áp (V): Công suất tiêu thụ tăng lên bình phương của điện áp. Điều này có
nghĩa là một sự tăng nhỏ trong điện áp có thể dẫn đến sự tăng đáng kể trong công
suất tiêu thụ.
Bài 8: Một CPU có tần số xung nhịp là 2.5GHz và thực hiện được 4 lệnh mỗi chu kỳ.
Tính số lệnh mà CPU có thể xử lý trong 1 giây. Giải thích khái niệm xung nhịp
trong CPU.
Giải:
1. Tần số xung nhịp của CPU: 2.5GHz = 2.5 x 10910^9 chu kỳ/giây.
2. Số lệnh thực hiện mỗi chu kỳ: 4 lệnh.
Bài 9: Bộ điều khiển ngắt trong CPU.
lOMoARcPSD| 58886076
a) Giải thích vai trò của bộ điều khiển ngắt trong CPU.
b) Tính số ngắt CPU có thể xử lý trong 1 giây nếu mỗi ngắt mất 10,000 chu kỳ và
tần số CPU là 2.5 GHz.
Giải thích:
a) Vai trò của bộ điều khiển ngắt trong CPU
Bộ điều khiển ngắt (Interrupt Controller) là một thành phần quan trọng của CPU, có
nhiệm vụ quản lý các tín hiệu ngắt từ các thiết bị phần cứng hoặc phần mềm. Các ngắt là
các tín hiệu tạm thời ngừng thực hiện chuỗi lệnh hiện tại của CPU để chuyển sang xử lý
một sự kiện đặc biệt khẩn cấp. Vai trò cụ thể của bộ điều khiển ngắt gồm:
1. Quản lý các ngắt: Bộ điều khiển ngắt quản lý các ngắt từ nhiều nguồn khác nhau, ưu
tiên và phân loại các ngắt dựa trên tầm quan trọng và mức độ khẩn cấp.
2. Lưu trạng thái hiện tại của CPU: Tớc khi xử lý một ngắt, CPU cần lưu lại trạng thái
hiện tại (ví dụ: các thanh ghi, bộ đếm chương trình) để có thể tiếp tục thực hiện lệnh
sau khi xử lý ngắt.
3. Chuyển đổi ngữ cảnh: Sau khi xử lý ngắt, bộ điều khiển ngắt sẽ điều khiển CPU quay
trở lại trạng thái trước đó và tiếp tục thực hiện chương trình như bình thường.
4. Tối ưu hóa hiệu suất: Ngắt giúp xử lý các sự kiện khẩn cấp một cách nhanh chóng mà
không cần kiểm tra liên tục trạng thái của các thiết bị ngoại vi, tiết kiệm tài nguyên và
nâng cao hiệu suất hệ thống.
Cách giải:
Bài 10: Giả sử một CPU sử dụng pipeline 5 giai đoạn với mỗi giai đoạn mất 1 chu kỳ
xung nhịp để thực hiện.
a) Giải thích cách hoạt động của pipeline trong CPU.
lOMoARcPSD| 58886076
b) Nếu một chương trình cần 100 lệnh để hoàn thành, tính số chu kỳ xung nhịp tối
thiểu cần thiết để thực hiện chương trình này trên CPU có pipeline.
Giải thích:
a) Cách hoạt động của pipeline trong CPU:
Pipeline là một kỹ thuật trong thiết kế CPU giúp tăng hiệu suất bằng cách chia quá trình
xử lý một lệnh thành nhiều giai đoạn liên tiếp, với mỗi giai đoạn được thực hiện trong
một phần khác nhau của CPU. Một CPU pipeline có 5 giai đoạn thông thường bao gồm:
1. Fetch (F): Đọc lệnh từ bộ nhớ.
2. Decode (D): Giải mã lệnh để xác định hoạt động cần thực hiện.
3. Execute (E): Thực hiện lệnh hoặc tính toán.
4. Memory Access (M): Truy cập bộ nhớ nếu lệnh yêu cầu.
5. Write Back (W): Ghi kết quả về thanh ghi.
Trong một CPU pipeline, các lệnh được thực hiện theo kiểu luân phiên, tương tự như dây
chuyền sản xuất. Khi một lệnh đang ở giai đoạn 2 (giải mã), lệnh tiếp theo có thể ở giai
đoạn 1 (đọc lệnh), và lệnh trước đó có thể ở giai đoạn 3 (thực hiện lệnh).
b) Tính số chu kỳ xung nhịp tối thiểu để thực hiện 100 lệnh trên CPU có pipeline
Giả sử một CPU pipeline có 5 giai đoạn và mỗi giai đoạn mất 1 chu kỳ xung nhịp để
hoàn thành. Chúng ta cần tính toán số chu kỳ xung nhịp tối thiểu để thực hiện 100 lệnh.
Khi pipeline bắt đầu, lệnh đầu tiên cần 5 chu kỳ để hoàn thành (một chu kỳ cho mỗi giai
đoạn). Sau đó, mỗi lệnh tiếp theo sẽ mất thêm 1 chu kỳ xung nhịp để đi vào pipeline vì
pipeline đã được "lấp đầy".
Do đó, số chu kỳ tối thiểu cần thiết để hoàn thành 100 lệnh là:
5 + 99 = 104 lệnh
Bài 11: Một hệ thống sử dụng phương pháp interrupt để xử lý các yêu cầu I/O. Hãy
giải thích cách hoạt động của interrupt và so sánh với phương pháp polling.
Cách hoạt động của interrupt
Interrupt (ngắt) là tín hiệu được gửi đến CPU để tạm ngừng các công việc hiện tại và
chuyển sang xử lý một sự kiện khác khẩn cấp hơn. Khi một thiết bị I/O cần sự chú ý của
CPU (ví dụ: bàn phím khi có phím được nhấn, hay bộ nhớ khi có dữ liệu đọc/ghi hoàn
tất), nó sẽ gửi một tín hiệu ngắt đến CPU. Dưới đây là cách hoạt động của interrupt:
1. Phát hiện ngắt: Thiết bị I/O gửi một tín hiệu ngắt đến CPU thông qua bộ điều
khiển ngắt.
lOMoARcPSD| 58886076
2. Lưu trạng thái: CPU tạm dừng công việc hiện tại và lưu trạng thái của nó (bao
gồm các thanh ghi và bộ đếm chương trình) để có thể quay lại sau khi xử lý xong
ngắt.
3. Xử lý ngắt: CPU nhảy đến một chương trình xử lý ngắt (ISR - Interrupt Service
Routine) để xử lý yêu cầu từ thiết bị I/O.
4. Phục hồi trạng thái: Sau khi xử lý xong ngắt, CPU khôi phục lại trạng thái trước
đó và tiếp tục công việc bị gián đoạn.
So sánh với phương pháp polling
Polling và interrupt là hai phương pháp chính để xử lý yêu cầu I/O từ các thiết bị ngoại
vi. Dưới đây là sự khác biệt chính giữa hai phương pháp này:
Bài 12: Làm các phép tính sau:
a) Chuyển số -25 từ hệ thập phân sang hệ nhị phân sử dụng phương pháp bù 2 với
16 bit.
b) Biểu diễn số -57.5 trong hệ nhị phân dấu phẩy động theo chuẩn IEEE 754.
Giải:
a) -25= 1111 1111 1110 0111
2
b)-57,5 = 1 10000100 11001110000000000000000 (IEEE)
lOMoARcPSD| 58886076
Bài 13: Một CPU có tần số xung nhịp là 4GHz. Tính thời gian cần thiết để thực hiện
một lệnh nếu mỗi lệnh cần 3 chu kỳ xung nhịp. Giải thích khái niệm chu kỳ xung
nhịp.
Bài 14: Giả sử một CPU có ba loại lệnh A, B, C. Số chu kỳ xung nhịp để thực hiện
các lệnh tương ứng là 1, 2, và 3.
1. Tính thời gian trung bình để thực hiện một lệnh.
2. Nếu tần số xung nhịp của CPU là 2 GHz, tính tốc độ thực hiện lệnh của CPU
(lệnh/giây).
lOMoARcPSD| 58886076
Bài 15: Một hệ thống sử dụng cache liên kết trực tiếp (Direct-mapped Cache). Hãy
mô tả cách hệ thống tìm kiếm dữ liệu trong cache và xử lý khi xảy ra cache miss.
lOMoARcPSD| 58886076
Direct-mapped cache là một loại bộ nhớ đệm (cache) trong đó mỗi khối nhớ (block) trong
bộ nhớ chính (main memory) ánh xạ đến đúng một vị trí duy nhất trong cache. Điều này
đơn giản hóa quá trình tìm kiếm và lưu trữ dữ liệu. Dưới đây là mô tả về cách hệ thống
tìm kiếm dữ liệu trong cache và xử lý khi xảy ra cache miss.
Cách hệ thống tìm kiếm dữ liệu trong Direct-mapped Cache
1. Chia địa chỉ bộ nhớ:
o Tag: Phần dùng để nhận dạng dữ liệu lưu trữ trong cache. o Index: Phần
dùng để xác định vị trí của block trong cache.
o Offset: Phần chỉ địa chỉ byte cụ thể trong block.
2. Tìm kiếm trong cache:
o Khi CPU cần truy cập một địa chỉ bộ nhớ, nó chia địa chỉ thành các phần
(Tag, Index, Offset).
o Index xác định vị trí chính xác của block trong cache. o Tag được so sánh
với giá trị Tag của block tại vị trí Index trong cache để kiểm tra xem dữ
liệu yêu cầu có trong cache hay không (cache hit).
Nếu Tag khớp, đó là cache hit và dữ liệu được truy xuất trực tiếp từ cache. Nếu không
khớp, đó là cache miss và cần xử lý tiếp.
Xử lý khi xảy ra cache miss
Khi xảy ra cache miss, hệ thống sẽ thực hiện các bước sau:
1. Tải dữ liệu từ bộ nhớ chính:
o Dữ liệu được tải từ bộ nhớ chính vào cache. Block trong bộ nhớ chính
chứa dữ liệu được đặt vào vị trí trong cache xác định bởi Index.
2. Cập nhật cache:
o Block mới trong bộ nhớ chính thay thế block cũ tại vị trí đó trong cache. o
Tag của block mới được cập nhật trong cache. o Dữ liệu từ block mới
được lưu trữ vào cache để các lần truy cập tiếp theo có thể truy xuất
nhanh hơn.
3. Xử lý lệnh ban đầu:
Sau khi dữ liệu đã được cập nhật vào cache, CPU tiếp tục thực hiện lệnh ban đầu sử dụng
dữ liệu mới từ cache.
Bài 16: Một CPU có tần số xung nhịp là 2.8 GHz và thực hiện một chương trình với
3 triệu lệnh.
1. Tính số lệnh CPU có thể thực hiện trong 1 giây.
2. Tính thời gian để hoàn thành chương trình 3 triệu lệnh này.
lOMoARcPSD| 58886076

Preview text:

lOMoARcP SD| 58886076
BÀI TẬP THỰC HÀNH KTMT ÔN TẬP
Bài 1: Chuyển đổi số thập phân sang nhị phân:
a) Chuyển số 4035 từ hệ thập phân sang hệ nhị phân.
b) Chuyển số 4056 từ hệ thập phân sang hệ bát phân. Giải: a) 4035 = 111111000011(2) b) 4056 = 111111011000(2)
(Cách chuyển số thập phân sang nhị phân và ngược lại: Nguyên tắc của phương pháp này
là lấy số cần chuyển đổi chia cho 22 (kết quả chỉ lấy phần nguyên), sau đó tiếp tục lấy kết
quả chia cho 22 (và cũng chỉ lấy phần nguyên), kết quả số nhị phân thu được là tập hợp
các số dư của các phép chia, lấy từ phép chia cuối cùng trở lên trên) VD:
Bài 2: Bộ nhớ cache có kích thước 32KB với mỗi block là 64 byte. Hãy tính số block
có thể lưu trữ trong cache và giải thích cơ chế xử lý cache miss.
Giải thích cache miss và cache hit:
Cache Hit: Một cache hit là trạng thái trong đó: dữ liệu được yêu cầu, được xử lý bởi
một thành phần hoặc một ứng dụng được tìm thấy trong bộ nhớ cache. lOMoARcP SD| 58886076
Cache Miss: Là trạng thái nơi dữ liệu được yêu cầu xử lý bởi một thành phần hoặc ứng
dụng không được tìm thấy trong bộ nhớ cache (cache memory). Nó gây ra sự chậm trễ
trong các thực thi bởi chúng cần yêu cầu các chương trình hoặc ứng dụng tìm nạp dữ liệu
từ các cấp bộ nhớ cache khác hoặc bộ nhớ chính. Vì không có sẵn các dữ liệu được yêu cầu. Cách tính: •
Kích thước cache: 32KB = 32 * 1024 bytes = 32768 bytes. • Mỗi block: 64 bytes.
Số block lưu trữ trong cache = Tổng kích thước cache / Kích thước mỗi block = 32768
bytes / 64 bytes/block = 512 block. => Vậy, cache có thể lưu trữ 512 block.
Bài 3: Biểu diễn số −39 trong hệ nhị phân sử dụng phương pháp bù 2 (2’s
complement) với 8 bit và biểu diễn số 79 trong hệ nhị phân sử dụng phương pháp bù 2 với 8 bit. Giải: a)-39 = 1111111111011001(2)
b) 79 = 0000000001001111(2) (8-bits) VD1: VD2: lOMoARcP SD| 58886076
Bài 4: Một CPU có 4 pipeline và tần số xung nhịp là 2.8GHz. Tính số lệnh được xử
lý trong 5 giây và giải thích lợi ích của pipeline trong việc cải thiện hiệu suất.
Bài 5: Thực hiện phép cộng hai số nhị phân: a) 10111001 + 10110110 . ₂ ₂
b) 11000001 − 10011101 .₂ ₂
Giải: (Sử dụng bằng Casio 580-880) lOMoARcP SD| 58886076 VD: VD2: lOMoARcP SD| 58886076 Cách tính thông thường: a) 10111001 + 10110110 = ₂ ₂
Chuyển đổi phép tính (số) sang thập phân, ta có: 185 + 182 = 367
=> Vậy, 101110012+101101102= 111011012
b) 11000001 − 10011101₂ ₂
Chuyển đổi phép tính (số) sang thập phân, ta có: 193 – 157 = 36
=>Vậy, 11000001 − 10011101 = 00100100₂ ₂ 2
Bài 6: Bộ nhớ cache có kích thước 64KB với mỗi block là 256 byte. Hãy tính số
block trong cache và giải thích cơ chế thay thế block khi cache bị đầy  Kích
thước cache: 64KB = 64 * 1024 bytes = 65536 bytes.  Mỗi block: 256 bytes. lOMoARcP SD| 58886076
Số block lưu trữ trong cache = Tổng kích thước cache / Kích thước mỗi block = 65536
bytes / 256 bytes/block = 256 block.
Vậy, cache có thể lưu trữ 256 block.
Bài 7: Giả sử CPU có tần số 3 GHz và tiêu thụ công suất 65W.
a) Tính công suất tiêu thụ nếu tần số tăng lên 3.5 GHz mà không thay đổi kiến trúc.
b) Giải thích mối quan hệ giữa tần số xung nhịp và công suất tiêu thụ của CPU. Giải: a) lOMoARcP SD| 58886076 b)
Tần số xung nhịp và công suất êu thụ của CPU có mối quan hệ chặt chẽ với nhau, và
công suất êu thụ tăng khi tần số xung nhịp tăng. Công thức P=C x V2 x f cho thấy rằng
công suất êu thụ phụ thuộc vào tần số xung nhịp (f) và bình phương điện áp (V^2). •
Tần số xung nhịp (f): Khi tần số xung nhịp tăng, số chu kỳ hoạt động của CPU
trong một giây tăng, dẫn đến việc CPU thực hiện nhiều lệnh hơn và tiêu thụ nhiều năng lượng hơn. •
Điện áp (V): Công suất tiêu thụ tăng lên bình phương của điện áp. Điều này có
nghĩa là một sự tăng nhỏ trong điện áp có thể dẫn đến sự tăng đáng kể trong công suất tiêu thụ.
Bài 8: Một CPU có tần số xung nhịp là 2.5GHz và thực hiện được 4 lệnh mỗi chu kỳ.
Tính số lệnh mà CPU có thể xử lý trong 1 giây. Giải thích khái niệm xung nhịp trong CPU. Giải:
1. Tần số xung nhịp của CPU: 2.5GHz = 2.5 x 10910^9 chu kỳ/giây.
2. Số lệnh thực hiện mỗi chu kỳ: 4 lệnh.
Bài 9: Bộ điều khiển ngắt trong CPU. lOMoARcP SD| 58886076
a) Giải thích vai trò của bộ điều khiển ngắt trong CPU.
b) Tính số ngắt CPU có thể xử lý trong 1 giây nếu mỗi ngắt mất 10,000 chu kỳ và tần số CPU là 2.5 GHz. Giải thích:
a) Vai trò của bộ điều khiển ngắt trong CPU
Bộ điều khiển ngắt (Interrupt Controller) là một thành phần quan trọng của CPU, có
nhiệm vụ quản lý các tín hiệu ngắt từ các thiết bị phần cứng hoặc phần mềm. Các ngắt là
các tín hiệu tạm thời ngừng thực hiện chuỗi lệnh hiện tại của CPU để chuyển sang xử lý
một sự kiện đặc biệt khẩn cấp. Vai trò cụ thể của bộ điều khiển ngắt gồm:
1. Quản lý các ngắt: Bộ điều khiển ngắt quản lý các ngắt từ nhiều nguồn khác nhau, ưu
tiên và phân loại các ngắt dựa trên tầm quan trọng và mức độ khẩn cấp.
2. Lưu trạng thái hiện tại của CPU: Trước khi xử lý một ngắt, CPU cần lưu lại trạng thái
hiện tại (ví dụ: các thanh ghi, bộ đếm chương trình) để có thể tiếp tục thực hiện lệnh sau khi xử lý ngắt.
3. Chuyển đổi ngữ cảnh: Sau khi xử lý ngắt, bộ điều khiển ngắt sẽ điều khiển CPU quay
trở lại trạng thái trước đó và tiếp tục thực hiện chương trình như bình thường.
4. Tối ưu hóa hiệu suất: Ngắt giúp xử lý các sự kiện khẩn cấp một cách nhanh chóng mà
không cần kiểm tra liên tục trạng thái của các thiết bị ngoại vi, tiết kiệm tài nguyên và
nâng cao hiệu suất hệ thống. Cách giải:
Bài 10: Giả sử một CPU sử dụng pipeline 5 giai đoạn với mỗi giai đoạn mất 1 chu kỳ
xung nhịp để thực hiện.
a) Giải thích cách hoạt động của pipeline trong CPU. lOMoARcP SD| 58886076
b) Nếu một chương trình cần 100 lệnh để hoàn thành, tính số chu kỳ xung nhịp tối
thiểu cần thiết để thực hiện chương trình này trên CPU có pipeline. Giải thích:
a) Cách hoạt động của pipeline trong CPU:
Pipeline là một kỹ thuật trong thiết kế CPU giúp tăng hiệu suất bằng cách chia quá trình
xử lý một lệnh thành nhiều giai đoạn liên tiếp, với mỗi giai đoạn được thực hiện trong
một phần khác nhau của CPU. Một CPU pipeline có 5 giai đoạn thông thường bao gồm:
1. Fetch (F): Đọc lệnh từ bộ nhớ.
2. Decode (D): Giải mã lệnh để xác định hoạt động cần thực hiện.
3. Execute (E): Thực hiện lệnh hoặc tính toán.
4. Memory Access (M): Truy cập bộ nhớ nếu lệnh yêu cầu.
5. Write Back (W): Ghi kết quả về thanh ghi.
Trong một CPU pipeline, các lệnh được thực hiện theo kiểu luân phiên, tương tự như dây
chuyền sản xuất. Khi một lệnh đang ở giai đoạn 2 (giải mã), lệnh tiếp theo có thể ở giai
đoạn 1 (đọc lệnh), và lệnh trước đó có thể ở giai đoạn 3 (thực hiện lệnh).
b) Tính số chu kỳ xung nhịp tối thiểu để thực hiện 100 lệnh trên CPU có pipeline
Giả sử một CPU pipeline có 5 giai đoạn và mỗi giai đoạn mất 1 chu kỳ xung nhịp để
hoàn thành. Chúng ta cần tính toán số chu kỳ xung nhịp tối thiểu để thực hiện 100 lệnh.
Khi pipeline bắt đầu, lệnh đầu tiên cần 5 chu kỳ để hoàn thành (một chu kỳ cho mỗi giai
đoạn). Sau đó, mỗi lệnh tiếp theo sẽ mất thêm 1 chu kỳ xung nhịp để đi vào pipeline vì
pipeline đã được "lấp đầy".
Do đó, số chu kỳ tối thiểu cần thiết để hoàn thành 100 lệnh là: 5 + 99 = 104 lệnh
Bài 11: Một hệ thống sử dụng phương pháp interrupt để xử lý các yêu cầu I/O. Hãy
giải thích cách hoạt động của interrupt và so sánh với phương pháp polling.
Cách hoạt động của interrupt
Interrupt (ngắt) là tín hiệu được gửi đến CPU để tạm ngừng các công việc hiện tại và
chuyển sang xử lý một sự kiện khác khẩn cấp hơn. Khi một thiết bị I/O cần sự chú ý của
CPU (ví dụ: bàn phím khi có phím được nhấn, hay bộ nhớ khi có dữ liệu đọc/ghi hoàn
tất), nó sẽ gửi một tín hiệu ngắt đến CPU. Dưới đây là cách hoạt động của interrupt:
1. Phát hiện ngắt: Thiết bị I/O gửi một tín hiệu ngắt đến CPU thông qua bộ điều khiển ngắt. lOMoARcP SD| 58886076
2. Lưu trạng thái: CPU tạm dừng công việc hiện tại và lưu trạng thái của nó (bao
gồm các thanh ghi và bộ đếm chương trình) để có thể quay lại sau khi xử lý xong ngắt.
3. Xử lý ngắt: CPU nhảy đến một chương trình xử lý ngắt (ISR - Interrupt Service
Routine) để xử lý yêu cầu từ thiết bị I/O.
4. Phục hồi trạng thái: Sau khi xử lý xong ngắt, CPU khôi phục lại trạng thái trước
đó và tiếp tục công việc bị gián đoạn.
So sánh với phương pháp polling
Polling và interrupt là hai phương pháp chính để xử lý yêu cầu I/O từ các thiết bị ngoại
vi. Dưới đây là sự khác biệt chính giữa hai phương pháp này:
Bài 12: Làm các phép tính sau:
a) Chuyển số -25 từ hệ thập phân sang hệ nhị phân sử dụng phương pháp bù 2 với 16 bit.
b) Biểu diễn số -57.5 trong hệ nhị phân dấu phẩy động theo chuẩn IEEE 754. Giải: a) -25= 1111 1111 1110 01112
b)-57,5 = 1 10000100 11001110000000000000000 (IEEE) lOMoARcP SD| 58886076
Bài 13: Một CPU có tần số xung nhịp là 4GHz. Tính thời gian cần thiết để thực hiện
một lệnh nếu mỗi lệnh cần 3 chu kỳ xung nhịp. Giải thích khái niệm chu kỳ xung nhịp.
Bài 14: Giả sử một CPU có ba loại lệnh A, B, C. Số chu kỳ xung nhịp để thực hiện
các lệnh tương ứng là 1, 2, và 3.
1. Tính thời gian trung bình để thực hiện một lệnh.
2. Nếu tần số xung nhịp của CPU là 2 GHz, tính tốc độ thực hiện lệnh của CPU (lệnh/giây). lOMoARcP SD| 58886076
Bài 15: Một hệ thống sử dụng cache liên kết trực tiếp (Direct-mapped Cache). Hãy
mô tả cách hệ thống tìm kiếm dữ liệu trong cache và xử lý khi xảy ra cache miss. lOMoARcP SD| 58886076
Direct-mapped cache là một loại bộ nhớ đệm (cache) trong đó mỗi khối nhớ (block) trong
bộ nhớ chính (main memory) ánh xạ đến đúng một vị trí duy nhất trong cache. Điều này
đơn giản hóa quá trình tìm kiếm và lưu trữ dữ liệu. Dưới đây là mô tả về cách hệ thống
tìm kiếm dữ liệu trong cache và xử lý khi xảy ra cache miss.
Cách hệ thống tìm kiếm dữ liệu trong Direct-mapped Cache
1. Chia địa chỉ bộ nhớ:
o Tag: Phần dùng để nhận dạng dữ liệu lưu trữ trong cache. o Index: Phần
dùng để xác định vị trí của block trong cache.
o Offset: Phần chỉ địa chỉ byte cụ thể trong block. 2. Tìm kiếm trong cache:
o Khi CPU cần truy cập một địa chỉ bộ nhớ, nó chia địa chỉ thành các phần (Tag, Index, Offset).
o Index xác định vị trí chính xác của block trong cache. o Tag được so sánh
với giá trị Tag của block tại vị trí Index trong cache để kiểm tra xem dữ
liệu yêu cầu có trong cache hay không (cache hit).
Nếu Tag khớp, đó là cache hit và dữ liệu được truy xuất trực tiếp từ cache. Nếu không
khớp, đó là cache miss và cần xử lý tiếp.
Xử lý khi xảy ra cache miss
Khi xảy ra cache miss, hệ thống sẽ thực hiện các bước sau:
1. Tải dữ liệu từ bộ nhớ chính:
o Dữ liệu được tải từ bộ nhớ chính vào cache. Block trong bộ nhớ chính
chứa dữ liệu được đặt vào vị trí trong cache xác định bởi Index. 2. Cập nhật cache:
o Block mới trong bộ nhớ chính thay thế block cũ tại vị trí đó trong cache. o
Tag của block mới được cập nhật trong cache. o Dữ liệu từ block mới
được lưu trữ vào cache để các lần truy cập tiếp theo có thể truy xuất nhanh hơn.
3. Xử lý lệnh ban đầu:
Sau khi dữ liệu đã được cập nhật vào cache, CPU tiếp tục thực hiện lệnh ban đầu sử dụng dữ liệu mới từ cache.
Bài 16: Một CPU có tần số xung nhịp là 2.8 GHz và thực hiện một chương trình với 3 triệu lệnh.
1. Tính số lệnh CPU có thể thực hiện trong 1 giây.
2. Tính thời gian để hoàn thành chương trình 3 triệu lệnh này. lOMoARcP SD| 58886076