Bài giảng Các vấn đề cơ sở của khoa học máy tính - Chương 3: Tổ chức máy tính cung cấp cho người học các kiến thức: Kiến trúc von Neumann, biểu diễn dữ liệu, chiều dài từ của máy tính, dạng dữ liệu nguyên, dạng dữ liệu thực, dạng ký tự, CPU/ALU, tập lệnh, bộ nhớ, nhập/xuất dữ liệu. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Ch ương 3:
TỔ CHỨC MÁY TÍNH
Trang 2Nội Dung
1 Kiến trúc von Neumann
2 Biểu diễn dữ liệu
3 Chiều dài từ của máy tính
Trang 3Kiến Trúc Von Neumann
• Hầu hết các máy tính ngày nay hoạt động
dựa vào “kiến trúc von Neumann” Ý tưởng chính của kiến trúc này là chương trình và
dữ liệu được lưu trữ trong bộ nhớ máy tính John von Neumann đã đưa ra ý tưởng này vào năm 1945
• Kiến trúc von Neumann cũng được gọi là
“máy tính có chương trình được lưu trữ -
stored program computer” Các bước (lệnh) của chương trình được lưu trữ trong bộ nhớ máy tính và chu kỳ thao tác của máy sẽ lấy bước kế tiếp (lệnh để thực thi) từ bộ nhớ, hoàn thành thao tác này và lấy bước kế tiếp
Trang 4Kiến Trúc Von Neumann
Quá trình này được lặp lại cho đến khi máy tính gặp lệnh “dừng - halt”
• Có 3 thành phần chủ yếu trong máy tính von Neumann Bộ nhớ là nơi chứa chương trình
và dữ liệu Đơn vị xử lý trung tâm (central processing unit - CPU) truy xuất chương trình và dữ liệu trong bộ nhớ và thực thi chúng Đơn vị nhập/xuất truy xuất các thiết
bị nhập và xuất dữ liệu
Trang 5Biểu Diễn Dữ Liệu
• Chúng ta thường sử dụng các số được biểu
diễn trong “cơ số 10 - base 10” – hệ thập
phân Có lẻ cơ số này dựa trên ý tưởng là chúng ta có 10 ngón tay
• Ví dụ:
427 = 4 * 10 2 + 2 * 10 1 + 7 * 10 0
• Chúng ta nói rằng số được biểu diễn trong
cơ số 10 bởi vì các ký số của số đó được nhân với luỹ thừa của 10
• Máy tính sử dụng cơ số 2, bởi vì điều này sẽ làm cho dễ dàng trong việc xây dựng phần cứng khi máy tính chỉ dựa trên hai trạng thái
Trang 6Biểu Diễn Dữ Liệu
• Cơ số 2 cũng được gọi là “hệ nhị phân -
binary number system” Các ký số (bit) của một số trong hệ nhị phân được nhân với luỹ thừa của 2 Ví dụ, tính giá trị thập phân (cơ
Trang 7Chiều Dài Từ Của Máy Tính
• Mỗi máy tính khác nhau có thể truy xuất
cùng lúc số bit khác nhau Ví dụ, một máy tính có thể truy xuất 8 bit cùng lúc được gọi
là “máy tính 8 bit” Nói cách khác, máy tính
đó có “chiều dài từ - word size” là 8 bit
• Máy tính PC đầu tiên của IBM sử dụng bộ xử
lý 8088 của Intel có bus dữ liệu là 8 bit, nghĩa
là nó có thể đọc/ghi 8 bit dữ liệu cùng lúc với thiết bị ngoại vi
• Ngày nay, hầu hết các máy tính có chiều dài
từ là 32 hay 64 bit
Trang 8Định Dạng Số Nguyên
• Cho đến bây giờ, chúng ta chỉ thảo luận các
số nguyên dương Máy tính cũng cần thao tác với các số nguyên có dấu và cả số thực
• Để lưu trữ số có dấu, bit bên trái nhất (msb)
được sử dụng làm bit dấu Bit này có giá trị
0 nếu là số dương và 1 nếu là số âm
• Số nguyên âm được biểu diễn bằng cách lấy
bù 2 (two’s complement) của số dương tương ứng Để tính bù 2 của một số, đảo ngược các bit của số đó và cộng thêm 1 Ví
dụ, bù 2 của 6 (00000110) trên máy tính 8 bit:
Trang 10• Trước đây vào thập niên 1980, các nhà sản
xuất máy tính khác nhau đã sử dụng cách biểu diễn dữ liệu khác nhau Vì vậy, chương trình và dữ liệu không tương thích trên các máy tính khác nhau
• Viện IEEE (Institute of Electrical and
Electronic Engineers) đã đưa ra chuẩn để
Trang 11• Bit msb là bit dấu, 8 bit kế tiếp là số mũ của
cơ số 2 và 23 bit còn lại là phần định trị
• Dấu của số mũ được kết hợp vào giá trị biểu
diễn của nó Vì lý do kỹ thuật, chuẩn IEEE không sử dụng bù 2 để biểu diễn số mũ âm
mà sử dụng phương pháp khác
• Ví dụ để biểu diễn 8.5, đầu tiên là chuyển
Trang 13chấm động (floating-point processor) để
tăng tốc độ tính toán
• Bài tập tại lớp: a) Hãy cho biết vì sao giá trị
Trang 15Định Dạng Ký Tự
• Dữ liệu dùng cho chương trình ở dạng ký tự
nhiều hơn dạng số Tên, địa chỉ, tựa đề, … được biểu diễn bằng chuỗi ký tự
• Các ký tự được ánh xạ hay mã hoá thành các số nguyên Có nhiều kiểu mã hoá như BCD (binary coded decimal), EBCDIC
(extended BCD interchange coded)
• Bộ mã ASCII (American Standard Code for
Information Interchange) được đưa ra vào thập niên 1960 và trở thành bộ mã được ưa chuộng nhất Ngày nay, Unicode được sử dụng phổ biến hơn bởi vì nó tương thích với
bộ mã ASCII và cho phép mã hoá nhiều chữ
Trang 16• Trong bộ mã ASCII, mỗi ký tự được gán một giá trị nguyên 7 bit Cho ví dụ, ‘A’ = 65 (1000001), ‘B’ = 66 (1000010), ‘C’ = 67 (1000011), … Bit thứ 8 trong byte ký tự được dùng như bit chẵn-lẻ (parity) để kiểm tra lỗi
khi truyền thông tin hoặc mã hoá thành các
ký tự dùng trong các phép toán, các ký tự có
Trang 17Định Dạng Ký Tự
dấu hoặc các ký tự trang trí
• Một số ký tự điều khiển cũng được định
nghĩa trong bộ mã ASCII Các ký tự điều khiển không hiển thị ra màn hình nhưng được sử dụng để điều khiển thiết bị Cho ví
dụ, ‘line feed - LF’ = 10 (0001010), ‘tab’ =
11 (0001011), ‘backspace’ = 8 (0001000), …
• Để xuất chuỗi “Dog” và xuống dòng, một dãy
các byte sau được gởi đi:
01000100 01101111 01100111 00001010
D o g LF
• Tương tự, khi nhập dữ liệu từ bàn phím, bàn
Trang 19CPU/ALU
• CPU (Central Processing Unit) là thành phần
mà người ta nghĩ đến đầu tiên khi mô tả về máy tính Một chu kỳ trong máy tính von Neumann là:
- Nạp một lệnh từ bộ nhớ vào CPU
- Giải mã và thực thi lệnh đó
• Thực thi lệnh bao gồm thực hiện các phép
tính số học hay luận lý và cũng là nạp hay lưu trữ dữ liệu trong bộ nhớ
• Khi thực thi lệnh xong, máy tính sẽ lấy lệnh tiếp theo từ bộ nhớ và thực thi lệnh đó Quá trình trên tiếp tục cho đến khi CPU gặp lệnh dừng
Trang 20CPU/ALU
• CPU gồm đơn vị điều khiển (control unit -
CU), đơn vị số học và luận lý (arithmetic and logic unit - ALU) và các thanh ghi
• Đơn vị điều khiển chịu trách nhiệm duy trì
đều đặn chu kỳ lấy và thực thi lệnh, ALU thực thi các phép toán số học, so sánh (>, <,
= , …) và luận lý (AND, OR, NOT, …)
• Cả hai đơn vị điều khiển và ALU có các ô
nhớ đặc biệt và tốc độ thực thi rất cao được
gọi là các thanh ghi (register)
• Một số thanh ghi có công dụng đặc biệt và
một số có công dụng chung
• Các thanh ghi có công dụng đặc biệt là bộ
Trang 21CPU/ALU
đếm chương trình (program counter - PC) và
thanh ghi lệnh (instruction register – IR)
• Thanh ghi PC lưu giữ địa chỉ của lệnh thực thi kế tiếp Khi đơn vị điều khiển bắt đầu chu
kỳ lấy và thực thi lệnh, đơn vị điều khiển chuyển lệnh có địa chỉ được lưu trong PC đến thanh ghi IR Khi này, đơn vị điều khiển
tự động tăng thanh ghi PC để nó trỏ đến lệnh
kế tiếp
• Đơn vị điều khiển giải mã lệnh trong IR và
thực thi Khi thực thi xong, đơn vị điều khiển lấy lệnh mà PC đang trỏ đến và tiếp tục chu
kỳ mới
Trang 22CPU/ALU
• Các thanh ghi có công dụng chung được sử dụng để lưu giữ dữ liệu cho CPU truy xuất Truy xuất dữ liệu trong thanh ghi nhanh hơn truy xuất trong bộ nhớ
• Những máy tính khác nhau có số thanh ghi
khác nhau, kích thước thanh ghi bằng với chiều dài từ của máy tính (16, 32, 64 bit, …)
• Trong kiến trúc Intel x86, có 4 thanh ghi 32 bit có công dụng chung (EAX, EBX, ECX và EDX ) và 4 thanh ghi 32 bit dùng để lưu địa chỉ stack và chuỗi (ESP, EBP, ESI và EDI)
Trang 23Tập Lệnh
• Định nghĩa cốt lõi của một kiến trúc máy tính
là là tập lệnh máy Đó là danh sách các chỉ thị mà phần cứng máy tính có thể thực thi
• Các lệnh của máy tính bao gồm:
- Nạp dữ liệu từ bộ nhớ vào thanh ghi
- Lưu dữ liệu từ thanh ghi vào bộ nhớ
- Nhảy đến vị trí nào đó trong chương trình
- Dịch các bit của một giá trị sang trái hay sang phải
- So sánh 2 giá trị
- Cộng giá trị của hai thanh ghi
- Thực hiện các phép toán luận lý, …
Trang 24• Ngày nay, hầu hết các chương trình được viết bằng ngôn ngữ cấp cao hơn hợp ngữ
• Khi một chương trình viết bằng ngôn ngữ
Trang 25Tập Lệnh
lập trình cấp cao (Java, C, Python, …), bộ xử
lý ngôn ngữ (language processor - trình biên
dịch hay thông dịch) sẽ chuyển các lệnh của chương trình thành các lệnh mã máy để thực thi
• Nếu chúng ta muốn thực thi chương trình đó
trên máy tính khác với tập lệnh khác, thường thì chỉ cần thay đổi bộ xử lý ngôn ngữ thích hợp với máy tính mới, mã nguồn của chương trình không thay đổi
• Lệnh máy gồm một dãy các bit 0 và 1 Một số
bit được dùng làm mã lệnh (op-code) Ví dụ,
một số mã lệnh như ADD, Jump, Compare và
Trang 26Tập Lệnh
AND Một số bit khác dùng làm toán hạng
(operand) Toán hạng có thể là thanh ghi, biến bộ nhớ hay hằng
• Ví dụ lệnh máy của Intel x86 sau đây là lệnh ADD (cộng) để thực hiện thao tác “Cộng 40 vào thanh ghi DX”:
Trang 27JMP byte thấp byte cao
• Byte đầu tiên là mã lệnh của lệnh JMP Byte thứ 2 và 3 lần lượt là byte thấp và byte cao của địa chỉ muốn nhảy đến
• Sau đây là một số lệnh máy tiêu biểu của tập lệnh máy Intel x86:
Trang 28Tập Lệnh
MOV Gán toán hạng nguồn cho đích
ADD Cộng hai toán hạng
SUB Trừ hai toán hạng
DIV Chia thanh ghi cho toán hạng đích
IMUL Nhân số có dấu
DEC Giảm toán hạng đích 1 đơn vị
INC Tăng toán hạng đích 1 đơn vị
AND Lấy VÀ hai toán hạng
OR Lấy HOẶC hai toán hạng
XOR Lấy XOR hai toán hạng
NOT Lấy NOT toán hạng đích
IN Đọc dữ liệu từ cổng
Trang 29Tập Lệnh
OUT Xuất dữ liệu ra cổng
JMP Nhảy không điều kiện
JG Nhảy nếu lớn hơn
JZ Nhảy nếu bằng 0
CALL Gọi chương trình con
RET Trả về của chương trình con
Trang 30Tập Lệnh
OUT Xuất dữ liệu ra cổng
JMP Nhảy không điều kiện
JG Nhảy nếu lớn hơn
JZ Nhảy nếu bằng 0
CALL Gọi chương trình con
RET Trả về của chương trình con
Trang 31Tập Lệnh
POP Lấy dữ liệu từ stack
PUSH Nạp dữ liệu vào stack
ROL Quay các bit sang trái
ROR Quay các bit sang phải
SHL Dịch các bit sang trái
SHR Dịch các bit sang phải
XCHG Hoán đổi nội dung hai toán hạng
Trang 32Tập Lệnh
POP Lấy dữ liệu từ stack
PUSH Nạp dữ liệu vào stack
ROL Quay các bit sang trái
ROR Quay các bit sang phải
SHL Dịch các bit sang trái
SHR Dịch các bit sang phải
XCHG Hoán đổi nội dung hai toán hạng
Trang 33Bộ Nhớ
• Bộ nhớ (memory) máy tính được tổ chức
thành các ô (cell), mỗi ô được đánh địa chỉ riêng biệt
• Trước đây, các nhà sản xuất máy tính không
thống nhất với nhau về kích thước của một đơn vị bộ nhớ Các máy tính khác nhau sử dụng kích thước ô nhớ khác nhau
• Ngày nay, byte được dùng làm đơn vị của bộ nhớ máy tính Hầu hết các máy tính, bất chấp chiều dài từ của nó là bao nhiêu, mỗi byte bộ nhớ có địa chỉ duy nhất và có thể đọc/ghi giá trị tại đó
Trang 34• Bộ nhớ được sử dụng để lưu giữ các lệnh của
chương trình và dữ liệu Các thao tác cơ bản với bộ nhớ là lưu/ghi và lấy/đọc/nạp
• Có ít nhất hai thanh ghi kết hợp với mạch điều khiển bộ nhớ để làm cho dễ dàng đọc và ghi
Trang 35Bộ Nhớ
dữ liệu Đó là thanh ghi MAR (thanh ghi địa
chỉ - memory address register) và MDR
(thanh ghi dữ liệu - memory data register)
• Khi ghi dữ liệu, đầu tiên CPU chuyển giá trị được ghi đến MDR và địa chỉ để ghi đến MAR Ở chu kỳ truy xuất bộ nhớ tiếp theo, giá trị trong MDR sẽ được chép vào địa chỉ trong MAR
• Khi đọc dữ liệu, đầu tiên CPU chứa địa chỉ
để đọc vào MAR Ở chu kỳ truy xuất bộ nhớ tiếp theo, giá trị tại địa chỉ trong MAR được chép vào MDR Từ thanh ghi MDR, giá trị có thể được chuyển đến các thanh ghi khác
Trang 36Bộ Nhớ
hoặc nơi nào đó
• Bộ nhớ chính của máy tính được biết đến là
bộ nhớ RAM (bộ nhớ truy cập ngẫu nhiên -
random access memory) Chúng ta có thể truy xuất bất kỳ địa chỉ nào của bộ nhớ thì thời gian truy xuất là như nhau
• Ngoài bộ nhớ chính, các nhà thiết kế máy tính cũng tích hợp vào CPU một bộ nhớ có dung lượng nhỏ, tốc độ truy cập nhanh
được gọi là bộ nhớ cache (bộ nhớ đệm)
• Bộ nhớ cache lưu giữ nội dung của dữ liệu
đã được truy cập để sau này có thể dùng lại, nhằm làm tăng tốc độ của máy tính
Trang 37Nhập/Xuất
• Hầu hết dữ liệu sử dụng cho chương trình
không nằm trên máy tính Khi dữ liệu được
xử lý xong, chúng ta thường muốn chúng hiển thị ra màn hình hay xuất ra máy in
• Có nhiều thiết bị nhập/xuất khác nhau:
- Giao tiếp với người: bàn phím, chuột, màn hình
- Máy tính trực tiếp sử dụng: đĩa, thiết bị kết nối mạng
• Các thiết bị nhập/xuất có tốc độ rất khác nhau, nhưng tất cả đều chậm hơn CPU và bộ nhớ chính
Trang 38Nhập/Xuất
• Trong những máy tính trước đây, CPU sẽ đợi
để nhập ký tự Một lệnh máy giao tiếp với bàn phím để sẵn sàng nhận ký tự và lệnh máy kế tiếp sẽ kiểm tra xem ký tự đã nhập chưa Nếu ký tự chưa nhập, chương trình sẽ
lặp vòng để kiểm tra (polling) Phương pháp
này được gọi là “programmed I/O with polling” hay “busy waiting”
• Các máy tính ngày nay sử dụng hệ thống
ngắt (interrupt system) để tránh trường hợp
phải chờ và hệ điều hành quản lý tất cả nhập/xuất
• Mỗi thiết bị nhâp/xuất được kết nối với máy
Trang 39Nhập/Xuất
tính thông qua “bộ điều khiển nhập/xuất - I/O controller” Bộ điều khiển nhập/xuất có gắn
bộ nhớ với dung lượng nhỏ để làm bộ đệm
(buffer) chứa dữ liệu tạm thời trong quá trình nhận hay gởi
• Khi chương trình yêu cầu xuất, hệ điều hành
sẽ chuyển dữ liệu đến bộ nhớ đệm của bộ điều khiển nhập/xuất, bộ điều khiển nhập/xuất sẽ chuyển dữ liệu đến thiết bị xuất Khi dữ liệu được chuyển xong, bộ điều khiển
nhập/xuất tạo một ngắt (interrupt) để báo cho
hệ điều hành biết là đã chuyển xong Hệ điều hành sẽ đáp lại ngắt đó bằng cách bắt đầu
Trang 41Nhập/Xuất
• Các thiết bị nhập/xuất được phân làm 2 loại
là thiết bị ký tự (character device) và thiết bị khối (block device):
1 Thiết bị ký tự: giao tiếp với bên ngoài từng byte, các byte này không có địa chỉ Nghĩa
là chỉ có thể truy xuất dữ liệu theo dạng tuần tự Đa số các thiết bị nhập/xuất dùng với máy tính thuộc loại này như bàn phím, chuột, card mạng, máy quét, máy in, …
2 Thiết bị khối: giao tiếp với bên ngoài từng khối dữ liệu, mỗi khối có địa chỉ cố định và độc lập Các thiết bị loại này như CD-ROM,
âm thanh, các thiết bị hiển thị, …
Trang 42Nhập/Xuất
• Các thiết bị ký tự sẽ sinh ra ngắt cho mỗi ký
tự được truyền đi, các thiết bị khối sẽ sinh ra ngắt chỉ khi toàn bộ khối đó được truyền đi
• Hầu hết các máy tính ngày nay đều có bộ
điều khiển truy xuất bộ nhớ trực tiếp (direct memory access - DMA) để dùng với thiết bị khối
• Bộ điều khiển DMA dùng để truy xuất trực
tiếp bộ nhớ và chia sẻ công việc truy xuất bộ nhớ với CPU DMA truyền dữ liệu trực tiếp giữa bộ đệm của bộ điều khiển nhập/xuất với
bộ nhớ chính, nó không yêu cầu bất cứ phục
vụ nào từ CPU