Bài toán aảnh màu kiến trúc máy tính
1. Trình bày khái niệm về máy tính điện tử? - Máy tính (computer) là một thiết bị điện tử dùng để tính toán, xử lý dữ liệu theo chương trình đã lập trình trước 2. Máy tính điện tử đầu tiên ENIAC sử dụng linh kiện đèn điện tử hay transistor? Sô l°ợng linh kiện tích hợp trên chip thể hiện điều gì? - Sử dụng linh kiện đèn điện tử vì transistor chưa được phát minh - Thể hiện thời gian xử lí tính toán và đưa ra lệnh để điều khiển hệ thống máy tính. 3. Trình bày chức năng c¢ bản của máy tính? - Máy tính thực hiện các công việc sau: - Nhận thông tin vào.
7. Nói việc trao đổi dữ liệu giữa máy tính và thiết bị ngoại vi đ°ợc thực hiện qua 1 cổng (port) có đúng không? Vị dụ? - Đúng. Ví dụ chuột máy tính kết nối với máy tính qua cáng USB. 8. Bộ nhớ chính trong máy tính gồm những thành phần nào? Tại sao gọi RAM là bộ nhớ truy cập ngẫu nhiên? - Thanh RAM được cấu tạo từ nhiều các chi tiết nhỏ khác nhau, gßm có: điện trở, là phần bao quanh các chip nhớ (resistor); tụ điện (capacitor). Dãy điện trở và tụ điện thường được thiết kế nằm cạnh tham RAM để cung cấp điện áp một cách án định và chính xác cho các chip nhớ. - RAM được gọi là bộ nhớ truy cập ngẫu nhiên vì nó có đặc tính: thời gian thực hiện thao tác đọc hoặc ghi đối với mỗi ô nhớ là như nhau, cho dù đang ở bất kỳ vị trí nào trong bộ nhớ. 9. Dựa vào những tiêu chí gì để đánh giá sự phát triển của máy tính điện tử số qua các giai đoạn khác nhau? 10. Trình bày nguyên lý Von Newmann? - Máy tính có thể hoạt động theo một chương trình đã được lưu trữ. Theo Von Neumann, chúng ta có thể tập hợp các lệnh cho máy thi hành theo một chương trình được thiết kế và coi đó như một tập dữ liệu. Dữ liệu này được cài vào trong máy và được truyền bằng xung điện. Ðây là một cuộc cách mạng mới cho máy tính nhằm tăng tốc độ tính toán vào thời đó vì trước kia máy chỉ có thể nhận được các lệnh từ băng giấy hoặc bìa đục lỗ và nạp vào bằng tay. Nếu gặp bài toán lặp lại nhiều lần thì cũng tiếp tục bằng cách nạp lại một cách thủ công như vậy gây hạn chế trong tính toán sử dụng. - Bộ nhớ được địa chỉ hóa Mỗi dữ liệu đều có một địa chỉ của vùng nhớ chứa số liệu đó. Như vậy để truy nhập dữ liệu ta chỉ cần xác định địa chỉ của nó trên bộ nhớ. - Bộ đếm của chương trình Nếu mỗi câu lệnh phải dùng một vùng nhớ để chứa địa chỉ của câu lệnh tiếp theo thì không gian bộ nhớ sẽ bị thu hẹp. Ðể khắc phục hạn chế này, máy được gắn một thanh ghi để chỉ ra vị trí của lệnh tiếp theo cần được thực hiện và nội dung của nó tự động được tăng lên mỗi lần lệnh được truy cập. Muốn đái thứ tự lệnh ta chỉ cần thay đái nội dung thanh ghi bằng một địa chỉ của lệnh cần được thực hiện tiếp. 11. Thông tin đ°ợc l°u trữ và truyền bên trong máy tính d°ới dạng nào? - Thông tin được lưu trữ dưới dạng số và truyền đi dưới dạng tín hiệu điện. 12. Trình bày trình tự xử lý thông tin của máy tính điện tử? - Nhập thông tin vào máy tính => Xử lí thông tin => Xuất thông tin ra màn hình 13. Thế nào là bus hệ thống? Chức năng của chúng? - là một bus máy tính đơn lẻ kết nối các thành phần chính của một hệ thống máy tính, kết hợp các chức năng của một bus dữ liệu để mang Một số bù 2 có được do đảo tất cả các bit có trong số nhị phân (đái 1 thành 0 và ngược lại) rßi thêm 1 vào kết quả vừa đạt được. Thực chất, số biểu diễn ở dạng bù 2 là số biểu diễn ở bù 1 (đảo bit) rßi sau đó cộng thêm 1. Phương pháp bù 2 thường được sử dụng để biểu diễn số âm trong máy tính. 5. Đối với số nguyên có dấu 8 bit, dùng ph°¢ng pháp Vậy 101 được biểu diễn thành 01100101 6. Đối với số nguyên có dấu 8 bit, dùng ph°¢ng pháp 101 = 0110 0101 2 Vậy 101 được biểu diễn thành 01100101 7. Đối với số nguyên có dấu, 8 bit, dùng ph°¢ng pháp Vậy -29 được biểu diễn thành 11100011 8. Đối với các số 8 bit, không dấu. Hãy cho biết kết quả khi thực hiện phép cộng: 0100 0111 + 0101 1111. 0100 0111 + 0101 1111 10100110 9. Đối với số có dấu, 8 bit, xét phép cộng: (-39) + (-42). Phát biểu nào sau đây là đúng: A. Không cho kết quả, vì tràn số B. Không cho kết quả, vì có nhớ ra khỏi bit cao nhất Tại sao? -(-42) 10 = 11010110 2 (biểu diễn dạng bù 2) (-39) 10 +(-42) 10 =10101111 2 =175 10 và vượt qua phạm vi biểu diễn của số có dấu 8 bit(>127)➔ ta để kết quả ở dạng bù 2 và = -81. Ph°¢ng án chọn là C 10. Đối với số có dấu, 8 bit, xét phép cộng: 91 + 63. Phát biểu nào sau đây là đúng: Tại sao? -91 10 = 010110112 -63 10 = 001111112 9110 +63 10 =10011010 2 =154 10 và vượt qua phạm vi biểu diễn của số có dấu 8 bit(>127)➔nên ta để kết quả ở dạng bù 2 và = -102. Chọn ph°¢ng án D 11. Phép cộng 2 số hệ 16: 1C37286A + 9395E84B có kết quả bằng: AFCD10B5. 12. Phép trừ 2 số hệ 16: B14FC675 – 839EA247 có kết quả bằng :2DB1242E 13. Số hex 9DB1242E là số d°¢ng hay âm? 14. Giá trị lớn nhất của số nguyên không dấu 8 bit bằng : 255 15. Giá trị lớn nhất của số nguyên có dấu 8 bit bằng : 127 16. 1KB(kilobyte) =1024 byte 17. 1Kb(kilobit) = 125byte 18. Cho số hệ thập lục phân 8A1F, giá trị hệ thập phân đối với số có dấu và không dấu bằng bao nhiêu? có dấu : 35359 không dấu: 19. Khái niệm về Carry và Overflow? - Carry(nhớ) xuất hiện trong các bài toán cộng trừ hai 2 không dấu khi báo táng dạng không dấu bị ngoài tầm biểu diễn, xảy ra khi <0 hoặc >max giá trị không dấu n bit. -Overflow(tràn) xuất hiện khi cộng trừ 2 số có dấu khi báo táng có dấu bị ngoài tầm biểu diễn(tràn) xảy ra khi ta cộng hai số dương và được táng là một sô âm hay cộng hai số âm được táng là một số dương. 20. Thực hiện phép cộng 2 số nhị phân 11010010 + 10111101. Hãy cho biết giá trị 2 bit carry (C) và overflow (O). 11010010 (210) (-46)+10111101 (189) (-67)10001111 (143) (-113) Carry=1 Overflow= 1. Khái niệm về kiến trúc tập lệnh? Các thành phần của nó bao gồm những gì? 8. FPU thực hiện chức năng gì? Để để CPU có thể xử lý dữ liệu với các số thực với độ chính xác cao và các phép toán phức tạp như sin cos Tính tích phân các CPU thường được trang bị thêm bộ đßng xử lý toán học(FPU: Floating Point Unit) còn được gọi là bộ xử lý dấu chấm động 9. MIPS có bao nhiêu thanh ghi đa năng/ dấu phảy động? Các thanh ghi đó có chức năng gì? - MIPS có 32 ghi đa năng và 32 thanh ghi dấu phảy động - Chức năng của các thanh ghi: - Thanh ghi đa năng: + Thanh ghi zero (có tên là $zero): chứa giá trị 0; không một giá trị nào được ghi vào thanh ghi zero. + Thanh ghi 1(có tên là $at): được gọi cho hợp ngữ tạm thời, thanh ghi này dùng cho tính toán các lệnh macro, và không nên sử dụng cho các chương trình hợp ngữ + Các thanh ghi $k0 và $k1: được sử dụng bởi các nhân (kermel) của lệnh điều hành và không nên bị thay đái bởi các trương trình người dùng. + Thanh ghi cuối cùng $31($ra): được dùng giống như một thanh ghi liên kết giữa lệnh nhảy và lệnh liên kết, cái mà sẽ được sử dụng để gọi một thủ tục. Thanh ghi $31 được dùng để ghi nhớ địa chỉ trả về của một thủ tục được gọi + Các thanh ghi $v0 và $v1: dùng để lưu trữ giá trị trả về của hàm trình đ°ợc không? Có thanh ghi không thể lập trình được $s 14. Kiến trúc tập lệnh MIPS có bao nhiêu định dạng lệnh, trình bày từng định dạng? 21. Cho câu lệnh hợp ngữ addu $s1, $s2, $s3. Xác định mã máy? addu $s1, $s2, $s3. 22. Cho câu lệnh hợp ngữ add $t1, $s2, $s3. Xác định mã máy? add $t1, $s2, $s3. 23. Cho câu lệnh hợp ngữ subu $t2, $s2, $s3. Xác định mã máy? subu $t2, $s2, $s3. 24. Cho câu lệnh hợp ngữ and $t0, $s1, $s2. Xác định mã máy? and $t0, $s1, $s2. 25. Cho câu lệnh hợp ngữ or $t3, $s4, $s5. Xác định mã máy? or $t3, $s4, $s5. Rd = Rs /Rt 26. Giả sử $s = 0xabcd1234 và $s2 = 0xffff0000. Cho lệnh hợp ngữ and $s0, $s1, $s2, hãy xác định kết quả trên thanh ghi $s0? $s1 = 0xabcd1234 và $s2 = 0xffff X y x and y 0 0 1 1 01010001 So từng bit: Op Rs Rt Rd Sa funct 0 Rs=$s2 Rt=$s3 Rd=$s1 0 21 000000 10010 10011 10001 00000 100001 Op Rs Rt Rd Sa funct 0 Rs=$s2 Rt=$s3 Rd=$t1 0 20 000000 10010 10011 1001 00000 100000 Op Rs Rt Rd Sa funct 0 Rs=$s2 Rt=$s3 Rd=$t2 0 23 000000 10010 10011 1010 00000 100011 Op Rs Rt Rd Sa funct 0 Rs=$s1 Rt=$s2 Rd=$t0 0 24 000000 10001 10010 1000 00000 100100 Op Rs Rt Rd Sa funct 0 Rs=$s4 Rt=$s5 Rd=$t3 0 24 000000 10100 10101 1011 00000 100101 4 = 0100 and: → 0000 = 0 3 = 0011 and: → 0000 = 0 1 và 0: and → 0 f = 1111 and: → 1101 = d f = 1111 and: → 1100 = c Kết quả: $s0 = 0xabcd0000. 27. Giả sử $s1 = 0xabcd1234 và $s2 = 0xffff0000. Cho lệnh hợp ngữ or $s0, $s1, $s2, hãy xác định kết quả trên thanh ghi $s0? $s1 = 0xabcd1234 và $s2 = 0xffff X y x or y 0 0 1 1 01010111 So từng bit: or: → 0100 = 4 Kết quả: $s0 = 0x54321234. 29. Giả sử $s1 = 0x11223344 và $s2 = 0xffff0000. Cho lệnh hợp ngữ xor $s0, xor: → 1110 = e Kết quả: $s0 = 0xeedd3344. 30. Cho câu lệnh hợp ngữ sll $s1, $s2, 10, với $s2 = 0xaabbccdd, xác định $s1? sll $s1, $s2, 10 → $s1 = $s2 << 10 bit, $s2 = 0xaabbccdd aabbccdd = 1010 1010 1011 1011 1100 1100 1101 1101 ➔ 1110 1111 0011 0011 0111 0100 0000 0000 = ef Kết quả: $s1 = 0xef337400. 31. Cho câu lệnh hợp ngữ sll $s1, $s2, 4, với $s2 = 0x1122ccdd, xác định $s1? sll $s1, $s2, 4 → $s1 = $s2 << 4 bit, $s2 = 0x1122ccdd ➔ $s1 = 0x122ccdd0. 32. Cho câu lệnh hợp ngữ srl $s1, $s2, 10, với $s2 = 0xaabbccdd, xác định $s1? srl $s1, $s2, 10 → $s1 = $s2 >>> 10 bit, $s2 = 0xaabbccdd aabbccdd = 1010 1010 1011 1011 1100 1100 1101 1101 ➔ 0000 0000 0010 1010 1010 1110 1111 0011 = 002aaef Kết quả: $s1 = 0x002aaef3. 33. Cho câu lệnh hợp ngữ srl $s1, $s2, 4, với $s2 = 0xccdd1122, xác định $s1? srl $s1, $s2, 4 → $s1 = $s2 >>>4 bit, $s2 = 0xccdd ➔ $s1 = 0x0ccdd112. 34. Cho câu lệnh hợp ngữ srlv $s1, $s2, $s3, với $s2 = 0xaabbccdd, $s3=8, xác định $s1? srlv $s1, $s2, $s3 → $s2 = 0xaabbccdd, $s3=8, $s1 = $s2 >>> $s ➔ $s1 = 0x00aabbcc. 35. Cho câu lệnh hợp ngữ sra $s1, $s2, 10, với $s2 = 0xaabbccdd, xác định $s1? sra $s1, $s2, 10 → $s2 = 0xaabbccdd, $s1 = $s2 >> 10 aabbccdd = 1010 1010 1011 1011 1100 1100 1101 1101 ➔ 1111 1111 1110 1010 1010 1110 1111 0011 = ffeaaef Kết quả: $s1 = 0xffeaaef3. 36. Cho câu lệnh hợp ngữ sra $s1, $s2, 10, với $s2 = 0x1234aabb, xác định $s1? sra $s1, $s2, 10 → $s2 = 0x1234aabb, $s1 = $s2 >> 1234aabb = 0001 0010 0011 0100 1010 1010 1011 1011 ori $s1, $s1, 0x65D Xác định $s1?
49. Giải thích câu lệnh sau beq Rs, Rt, label. Giá trị PC bằng bao nhiêu sau khi thực hiện lệnh trên? 50. Giả sử $s0=1 và $s1=-1=0xffffffff. Lệnh slt $t0, $s0, $s1 cho kết quả $t bằng bao nhiêu? - slt $t0, $s0, $s1 kết quả $t0 = 0 51. Thực hiện chuyển phát biểu IF if (($s1>0) && ($s2<0)) {$s3++;} sang hợp ngữ MIPS? - blez $s1, next skip if false bgez $s2, nextskip if false addiu $s3,$s3,1both are true next :52. Vi xử lý mips truy cập bộ nhớ bằng câu lệnh nào? Ví dụ?
Ví dụ: Sw $t0, 12($s0). Lênh này lưu giá trị trong thanh ghi $t0 vào ô nhớ có địa chỉ ($s0 +12) 53. Giả sử có lệnh lw 8($t0). Vùng nhớ có địa chỉ bằng?
55. Giả sử A là mảng các từ nhớ, $s3 là địa chỉ bắt đầu của A. Lệnh lw $t0, 20($s3) cho ra kết quả $t0? - 56. Giả sử A là mảng các từ nhớ, g, h đ°ợc ánh xạ lần l°ợt là $s1, $s2. $s3 là địa chỉ bắt đầu của A. Câu lệnh g = h + A[5] đ°ợc biên dịch thành lệnh hợp ngữ MIPS nh° thế nào? - A là mảng các từ nhớ - g: $s1, h: $s2, $s3: địa chỉ bắt đầu của A g = h + A[5]; ● Được biên dịch thành lệnh máy MIPS như sau: lw $t0, 20($s3) #$t0 gets A[5] add $s1, $s2, $t0 #$s1 = h+A[5] 57. Giải thích câu lệnh lb $s0, 3($s1)? - Lệnh này nạp giá trị byte nhớ có địa chỉ ($s1 + 3) vào byte thấp của thanh ghi $s0. - 24 bit còn lại sẽ có giá trị theo bit dấu của giá trị 1byte (sign- extended) - Nếu không muốn các bit còn lại có giá trị theo bit dấu, sử dụng lệnh: lbu (load byte unsigned) 58. Viết đoạn code hợp ngữ mips thể hiện biểu thức A[300] = h + A[300]? lw $t0,1200($t1) # Dùng thanh ghi tạm $t0 nhận A[300] add $t0,$s2,$t0 # Dùng thanh ghi tạm $t0 nhận h + A[300] sw $t0,1200($t1) # Lưu h + A[300] trở lại vào A[300] 59. Xác định 1 lệnh hợp ngữ mips thể hiện đoạn code C if ($s2 < $s3) $s1 = 1; else $s1 = 0;? ($s2 < $s3) $s1 = 1; else $s1 = 0;? slt $s1, $s2,$s 60. Vi xử lý MIPS hỗ trợ l°u trữ dữ liệu theo dạng big endians hay little endians VD: 11012 (13) + 10102 (10) = 1000 0010 (130) 3. Cho phép tính 11102 x 10102. Triển khai các b°ớc vi xử lý thực hiện phép nhân? Xác định kết quả? (giả sử 2 số hạng trên có độ rộng (mẫu) 4 bit) Iteration Multiplicand Carry Product = HI,LO 0 Initialize (HI = 0, LO = Multiplier) 1101 0000 101 0 1 LO[0] = 0 => Do Nothing + Shift Right (Carry, HI, LO) by 1 bit 0000 010 1 2 LO[0] = 1 => ADD + 0 1101 0101 Shift Right (Carry, HI, LO) by 1 bit 0110 101 0 3 LO[0] = 0 => Do Nothing Shift Right (Carry, HI, LO) by 1 bit 0011 010 1 4 LO[0] = 1 => ADD + 1 0000 0101 Shift Right (Carry, HI, LO) by 1 bit 1000 0010 Iteration Multiplicand Carry Product = HI,LO 0 Initialize (HI = 0, LO = Multiplier) 1110 0000 101 0 1 LO[0] = 0 => Do Nothing + Shift Right (Carry, HI, LO) by 1 bit 0000 010 1 2 LO[0] = 1 => ADD + 0 1110 0101 Shift Right (Carry, HI, LO) by 1 bit 0111 001 0 3 LO[0] = 0 => Do Nothing Shift Right (Carry, HI, LO) by 1 bit 0011 100 1 4 LO[0] = 1 => ADD + 1 0001 1001 Shift Right (Carry, HI, LO) by 1 bit 1000 1100 4. Vẽ l°u đồ thuật toán thực hiện phép nhân với số nguyên có dấu? Giải thích. Đầu tiên gán thanh ghi HI = 0, thanh ghi LO = thừa số thứ 2. Xét điều kiện khi thanh ghi LO[0] = 0 thì dịch phải 1 bit, khi thanh ghi LO[0] = 1 thì 31 lần lặp đầu tiên: HI = HI + thừa số thứ 2. Lần lặp cuối cùng: HI = HI – thừa số thứ 2 xong mỗi chu trình thì dịch phải 1 bit. Kết thúc thuật toán. 5. Vẽ datapath thực hiện phép nhân có dấu? Giải thích các tín hiệu và các thành phần datapath? 6. Cho phép tính 11002 (-4) x 10102 (-6). Triển khai các b°ớc vi xử lý thực hiện phép nhân? Xác định kết quả? (giả sử 2 số hạng trên có độ rộng 4 bit) Iteration Multiplicand Sign Product = HI,LO 0 Initialize (HI = 0, LO = Multiplier) 1100 0000 101 0 1 LO[0] = 0 => Do Nothing Shift Right (Carry, HI, LO) by 1 bit 1000 010 1 |