Tải bản đầy đủ (.doc) (30 trang)

Bài tập lớn môn học kiến trúc máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 30 trang )

Bài tập lớn môn học Kiến trúc máy tính

LỜI MỞ ĐẦU
Ngày nay với tốc độ phát triển mạnh mẽ của điện tử và công nghệ thông tin, hàng
loạt các sản phẩm công nghệ cao đã ra đời. Những sản phẩm này đã góp phần nâng
cao đời sống con người và đẩy mạnh cuộc cách mạng công nghệ thông tin.Máy tính
điện tử ra đời vào đầu thập kỷ thứ tư của thế kỷ 20 và phát triển nhanh chóng, làm nên
một cuộc cách mạng trong lĩnh vực tính toán và xử lý thông tin, mở ra một kỷ nguyên
mới trong lịch sử nhân loại - Kỷ nguyên máy tính điện tử.Với những công việc mà con
người không thể làm được nhưng chiếc máy tính lại xử lí một cách rất đơn giản và
nhanh chóng.Có thể nói máy tính là những siêu công cụ,do con người chế tạo ra và để
phục vụ cho chính cuộc sống của con người.
Công nghệ tính toán cũng đã phát triển mạnh mẽ lên một tầm cao mới.Nó được
sử dụng trong mọi ngành nghề mọi lĩnh vực và trở thành một phần không thể thiếu
trong đời sống con người.Nhưng dù phát triển mạnh mẽ tới mức nào đi nữa thì nó vẫn
dựa trên những phép toán cơ bản trong quá trình xử lý,thực thi các công việc…Vì vậy
nghiên cứu tính toán thì phải nghiên cứu từ những phép xử lý cơ bản này.
Ở bài tập lớn này nhóm 05 sẽ trình bày về phương pháp thiết kế một bộ nhân và
bộ chia hai số 8bit được xây dựng bằng các cổng logic cơ bản như:AND,OR,XOR…
Nội dung bài thảo luận bao gồm 03 phần chính:
PHẦN 1: GIỚI THIỆU CHUNG VỀ KIẾN TRÚC MÁY TÍNH
PHẦN 2:CƠ BẢN VỀ LÝ THUYẾT TÍNH TOÁN
PHẦN 3: THIẾT KẾ BỘ NHÂN CHIA 8 BIT
PHẦN 4:CHƯƠNG TRÌNH VÀ THỬ NGHIỆM

PHẦN 1: GIỚI THIỆU CHUNG VỀ KIẾN TRÚC MÁY TÍNH
Nhóm 05

1

Lớp K44KMT




Bài tập lớn môn học Kiến trúc máy tính

1.1 Khái niệm kiến trúc máy tính
Kiến trúc máy tính là thiết kế khái niệm và cấu trúc hoạt động căn bản của một
hệ thống máy tính.Nó là một bản thiết kế (blueprint) mô tả có tính chất chức năng về
các yêu cầu (đặc biệt là tốc độ và các kết nối tương hỗ) và những sự thi hành thiết kế
cho những bộ phận khác nhau của một máy tính - tập trung chủ yếu vào việc CPU hoạt
động nội tại như thế nào và truy cập các địa chỉ trong bộ nhớ bằng cách nào.
Nó cũng có thể được định nghĩa như là khoa học và nghệ thuật lựa chọn và kết
nối các thành phần phần cứng để tạo thành các máy tính đáp ứng được các mục đích
về tính năng, hiệu suất và giá cả.
1.2 Phạm trù trong kiến trúc máy tính
Kiến trúc máy tính bao gồm ít nhất ba phạm trù con chính:
+) Kiến trúc tập lệnh (Instruction set architecture, ISA), là hình ảnh trừu tượng của
một hệ thống tính toán được nhìn từ góc độ của một lập trình viên sử dụng ngôn ngữ
máy (hay hợp ngữ), bao gồm tập lệnh, cách đánh địa chỉ bộ nhớ (memory address
modes), các thanh ghi, và các định dạng địa chỉ và dữ liệu.
+) Vi kiến trúc (Microarchitecture), còn gọi là Tổ chức máy tính (Computer
organization) là một mô tả bậc thấp, cụ thể hơn về hệ thống. Mô tả này nói về các bộ
phận cấu thành của hệ thống được kết nối với nhau như thế nào và chúng hoạt động
tương hỗ như thể nào để thực hiện kiến trúc tập lệnh. Ví dụ, kích thước bộ đệm cache
của một máy tính là một đặc điểm về tổ chức máy tính mà thường không liên quan đến
kiến trúc tập lệnh.
+)Thiết kế hệ thống (System Design) bao gồm tất cả các thành phần phần cứng khác
bên trong một hệ thống tính toán chẳng hạn như các đường kết nối hệ thống bus (máy
tính) và witch,các bộ điều khiển bộ nhớ (memory controller), các cây phả hệ bộ nhớ,
các cơ chế CPU off-load như Direct memory access (truy nhập bộ nhớ trực tiếp),các
vấn đề như đa xử lý (multi-processing)…


PHẦN 2:CƠ BẢN VỀ LÝ THUYẾT TÍNH TOÁN
Nhóm 05

2

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

2.1: Cơ bản về lý thuyết tính toán
2.1.1 Các đối tượng trong xử lý tin học
Là những phần tử thuộc vào những tập hợp vô hạn đếm được và luôn được biểu
diễn dưới một dạng nào đó.VD:số nguyên,số thập phân…
2.1.2 Chức năng của tính toán
Một tính toán được biểu diễn một cách hệ thông như sau:
Dữ liệu vào

Dữ liệu ra
Tính toán

Cung cấp một hoặc nhiều dữ liệu ở đầu vào bộ tính toán thì ở đầu ra ta nhận được một
hoặc nhiều dữ liệu tương ứng.
2.1.3 Cấu trúc phép toán
Thực hiện các phép toán sơ cấp (elementary operation) trong một khoảng thời
gian hữu hạn.Mỗi phép toán,giả thiết không chia cắt nhỏ hơn được,được chọn trong
một tập hợp hữu hạn các phép toán là một phần mô tả cấu trúc máy.
Lần lượt thực hiện phép toán sơ cấp theo một thứ tự xác định trước,tạo thành một
chương trình(program) là một phần mô tả cấu trúc này.

Một dãy các phép toán sơ cấp được máy thực hiện liên tiếp được gọi là tính
toán(computation)
2.1.4 Mô hình tính toán (T)
Là sự mô tả tất cả các phép toán sơ cấp có thể được thực hiện trên những
đối tựng nào đó,cách tác động lên mỗi một trong chúng như thế nào,và mô tả
cách thức chương trình được thực hiện(execution) trên máy.
2.2: Các phép toán thao tác
2.2.1: Các toán tử thao tác
a, Phép AND
Là một toán tử hai ngôi,có nhiệm vụ tính toán trên từng bit với hai chuỗi có cùng
độ dài để tạo ra một chuỗi bit mới có cùng độ dài với hai chuỗi ban đầu.Trên mỗi cặp
bit tương ứng nhau của hai toán hạng,phép toán AND sẽ trả về 1 nếu hai toán hạng là
1,còn tất cả các trường hợp khác AND sẽ tạo ra bit 0
VD :Thực hiện phép toán AND với hai số nhị phân 1001 và 1100
1001
AND 1100
=
1000
b, Phép OR
Nhóm 05

3

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

Là một toán tử hai ngôi,có nhiệm vụ tính toán trên từng bit với hai chuỗi có
cùng độ dài để tạo ra một chuỗi bit mới có cùng độ dài với hai chuỗi ban

đầu.Trên mỗi cặp bit tương ứng nhau của hai toán hạng,phép toán OR sẽ trả về 1
nếu một trong hai toán hạng là 1,còn tất cả các trường hợp khác OR sẽ tạo ra bit
0
VD :Thực hiện phép toán OR với hai số nhị phân 1001 và 1100
1001
OR 1100
=
1101
c, Phép XOR
Là một toán tử hai ngôi,có nhiệm vụ tính toán trên từng bit với hai chuỗi có cùng
độ dài để tạo ra một chuỗi bit mới có cùng độ dài với hai chuỗi ban đầu.Tuy nhiên trên
mỗi cặp bit tương ứng nhau của hai toán hạng,phép toán XOR sẽ trả về 1 nếu chỉ một
trong hai toán hạng là 1,còn tất cả các trường hợp khác XOR sẽ tạo ra bit 0
VD :Thực hiện phép toán XOR với hai số nhị phân 1001 và 1100
1001
XOR 1100
=
0101
d, Phép NOT
Phép toán NOT còn được gọi là toán tử lấy phần bù(complement) là một
toán tử một ngôi có nhiệm vụ phủ định luận lí từng bit của toán hạng nó.Tức là
đảo 1 thành 0 và 0 thành 1
VD :Thực hiện phép toán XOR với hai số nhị phân 1001
NOT 1001
=
0110
2.2.2 Dịch chuyển và quay bit
a, Dịch chuyển không nhớ
Gồm có dịch trái và dịch phải,khi dịch chuyển các bit vượt qua phạm vi lưu trữ
sẽ mất và tự động thêm bit 0 vào cuối dãy bit

Dịch các bit sang trái n vị trí
Các bit vượt quá phạm vi lưu trữ sẽ mất
Tự động thêm bit 0 vào cuối dãy bit
X=3,n=2
00001100
Với dịch phải tương tự
Chú ý:ta giữ lại bit đầu tiên làm bit dấu của số
Nhóm 05

4

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

b,Dịch chuyển có nhớ
Gồm dịch chuyển trái và dịch chuyển phải,khi dịch chuyển sẽ có một bit gọi là
bit nhớ,bit nhớ sẽ tự động thêm vào cuối dãy bit ,các bit vượt qua phạm vi lưu trữ sẽ
biến mất.
Dịch các bit sang trái n vị trí
Các bit vượt quá phạm vi lưu trữ sẽ mất
Tự động thêm bit nhớ vào cuối dãy bit
X=3,n=2
00001111
Dịch phải tương tự trên
Chú ý:ta giữ bit đầu tiên làm bit dấu
2.3 Các phép tính trên hệ nhị phân
2.3.1 Phép cộng
Để cộng hai số nhị phân,chúng ta cần phải nhớ các nguyên tắc sau:

0+0=0
0+1=1
1+0=1
1+1=10 (Nhớ 1 để cộng vào hàng trước đó,tương tự
như phép cộng số thập phân)
Bây giờ ta tiến hành cộng hai số nhị phân 1000111(số 71 trong hệ thập phân)và
số 11110(số 30 trong hệ thập phân)
Cột
71=
30=
+
101=

1
1

2
0

3
0
1

4
0
1

5
1
1


6
1
1

7
1
0

1

1

0

0

1

0

1

Ta tiến hành cộng từ phải qua trái như sau:
Bước
1
2
3
4
5

6
Nhóm 05

Tại cột
7
6
5
4
3
2

Thực hiện phép tính
1+0=1
1+1=10(viết 0,nhớ 1)
1+1=10,cộng thêm 1(nhớ ở bước 2)là 11, viết 1 nhớ 1
0+1=1,cộng thêm 1(nhớ ở bước 3)là 10,viết 0 nhớ 1
0+1=1,cộng thêm 1 (nhớ ở bước 4)là 10 viết 0 nhớ 1
0+1(nhớ ở bước 5)=1
5

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

7

1

Lấy 1 ở trên xuống


Và kết quả chúng ta được là:1000111+11110=1100101(71+30=101)
2.3.2 Phép trừ
Để trừ hai số nhị phân,ta cần nhớ các nguyên tắc sau:
0-0=0
0-1=-1(mượn)
1-0=1
1-1=0
-1-1=-10
Thực hiên phép trừ 51-28=23
Cột
51=
28=
23=

6
1
0

5
1
1

4
0
1

3
0
1


2
1
0

1
1
0

0

1

0

1

1

1

Ta tiến hành trừ từ phải sang trái như sau
Bước
1
2
3
4
5
6


Tại cột
1
2
3
4
5
6

Thực hiện phép tính
1-0=1
1-0=1
0-1=-1(Viết 1 và nhớ -1)
0-1=-1,cộng thêm -1 nhớ ở bước 3 là -10 viết 0 nhớ -1
1-1=0,cộng với -1 nhớ ở bước 4 là -1,viết 1 nhớ -1
1+-1(nhớ ở bước 5)=0

Vậy 110011-11100=010111(tương ứng với 51-28=23)
Số bù 1 :Khi ta đảo tất cả các bit có trong số nhị phân(đổi 1 thành 0 và ngược
lại),ta có số bù 1 của số nhị phân đó.Số bù 1 thương được dùng để biểu diễn số âm
trong máy tính.Khi đó,bit cực trái(bit đầu tiên ở bên trái)là bit đánh dấu với quy
ước:Nếu bit dấu là 0 thì số là số dương,nếu bit dấu là số 1 thì số là số âm.
Ví dụ:Số 28 trong hệ nhị phân(với mẫu 8bit)là:00011100.Vậy số bù 1 sẽ là
11100011.
Để thực hiện phép trừ với số nhị phân,ta có thể thực hiện phép cộng với số bù 1
của số nhị phân đó.
Ví dụ:Thực hiên phép trừ 2-5=-3
Ta có 210=0000 00102,510=0000 01012,số bù 1 của 5 là 1111 1010
Vậy 2-5=0000 0010+1111 1010=1111 1100

Nhóm 05


6

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

Số bù 2 :Số bù 2 có được là do đảo tất cả các bit có trong số nhị phân(đổi 1 thành
0 và 0 thành 1)rồi cộng thêm 1 vào kết quả.Hay nói cách khác số bù 2 là số bù 1 công
thêm 1.số bù 2 cũng được dùng để biểu diễn số âm.Khi đó bit cực trái(bit đầu tiên ở
bên trái) là bit đánh dấu với quy ước:Nếu bit dấu là 0 thì số là số dương,nếu bit dấu là
1 thì là số âm.
Ví dụ thực hiên phép trừ 2-5=-3
Ta có 210=0000 00102
510=0000 01012.Số bù 1 của 5 là 1111 1010,số bù 2 của 5 là:1111 1011
Vậy 2-5=0000 0010 + 1111 1011
Cột

8

7

6

5

4

3


2

1

2=

0

0

0

0

0

0

1

0

-5=

1

1

1


1

1

0

1

1

1

1

1

1

1

1

0

1

+
-3=


Ta thực hiện phếp trừ theo các bước sau:
Bước

Tại cột

Thực hiện phép tính

1

1

0+1=1

2

2

1+1=10,viết 0 nhớ 1

3

3

0+0=0,cộng thêm 1 nhớ ở bước 2 vào là 1

4

4

0+1=1


5

5

0+1=1

6

6

0+1=1

7

7

0+1=1

8

8

0+1=1

Ta được kết quả 1111 1101,là số bù 2 của -3
2.3.3 Phép nhân
Phép tính nhân trong hệ nhị phân cũng tương tự như phương pháp làm trong hệ
thập phân.Hai số A và B được nhân với nhau bởi tích số các kí số 0 và 1 của A và
B.Với mỗi con số ở B,tích của nó với 1 số trong A được tính và viết xuống một hàng

mới,mỗi hàng mới phải dịch chuyển vị trí sang bên trái 1 bit.Tổng của các tích cục bộ
này cho ta kết quả tích số cuối cùng.
Ví dụ:9x6=54 (1001x110=110110)
Ta thực hiện phép nhân như sau:
1 0 1 0 (số nhân)
X
1 1 0 (số bị nhân)
Nhóm 05

7

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

+0 0 0 0
+ 1010
+ 1010
=1 1 1 1 0 0
Xét bit dầu tiên của số bị nhân.Nếu bằng 0 thì ta được kết quả là 0 để thực hiện phép
cộng.nếu băng 1 thì ta được kết quả là số nhân để thực hiện phép cộng.
Ở phép tính trên.bit đầu tiên của số bị nhân bằng 0.ta được kết quả đầu tiên
0000,xét tiếp bit thứ 2.bằng 1 nên kết quả là số nhân 1010.Dịch trái bit thứ 2 sang 1
bit.tiếp bit thứ 3 của số bị nhân bằng 1 nên kết quả nhận được là 1010 dịch trái tiếp kết
quả sang 1 bit so với kết quả thứ 2.Cộng 3 kết quả vừa nhận được lại ta sẽ thu được kết
quả của phép nhân
2.3.4 Phép chia
Phép chia nhị phân được thực hiện như chia thập phân.


PHẦN 3 : THIẾT KẾ BỘ NHÂN CHIA 8 BIT
3.1 Thiết kế bộ cộng
3.1.1 Mạch cộng nửa
Gọi A là số được cộng
B là số cộng
Nhóm 05

8

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

S là tổng của A và B
C là số nhớ ra từ phép cộng
Trước hết để đơn giản, xét mạch cộng nhị phân 1 bit
Với tổ hợp 4 trạng thái logic của A và B thì trạng thái logic ngõ ra S và C như sau

Hình .3.1 Cộng nửa
Rút gọn biểu thức logic ta có:
S=AB+AB
C=AB

Nhận thấy S là ngõ ra của cổng EXOR 2 ngõ vào A và B; còn C là ngõ ra của cổng
AND
Từ đây vẽ được cấu trúc logic của mạch

Hình 3.2 Mạch cộng nửa
Đây là mạch cộng nửa hay cộng chưa đủ (haft adder : HA) vì chưa có số nhớ ban đầu

của phép cộng trước đó.
3.1.2 Mạch cộng đủ
Bây giờ giả sử mạch đã thực hiện phép cộng lần đầu rồi nên được tổng là S0 và
số nhớ C0, nếu tiếp tục cộng lần 2 khi trạng thái logic của A và B thay đổi thì S không
chỉ là tổng của A và B mà gồm cả C0 trước đó. Khi này ta có mạch cộng đủ: full adder
(FA)

Nhóm 05

9

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

Hình 3.3 Cộng đủ
Rút gọn biểu thức ta được
S=(AB+AB)Ci+(AB+AB)Ci
C=AB+(AB+AB)Ci

Cấu trúc của mạch logic sẽ là :

Hình 3.4 Mạch cộng đủ
Nhận thấy rằng : FA thực ra bao gồm trong nó 2 HA và cổng OR ở ngõ ra cho số nhớ
C.
Cả 2 mạch HA và FA ở trên mới chỉ làm phép cộng 1 bit
3.1.3 cộng nhiều bit
a Cộng song song
Bây giờ nếu 2 số cộng có nhiều bit hơn thì cách cộng cũng sẽ tương tự : trước hết

cộng 2 bit LSB để cho bit tổng (LSB). Số nhớ được đưa tới để cộng chung với 2 bit kế
tiếp bit LSB để cho bit tổng ở hàng kế tiếp cho đến phép cộng cuối cùng giữa 2 bit
MSB để được bit tổng ở hàng đó, số nhớ khi này trở thành bit LSB của tổng
Hình sau sẽ minh hoạ rõ ràng hơn mạch cộng nhiều bit (4 bit)

Nhóm 05

10

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

Hình .3.5 Cộng 4 bit
Đây là một mạch cộng song song vì các hàng được cộng cùng một lúc tuy nhiên như
cấu trúc mạch ở trên thì các bit ra của tổng không phải là đồng thời bởi vì các phép
cộng ở các bit cao thì chậm hơn do phải chờ bit nhớ ở phép cộng trước đưa tới. Tức là
đã có trì hoãn làm giảm tính đồng bộ của mạch. Nếu thêm vào mạch cho phép cung
cấp sẵn các bit nhớ để phục vụ cho các phép cộng ở các hàng được cùng lúc thì sẽ
khắc phục được điểm này. Với công nghệ tích hợp cao, việc thêm mạch cung cấp sẵn
các bit nhớ trở nên dễ dàng hơn khi đó mạch trở thành mạch cộng có số nhớ nhìn
trước.
b Cộng nối tiếp
Ngoài cách cộng song song như đã thấy ở trên, còn một dạng mạch cộng số
nhiều bit nữa gọi là mạch cộng nối tiếp. Khi này 2 bit LSB của các số được cộng
trước, bit LSB của tầng được đưa ra 1 ghi dịch còn số nhớ sẽ quay trở về cộng chung
với 2 bit kế tiếp bit LSB và cứ vậy cho đến 2 bit cuối cùng được cộng. Mạch ghi dịch
ngõ ra dịch chuyển sang phải qua mỗi lần cộng sẽ cho ra kết quả cộng số nhớ cuối
cùng trở thành bit MSB của tổng ra. Rõ ràng mạch thực hiện phép tính chậm hơn so

với cộng song song, nó cũng cần 1 xung nhịp để giữ cho các mạch làm việc động bộ

Hình.3.6 Mạch cộng 4 bit nối tiếp

3.2 Thiết kế bộ trừ nửa và trừ đủ
Nhóm 05

11

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

3.2.1 Trừ nửa và trừ đủ
Cũng gồm 2 loại mạch trừ nửa hay chưa đủ : haft subtractor (HS) và trừ đủ hay
còn gọi là trừ bán phần : full subtractor (FS) (khi này cần bit mượn Bi trước tham gia
vào phép tính).Phép trừ thực ra là phép cộng với số âm. Để có số âm của 1 số ta lấy bù
1 của số đó, còn khi thực hiện mạch thì đó là cổng đảo
Hình .3.7 là mạch trừ HS và bên cạnh là bảng trạng thái

Hình .3.7 Mạch trừ nửa, bảng trạng thái và mạch logic
Còn hình .3.8 là mạch trừ FS cùng bảng trạng thái hoạt động ở bên cạnh

hình .3.8 Mạch trừ đủ
Về cấu trúc mạch trừ cũng tương tự mạch cộng chỉ khác là số bị trừ B cần phải qua
cổng đảo khi thực hiện AND với số trừ A để cho số mượn R. Mạch trừ FS cũng gồm 2
mạch trừ HS và cổng OR ở ngõ ra cho số mượn B0

Hình .3.9 Mạch trừ hết

3.2.2 Mạch trừ nhiều bit
Nhóm 05

12

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

Với mạch trừ nhị phân nhiều bit, cũng có thể thực hiện song song các mạch cộng
FS từng bit nhưng các bit của số bị trừ cần được đảo, số nhớ của tầng cuối cần đem về
bit nhớ ban đầu của tầng đầu. Hình minh hoạ cho mạch trừ nhị phân 4 bit

Hình .3.10a Mạch trừ 4 bit song song

Hình .3.10b Trừ 4 bit nối tiếp

3.3 Mạch cộng trừ kết hợp
Bây giờ nếu thêm vào một số cổng
logic cần thiết ta đã có 1 mạch có thể
cộng hay trừ tuỳ theo ngõ vào điều
khiển CT
Khi CT = 0, các cổng EXOR có 1 ngõ
ở thấp nên cho số B qua không bị đảo,
tức là mạch thực hiện phép cộng
Khi CT = 1, các cổng EXOR có 1 ngõ
ở cao nên hoạt động như 1 cổng NOT,
số B bị đảo, khi này mạch thực hiện
phép cộng A + (-B) tức là phép trừ.

Co3 là bit LSB của tổng được vòng trở
lại (qua cổng AND) về Ci0; sẽ cho
phép cộng nhiều bit.
Hình .3.11 Mạch cộng trừ dùng bù 1

Nhóm 05

13

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

Ngoài cách dùng bù 1, ta cũng có thể
dùng bù 2 (lấy bù 1 rồi cộng thêm 1) để
thực hiện phép toán trừ nhị phân kể cả
số có dấu. Cách này được sử dụng phổ
biến ở VXL và máy tính.
Hình 2.3.22 là mạch cộng trừ 2 số 4 bit
dùng bù 2. Để ý là mạch khá giống như
nó ở cách dùng bù 1 nhưng bit nhớ ra
cuối cùng không cần đem về tầng đầu.
Tổng hay hiệu ra ở dạng bù 2, muốn lấy
đúng kết quả thì phải chuyển trở lại.
Khi đó mạch cộng trừ nhị phân 4 bit
dùng bù 2 sẽ như sau :
Hình .3.12 Mạch cộng trừ dùng bù 2
3.4 Cộng trừ hai số BCD
3.4.1 Cộng 2 số BCD

Số BCD thực ra cũng là số nhị phân n bit nhưng chỉ có 10 tổ hợp trạng thái từ
0000 đến 1001 (biểu thị số thập phân tương ứng là từ 0 đến 9) nên cách cộng cũng
tương tự như cổng số nhị phân nhiều bit. Tuy nhiên khi tổng vượt quá 1001 thì tức là
tổng đó không còn là số BCD nữa, do đó ta phải cộng tổng với 0110 (số 610) để cho
tổng mới là số BCD đồng thời số nhớ chính là hàng cao hơn của tổng.

Ví dụ như cộng 2 số BCD sau:

Hình .3.13 Mạch cộng 2 số BCD 1 bit
Nhóm 05

14

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

2 số cần cộng là A3A2A1A0 và B3B2B1B0 cho tổng là C3S4S3S2S1 (C3 là hàng
chục nếu có).
Nếu tổng đầu vượt quá 9 ( từ 10 đến 18) thì các cổng logic sẽ cho phép xác định hàng
chục đồng thời tổng này phải được cộng thêm 6 ở tầng 74LS83 thứ 2 để cho tổng cuối
cùng ở dạng BCD.
Nếu tổng không vượt quá 9 (vẫn là số BCD) thì tổng hàng chục không có nên 74LS83
thứ 2 sẽ cộng tổng này với 0, tổng ra không có gì thay đổi.
Ta có thể ghép nhiều mạch cộng ở trên để có mạch cộng 2 số BCD nhiều bit, khi đó
chỉ việc nối ngõ ra hàng chục của tầng đầu tới ngõ vào số nhớ Ci của tầng sau là được.
3.4.2 Trừ 2 số BCD
Với phép trừ BCD, ta phải lấy bù 9 của số trừ rồi mới làm phép cộng lại với số bị
trừ. Lấy bù 9 của 1 số tức là lấy 9 trừ đi số đó. Ở chương 1 có nói rõ hơn về phép trừ

BCD
Ví dụ về phép trừ BCD : 9 – 5
và 2 – 6

Hình.3.14 Mạch trừ 2 số BCD 1 bit
3.5 Mạch nhân
3.5.1 Nguyên tắc thiết kế
Nguyên tắc của phép nhân số nhị phân là thức hiện phép so sánh một phần của số
bị nhân (bit đầu tiên của số bị nhân với số nhân)với số nhân,nếu số bị nhân bằng 1 thì
ta thực hiện phép cộng với số nhân,nếu số bị nhân bằng 0 thì thực hiện phép cộng đối
Nhóm 05

15

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

với số 0.Với kết quả của phép so sánh thứ 2 sẽ dịch trái một bit so với kết quả của
phép so sánh đầu tiên.Sau đó tiếp tục dịch trái phần còn lại của số bị nhân một bit(hoặc
dịch phải số nhân một bit)rồi tiếp tục thực hiện phép so sánh như trên.Công việc được
lặp lại cho đến khi chấm dứt.
Phép nhân có 2 thừa số được lưu trong 8 bít và kết quả được lưu trong 16 bit nên
không bao giờ bị tràn bộ nhớ .
Với phép nhân có dấu ta có thể sử dụng giải thuật Booth hoặc là sử dụng thuật
toán nhân không dấu và sử dụng bộ hiệu chỉnh dấu để hiệu chỉnh.

H3.15: Sơ đồ huật toán nhân


H3.16: Sơ đồ phép nhân

Nhóm 05

16

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

H3.17: Giải thuật Booth
3.5.2 Mạch nhân cơ bản
Việc thực hiện bài toán nhân có thể xem như gồm hai bước:
-Tính các tích từng phần: thực hiện bởi các cổng AND
- Tính tổng của các tích từng phần: Áp dụng bài toán tổng chuỗi số(Hình )

Nhóm 05

17

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

Y8 Y7 Y6 Y5 Y4 Y3 Y2 Y1

.


.

.

.

X8 X7 X6 X5 X4 X3 X2 X1

.

.

.

P27 P18
FA

.

FA

FA

.

FA

FA

FA


.
FA

FA

.

.
FA

FA

FA

FA

FA

FA

FA

FA

FA

FA

FA


FA

FA

FA

FA

FA

FA

FA

FA

P77
FA

FA

FA

S1 S1

FA

FA


FA

FA

S12

FA

FA

S11

FA

S10

FA

FA

S9

FA

S8

FA

FA


S7

S6 S5

...

S4

S3 S2 S1

Hình 3.18 Sơ đồ mạch nhân
3.5.3 Mạch nhân nối tiếp-song song đơn giản

Hình 3.19Mạch nhân nối tiếp-song song đơn giản
Trong mạch này, một trong hai số được đưa nối tiếp vào mạch (trong trường hợp này
là số bị nhân) và số còn lại đưa song song vào mạch.
- Số nhân (b4b3b2b1) đưa song song vào mạch qua các cổng AND đồng thời
kiểm soát các cổng này: ứng với bit 1 số bị nhân qua mạch để tới mạch cộng
(cổng 2 và 4); ứng với bit 0 ngã ra cổng AND bằng không (cổng 1 và 3)

Nhóm 05

18

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

-


Số bị nhân đưa nối tiếp vào mạch theo thứ tự từ bit LSB. Các FF D có tác dụng
dịch kết quả của phép nhân (là các tích từng phần) trước khi đưa vào mạch cộng
để cộng các tích từng phần này.
Thí dụ 15 : Xem bài toán nhân 10x14. Số nhân là 1010 (1010) và số bị nhân là
1110 (1410). Quá trình nhân giải thích như sau:
A
B
C
D
Output

P8
0
0
0
0
1

P7
0
0
0
1
0

P6
0
0
0

1
0

P5
0
1
0
1
0

P4
0
1
0
0
1

P3
0
1
0
0
1

P2
0
0
0
0
0


P1
0
0
0
0
0

100011002=14010
Có thể thấy rằng ngã ra A luôn luôn bằng 0 vì bit LSB của số nhân = 0. Ngã ra B có
giá trị của số bị nhân được làm trễ 1 bit (1 xung đồng hồ). Ngã ra C được làm trễ 2 bit
và luôn bằng 0 (Giống như A). Ngã ra D giống như B nhưng trễ 3 bit. Điều này có thể
so sánh với bài toán trên giấy
Số bị nhân
1110
Số nhân
1010
A
0000
B
+
11100
C
+
000000
D
+
1110000
Tích
10001100

Muốn không sử dụng mạch cộng số nhiều bit, người ta dùng mạch (H 3.20)

H 3.20 cộng số ngã ra 3 và ngã ra 4 bị trễ 1 bit
Mạch (H 3.20) cần (n-1) mạch cộng và mạch trễ (FF D) cho số nhân n bit. Các
cổng AND cho phép các bit của số bị nhân đi qua khi số nhân là 1, số bị nhân (với số
Nhóm 05

19

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

bit bất kỳ) được cho vào mạch nối tiếp với bit LSB vào đầu tiên. Ngã ra cổng 4 sau 4
xung Clock là 1110. Ngã ra cổng 3 luôn luôn bằng 0.
Mạch cộng A cộng số ngã ra 3 và ngã ra 4 bị trễ 1 bit:
0000
+
11100
11100
Tương tự mạch cộng B cộng số bị nhân với kết quả ở A được làm trễ 1 bit:
1110
+111000
1000110
Và mạch cộng C
0000
+ 10001100
10001100
Lưu ý là ở mạch (H 3.20) kết quả cho ở ngã ra mạch cộng C với bit LSB ra đầu tiên,

tuy nhiên mạch này chưa quan tâm tới số nhớ.
Mạch (H 3.21) cho kết quả với số nhớ .

H3.21) cho kết quả với số nhớ
Và (H 3.22) là một mạch thực tế dùng ghi dịch 4 bit có ngã vào/ra song song,
một mạch cộng 4 bit và một chip 4 cổng AND 2 ngã vào để thực hiện bài toán nhân.

Nhóm 05

20

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

H3.22 mạch thực tế dùng ghi dịch 4 bit có ngã vào/ra song song
Từ các mạch nhân hai số 4bit trên ta xây dựng được mạch nhân 8bit bằng cách ghép 2
mạch nhân 4bit lại với nhau.
3.6 Mạch chia
Nguyên tắc của phép chia số nhị phân là thực hiện phép so sánh một phần của số
bị chia (số bit đầu tiên bằng với số bit của số chia) với số chia, nếu số bị chia lớn hơn
số chia thì thương số =1, thực hiện phép trừ, ngược lại thì thương số =0, sau đó dịch
trái phần còn lại của số bị chia một bit (hoặc dịch phải số chia 1 bit) rồi tiếp tục thực
hiện bài toán so sánh giống như trên. Công việc được lặp lại cho đến khi chấm dứt.
Sơ đồ (H 3.23) tóm tắt giải thuật thực hiện bài toán chia

H 3.23 giải thuật thực hiện bài toán chia
3.6.1 Phép chia có phục hồi số bị chia
Thay vì phải thực hiện việc so sánh, người ta làm phép tính trừ một phần số bị

chia cho số chia, nếu kết quả dương, thương số là 1, nếu kết quả âm, thương số là 0,
Nhóm 05

21

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

trong trường hợp này phải phục hồi lại số bị chia bằng cách cộng số bị chia cho số chia
trước khi dịch số bị chia sang trái 1 bit (hoặc số chia sang phải) để tiếp tục lặp lại bài
toán cho đến khi kết thúc.
(H 3.24) là sơ đồ giải thuật thực hiện phép chia có phục hồi số bị chia.

H3.24 giải thuật thực hiện phép chia có phục hồi số bị chia
Để thực hiện phép chia theo sơ đồ trên, ngoài các thanh ghi để chứa các số bị chia, số
chia , số thương người ta phải dùng thanh ghi chứa số bị chia được phục hồi.
3.6.2 Phép chia không phục hồi số bị chia
Hệ thống sẽ đơn giản hơn nếu chúng ta dùng phép chia không cần phục hồi số bị
chia theo nguyên tắc như dưới đây.
Quan sát giản đồ (H 3.24) ta thấy có 2 trường hợp:
+ Số chia lớn hơn số bị chia (nhánh bên phải)
Lưu ý là dịch số chia về bên phải 1 bit tương đương với chia số đó cho 2
Nhánh bên phải của sơ đồ trên gồm 2 bài toán:
- Cộng số bị chia với số chia.
- Trừ số bị chia cho 1/2 số chia (trừ bị chia cho số chia đã dịch phải)
Hai bước này có thể gộp lại thành một bước duy nhất như sau:
Cộng số bị chia với số chia đã dịch phải.
+ Số chia nhỏ hơn số bị chia (nhánh bên trái)

Sau khi lấy kết quả =1, lệnh kế tiếp thực hiện là trừ số chia đã dịch phải. Từ các
kết quả nhận xét trên có thể thay sơ đồ (H 3.24) bởi sơ đồ giải thuật thực hiện phép
chia không cần phục hồi số bị chia (H 3.25)
Nhóm 05

22

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

H3.25 giải thuật thực hiện phép chia không cần phục hồi số bị chia
Dựa vào sơ đồ (H 6.25), các bước thực hiện bài toán chia như sau:
- Số chia (SC) lớn hơn số bị chia (SBC) (SBC - SC < 0), thương số là 0, dịch
phải số chia 1 bit (thực tế ta mang thêm 1 bit của số bị chia xuống), thực hiện bài toán
cộng số chia và số bị chia
- Số chia nhỏ hơn số bị chia (SBC - SC > 0), thương số là 1, dịch phải số chia 1
bit, thực hiện bài toán trừ (cộng số bù 2) số bị chia cho số chia
Để đơn giản, giả sử số chia và bị chia đều dương (MSB = 0), số bị chia gồm 6 bit
và số chia gồm 4 bit.
Thí dụ 1: Thực hiện bài toán chia 2110 = 0101012 cho 710 = 01112.
Số bù 2 của 0111 là (0111)2 = 1001

Ghi chú:

Nhóm 05

23


Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

(1) Số 1 trên mũi tên chỉ rằng kết quả phép toán trừ là số âm, bước kế tiếp là dời
và cộng số chia
(2) Số 0 trên mủi tên chỉ rằng kết quả phép toán trừ là số dương, bước kế tiếp là
dời và trừ số chia (cộng số bù 2)
Thương số có được từ các số tràn mà trên phép tính ta ghi trong vòng tròn.
Kết quả: thương là 011(=3) và số dư là 0000(=0)
Bài toán trên cho kết quả với 3 bước cộng/trừ. Tuy nhiên nếu ta chia 21 cho 1 thì
cần tới 6 bước cộng trừ để có thương số 6 bit. Một cách tổng quát số bước của bài toán
bằng với số bít của số bị chia.
Ta có thể làm lại bài toán với 6 bước cộng/trừ ((thêm 3 bit 0 cho số bị chia)

Thí dụ 2 và 3 dưới đây là bài toán 6 bước
Thí dụ 2 : Chia 21 cho 6 được kết quả 3 và số dư là 3

Nhóm 05

24

Lớp K44KMT


Bài tập lớn môn học Kiến trúc máy tính

Thí dụ 3 : Chia 21 cho 5, được kết quả 4 và số dư là 1. Tuy nhiên trên phép toán ta
thấy phép cộng với số chia cuối cùng cho kết quả âm (số 1100) nên để điều chỉnh số

dư ta phải cộng số chia vào và bỏ qua số tràn.

(1) Cộng số chia vào để điều chỉnh số dư
Mạch thực hiện các bài toán này cho ở (H 6.26).
Trong (H 6.26) bước đầu tiên được thực hiện bởi các cổng EX-OR trên cùng có
ngã điều khiển = 1 để thực hiện bài toán trừ. Sau bước thứ nhất, bit thứ tư của mạch
cộng (S4) sẽ quyết định phép toán sau đó là cộng (S4=1) hay trừ (S4=0) số bị chia với
số chia. Số nhớ của bài toán cuối cùng (bước 6) là bit LSB của thương số. Và mạch
cộng cuối cùng được thiết kế kết hợp với các cổng AND để xử lý kết quả của số dư
như trong hai thí dụ 2 và 3. Nếu kết quả của bài toán ở bước 6 có S4 = 1 thì cổng AND
mở để thực hiện bài toán cộng với số chia để điều chỉnh số dư.

Nhóm 05

25

Lớp K44KMT


×