ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
KHOA KĨ THUẬT MÁY TÍNH
TÊN MƠN HỌC: Tổ chức và Cấu trúc Máy tính II
SINH VIÊN THỰC HIỆN
Nguyễn Thanh Hiếu – 20521328
Nguyễn Huy Hoàng – 20521343
GIẢNG VIÊN HƯỚNG DẪN: BÙI PHÙNG HỮU ĐỨC
LỚP: IT012.M12.CNCL
TP. HỒ CHÍ MINH, 2021
MỤC LỤC
DANH MỤC HÌNH VẼ ....................................................................................................... i
DANH MỤC BẢNG BIỂU ................................................................................................. ii
LAB 1: HƯỚNG DẪN SỬ DỤNG LOGISIM ................................................................... 1
1) Thực hành .................................................................................................................... 1
1.1. Mô phỏng chức năng các cổng luận lý: ................................................................ 1
1.2. Mô phỏng các thiết bị lưu trữ ............................................................................... 3
2) Bài tập ......................................................................................................................... 5
2.1. Mô phỏng mạch tổ hợp ......................................................................................... 5
2.2. Mô phỏng mạch tuần tự ........................................................................................ 5
3) Bài tập bổ sung ............................................................................................................ 7
3.1. chức năng và nguyên lý hoạt động D-Flipflop, Thanh ghi. ................................. 7
3.2. Sự khác nhau giữa mạch tổ hợp và mạch tuần tự. ................................................ 8
3.3. Clock( xung nhịp) CPU là gì, các trạng thái của clock ........................................ 8
3.4. Mô phỏng mạch .................................................................................................... 8
3.5. Thiết kế lại thanh ghi ở bài tập 3.2 với 16 bit dữ liệu ........................................ 11
LAB 2: ALU VÀ REGISTER FILES ............................................................................... 12
1) Thực hành .................................................................................................................. 12
1.1. Mô phỏng ALU .................................................................................................. 12
1.2 Mô phỏng Register Files gồm 4 thanh ghi 8 bit .................................................. 12
2) Bài tập ....................................................................................................................... 13
2.1. Cải tiến ALU với các phép toán: A + B, A + 1, A – B, A – 1, A AND B, A OR
B, NOT A, A XOR B ................................................................................................ 13
2.2. Thiết kế và mô phỏng lại Register Files với địa chỉ xuất riêng với địa chỉ ghi? 13
3) Bài tập bổ sung .......................................................................................................... 14
3.1. Phân biệt Mux và Demux? Thiết kế mux 4to1 và demux 2to4 bằng các cổng
luận lý ........................................................................................................................ 14
3.2: Thiết kế lại bộ cộng có chức năng cộng 2 số 8 bit ............................................. 16
3.3: Thiết kế mạch có chức năng so sánh hai input 4 bit có bằng nhau hay khơng?
Trường hợp bằng nhau, output bằng 1 ngược lại output bằng 0. .............................. 17
LAB 3: MARS – CHƯƠNG TRÌNH MƠ PHỎNG HỢP NGỮ MIPS............................. 18
1) Thực hành .................................................................................................................. 18
1.1. Một số lệnh assembly MIPS cơ bản ................................................................... 18
1.2. Mơ phỏng các chương trình và ý nghĩa của chương trình:................................. 20
2) Bài Tập ...................................................................................................................... 21
2.1. Khai báo và xuất ra cửa sổ I/O 2 chuỗi .............................................................. 21
2.2. Biểu diễn nhị phân của 2 chuỗi trên dưới bộ nhớ............................................... 22
2.3. Xuất ra lại đúng chuỗi đã nhập ........................................................................... 22
2.4. Nhập vào 2 số nguyên sau đó xuất tổng của 2 số nguyên này ........................... 23
3) Bài tập bổ sung .......................................................................................................... 24
3.1. Assembly là gì? Trình bày các quá trình một chương trình viết bằng ngơn ngữ
C/C++ được thực hiện trên máy tính? ....................................................................... 24
3.2. Trình bày các kiểu dữ liệu trong MIPS32 và kích thước của từng kiểu dữ liệu
các kiểu dữ liệu: ......................................................................................................... 25
3.3. Trình bày cấu trúc bộ nhớ của một chương trình C++(layout memory). ........... 25
3.4. Viết chương trình hợp ngữ nhập vào ba số a,b,c. Kiểm tra và in ra số lớn nhất,
số bé nhất(khơng dùng vịng lặp) .............................................................................. 25
3.5. Viết chương trình hợp ngữ nhập vào số nguyên a,b. In ra kết quả của phép cộng,
trừ nhân, chia ............................................................................................................. 30
3.6. Viết chương trình hợp ngữ in ra địa chỉ của chuỗi “Hello UIT” và biến var_a
kiểu word có giá trị là 10 trong bộ nhớ ở dạng thập lục phân (ví dụ 0x1001000). ... 32
3.7. in chẵn lẻ ............................................................................................................. 33
LAB 4: TỔNG QUÁT VỀ HỢP NGỮ VÀ KIẾN TRÚC MIPS ...................................... 35
1) Thực hành .................................................................................................................. 35
1.1. Chuyển đoạn code sang mips ............................................................................. 35
2) Bài tập ....................................................................................................................... 36
2.1. Nhập vào một ký tự, xuất ra cửa sổ I/O của MARS theo từng yêu cầu sau: ..... 36
3) Bài tập bổ sung .......................................................................................................... 38
3.1. Con trỏ là gì? Chức năng của con trỏ? Mảng là gì? Chức năng của mảng? ...... 38
3.2. Thủ tục là gì? Trình bày luồng hoạt động của một thủ tục trong MIPS? ........... 39
3.3. Ngăn xếp(stack là gì)? Trình bày cấu trúc của ngăn xếp và kể tên ứng dụng của
ngăn xếp ? .................................................................................................................. 40
3.4. Viết chương trình nhập vào số nguyên dương A. Kiểm tra số đó phải số ngun
tố hay khơng?............................................................................................................. 40
3.5. Viết chương trình hợp ngữ nhập vào số nguyên a,b. In ra kết quả của phép cộng,
trừ nhân, chia với số lớn ............................................................................................ 42
3.6. Viết chương trình in ra N(N>2) số fibonaci đầu tiên. ........................................ 42
LAB 5: THAO TÁC VỚI MẢNG VÀ CON TRỎ TRONG MIPS .................................. 45
1) Bài tập (chỉ sử dụng con trỏ) ..................................................................................... 45
1.1. Xuất ra giá trị lớn nhất và nhỏ nhất của mảng ................................................... 45
1.2. Tổng tất cả các phần tử của mảng ...................................................................... 47
1.3. Người sử dụng nhập vào chỉ số của một phần tử nào đó và giá trị của phần tử đó
được in ra cửa sổ ........................................................................................................ 49
1.4. Nhập một mảng các số nguyên n phần tử (nhập vào số phần tử và giá trị của
từng phần tử).............................................................................................................. 51
2) Bài tập bổ sung .......................................................................................................... 51
2.1. Viết chương trình hợp ngữ nhập mảng gồm N phần tử. Sắp xếp mảng theo thứ
tự giảm dần. ............................................................................................................... 52
2.2. Viết chương trình hợp ngữ nhập vào N và mang gồm N phần tử. In ra mảng đảo
ngược của mảng vừa nhập ......................................................................................... 54
DANH MỤC HÌNH VẼ
Hình 1- 1: Mạch (ABC+AC+AB+BC)C ............................................................................. 9
Hình 1- 2: Mạch (AD+ABC+ABD+ACD) (¬A) + (¬A)B + (¬C)D.................................. 10
Hình 1- 3: Hình thanh ghi 16 bit ....................................................................................... 11
Hình 2- 1: mơ phỏng ALU ................................................................................................ 12
Hình 2- 2: mơ phỏng Register Files .................................................................................. 12
Hình 2- 3: ALU với các phép tốn .................................................................................... 13
Hình 2- 4: Register Files với địa chỉ xuất riêng ................................................................ 14
Hình 2- 5: Hình Mux 1to4 ................................................................................................. 15
Hình 2- 6: Hình Demux 2to4 ............................................................................................. 16
Hình 2- 7: bộ cộng có chức năng cộng 2 số 8 bit .............................................................. 17
Hình 2- 8: mạch so sánh hai input 4 bit............................................................................ 17
Hình 3- 1: Biểu diễn nhị phân của 2 chuỗi dưới bộ nhớ ................................................... 22
Hình 3- 2: lưu đồ thuật toán in ra số lớn nhất, số bé nhất ................................................. 26
Hình 4- 1: Lưu đồ thuật tốn Ký tự liền trước và liền sau của ký tự nhập vào + Ký tự
nhập vào chỉ được phép là ba loại: số, chữ thường và chữ hoa......................................... 36
Hình 4- 2: Lưu đồ thuật tốn kiểm tra số ngun tố ......................................................... 40
Hình 4- 3: Lưu đồ thuật toán in ra N số fibonaci đầu tiên................................................. 43
Hình 5- 1: Lưu đồ thuật tốn Xuất ra giá trị lớn nhất và nhỏ nhất của mảng ................... 45
Hình 5- 2: Lưu đồ thuật toan tính tổng tất cả các phần tử của mảng ................................ 48
Hình 5- 3: in vị trí của phần tử ra cửa sổ ........................................................................... 50
DANH MỤC BẢNG BIỂU
Bảng 1- 1: Bảng Mô phỏng chức năng các cổng luận lý..................................................... 3
Bảng 1- 2: Bảng mô phỏng D-latch ..................................................................................... 3
Bảng 1- 3: Bảng mô phỏng D-flipflop ................................................................................ 4
Bảng 1- 4: Bảng mô phỏng thanh ghi .................................................................................. 4
Bảng 1- 5: Bảng mô phỏng thanh ghi .................................................................................. 5
Bảng 1- 6: Bảng mô phỏng mạch tuần tự ............................................................................ 6
Bảng 1- 7: Bảng sự khác nhau giữa mạch tổ hợp và mạch tuần tự ..................................... 8
Bảng 1- 8: Mô phỏng mạch (ABC+AC+AB+BC)C ........................................................... 9
Bảng 1- 9: Mô phỏng mạch (AD+ABC+ABD+ACD) (¬A) + (¬A)B + (¬C)D ................ 11
Bảng 2- 1: Phân biệt Mux và Demux ............................................................................... 14
Bảng 3- 1: Một số lệnh assembly MIPS cơ bản ................................................................ 19
LAB 1: HƯỚNG DẪN SỬ DỤNG LOGISIM
1) Thực hành
1.1. Mô phỏng chức năng các cổng luận lý:
1
2
Bảng 1- 1: Bảng Mô phỏng chức năng các cổng luận lý
1.2. Mô phỏng các thiết bị lưu trữ
Bảng 1- 2: Bảng mô phỏng D-latch
3
Bảng 1- 3: Bảng mô phỏng D-flipflop
Bảng 1- 4: Bảng mô phỏng thanh ghi
4
2) Bài tập
2.1. Mô phỏng mạch tổ hợp
Input A
Input B
Input C
Output F
0
0
0
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
1
Bảng 1- 5: Bảng mô phỏng thanh ghi
2.2. Mô phỏng mạch tuần tự
5
CLK
Input A
Input B
Input C
Input D
Output A
Output B
Output C
Output D
0
x
x
x
x
A(t)
B(t)
C(t)
D(t)
1
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
1
0
0
1
0
0
0
1
0
1
0
0
1
1
0
0
1
1
1
0
1
0
0
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
1
1
0
0
1
1
0
1
0
1
1
1
0
1
1
1
1
1
0
0
0
1
0
0
0
1
1
0
0
1
1
0
0
1
1
1
0
1
0
1
0
1
0
1
1
0
1
1
1
0
1
1
1
1
1
0
0
1
1
0
0
1
1
1
0
1
1
1
0
1
1
1
1
1
0
1
1
1
0
1
1
1
1
1
1
1
1
1
Bảng 1- 6: Bảng mô phỏng mạch tuần tự
6
3) Bài tập bổ sung
3.1. chức năng và nguyên lý hoạt động D-Flipflop, Thanh ghi.
- Thanh Ghi : Thanh ghi là một thiết bị lưu trữ được cấu tạo bởi các flipflop nối
chung ngõ vào CLK Thanh ghi Có thể bổ sung khối luận lý tổ hợp để xử lý
- Ngun lí : - Thanh ghi, trước hết được xố (áp xung CLEAR) để đặt các ngõ ra về
0. Dữ liệu cần dịch chuyển được đưa vào ngõ D của tầng FF đầu tiên (FF0). Ở mỗi xung
kích lên của đồng hồ ck, sẽ có 1 bit được dịch chuyển từ trái sang phải, nối tiếp từ tầng
này qua tầng khác và đưa ra ở ngõ Q của tầng sau cùng (FF3). Nếu tiếp tục có xung ck và
khơng đưa thêm dữ liệu vào thì ngõ ra chỉ cịn là 0 (các FF đã reset : đặt lại về 0 hết.
- D Flipflop : Flipflop là một thiết bị lưu trữ tích cực theo cạnh có khả năng lưu trữ 1
bit thơng tin D Flipflop hay (data Flipflop) có một tín hiệu clock(clk) như một đầu vào và
dữ liệu (D) như một đầu vào dữ liệu khác
- Nguyên lí : +D Flipflop hoạt động tùy thuộc vào tín hiệu xung
+ xung ở mức thấp sẽ khơng có sự thay đổi trong đầu ra (tức là nó ghi nhớ trạng
thái trước đó)
+ tín hiệu xung nhịp cao và nếu nó nhận được bất kì dữ liệu nào trên chân chân dữ
liệu -> thay đổi trạng thái đầu ra
+ Khi dữ liệu ở mức cao Q đặt lại về 0 trong khi Q được đặt thành 0 nếu dữ liệu ở
mức thấp
7
3.2. Sự khác nhau giữa mạch tổ hợp và mạch tuần tự.
Sự khác nhau
Đầu ra
Mạch tổ hợp
Mạch tuần tự
phụ thuộc vào đầu vào
phụ thuộc vào đầu vào
hiện tại
hiện tại và đầu ra trong
q khứ
Đơn vị bộ nhớ
khơng có đơn vị bộ nhớ
có một đơn vị bộ nhớ để
lưu trữ kết quả ngay lập
tức.
Đồng hồ
khơng có đồng hồ
có một đồng hồ
Bảng 1- 7: Bảng sự khác nhau giữa mạch tổ hợp và mạch tuần tự
3.3. Clock( xung nhịp) CPU là gì, các trạng thái của clock
- Tốc độ xung nhịp của CPU là biểu thị số chu kỳ mà CPU có thể thực thi được
mỗi giây, được đo bằng đơn vị Hertz (Hz) và cịn có tên gọi khác là tần số PC, tần
số CPU
- Trạng thái clock là: Base Clock và Boost Speed
3.4. Mô phỏng mạch
8
Hình 1- 1: Mạch (ABC+AC+AB+BC)C
Input A
Input B
Input C
Output F
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
0
1
1
1
1
Bảng 1- 8: Mô phỏng mạch (ABC+AC+AB+BC)C
9
Hình 1- 2: Mạch (AD+ABC+ABD+ACD) (¬A) + (¬A)B + (¬C)D
Input A
Input B
Input C
Input D
Output F
0
0
0
0
0
0
0
0
1
1
0
0
1
0
0
0
0
1
1
0
0
1
0
0
1
0
1
0
1
1
0
1
1
0
1
0
1
1
1
1
1
0
0
0
0
10
1
0
0
1
1
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
1
1
1
1
0
0
1
1
1
1
0
Bảng 1- 9: Mơ phỏng mạch (AD+ABC+ABD+ACD) (¬A) + (¬A)B + (¬C)D
3.5. Thiết kế lại thanh ghi ở bài tập 3.2 với 16 bit dữ liệu
Hình 1- 3: Hình thanh ghi 16 bit
11
LAB 2: ALU VÀ REGISTER FILES
1) Thực hành
1.1. Mô phỏng ALU
Hình 2- 1: mơ phỏng ALU
1.2 Mơ phỏng Register Files gồm 4 thanh ghi 8 bit
Hình 2- 2: mơ phỏng Register Files
12
2) Bài tập
2.1. Cải tiến ALU với các phép toán: A + B, A + 1, A – B, A – 1, A AND B, A OR
B, NOT A, A XOR B
Hình 2- 3: ALU với các phép tốn
2.2. Thiết kế và mô phỏng lại Register Files với địa chỉ xuất riêng với địa chỉ ghi?
13
Hình 2- 4: Register Files với địa chỉ xuất riêng
3) Bài tập bổ sung
3.1. Phân biệt Mux và Demux? Thiết kế mux 4to1 và demux 2to4 bằng các cổng
luận lý
Mux
Demux
có nhiều ngõ vào và 1 ngõ ra
có nhiều ngõ ra và có ít ngõ vào
Bảng 2- 1: Phân biệt Mux và Demux
14
Hình 2- 5: Hình Mux 1to4
15
Hình 2- 6: Hình Demux 2to4
3.2: Thiết kế lại bộ cộng có chức năng cộng 2 số 8 bit
16
Hình 2- 7: bộ cộng có chức năng cộng 2 số 8 bit
3.3: Thiết kế mạch có chức năng so sánh hai input 4 bit có bằng nhau hay khơng?
Trường hợp bằng nhau, output bằng 1 ngược lại output bằng 0.
Hình 2- 8: mạch so sánh hai input 4 bit
17