CÂU HỎI KIẾN TRÚC MÁY TÍNHCHƯƠNG 11.Số nhị phân 8 bit (11010101) tương ứng với số nguyên thập phân có dấu là bao nhiêu trong các phép biểu diễn số có dấu sau đây: a.Dấu và trị tuyệt đối. b.Số bù 1. c.Số bù 2. d.Số thừa K=128. 2.Cho số nguyên 65, biểu diễn số nguyên dưới dạng nhị phân 8 bit trong các phép biểu diễn sau:a.Dấu và trị tuyệt đối. b.Số bù 1. c.Số bù 2. d.Số thừa K=128.3.Đổi các số sau đây: a.0100102 sang số thập phân. b.109010 sang Số nhị phân. c.20.875 sang số nhị phân. d.2010 sang số nhị phân 16 bits. 4.Biểu diễn các số thực dưới đây bằng số có dấu chấm động chính xác đơn 32 bit.a.135.75.b.581.675.c.1150.6875.d.11257. 125CHƯƠNG 21.Load R28, (1500) ; Cho biết mã tác vụ Load: 001001.2.Load R20, 400(R17) ; Cho biết mã tác vụ Load: 001001.3.Store R12, (R24) ; Cho biết mã tác vụ Store: 001010.4.Add R25, R17, R13 ; Cho biết mã tác vụ Add: 011010.5.Sub R2, R16, 1250; Cho biết mã tác vụ Sub: 011011.CHƯƠNG 31.Load R5, (R20).2.Store R7, 100(R21).3.Add R5, R4, R20.4.Sub R10, R12, R24.5.AND R5, R2, R15.6.OR R15, R3, R7.7.JMP R7.8.BRA +5.9.BGT R4, +2.CHƯƠNG 4Cho một bộ nhớ cache tương ứng trực tiếp có 8 khối, mỗi khối có 16 byte. Bộ nhớ trong có 256 khối. Khi thành công cache sử dụng cách ghi lại; Khi thất bại cache dùng cách ghi có nạp. 1.Giả sử lúc khởi động, 8 khối sau đây của bộ nhớ trong đã được đưa lên cache: 8, 17, 23, 34, 38, 67, 69, 132. Viết bảng nhãn của các khối hiện đang nằm trong cache. 2.Cập nhật bảng nhản khi CPU lần lượt đưa ra các địa chỉ sau đây để đọc ghi vào bộ nhớ trong: a.Đọc: 43FH b.Đọc: 82AH c.Đọc: 915H d.Ghi: 08CH e.Ghi: B4AH f.Ghi: 45DH g.Đọc: 5E9H h.Ghi: C7AH i.Đọc: D85H j.Ghi: 92AH k.Đọc: 6C5H l.Ghi: 458H
CÂU HỎI KIẾN TRÚC MÁY TÍNH CHƯƠNG 1 Số nhị phân bit (11010101) tương ứng với số nguyên thập phân có dấu phép biểu diễn số có dấu sau đây: a Dấu trị tuyệt đối b Số bù c Số bù d Số thừa K=128 Cho số nguyên -65, biểu diễn số nguyên dạng nhị phân bit phép biểu diễn sau: a Dấu trị tuyệt đối b Số bù c Số bù d Số thừa K=128 Đổi số sau đây: a 0100102 sang số thập phân b 109010 sang Số nhị phân c 20.875 sang số nhị phân d -2010 sang số nhị phân 16 bits Biểu diễn số thực số có dấu chấm động xác đơn 32 bit a 135.75 b -581.675 c 1150.6875 d -11257 125 CHƯƠNG 2 Load R28, (1500) ; Cho biết mã tác vụ Load: 001001 Load R20, 400(R17) ; Cho biết mã tác vụ Load: 001001 Store R12, (R24) ; Cho biết mã tác vụ Store: 001010 Add R25, R17, R13 ; Cho biết mã tác vụ Add: 011010 Sub R2, R16, #-1250; Cho biết mã tác vụ Sub: 011011 CHƯƠNG 3 Load R5, (R20) Store R7, 100(R21) Add R5, R4, R20 Sub R10, R12, R24 5 AND R5, R2, R15 OR R15, R3, R7 JMP R7 BRA +5 BGT R4, +2 CHƯƠNG Cho nhớ cache tương ứng trực tiếp có khối, khối có 16 byte Bộ nhớ có 256 khối Khi thành công cache sử dụng cách ghi lại; Khi thất bại cache dùng cách ghi có nạp Giả sử lúc khởi động, khối sau nhớ đưa lên cache: 8, 17, 23, 34, 38, 67, 69, 132 Viết bảng nhãn khối nằm cache Cập nhật bảng nhản CPU đưa địa sau để đọc / ghi vào nhớ trong: a Đọc: 43FH b Đọc: 82AH c Đọc: 915H d Ghi: 08CH e Ghi: B4AH f Ghi: 45DH g Đọc: 5E9H h Ghi: C7AH i Đọc: D85H j Ghi: 92AH k Đọc: 6C5H l Ghi: 458H BÀI GIẢI CHƯƠNG Câu Số nhị phân bit (11010101) tương ứng với số nguyên thập phân có dấu phép biểu diễn số có dấu sau đây: a Dấu giá trị tuyệt đối: Ta có công thức: ( ) ∑ => N = (-1) *(1*2 +0*25+1*24+0*23+1*22+0*21+1*20) => N = -8510 Kết quả: -8510 b Số bù 1: Vì phép biểu diễn số bù có bit dấu => số âm, nên ta có: 110101012 = 001010102 (biểu diễn số dương) Dựa công thức câu a ta có: N = (-1)0*(0*26+1*25+0*24+1*23+0*22+1*21+0*20) => N = 4210 => (00101010)2 = 4210 => (11010101)2 = -4210 Kết quả: -4210 c Số bù 2: Ta có công thức: ∑ => N = -1*2 +(1*2 +0*25+1*24+0*23+1*22+0*21+1*20) => N = -4310 Kết quả: -4310 d Số thừa K=128: Vì phép biểu diễn số thừa K=128 có bit dấu => số âm, nên ta có 110101012 biểu diễn số nguyên dương => N = (1*27+1*26+0*25+1*24+0*23+1*22+0*21+1*20) – 128 => N = 8510 Kết quả: 8510 Câu Cho số nguyên -65, biểu diễn số nguyên dạng nhị phân bit phép biểu diễn sau: a Dấu trị tuyệt đối: 65/2 = 32 dư 32/2 = 16 dư 16/2 = dư 8/2 = dư 4/2 = dư 2/2 = dư 1/2 = dư => 6510=10000012 Do số nguyên -65 dương nên bit dấu nên -6510 = 110000012 Kết quả: -6510 = 110000012 b Số bù 1: Ta có : 6510 = 010000012 Lấy bù : -6510 = 101111102 Kết quả: -6510 = 101111102 c Số bù 2: Ta có : 6510 = 010000012 Lấy bù : -6510 = 101111102 Cộng thểm 110 = 000000012 : 101111102 + 000000012 = 101111112 Kết quả: -6510 = 101111112 d Số thừa K=128: Ta có: 128 – 65 = 63 Đổi số 63 sang số nhị phân ta biểu diễn số -65 dạng nhị phân bit phép biểu diễn số thừa K = 128 63/2 = 31 dư 31/2 = 15 dư 15/2 = dư 7/2 = dư 3/2 = dư 1/2 = dư => 6310 = 001111112 (biểu diễn nhị phân) => -6510 = 001111112 (biểu diễn theo số thừa K=128) Kết quả: -6510 = 001111112 Bài Đổi số sau đây: a 0100102 sang số thập phân: 0100102 = 0*20+1*21+0*22+0*23+1*24+0*25 = 1810 Kết quả: 1810 b 1050 sang số nhị phân: 1050/2 = 525 dư 525/2 = 262 dư 262/2 = 131 dư 131/2 = 65 dư 65/2 = 32 dư 32/2 = 16 dư 16/2 = dư 8/2 = dư 4/2 = dư 2/2 = dư 1/2 = dư => 105010 = 100000110102 Kết quả: 105010 = 100000110102 c 20.875 sang số nhị phân : Ta đổi phần nguyên 2010 sang số nhị phân: 20/2 = dư 10/2 = dư 5/2 = dư 2/2 = dư 1/2 = dư => 2010 = 101002 Ta đổi phần thập phân 0.875 sang số nhị phân: 0.875*2 = 1,75=> 0.75*2 = 1,5 => 0.5*2 = => => 0.87510 = 1112 Kết quả: 10100.1112 d -2010 sang số nhị phân 16 bit Ta đổi số thập phân 2010 sang số nhị phân tương tự câu trước ta 201010 = 0000 0111 1101 10102 => -201010 = 1000 0111 1101 10102 Kết quả: -201010 = 1000 0111 1101 10102 Bài Biểu diễn số thực số có dấu chấm động xác đơn 32 bit a 135.75 Ta đổi 135.7510 sang nhị phân tương tự câu 3.c được: 135.7510 = 10000111.112 Ta có: (-1)S*(1,f1f2f3 … f23)*2(E – 127) Chuẩn hóa: 135.7510 = 10000111.112 = 1.000011111*27 Do 135.75 số dương nên S = 02 (1 bit) E – 127 = E = 134 => E = 13410 = 1000 01102 (8 bit) f = 0000111112 = 000011111000000000000002 (23 bit) Ta có: 135.7510 = 1000 0110 0000 1111 1000 0000 0000 0002 Kết quả: 135.7510 = 10000110 000011111000000000000002 b -581.675 Ta có phần nguyên đổi sang nhị phân tương tự câu Đổi phần thập phân: 0.675*2 = 1.35 => 0.35*2 = 0.7 => 0.7*2 = 1.4 => 0.4*2 = 0.8 => 0.8*2 = 1.6 => 0.6*2 = 1.2 => 0.2*2 = 0.4 => (0.4*2 = 0.8) (lặp lại từ dòng 4) => Phần thập phân 101(0110) 581.67510 = 1001000101.101(0110)2 = 1.001000101101(0110) * 29 Do -581.67510 số âm nên S = 12 (1 bit) E – 127 = E = 136 => E = 13610 = 1000 10002 (8 bit) f = 0010001011112 = 0010 0010 1101 0110 0110 0112 (23 bit) Kết quả: -581.67510 = 10001000 001000101101011001100112 c 1150.6875 1150.687510 = 10001111110.10112 = 1.100011111101011 * 210 Do 1150.687510 số dương nên S = 02 (1 bit) E – 127 = 10 E = 137 => E = 13710 = 1000 10012 (8 bit) f = 1000111111010112 = 1000 1111 1101 0110 0000 0002 (23 bit) Kết quả: 1150.687510 = 10001001 100011111101011000000002 d -11257.125 -11257.12510 = 10101111111001.0012 = 1.0101111111001001 * 213 Do -11257.12510 số âm nên S = 12 (1 bit) E – 127 = 13 E = 140 => E = 14010 = 1000 11002 (8 bit) f = 01011111110010012 = 0101 1111 1100 1001 0000 0002 (23 bit) Kết quả: -11257.12510 = 10001100 010111111100100100000002 CHƯƠNG Bài Load R28, (1500) ; Cho biết mã tác vụ Load: 001001 0 0 1 1 0 0 0 0 0 0 1 1 1 0 Op code (6bit) Th/g S.L (5bit) Độ dời có dấu (16bit) Th/g đc (5bit) Bài Load R20, 400(R17) ; Cho biết mã tác vụ Load: 001001 0 0 1 0 0 0 0 0 1 0 0 0 Op code (6bit) Th/g S.L (5bit) Bài Store R12, (R24) Độ dời có dấu (16bit) Th/g đc (5bit) ; Cho biết mã tác vụ Store: 001010 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 Op code (6bit) Th/g S.L (5bit) Độ dời có dấu (16bit) Th/g đc (5bit) Bài Add R25, R17, R13 ; Cho biết mã tác vụ Add: 011010 1 1 0 1 0 1 0 0 0 0 0 0 Op code (6bit) Đích (5bit) Nguồn (5bit) Nguồn (5bit) Op code mở rộng (10bit) Bài Sub R2, R16, #-1250; Cho biết mã tác vụ Sub: 011011 1 1 0 1 0 0 1 1 1 1 0 1 1 Op code (6bit) Th/g S.L (5bit) Th/g đc (5bit) Số có dấu (toán hang tức 16bit) CHƯƠNG Load R5, (R20) a Đọc lệnh MAR PC IR M[MAR] b Giải mã lệnh đọc ghi nguồn A 0 B R20 PC PC + c Thi hành lệnh MAR A + B d Thâm nhập nhớ / nhảy lần cuối MDR M[MAR] e Lưu kết R5 MDR Store R7, 100(R21) a Đọc lệnh MAR PC IR M[MAR] b Giải mã lệnh đọc ghi nguồn A 100 B R21 PC PC + c Thi hành lệnh MAR A + B MDR R7 d Thâm nhập nhớ / nhảy lần cuối M[MAR] MDR Add R5, R4, R20 a Đọc lệnh MAR PC IR M[MAR] b Giải mã lệnh đọc ghi nguồn A R4 B R20 PC PC + c Thi hành lệnh Ngã ALU A + B d Lưu kết R5 Ngã ALU Sub R10, R12, R24 a Đọc lệnh MAR PC IR M[MAR] b Giải mã lệnh đọc ghi nguồn A R12 B R24 PC PC + c Thi hành lệnh Ngã ALU A - B d Lưu kết R10 Ngã ALU AND R5, R2, R15 a Đọc lệnh MAR PC IR M[MAR] b Giải mã lệnh đọc ghi nguồn A R2 B R15 PC PC + c Thi hành lệnh Ngã ALU A AND B d Lưu kết R5 Ngã ALU OR R15, R3, R7 a Đọc lệnh MAR PC IR M[MAR] b Giải mã lệnh đọc ghi nguồn A R3 B R7 PC PC + c Thi hành lệnh Ngã ALU A OR B d Lưu kết R15 Ngã ALU JMP R7 a Đọc lệnh MAR PC IR M[MAR] b Giải mã lệnh đọc ghi nguồn A 0 B R7 PC PC + c Thi hành lệnh Ngã ALU B d Thâm nhập nhớ nhảy lần cuối PC Ngã ALU BRA +5 a Đọc lệnh MAR PC IR M[MAR] b Giải mã lệnh đọc ghi nguồn PC PC + c Thi hành lệnh d BGT a b c d Ngã ALU PC + 5*4 Thâm nhập nhớ nhảy lần cuối PC Ngã ALU R4, +2 Đọc lệnh MAR PC IR M[MAR] Giải mã lệnh đọc ghi nguồn A R4 B 2*4 PC PC + Thi hành lệnh Nếu điều kiện A thỏa Ngã ALU PC + B Thâm nhập nhớ nhảy lần cuối PC Ngã ALU Nếu không thỏa điều kiện, thực lệnh CHƯƠNG Viết bảng nhãn khối nằm cache Khối Nhãn Chỉ số 0 0 0 17 0 0 23 0 1 1 34 0 0 38 0 0 1 67 0 0 1 69 0 1 132 0 0 0 Chỉ số Nhãn M 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Cập nhật bảng nhãn CPU đưa địa sau để đọc/ ghi vào nhớ trong: Đọc 43FH : Đọc 82AH : Đọc 915H : Ghi 08CH : Ghi B4AH : Ghi 45DH : Đọc 5E9H : Ghi C7AH : Đọc D85H : Ghi 92AH : Đọc 6C5H : l Ghi 458H : a b c d e f g h i j k a Đọc 43FH: 010000111111 100000101010 100100010101 000010001100 101101001010 010001011101 010111101001 110001111010 110110001101 100100101010 011011000101 010001011000 Nhãn M 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Nhãn M 010000111111 Nhãn Chỉ số Chỉ số Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Trước đọc Thành công Sau đọc M = đọc liệu từ nhớ cache, nhãn không thay đổi b Đọc 82AH: 100000101010 Nhãn Chỉ số M Chỉ số Nhãn M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Thất bại Trước đọc Sau đọc M = Nạp khối lên cache, cập nhật nhãn, đọc liệu từ nhớ cache c Đọc 915H: 100100010101 Nhãn Chỉ số Chỉ số M Nhãn M 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Trước đọc Thất bại Sau đọc M = Nạp khối lên cache, cập nhật nhãn, đọc liệu từ nhớ cache d Ghi 08CH: 000010001100 Nhãn Chỉ số Nhãn Chỉ số M M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Thành công Trước đọc Sau đọc M = Chỉ ghi vào nhớ cache, cập nhật bit M = e Ghi B4AH: 101101001010 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Trước đọc Thất bại Sau đọc M = Ghi vào nhớ nạp khối lên cache, cập nhật nhãn f Ghi 45DH: 010001011101 Nhãn Chỉ số Nhãn Chỉ số M M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Thành công Trước đọc Sau đọc M = Chỉ ghi vào nhớ cache, cập nhật bit M = g Đọc 5E9H: 010111101001 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 Trước đọc Thất bại Sau đọc M = Nạp khối lên cache, cập nhật nhãn, đọc liệu từ nhớ cache h Ghi C7AH: 11000 1111010 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 Thất bại Trước đọc Sau đọc M = Ghi vào nhớ nạp khối lên cache, cập nhật nhãn i Đọc D85H: 110110001101 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Trước đọc Thất bại Sau đọc M = Nạp khối lên cache, cập nhật nhãn, đọc liệu từ cache nhớ j Ghi 92AH: 100100101010 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Thất bại Trước đọc Sau đọc M = Ghi vào nhớ nạp khối lên cache, cập nhật nhãn k Đọc 6C5H: 011011000101 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Trước đọc Thất bại Sau đọc M = Nạp khối lên cache, cập nhật nhãn, đọc liệu từ nhớ l Ghi 458H: 010001011000 Nhãn Chỉ số M Chỉ số Nhãn M 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Thành công Trước đọc M = Chỉ ghi vào nhớ cache, cập nhật bit M = Sau đọc [...]... 0 Chỉ ghi vào bộ nhớ cache, cập nhật bit M = 1 e Ghi B4AH: 101101001010 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 2 0 0 1 0 0 0 2 0 0 1 0 0 0 3 0 1 0 0 0 0 3 0 1 0 0 0 0 4 1 0 0 0 0 0 4 1 0 1 1 0 0 5 0 1 0 0 0 0 5 0 1 0 0 0 0 6 0 0 1 0 0 0 6 0 0 1 0 0 0 7 0 0 0 1 0 0 7 0 0 0 1 0 0 Trước khi đọc Thất bại Sau khi đọc M = 0 Ghi vào bộ nhớ trong và nạp khối... 0 0 0 3 0 1 0 0 0 0 3 0 1 0 0 0 0 4 1 0 0 0 0 0 4 1 0 0 0 0 0 5 0 1 0 0 0 0 5 0 1 0 0 0 0 6 0 0 1 0 0 0 6 0 0 1 0 0 0 7 0 0 0 1 0 0 7 1 1 0 0 0 0 Thất bại Trước khi đọc Sau khi đọc M = 0 Ghi vào bộ nhớ trong và nạp khối lên cache, cập nhật bản nhãn i Đọc D85H: 110110001101 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 2 0 0 1 0 0 0 2 0 0 1 0 0 0 3 0 1 0 0 0 0... 1 0 0 3 0 1 0 0 0 0 3 0 1 0 0 0 0 4 1 0 0 0 0 0 4 1 0 0 0 0 0 5 0 1 0 0 0 0 5 0 1 0 0 0 0 6 0 0 1 0 0 0 6 0 0 1 0 0 0 7 0 0 0 1 0 0 7 0 0 0 1 0 0 Thất bại Trước khi đọc Sau khi đọc M = 0 Ghi vào bộ nhớ trong và nạp khối lên cache, cập nhật bản nhãn k Đọc 6C5H: 011011000101 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 2 0 0 1 0 0 0 2 0 0 1 0 0 0 3 0 1 0 0 0 0...2 Cập nhật bảng nhãn khi CPU lần lượt đưa ra các địa chỉ sau đây để đọc/ ghi vào bộ nhớ trong: Đọc 43FH : Đọc 82AH : Đọc 915H : Ghi 08CH : Ghi B4AH : Ghi 45DH : Đọc 5E9H : Ghi C7AH : Đọc D85H : Ghi 92AH : Đọc 6C5H : l Ghi 458H : a b c d e f g h i j k a Đọc 43FH: 010000111111 100000101010... 1 0 0 0 3 0 1 0 0 0 0 3 0 1 0 0 0 0 4 1 0 0 0 0 0 4 1 0 0 0 0 0 5 0 1 0 0 0 0 5 0 1 0 0 0 1 6 0 0 1 0 0 0 6 0 0 1 0 0 0 7 0 0 0 1 0 0 7 0 0 0 1 0 0 Thành công Trước khi đọc Sau khi đọc M = 0 Chỉ ghi vào bộ nhớ cache, cập nhật bit M = 1 g Đọc 5E9H: 010111101001 Nhãn Chỉ số M Nhãn Chỉ số M 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 2 0 0 1 0 0 0 2 0 0 1 0 0 0 3 0 1 0 0 0 0 3 0 1 0 0 0 0... 0 0 0 2 0 0 1 0 0 0 3 0 1 0 0 0 0 3 0 1 0 0 0 0 4 1 0 0 0 0 0 4 1 0 0 0 0 0 5 0 1 0 0 0 0 5 0 1 0 0 0 1 6 0 0 1 0 0 0 6 0 0 1 0 0 0 7 0 0 0 1 0 0 7 0 0 0 1 0 0 Thành công Trước khi đọc M = 0 Chỉ ghi vào bộ nhớ cache, cập nhật bit M = 1 Sau khi đọc