TRƢỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG KHOA KỸ THUẬT – CÔNG NGHỆ

BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GIAO DIỆN Bậc học: Cao đẳng

Giảng viên: Nguyễn Phạm Hoàng Dũng Bộ môn: Điện – Điện tử Khoa: Kỹ thuật – Công nghệ Quảng Ngãi, tháng 12/2015

TRƢỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG KHOA KỸ THUẬT – CÔNG NGHỆ

BÀI GIẢNG CẤU TRÚC MÁY TÍNH VÀ GIAO DIỆN Bậc học: Cao đẳng

(Số tiết: 30)

Giảng viên: Nguyễn Phạm Hoàng Dũng Bộ môn: Điện – Điện tử Khoa: Kỹ thuật – Công nghệ Quảng Ngãi, tháng 12/2015

MỤC LỤC

LỜI NÓI ĐẦU ........................................................................................................... 1

DANH SÁCH CÁC TỪ VIẾT TẮT ........................................................................ 2

Chƣơng 1 . GIỚI THIỆU HỆ THỐNG SỐ ............................................................ 3

1.1. Các hệ đếm ....................................................................................................... 3

1.1.1. Hệ thập phân (decimal) ............................................................................. 3

1.1.2. Hệ nhị phân (binary) ................................................................................. 3

1.1.3. Hệ thập lục phân (hexadecimal) ................................................................ 5

1.2. Các phép toán ................................................................................................... 7

1.2.1. Các phép toán logic ................................................................................... 7

1.2.2. Các phép toán số học ................................................................................ 8

1.3. Biểu diễn số .................................................................................................... 11

1.4. Biểu diễn ký tự ............................................................................................... 14

Chƣơng 2 . GIỚI THIỆU CÁC HỆ MÁY TÍNH ................................................. 17

2.1. Các thế hệ máy tính ........................................................................................ 17

2.1.1. Thế hệ zero .............................................................................................. 17

2.1.2. Thế hệ đầu tiên (1945 – 1953) ................................................................ 18

2.1.3. Thế hệ thứ hai (1954 – 1965) .................................................................. 19

2.1.4. Thế hệ thứ ba (1965 – 1980) ................................................................... 20

2.1.5. Thế hệ thứ tư (1980 đến nay) .................................................................. 20

2.2. Chức năng máy tính ....................................................................................... 21

2.3. Cấu trúc và tổ chức máy tính ......................................................................... 22

2.4. Phân loại ......................................................................................................... 23

2.4.1. Phân loại theo cấu trúc tập lệnh .............................................................. 23

2.4.2. Phân loại theo khả năng xử lý của máy tính ........................................... 25

2.5. Máy tính Von Neumann ................................................................................. 26

Chƣơng 3 . CẤU TRÚC TỔNG QUÁT ................................................................ 28

3.1. Thùng máy – nguồn ....................................................................................... 28

3.2. Mainboard ...................................................................................................... 30

3.3. CPU ................................................................................................................ 33

3.4. RAM ............................................................................................................... 36

3.5. BIOS VÀ CMOS RAM ................................................................................. 39

3.6. Interfaces ........................................................................................................ 40

3.7. Chipset ............................................................................................................ 43

3.8. Ổ đĩa cứng ...................................................................................................... 44

3.9. Ổ đĩa quang .................................................................................................... 48

3.10. Màn hình ...................................................................................................... 49

Chƣơng 4 . CẤU TRÚC BÊN TRONG MÁY TÍNH ........................................... 50

4.1. Vi xử lý ........................................................................................................... 50

4.1.1. Kiến trúc .................................................................................................. 50

4.1.2. Cấu trúc pipeline ..................................................................................... 51

4.1.3. Kỹ thuật superscalar ................................................................................ 54

4.1.4. Thanh ghi ................................................................................................ 54

4.1.5. Tập lệnh ................................................................................................... 56

4.2. Bộ nhớ ............................................................................................................ 58

4.2.1. Phân loại bộ nhớ ...................................................................................... 59

4.2.2. Cấu trúc cơ bản ....................................................................................... 62

4.3. Hệ thống kết nối (bus) .................................................................................... 63

4.3.1. Phân loại .................................................................................................. 63

4.3.2. Chức năng ............................................................................................... 65

4.4. Hệ thống cache ............................................................................................... 68

4.4.1. Giới thiệu ................................................................................................. 68

4.4.2. Chức năng ............................................................................................... 69

4.4.3. Cache nhiều tầng ..................................................................................... 70

4.4.4. Phân loại .................................................................................................. 71

Chƣơng 5 . HỆ THỐNG XUẤT NHẬP ................................................................ 73

5.1. Hệ thống ngắt ................................................................................................. 74

5.2. Truy cập trực tiếp bộ nhớ ............................................................................... 77

5.3. Thiết bị bên ngoài ........................................................................................... 80

5.4. Các ngoại vi .................................................................................................... 82

TÀI LIỆU THAM KHẢO ...................................................................................... 84

LỜI NÓI ĐẦU

Bài giảng “Cấu trúc máy tính và giao diện” được biên soạn dùng làm tài liệu

học tập cho sinh viên bậc cao đẳng chính qui ngành công nghệ kỹ thuật Điện – Điện

tử trường Đại học Phạm Văn Đồng. Bài giảng bao gồm 5 chương, cung cấp cho

sinh viên những kiến thức cơ bản về quá trình phát triển của máy vi tính, cấu trúc cơ

bản của một máy vi tính hiện đại, các chuẩn và thông số kỹ thuật của các thành

phần tạo nên một chiếc máy tính, một số kỹ thuật xử lý nhằm cải thiện tốc độ xử lý

của máy tính theo thời gian, một số chi tiết của hệ thống máy tính như: bộ xử lý

trung tâm, bộ nhớ, cache, … Bài giảng này cũng góp phần giúp sinh viên cập nhật

những công nghệ mới thông qua các ví dụ thực tế.

Nội dung chi tiết của bài giảng như sau:

- Chương 1: Giới thiệu hệ thống số

- Chương 2: Giới thiệu các hệ máy tính

- Chương 3: Cấu trúc tổng quát

- Chương 4: Cấu trúc bên trong máy tính

- Chương 5: Hệ thống xuất nhập

Trong quá trình biên soạn không thể tránh khỏi những thiếu sót, rất mong

nhận được sự góp ý của bạn đọc để bài giảng được hoàn thiện hơn. Mọi ý kiến đóng

góp xin gửi về địa chỉ: Bộ môn Điện – Điện tử, Khoa Kỹ thuật – Công nghệ,

Trường Đại học Phạm Văn Đồng.

Tác giả xin chân thành cảm ơn!

1

DANH SÁCH CÁC TỪ VIẾT TẮT

Ý nghĩa

Từ viết tắt CPU MSB LSB

for ASCII

Đơn vị xử lý trung tâm Bit có trọng số lớn nhất Bit có trọng số thấp nhất Chuẩn mã trao đổi thông tin Hoa Kỳ Tích hợp cỡ lớn Máy tính cá nhân VLSI PC

Instruction Set Máy tính có tập lệnh phức tạp CISC

Instruction Set Máy tính có tập lệnh đơn giản RISC Từ đầy đủ Central Processing Unit Most Significant Bit Least Significant Bit American Standard Code Information Interchange Very Large Scale Integration Personal Computer Complex Computing Reduced Computing

Random Access Memory RAM

SRAM DRAM

Bộ nhớ DRAM đồng bộ SDRAM

DDR ROM BIOS

Metal-Oxide- CMOS

Bộ nhớ truy cập dữ liệu ngẫu nhiên Static Random Access Memory Bộ nhớ RAM tĩnh Dynamic Random Access Memory Bộ nhớ RAM động Synchronous Dynamic Random Access Memory Double Data Rate Real-Only Memory Basic Input/Output System Complementary Semiconductor Hard Disk Drive Solid-State Drive Arithmetic Logic Unit HDD SSD ALU

Direct Memory Access DMA

Direct Memory Access Controller DMAC Gấp đôi tốc độ dữ liệu Bộ nhớ chỉ đọc Hệ thống xuất nhập cơ bản Bộ nhớ RAM lưu trữ thông tin cấu hình máy tính Ổ đĩa cứng cơ truyền thống Ổ đĩa cứng thể rắn Đơn vị tính toán số học Giao thức truy cập trực tiếp bộ nhớ Bộ điều khiển truy cập trực tiếp bộ nhớ

2

Chƣơng 1. GIỚI THIỆU HỆ THỐNG SỐ

Một hệ thống máy tính bao gồm rất nhiều thành phần, trong đó bộ xử lý

trung tâm (hay còn gọi là CPU) chính là bộ não của cả hệ thống. CPU sẽ tiếp nhận

và xử lý mọi thông tin trong hệ thống. Thông tin hay còn được gọi là dữ liệu trong

một hệ thống máy tính được biểu diễn dưới dạng số nhị phân. Hệ số nhị phân còn

gọi là hệ cơ số hai chỉ bao gồm hai chữ số 0 và 1. Trong máy tính nói riêng và trong

các mạch điện tử số nói chung, các giá trị này được mã hóa dưới dạng các tín hiệu

điện với các giá trị điện áp hoặc dòng điện tương ứng khác nhau. Việc tính toán, xử

lý dữ liệu nhị phân trong máy tính cũng được thực hiện tương tự như trong toán

học.

1.1. Các hệ đếm

1.1.1. Hệ thập phân (decimal)

Hệ thập phân là hệ cơ số rất quen thuộc đối với chúng ta, đây là hệ cơ số

được sử dụng trong cuộc sống hàng ngày để biểu diễn các giá trị số, còn được gọi là

hệ cơ số mười hay hệ mười.

Hệ thập phân sử dụng 10 chữ số để biểu diễn hệ thống số. Mười chữ số này

là: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Số dương và số âm được biểu diễn bằng dấu “+” và “-“

trước mỗi số. Để phân biệt với hệ cơ số khác, ta thường thêm chữ cái „D‟ vào phía

cuối để chỉ ra rằng đó là một số trong hệ thập phân, ta cũng có thể bỏ „D‟ đi mà vẫn

ngầm hiểu đó là số thuộc hệ thập phân.

1.1.2. Hệ nhị phân (binary)

Cũng như hệ thập phân, nhị phân cũng là một hệ thống số trong đó các giá trị

số được biểu diễn chỉ bằng hai chữ số 0 và 1. Để phân biệt với các hệ cơ số khác, ta

thường thêm chữ cái „B‟ vào phía cuối số nhị phân.

Ví dụ: 10B, 11B, 100B, 1100B, 10100110B…

Mỗi giá trị trong hệ nhị phân tương ứng với một giá trị trong hệ thập phân và

ngược lại. Việc chuyển đổi qua lại giữa các giá trị trong hệ thập phân và hệ nhị phân

được thực hiện như sau.

+ Chuyển một số từ hệ nhị phân sang hệ thập phân

3

Việc chuyển đổi từ số nhị phân sang số thập phân được thực hiện bằng cách

tính tổng các tích giữa các hệ số của số nhị phân với các trọng số 2i tương ứng.

) là các Giả sử ta có số nhị phân như sau: bn bn-1…b1b0B, trong đó bi (i =

hệ số của số nhị phân, có thể nhận một trong hai giá trị 0 hoặc 1. Khi đó 2i sẽ là

trọng số tương ứng của hệ số bi. Số nhị phân này được chuyển đổi sang hệ thập

phân bằng công thức sau:

bn*2n + bn-1*2n-1 + … + b1*21 + b0*20

3

2

1

0

1

0

1

1

b3

b2

b1

b0

Ví dụ: ta có số nhị phân: 1011B

Số thập phân tương ứng sẽ là:

b3*23 + b2*22 + b1*21 + b0*20 = 1*23 + 0*22 + 1*21 + 1*20 = 11

Như vậy, số 1011B sẽ tương ứng với số 11 trong hệ thập phân.

Ví dụ: số nhị phân: 110011B 1*25 + 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 32 + 16 + 0 + 0 + 2 +1 = 51

Như vậy, số 110011B tương ứng với số 51 trong hệ thập phân.

+ Chuyển một số từ hệ thập phân sang hệ nhị phân

Việc chuyển đổi một số từ hệ thập phân sang hệ nhị phân được thực hiện

bằng cách lấy số cần đổi chia cho 2 và ghi nhớ phần dư, tiếp theo lấy thương của

phép chia trước đó chia cho 2 và ghi nhớ phần dư. Làm như vậy cho tới khi được

thương bằng 0. Đảo ngược thứ tự dãy số dư ta sẽ được các chữ số của hệ nhị phân

cần tìm.

Ví dụ: hình 1.1 mô tả cách đổi số 50 sang hệ nhị phân

Số dư (số gạch dưới) được sắp xếp theo chiều mũi tên, như vậy 50 =

110010B

4

Hình 1.1. Đổi một số thập phân sang hệ nhị phân

Hệ nhị phân là hệ cơ số được sử dụng trong máy tính nói riêng và trong các

mạch điện tử số nói chung. Các giá trị 0 và 1 được hiểu là các mức điện áp (hoặc

dòng điện) khác nhau trong mạch (một số ví dụ như đã đề cập ở phần trên). Trong

thế giới máy tính, các số 0 và 1 được gọi là các bit. Một nhóm 4 bit sẽ tạo thành 1

nibble, nhóm 8 bit sẽ tạo thành một byte, nhóm 16 bit sẽ tạo thành một word. Bit

đầu tiên bên trái trong chuỗi bit được gọi là bit MSB, bit cuối cùng bên phải trong

chuỗi bit được gọi là bit LSB.

Ví dụ:

+ Bit: 0B, 1B

+ Nibble: 1011B, 1110B, 1000B, …

+ Byte: 01011110B, 11110000B, 11000001B, …

+ Word: 1000010111100001B, 1111000010101100B, …

MSB 1 1 0 1 0 1 0 LSB 0

Từ các ví dụ trên ta có thể thấy, một nibble có thể biểu diễn được số lớn nhất

là 15, một byte có thể biểu diễn được số lớn nhất là 255, một word có thể biểu diễn

số lớn nhất là 65535. Để biểu diễn những số lớn hơn ta phải dùng những chuỗi bit

dài hơn, điều này rất bất tiện cho con người trong việc ghi chép, tính toán trên giấy.

Để khắc phục nhược điểm trên người ta thường sử dụng hệ thập lục phân.

1.1.3. Hệ thập lục phân (hexadecimal)

Hệ thập lục phân hay còn gọi là hệ cơ số 16, cũng là một hệ thống số trong

đó các giá trị số được biểu diễn bằng các chữ số từ 0 đến 9 và các chữ cái từ A đến

5

F, tương ứng với giá trị thập phân từ 0 đến 15. Để phân biệt với các hệ cơ số khác,

ta thương thêm chữ cái „H‟ vào phía cuối số thập lục phân.

Ví dụ: 19H, AB5H, 2F0CH, E104DH, …

Như đã đề cập ở trên, hệ thập lục phân ra đời nhằm khắc phục nhược điểm

của số trong hệ nhị phân, đó là việc sử dụng một chuỗi số nhị phân quá dài để biểu

diễn một giá trị lớn. Để việc biểu diễn một kết quả nhị phân gọn lại, người ta

thường chuyển các kết quả này thành các số thập lục phân bằng cách nhóm 4 bit số

nhị phân thành một số thập lục phân.

Ví dụ: chuyển số 110001111000001011101011B thành số thập lục phân

1100 C 0111 7 1000 8 0010 2 1110 E 1011 B

Ta sẽ nhóm từng 4 bit số nhị phân lại để tạo thành một số thập lục phân:

1100B có giá trị là 12 tương ứng với „C‟, 0111B có giá trị 7 tương ứng với 7,

1000B có giá trị 8 tương ứng với 8, 0010B có giá trị 2 tương ứng với 2, 1110B có

giá trị 14 tương ứng với „E”, 1011B có giá trị 11 tương ứng với „B‟ trong hệ thập

lục phân. Do đó, số nhị phân đã cho sẽ có giá trị tương ứng là C782EB trong hệ

thập lục phân.

Đối với các số nhị phân có số bit không chia hết cho 4, ta thêm các bit 0 vào

phía liền trước bit MSB để được số bit chia hết cho 4 rồi nhóm lại theo cách trên.

Ví dụ: chuyển số 11101011011111B thành số thập lục phân

Do số bit của số nhị phân trên là 14 không chia hết cho 4 nên ta phải thêm 2

bit 0 vào phía liền trước bit MSB để tạo thành số 0011101011011111B, sau đó

nhóm lại như sau:

0011 3 1010 A 1101 D 1111 F

Như vậy, số nhị phân 11101011011111B tương ứng với số 3ADFH

Việc chuyển từ số thập lục phân thành số nhị phân được thực hiện theo cách

ngược lại, tức là một chữ số thập lục phân được phân tích thành 4 bit nhị phân.

Ví dụ: chuyển số A3C5H thành số nhị phân

A 3 C 5 1010 0011 1100 0101

6

Ta có, „A‟ có giá trị 10 ứng với 1010B, 3 có giá trị 3 ứng với số 0011B, „C‟

có giá trị 12 ứng với số 1100B, 5 có giá trị 5 ứng với số 0101B. Như vậy, A3C5

trong hệ thập lục phân tương ứng với số 1010001111000101 trong hệ nhị phân.

1.2. Các phép toán

1.2.1. Các phép toán logic

Các phép toán logic bao gồm 4 phép toán cơ bản, đó là: NOT, AND, OR,

XOR, thường dùng để diễn tả một kết quả từ các điều kiện cho trước. Các phép

toán này được thực hiện với các toán hạng là các bit 0 (điều kiện sai) và 1 (điều kiện

đúng), kết quả cuối cùng cũng là một bit 0 (kết quả sai) hoặc 1 (kết quả đúng). Sau

đây ta sẽ xét từng phép toán.

a. Phép toán AND

Giả sử z = x AND y

Kết quả của phép toán AND chỉ bằng 1 khi cả hai toán hạng đều bằng 1, tức

x 0 0 1 1 y 0 1 0 1 z 0 0 0 1

là kết quả chỉ đúng khi cả hai điều kiện đều đúng.

b. Phép toán OR

Giả sử z = x OR y

Kết quả của phép toán OR chỉ bằng 0 khi cả hai toán hạng đều bằng 0, tức là

x 0 0 1 1 y 0 1 0 1 z 0 1 1 1

kết quả chỉ sai khi cả hai điều kiện đều sai.

c. Phép toán XOR

Giả sử z = x XOR y

7

Kết quả của phép toán XOR bằng 0 khi hai toán hạng giống nhau, tức là kết

x 0 0 1 1 y 0 1 0 1 z 0 1 1 0

quả chỉ sai khi hai điều kiện giống nhau (cùng đúng hoặc cùng sai)

d. Phép toán NOT

Phép toán này chỉ có một toán hạng. Giả sử y = NOT x

Kết quả y được gọi là bù của toán hạng x.

x 0 1 y 1 0

1.2.2. Các phép toán số học

Việc thực hiện các phép toán số học (cộng, trừ, nhân, chia, …) trong hệ thập

phân đã quá quen thuộc với chúng ta, do đó, nội dung phần này chỉ trình bày cách

thực hiện các phép toán số học trong hệ nhị phân.

a. Phép cộng

Phép cộng trong hệ nhị phân được thực hiện giống như trong hệ thập phân

(cộng cột theo cột), chỉ có sự khác biệt ở điểm: hệ thập phân có 10 chữ số (từ 0 đến

9) còn hệ nhị phân chỉ có 2 chữ số (0 và 1). Phép cộng hai chữ số 0 và 1 được thực

hiện theo quy tắc sau đây.

Xét phép cộng y = a+b, số nhớ là c

Cũng giống như số thập phân, số nhớ sẽ được cộng vào bit cao hơn kế tiếp.

a 0 0 1 1 b 0 1 0 1 c 0 0 0 1 y 0 1 1 0

Xét các ví dụ sau.

Ví dụ: thực hiện phép cộng 001B + 100B

8

Trong hệ thập phân, phép cộng này tương ứng là 1+4=5 (001B = 1, 100B =

4, 101B = 5). Đây là phép cộng không có số nhớ. Xét ví dụ tiếp theo với phép cộng

có sử dụng số nhớ.

Ví dụ: thực hiện phép cộng 0011B + 0110B

Trong hệ thập phân, phép cộng này tương ứng là 3+6=9

Số nhớ Số hạng thứ nhất Số hạng thứ hai Tổng 11 0011 0110 1001

Ví dụ: thực hiện phép cộng 1011B + 0101B

Trong hệ thập phân, phép cộng này tương ứng là 13+7=20. Các số hạng

Số nhớ Số hạng thứ nhất Số hạng thứ hai Tổng 1111 1101 0111 10100

trong phép cộng là các số 4 bit, tổng 20 là một số 5 bit. Do đó, trong trường hợp

tổng quát, nếu số hạng lớn hơn có n bit thì tổng sẽ có n+1 bit.

b. Phép trừ

Phép trừ trong hệ nhị phân cũng được thực hiện tương tự như trong hệ thập

phân. Quy tắc trừ các bit nhị phân được cho như sau.

Xét phép trừ y=a-b, số mượn là c

Cũng giống như số thập phân, số mượn sẽ được trừ vào bit cao hơn kế tiếp.

a 0 0 1 1 b 0 1 0 1 y 0 1 1 0 c 0 1 0 0

Xét các ví dụ sau đây.

Ví dụ: thực hiện phép trừ 101B – 001B

Trong hệ thập phân, phép trừ này tương ứng với 5-1=4. Phép trừ này không

sử dụng số mượn. Xét ví dụ tiếp theo với phép trừ sử dụng số mượn.

9

Ví dụ: thực hiện phép trừ 1010B – 0110B

Trong hệ thập phân, phép trừ này tương ứng với 10-6=4.

Số mượn Số bị trừ Số trừ Hiệu 1 1010 0110 0100

c. Phép nhân

Phép nhân trong hệ nhị phân cũng được thực hiện tương tự như trong hệ thập

phân.

Ví dụ: thực hiện phép nhân 1011B x 1101B

Phép nhân trên trong hệ thập phân tương ứng với 11x13=143

Khi nhân một số n bit với một số m bit, tích số sẽ có m+n bit

d. Phép chia Phép chia trong hệ nhị phân cũng được thực hiện tương tự như trong hệ thập

phân.

Ví dụ: thực hiện phép chia 11011001B:1011B

Trong hệ thập phân, phép chia này tương ứng với 217:11 được thương số là

19 và số dư là 8.

10

1.3. Biểu diễn số

Trong các nội dung trên, ta chỉ đề cập đến các số nguyên không có dấu.

Trong phần này ta sẽ tìm hiểu cách biểu diễn một số nguyên có dấu và số thập phân.

a. Số có dấu

Trong hệ nhị phân, số có dấu được biểu diễn bằng số bù 2. Số bù 2 được tính

từ số bù 1, cách tính được trình bày như trong phần sau.

Số bù 1

Số bù 1 của một số nhị phân là một số nhị phân mà khi cộng với số nhị phân

đã cho thì tổng bằng 1 ở tất cả các bit. Để tìm số bù 1 của một số nhị phân bất kỳ, ta

chỉ cần đổi bit 0 thành 1 và 1 thành 0

Ví dụ:

Số nhị phân 01011 110100 1010011 Số bù 1 10100 001011 0101100

Số bù 2

Số bù 2 của một số nhị phân bằng số bù 1 của nó cộng thêm 1

Ví dụ:

Số nhị phân 10011 110100 1010011 Số bù 1 01100 001011 0101100 Số bù 2 01101 001100 0101101

Số có dấu được biểu diễn bằng số bù 2 như sau:

- Bit có trọng số lớn nhất (MSB) là bit dấu. Số dương có bit dấu bằng 0, số

âm có bit dấu bằng 1

- Các bit còn lại biểu diễn giá trị thực của số dương hay trị bù 2 của số âm - Số có dấu n bit biểu diễn các giá trị từ –(2n-1) đến (2n-1-1)

Trong cách biểu diễn số có dấu, để tìm số đối của một số, ta chỉ cần tìm số

bù 2 của số đó.

Ví dụ: tìm số nhị phân biểu diễn cho số -5

Để biểu diễn số -5 (trong tầm từ -8 đến 7), ta cần số nhị phân có n=4 bit

- Số 5 tương ứng với số nhị phân 4 bit là: 0101

- Số bù 1 của 0101B là: 1010B

11

- Số bù 2 của 0101B là: 1010B + 1 = 1011B

Do đó, số -5 tương ứng với số nhị phân: 1011B

Ví dụ: số có dấu và không dấu 4 bit được cho như trong Bảng 1.1

Bảng 1.1. Số có dấu và không dấu 4 bit

Số thập phân (có dấu) Số thập phân (không dấu)

Như ta đã biết, trong hệ thập phân, phép trừ có thể được thực hiện thông qua

Số nhị phân 0111 0110 0101 0100 0011 0010 0001 0000 1111 1110 1101 1100 1011 1010 1001 1000 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8

phép cộng với số âm, ví dụ như: 14 - 5 có thể thực hiện bằng phép cộng 14 + (-5).

Do đó, trong hệ số nhị phân phép trừ cũng có thể được thực hiện bằng cách cộng

với số bù 2. Sau đây ta xét ví dụ thực hiện phép trừ bằng cách như vậy.

Ví dụ: thực hiện phép trừ 14 – 5

Để thực hiện phép trừ trên trước hết ta phải xác định số bit (n) dùng để biểu

diễn hai số trừ và số bị trừ. Trong trường hợp trên, để biểu diễn được cả hai số 14

và -5, số bit n=5

Trong hệ nhị phân biểu diễn số có dấu: 14 = 01110B và -5 = 11011B. Do đó,

phép trừ trên tương ứng với 01110B + 11011B

Lưu ý: ta cần phải loại bỏ bit có trọng số 2n (nếu có) để có kết quả đúng.

12

Trong trường hợp trên bit có trọng số 25 là 1, do đó ta cần phải loại bỏ bit

này. Kết quả cuối cùng của phép trừ trên là: 01001B (tương ứng với số 9 trong hệ

thập phân).

Khi thực hiện cộng trừ với số có dấu cần chú ý: nếu kết quả nằm ngoài phạm

vi biểu diễn của số có dấu n bit thì kết quả sai. Để sửa sai ta phải tăng số bit biễu

diễn.

Ví dụ: thực hiện phép tính -4 – 5

Phép tính trên tương ứng với phép cộng -4 + (-5). Để biễu diễn được -4 và -5

trong hệ nhị phân ta cần n=4 bit, -4 = 1100B, -5 = 1011B

Kết quả phép tính là 0111B, tức là +7 thay vì -9 như mong muốn. Ở ví dụ

này, kết quả sai vì -9 nằm ngoài phạm vi biểu diễn của số có dấu 4 bit. Để có kết

quả đúng, ta phải tăng số bit biểu diễn lên 5 bit, -4 = 11100B, -5 = 11011B

Phép tính cho kết quả là 10111B, tức là -9

b. Số thập phân

Để biễu diễn số thập phân trong hệ nhị phân ta cũng dùng dấu chấm tương tự

như trong hệ thập phân.

Ví dụ: 1100.1011B, 100.11B, 10.0101B, …

Cách chuyển đổi các số nhị phân dạng này sang hệ thập phân cũng được thực

hiện như bình thường, các trọng số tương ứng của các số sau dấu chấm có số mũ

âm.

Ví dụ: chuyển số nhị phân 1100.1011B sang hệ thập phân

-2 0 -3 1

3 1 b3 2 1 b2 1 0 b1 0 0. b0 -4 -1 1 1 b-1 b-2 b-3 b-4

Trong hệ thập phân, số này là:

13

1*23 + 1*22 + 0*21 + 0*20 + 1*2-1 + 0*2-2 + 1*2-3 + 1*2-4 = 12.6875

Để chuyển một số thập phân trong hệ thập phân sang hệ nhị phân ta thực

hiện các bước sau:

- Phần nguyên: chuyển đổi bình thường như đã mô tả trong phần 1.2

- Phần thập phân: lấy phần thập phân nhân cho 2, ghi nhận lại phần nguyên,

còn phần thập phân tiếp tục nhân cho 2. Lặp lại nhiều lần như vậy cho tới độ chính

xác mà ta mong muốn. Phần thập phân là tập hợp các phần nguyên của phép nhân.

Trong đó, số đầu tiên có trọng số lớn nhất của phần thập phân.

Ví dụ: chuyển số 12.6875 sang hệ nhị phân

- Phần nguyên 12 tương ứng trong hệ nhị phân là 1100B

- Phần thập phân là 0.6875, để chuyển sang hệ nhị phân ta lấy phần này lần

lượt nhân cho 2

Phép nhân phần thập phân cho 2 Phần nguyên của phép nhân 0.6875 0.375 0.75 0.5 1 (trọng số lớn nhất) 0 1 1 x2 = 1.375 x2 = 0.75 x2 = 1.5 x2 = 1

Do đó, phần thập phân trong hệ nhị phân là: .1011B

Ghép phần nguyên và phần thập phân ta được kết quả chuyển đổi là:

1100.1011B

1.4. Biểu diễn ký tự

Như đã giới thiệu trong phần đầu của chương, tất cả các thông tin trong máy

tính đều được biểu diễn dưới dạng các số 0 và 1. Để biểu diễn một ký tự (chữ cái,

chữ số, dấu câu, …), người ta thường dùng một tổ hợp các bit 0 và 1. Một tập hợp

các cách biểu diễn cho tất cả các ký tự gọi là một bảng mã hay gọi tắt là mã. Một số

bảng mã chuẩn đã được xây dựng để dùng trong máy tính hoặc trong truyền thông

như: ASCII, Unicode, EBCDIC, … Sau đây là một số mã được sử dụng phổ biến

trong máy tính hiện nay.

a. Mã ASCII

Mã ASCII được tổ chức mã chuẩn của Mỹ xây dựng để dùng trong trao đổi

thông tin. Mã ASCII sử dụng một tổ hợp 7 bit nhị phân để biểu diễn một ký tự, vì

14

vậy mã này biểu diễn được tối đa 128 (27) ký tự. Cách biểu diễn các ký tự được mô

tả như Bảng 1.2.

Bảng 1.2. Bảng mã ASCII

Các ký tự có giá trị từ 0000000 đến 0011111 và 1111111 là các ký tự không

in được, nghĩa là không thể hiện thị trên màn hình hoặc bản in.

Ví dụ: từ Bảng 1.2, ta thấy mã ASCII của một số ký tự như sau:

- Chữ cái “a”: 1100001

- Chữ cái “B”: 1000010

- Chữ số “6”: 0110110

- Dấu chấm than (!): 0100001

b. Mã Unicode

Như đã đề cập ở phần trên, bảng mã ASCII có thể biểu diễn được tối đa 128

ký tự, nghĩa là có thể biễu diễn được bộ chữ Latinh, các dấu câu và một số ký tự đặc

biệt. Tuy nhiên, khả năng biểu diễn như vậy vẫn chưa đầy đủ do trên thế giới còn

rất nhiều ngôn ngữ với nhiều nhiều mẫu chữ khác nhau như tiếng Việt có thêm các

chữ „ă‟, „â‟, „ê‟, „ư‟, „ơ‟, „ừ‟, … Do đó, một số công ty công nghệ lớn như

Microsoft, IBM, Google, Apple, Yahoo, Oracle … đã thống nhất đưa ra một bảng

mã ký tự mới có khả năng biểu diễn được tất cả các ngôn ngữ trên thế giới, đó là

15

Unicode. Mã Unicode biểu diễn ký tự bằng một tổ hợp 16 bit, do đó, mã này có khả năng biểu diễn được 216 = 65536 ký tự. Với số lượng như vậy, mã Unicode có khả

năng biểu diễn gần như tất cả các ngôn ngữ khác nhau trên thế giới, kể cả các ngôn

ngữ sử dụng ký tự tượng hình phức tạp như Tiếng Trung Quốc, Tiếng Thái, …

CÂU HỎI ÔN TẬP CHƢƠNG 1

1. Chuyển các số sau sang số nhị phân: 30; 52; 87; 100; 225; 65,625; 90,84375

2. Chuyển các số sau sang số thập lục phân: 90; 125; 241; 512; 1023

3. Biểu diễn số 8 bit bù 2 của các số sau: 79; -49; -125; -100; 115; -128

4. Cho chuỗi ký tự sau: “DH Pham Van Dong”, hãy biểu diễn chuỗi ký tự này bằng

mã ASCII.

5. Thực hiện các phép trừ sau bằng cách thực hiện phép cộng với số bù 2

a. 10 – 15 b. 6 – 30 c. 63 – 31 d. 7 – 50

16

Chƣơng 2. GIỚI THIỆU CÁC HỆ MÁY TÍNH

Ngày nay, máy tính đã trở nên quá quen thuộc với chúng ta. Chúng được sử

dụng rộng rãi cho nhiều mục đích, trong nhiều lĩnh vực khác nhau, từ y học, giáo

dục, kinh tế đến chính trị, kỹ thuật, an ninh, quốc phòng, … Để có được hình dáng

nhỏ gọn, tiện lợi và hữu ích như ngày nay, máy tính đã trải qua quá trình phát triển

lâu dài. Trong chương này chúng ta sẽ tìm hiểu về lịch sử các thế hệ máy tính, các

thành phần cơ bản nhất của một chiếc máy tính qua các thời kỳ và một số cách phân

loại máy tính. Phần cuối cùng sẽ trình bày về chiếc máy tính theo kiến trúc Von

Neumann – Turring.

2.1. Các thế hệ máy tính

Trong phần này chúng ta chia sự phát triển của máy tính thành những giai

đoạn nhỏ, gọi là thế hệ. Mỗi thế hệ được đặc trưng bằng công nghệ dùng để xây

dựng nên chiếc máy tính.

2.1.1. Thế hệ zero

Đây là thế hệ các máy tính cơ khí, bắt đầu từ năm 1642, khi nhà toán học

người Pháp, Blaise Pascal, hoàn thành việc xây dựng một cỗ máy tính toán có khả

năng thực hiện được phép cộng có nhớ và phép trừ. Đây là thiết bị hoàn toàn bằng

cơ khí sử dụng các bánh răng và được cung cấp lực nhờ một cánh tay quay. Khoảng

30 năm sau đó, chiếc máy tính toán tiếp theo mới ra đời, đó là phát minh của nhà

toán học người Đức, Leibniz. Chiếc máy này có nhiều tính năng hơn chiếc máy của

Pascal, ngoài khả năng cộng, trừ, nó còn có thể thực hiện được cả phép nhân và

chia. Nhưng cả hai có một điểm chung nhất, đó là không có khả năng lập trình,

chúng được thực hiện hoàn toàn thủ công.

Chiếc máy tính tiếp theo được phát minh vào năm 1822, khi giáo sư toán

trường đại học Cambridge, Charles Babbage, xây dựng một máy có khả năng tính

các phép cộng, trừ dựa trên thuật toán sai phân nên còn được gọi là máy sai phân.

Bên cạnh đó, năm 1833 ông cũng bắt đầu nghiên cứu và xây dựng một chiếc máy

khác, gọi là máy phân tích, có nhiều ưu điểm hơn so với máy sai phân. Máy phân

tích có khả năng thực hiện được bất kỳ một phép tính toán học nào. Cấu tạo của

máy phân tích cũng bao gồm nhiều thành phần giống như một chiếc máy tính hiện

17

đại như: đơn vị xử lý toán học, bộ nhớ, các thiết bị xuất và nhập dữ liệu. Máy phân

tích có khả năng thực hiện được một loạt các phép tính dựa trên một kế hoạch cho

trước, còn được gọi là chương trình. Dữ liệu được đưa vào máy bằng các thẻ đục lỗ,

mỗi chương trình có dữ liệu khác nhau, tương ứng với các thẻ đục lỗ khác nhau.

Công việc viết kế hoạch cho máy còn được gọi là lập trình. Babbage đã thuê một

người tên là Ada lập trình cho mình. Do đó, Ada được xem là lập trình viên đầu tiên

trên thế giới. Tên của Ada sau này được đặt cho một ngôn ngữ lập trình hiện đại.

Máy sai phân và máy phân tích đều là các máy cơ, vì vậy, để thực hiện các phép

tính lớn, Babbage cần rất nhiều các bánh răng được chế tạo với độ chính xác nhất

định. Tuy nhiên, công nghệ ở thế kỷ 19 không đủ khả năng đáp ứng được điều kiện

này. Mặc dù không thành công, nhưng những ý tưởng của Babbage đã vượt thời

gian, thậm chí ngày nay hầu hết các máy tính đều có cấu trúc tương tự như máy

phân tích. Do đó, ông được xem như cha đẻ của máy tính.

2.1.2. Thế hệ đầu tiên (1945 – 1953)

Đây là thế hệ các máy tính sử dụng đèn chân không. Vào năm 1930, một

sinh viên kỹ thuật người Đức, tên là Konrad Zuse đã tìm hiểu lại thiết kế của

Babbage và đã có ý tưởng cải tiến thiết kế này bằng cách thay các bánh răng bằng

các rơle. Chiếc máy tính của Zuse ra đời có tên là Z1. Z1 cũng có khả năng lập trình

được, có bộ nhớ, đơn vị tính toán, đơn vị điều khiển. Các công trình của Zuse sau

đó không còn được phát triển do bị phá hủy trong chiến tranh, nhưng Zuse vẫn được

xem là một trong những người đi tiên phong trong việc chuyển đổi chiếc máy tính

từ cơ sang điện.

Chiếc máy tính được xem là hoàn toàn bằng điện tử đầu tiên được John

Mauchley và J.Presper Eckert chế tạo và được giới thiệu vào năm 1946. Chiếc máy

này có tên là ENIAC, sử dụng 17.648 bóng đèn chân không, chiếm diện tích khoảng 167m2 (1800 ft2), nặng khoảng 30 tấn và tiêu thụ công suất khoảng 174KW. ENIAC

có 20 thanh ghi, mỗi thanh ghi có khả năng lưu trữ một số thập phân 10 chữ số.

Các máy tính đèn chân không sau đó tiếp tục ra đời dựa trên kiến thức của

Mauchley và Eckert là: EDSAC (năm 1949) được thiết kế tại đại học Cambridge,

ILLIAC ở đại học Illinois, WEIZAC tại viện Weizmann ở Israel.

18

Mauchley và Eckert sau đó lập công ty riêng và tiếp tục phát triển chiếc máy

tính tiếp theo là EDVAC. Công ty máy tính Mauchley – Eckert là tiền thân của công

ty Univac và hiện tại là Unisys. Cùng thời gian này, một người trong nhóm dự án

ENIAC, John von Neumann đã tách ra xây dựng chiếc máy tính của riêng mình,

mang tên IAS. Máy của Neumann có 5 phần cơ bản: bộ nhớ, đơn vị số học, đơn vị

điều khiển, thiết bị nhập và thiết bị xuất. IAS là chiếc máy tính có khả năng lưu trữ

chương trình đầu tiên, là cơ sở cho các máy tính số hiện nay.

Năm 1953, IBM cũng sản xuất ra chiếc máy tính đầu tiên của công ty, đó là

701. Các năm sau đó, IBM tiếp tục cải tiến và cho ra đời các dòng sản phẩm có bộ

nhớ lớn hơn và thực hiện được nhiều chức năng hơn, đó là 704 (năm 1956) và 709

(năm 1958).

2.1.3. Thế hệ thứ hai (1954 – 1965)

Đây là thế hệ các máy tính sử dụng transistor. Năm 1948, ba nhà nghiên cứu

tại phỏng thí nghiệm Bell (Bell Lab), John Bardeen, Walter Brattain và William

Shockley đã phát minh ra transistor. Đây là một công nghệ mới mang tính cách

mạng trong ngành công nghiệp máy tính nói riêng và điện tử nói chung. Vì

transistor tiêu thụ ít năng lượng hơn, nhỏ hơn rất nhiều và hoạt động tin cậy hơn so

với đèn chân không, do đó, mạch máy tính cũng trở nên nhỏ hơn và hoạt động chính

xác hơn. Mặc dù vậy, máy tính trong thời kỳ này vẫn khá đắt và kềnh càng. Chỉ các

trường đại học, chính phủ hoặc các công ty lớn mới có đủ khả năng mua máy tính.

Một số công ty lớn, nổi bật trong nền công nghiệp máy tính thời kỳ này là: IBM,

DEC (Digital Equipment Corporation) và Univac (hiện nay là Unisys).

Một số máy tính trong thời kỳ này là PDP-1, PDP-8 của công ty DEC, 7090,

7094 và 1401 của IBM, 6600 của CDC. Các dòng máy của DEC rẻ hơn nhiều so

với của IBM do tốc độ của các máy này thấp hơn rất nhiều so với các máy IBM.

Các dòng 7090, 7094 là các phiên bản cải tiến của thế hệ máy tính sử dụng đèn chân

không 709, trong khi 1401 là dòng máy được IBM phát triển mới, nhỏ gọn, giá rẻ.

Một khái niệm lần đầu tiên được sử dụng cho máy CDC 6600, đó là xử lý song

song. Trong đơn vị xử lý trung tâm có các thành phần chuyên thực hiện các phép

tính toán số học, tiết kiệm thời gian để bộ xử lý trung tâm thực hiện các thao tác

19

khác như quản lý xuất, nhập, … Do đó, máy CDC6600, sản xuất năm 1964, có tốc

độ nhanh hơn cả máy IBM 7094. Đây cũng là một cột mốc quan trọng trong ngành

công nghiệp máy tính.

2.1.4. Thế hệ thứ ba (1965 – 1980)

Đây là thế hệ các máy tính sử dụng mạch tích hợp. Mạch tích hợp (còn gọi là

IC) được nghiên cứu và chế tạo từ những năm 1950. Ý tưởng về mạch tích hợp

được đề xuất lần đầu tiên bởi Jack Kilby, khi đó mạch được làm bằng Germani. Sau

đó, mạch tích hợp gặp một số vấn đề trong quá trình sản xuất và hoạt động nên

Robert Noyce (đồng sáng lập các công ty Fairchild Semiconductor năm 1957 và

Intel năm 1968) đã đề xuất sử dụng Silic để chế tạo các mạch tích hợp. Kỹ thuật này

được sử dụng cho đến ngày nay.

Một mạch tích hợp cho phép ghép nhiều transistor trên một mạch đơn và

đóng gói lại thành một linh kiện duy nhất gọi là chip. Vì vậy, mạch tích hợp có kích

thước nhỏ hơn, tốc độ hoạt động cao hơn so với mạch ghép các transistor riêng lẻ.

Mạch tích hợp ra đời mở ra thời kỳ phát triển bùng nổ của máy tính. Các máy tính

thời kỳ này trở nên nhỏ gọn hơn, tốc độ cao hơn và đặc biệt là tiêu thụ năng lượng ít

hơn. Trong giai đoạn này, IBM đã giới thiệu một thế hệ máy tính hoàn toàn mới, đó

là các máy tính thuộc họ System 360. Điểm nổi bật của các máy tính thuộc họ này

là chúng hoàn toàn tương thích với nhau, nghĩa là các máy trong họ sử dụng cùng

một hợp ngữ, do đó, không cần phải viết lại chương trình khi nâng cấp một máy nhỏ

lên máy lớn hơn. Cùng thế hệ này còn có các máy tính PDP-8 và PDP-11 của DEC

và Cray-1 của Cray Research Corporation, một công ty máy tính do Seymour Cray

sáng lập. Seymour Cray là một kỹ sư của công ty CDC, thuộc nhóm xây dựng máy

tính CDC 6600. Cray-1 có khả năng thực hiện trên 160 triệu lệnh trong một giây và

hỗ trợ bộ nhớ 8 Megabytes

2.1.5. Thế hệ thứ tƣ (1980 đến nay)

Đây là thế hệ các máy tính sử dụng mạch tích hợp cỡ lớn VLSI. Theo thời

gian, kỹ thuật chế tạo vi mạch ngày càng được cải tiến, do đó mức độ tích hợp của

vi mạch ngày càng lớn. Các vi mạch có mức độ tích hợp nhỏ (SSI) chứa từ 10 đến

100 transistor trên một chip, các vi mạch có mức độ tích hợp trung bình (MSI) chứa

20

từ 100 đến 1000 transistor trên một chip, các vi mạch tích hợp lớn (LSI) chứa từ

1000 đến 10000 transistor trên một chip, các vi mạch tích hợp siêu lớn (VLSI) chứa

trên 10000 transistor trên một chip. Mức cuối cùng (VLSI) đánh dấu sự khởi đầu

của thế hệ máy tính thứ tư.

Với vi mạch VLSI, Intel đã chế tạo bộ vi xử lý đầu tiên trên thế giới vào năm

1971, đó là 4004. Intel 4004 là vi xử lý 4 bit, chạy ở tần số 108KHz. Cùng thời

điểm này, Intel cũng giới thiệu bộ nhớ truy cập ngẫu nhiên (RAM) với dung lượng

của một chip nhớ là 4Kilobit (Kb).

Công nghệ VLSI ngày càng phổ biến, với mật độ tích hợp ngày càng cao làm

cho máy tính ngày càng nhỏ và rẻ. Nếu như ở các thế hệ trước, chỉ có một số trường

đại học, doanh nghiệp lớn hoặc tổ chức chính phủ mới trang bị được máy tính thì

đến giai đoạn này, các cá nhân đã có thể mua được máy tính. Năm 1981, IBM đã

giới thiệu chiếc máy tính cá nhân (PC) đầu tiên, khởi đầu thời đại máy tính cá nhân.

Hiện nay máy tính đã được sử dụng rộng rãi trên toàn thế giới với nhiều mục

đích khác nhau. Do đó, các công ty cũng đã sản xuất ra rất nhiều loại máy tính phù

hợp với từng yêu cầu. Ví dụ nếu một cá nhân sẽ trang bị cho mình một máy tính để

bàn (desktop) hoặc laptop nhỏ gọn, phục vụ cho các nhu cầu đơn giản trong công

việc và cuộc sống, thì một ngân hàng phải trang bị một máy tính cỡ lớn (thường gọi

là mainframe), các máy chủ phải là các siêu máy tính có tốc độ rất cao, xử lý một

khối lượng lớn công việc, phục vụ cho nhiều máy nhỏ khác.

2.2. Chức năng máy tính

Một cách tổng quát, một máy tính có bốn chức năng cơ bản sau:

+ Chuyển dữ liệu: máy tính phải có chức năng chuyển hoặc trao đổi dữ liệu

với thế giới bên ngoài. Quá trình máy tính truyền hoặc nhận dữ liệu còn gọi là quá

trình vào ra và các thiết bị phục vụ cho quá trình này gọi là các thiết bị ngoại vi.

Một số thiết bị ngoại vi phục vụ cho quá trình nhận (vào) dữ liệu như: chuột, bàn

phím, micro … Một số thiết bị ngoại vi phục vụ cho quá trình truyền (ra) dữ liệu

như: màn hình, máy in, loa, … Khoảng cách di chuyển dữ liệu có thể rất xa (như

giao tiếp với máy chủ thông qua mạng internet) hoặc cũng có thể rất gần (như giao

tiếp với USB, bàn phím, chuột, …).

21

+ Xử lý dữ liệu: đây là chức năng cơ bản qua các thế hệ máy tính từ trước tới

nay. Có thế nói đây là chức năng trung gian giữa nhập dữ liệu và xuất hoặc lưu trữ

dữ liệu, tức là sau khi nhận dữ liệu, máy tính phải có bước xử lý dữ liệu để có các

dạng dữ liệu phù hợp trước khi xuất ra các thiết bị ngoại vi hoặc lưu trữ vào bộ nhớ.

Một số thành phần bên trong giúp máy tính thực hiện chức năng này, trong đó, đơn

vị xử lý trung tâm (còn được gọi là CPU) là thành phần chính. Các thành phần này

hầu hết đều ở mức thấp, tức là mức mà người sử dụng máy tính không giao tiếp trực

tiếp.

+ Lưu trữ dữ liệu: chức năng này giúp máy tính ghi nhớ những công việc đã

làm. Có hai dạng lưu trữ dữ liệu: lưu trữ dài lâu (như việc lưu trữ các tập tin trong

máy tính) và lưu trữ dữ liệu tạm thời (các dữ liệu này thường được tạo ra trong quá

trình hoạt động, chạy các ứng dụng của máy tính). Các thiết bị lưu trữ dữ liệu dài

lâu như: ổ đĩa cứng, USB, thẻ nhớ, … Các thiết bị lưu trữ tạm thời như: ổ đĩa cứng.

RAM, bộ nhớ cache, …

+ Điều khiển: chức năng này dùng để điều khiển ba chức năng trên hoạt

động một cách nhịp nhàng, đúng theo mong muốn của người sử dụng. Thành phần

chính giúp máy tính thực hiện chức năng này cũng là bộ xử lý trung tâm.

2.3. Cấu trúc và tổ chức máy tính

Dựa trên chức năng cơ bản, tổ chức của một máy tính hiện đại cơ bản bao

gồm các thành phần như hình 2.1

Hình 2.1. Tổ chức cơ bản của một máy tính hiện đại

Tổ chức cơ bản của một máy tính hiện đại gần giống với máy phân tích,

được xây dựng ở thế kỷ 19. Tổ chức này bao gồm ba thành phần cơ bản: đơn vị xử

lý trung tâm, bộ nhớ và các ngoại vi xuất/nhập. Các thành phần này được kết nối

22

với nhau thông qua các bus. Đơn vị xử lý trung tâm đọc lệnh từ bộ nhớ, lấy dữ liệu

từ bộ nhớ hoặc các thiết bị nhập. Kết quả sau khi thực thi sẽ được xuất ra thông qua

các thiết bị xuất hoặc lưu trở lại vào bộ nhớ.

Cấu trúc máy tính là mô hình hiện thực của tổ chức máy tính, bao gồm các

thành phần, thiết bị kết nối, giao tiếp với nhau để cho cả hệ thống hoạt động một

cách nhịp nhàng. Cách thức kết nối và giao tiếp cũng khác nhau tùy theo thiết bị.

Cấu trúc máy tính thay đổi qua các thế hệ theo chiều hướng ngày càng phức tạp với

sự xuất hiện của ngày càng nhiều ngoại vi hỗ trợ đắc lực cho người sử dụng. Ví dụ,

bộ nhớ di động trước kia là đĩa mềm với dung lượng thấp, chỉ khoảng 1,44MB, tốc

độ đọc/ghi chậm và dễ hư hỏng, ngày nay được thay thế bằng các USB hoặc thẻ nhớ

nhỏ gọn, dung lượng lên tới hàng chục GB, tốc độ đoc/ghi dữ liệu rất nhanh và rất

bền. Do đó, các ổ đĩa mềm chiếm diện tích lớn trên thân máy cũng dần được thay

thế bằng các cổng USB nhỏ gọn. Ngoài ra, cổng USB còn thay thế một số các cổng

khác như: cổng COM, cổng máy in (LPT), theo xu hướng này các thiết bị sử dụng

cổng COM hay LPT cũng dần được thay đổi và chuyển sang sử dụng cổng USB.

Nhìn chung, xu hướng cải tiến của các thiết bị là tốc độ ngày càng cao, kích thước

ngày càng nhỏ, tiện lợi cho người sử dụng và dễ dàng kết nối với nhiều thiết bị bên

ngoài..

2.4. Phân loại

Có rất nhiều cách phân loại máy tính, nội dung bài giảng này chỉ đề cập đến

hai cách phân loại phổ biến nhất hiện nay, đó là phân loại theo cấu trúc tập lệnh của

bộ xử lý máy tính và phân loại theo khả năng xử lý của máy tính.

2.4.1. Phân loại theo cấu trúc tập lệnh

Cách phân loại này chủ yếu dựa trên bộ vi xử lý trung tâm của máy tính. Như

ta đã biết, nguyên lý hoạt động của một vi xử lý là đọc và thực thi lần lượt các lệnh

của một chương trình được lưu trong bộ nhớ, còn gọi là mã máy. Mã máy do người

lập trình xác định. Đối với các máy tính thế hệ đầu tiên, khi chưa có trình biên dịch,

việc lập trình mã máy được thực hiện bằng cách xác định các số nhị phân dùng để

biểu diễn cho một lệnh. Dó đó, để việc lập trình được ngắn gọn và đơn giản, các nhà

phát triển thường có xu hướng tích hợp nhiều chức năng vào một lệnh (tức là một

23

lệnh thực hiện được nhiều chức năng), tương ứng phần cứng cũng phải được phát

triển để thực thi lệnh này, vì thế mọi phức tạp đều tập trung vào việc thiết kế phần

cứng. Do cấu trúc của bộ vi xử lý là cố định, để bao quát tất cả các trường hợp có

thể có, các máy tính này thường có rất nhiều lệnh và chiều dài (tính bằng bit) của

mỗi lệnh cũng khác nhau tùy vào độ phức tạp của từng lệnh. Các máy này được gọi

là máy CISC, hay còn được gọi là máy có tập lệnh phức tạp. Bảng 2.1 mô tả đặc

tính của một vài máy CISC.

Bảng 2.1. Đặc tính của một vài máy CISC

Bộ xử lý IBM 370/168 DEC 11/780 iAPX 432

Năm sản xuất 1973 1978 1982

Số lệnh 208 303 222

Chiều dài lệnh (bit) 16-48 16-456 6-321

Từ các đặc tính trên, ta thấy máy CISC có một số khuyết điểm như: tập lệnh

quá dài, không linh hoạt, phải tốn nhiều thời gian để giải mã các lệnh phức tạp làm

chậm tốc độ xử lý. Do đó, những năm đầu thập niên 1980, ý tưởng về việc cải tiến

hiệu suất của bộ vi xử lý bằng cách thay đổi tập lệnh bắt đầu ra đời. Các thay đổi

này tập trung chủ yếu vào việc giảm bớt số lệnh, làm cho chiều dài các lệnh bằng

nhau. Ý tưởng này cũng tương tự như việc thực hiện nhiều phép cộng để có được

phép nhân, do đó chỉ cần lệnh cộng thay vì vừa có cả lệnh cộng và lệnh nhân. Các

máy này còn được gọi là máy RISC, hay còn được gọi là máy có tập lệnh rút gọn.

Các lệnh của máy RISC có chiều dài cố định, dạng đơn giản, dễ giải mã. Một lệnh

của máy RISC được chia thành nhiều khâu như: gọi lệnh, giải mã lệnh, thực thi

lệnh, trả về kết quả. Với sự ra đời của kỹ thuật đường ống, các khâu này được thực

hiện song song, và trên lý thuyết một lệnh của máy RISC thực thi chỉ tốn một chu

kỳ máy. Bảng 2.2 mô tả đặc tính của vài máy RISC.

Từ Bảng 2.2 ta thấy, số lệnh của các vi xử lý RISC đã giảm đáng kể so với

CISC nhưng vẫn đảm bảo được chức năng của một vi xử lý. Để đảm bảo được điều

này, một lệnh của máy CISC sẽ tương đương với một nhóm lệnh của máy RISC và

thực hiện cùng chức năng. Lúc này độ phức tạp của chương trình phụ thuộc khá

nhiều vào việc lập trình phần mềm. Tuy nhiên, với sự phát triển của công nghệ phần

24

mềm, các trình biên dịch ra đời làm cho việc viết chương trình trở nên trực quan và

ngày càng đơn giản hơn so với việc xác định mã máy thông qua các số nhị phân.

Đây cũng là một yếu tố góp phần thúc đẩy sự phát triển và làm cho máy RISC phổ

biến như hiện nay. Tuy nhiên, việc sử dụng CISC hay RISC còn phụ thuộc vào các

công ty công nghệ. Họ vi xử lý Intel x86 sử dụng kiến trúc CISC trong khi các dòng

vi xử lý ARM, PowerPC của IBM, MIPS, SuperH sử dụng kiến trúc RISC

Bảng 2.2. Đặc tính của một vài máy RISC

Bộ xử lý IBM 801 RISC1 MIPS

Năm sản xuất 1980 1982 1983

Số lệnh 120 39 55

Chiều dài lệnh (bit) 32 32 32

2.4.2. Phân loại theo khả năng xử lý của máy tính

Theo cách phân loại này, máy tính được chia thành 4 loại dựa trên khả năng

xử lý và một số yếu tố khác như: kích thước vật lý, hiệu suất, các lĩnh vực ứng

dụng.

a. Siêu máy tính

Siêu máy tính là một máy tính vượt trội trong khả năng và tốc độ xử lý.

Thuật ngữ siêu tính toán được sử dụng lần đầu tiên vào năm 1920 để nói đến những

bản tính lớn của IBM làm cho trường đại học Columbia. Tốc độ của các siêu máy

tính được đo bằng khả năng thực hiện các phép tính có dấu chấm động trong một

giây, còn được gọi là flop. Các siêu máy tính hiện nay có tốc độ xử lý hàng trăm

teraflop (một teraflop tương ứng với một nghìn tỷ phép tính trong một giây). Các

siêu máy tính được sử dụng trong một số ứng dụng cần có khối lượng tính toán lớn,

phức tạp như dự báo thời tiết, …

b. Máy tính lớn (Mainframe)

Đây là loại máy tính có kích thước lớn được sử dụng chủ yếu bởi các công ty

lớn như các ngân hàng, các công ty bảo hiểm, … để chạy các ứng dụng lớn, cần xử

lý khối lượng lớn dữ liệu như kết quả điều tra dân số, thống kê khách hàng và doanh

nghiệp, … Hiện nay, IBM chiếm 99% thị trường máy tính lớn, bình thường thời

gian hoạt động của máy tính lớn là 24/24 giờ tất cả các ngày trong năm.

25

c. Siêu máy tính cỡ nhỏ

Loại máy tính này ra đời nhằm đáp ứng nhu cầu của một số hệ thống lớn

nhưng không phức tạp đến mức phải sử dụng các mainframe. Các máy tính loại này

giúp giảm giá thành hệ thống, thường được sử dụng làm máy chủ trên mạng.

d. Máy tính cá nhân

Đây là loại máy tính có cấu hình và tốc độ xử lý thấp nhất so với các loại

máy tính trên nhưng được sử dụng phổ biến nhất. Máy tính cá nhân ngày nay đã

tương đối nhỏ gọn, một số máy thậm chí có thể mang theo như laptop, máy tính

bảng và đặc biệt là giá rẻ phù hợp với nhu cầu cá nhân.

2.5. Máy tính Von Neumann

Năm 1945, John Von Neumann, nhà toán học người Hungary, đã đề xuất ý

tưởng về cấu trúc cơ bản mà một máy tính cần có. Theo ý tưởng này, máy tính hoạt

động theo một chương trình được lưu trong bộ nhớ. Máy tính giao tiếp với thế giới

bên ngoài thông qua các bộ điều khiển xuất/nhập dữ liệu. Khái niệm máy tính có

chương trình được lưu trữ ra đời và tồn tại cho tới ngày nay. Do đó, khi nói đến các

máy tính có chương trình được lưu trữ là nói đến máy tính có kiến trúc Von

Neumann. Ngày nay, kiến trúc Von Neumann đã có nhiều cải tiến, nhưng về cơ bản

vẫn phải có những thành phần sau:

- Đơn vị xử lý trung tâm, còn được gọi là CPU: có chức năng đọc và thực thi

chương trình được lưu trữ trong bộ nhớ. Các lệnh trong chương trình được đọc và

thực thi một cách tuần tự, tại một thời điểm chỉ có một lệnh được thực thi.

- Bộ nhớ: là nơi lưu trữ chương trình thực thi của đơn vị xử lý trung tâm và

các dữ liệu cần thiết

- Các bộ điều khiển xuất/nhập dữ liệu, còn gọi là các ngoại vi của máy tính,

có chức năng giúp đơn vị xử lý trung tâm giao tiếp với thế giới bên ngoài

- Các thành phần trên kết nối với nhau thông qua các đường dây dẫn gọi là

bus như hình 2.2.

26

Hình 2.2. Mô hình kiến trúc Von Neumann

Từ mô hình trên ta thấy, lệnh trong chương trình thực thi và dữ liệu chia sẻ

chung một bus, do đó, trong lúc CPU đọc lệnh thì không thể đọc/ghi dữ liệu và

ngược lại trong lúc đọc/ghi dữ liệu thì không thể đọc lệnh để thực thi. Điều này làm

hạn chế tốc độ xử lý của CPU, đây chính là nhược điểm của kiến trúc Von

Neumann, còn gọi là tình trạng thắt cổ chai Von Neumann. Để khắc phục tình trạng

này người ta đã thiết kế thêm bộ nhớ cache bên trong vi xử lý. Do đó, ngày nay kiến

trúc Von Neumann vẫn là kiến trúc phổ biến trong các máy tính.

CÂU HỎI ÔN TẬP CHƢƠNG 2

1. Vẽ mô hình và nêu chức năng cơ bản của các thành phần trong máy tính Von

Neumann. Nhược điểm của kiến trúc Von Neumann là gì?

2. Máy CISC là gì? Máy RISC là gì? Nêu những điểm khác nhau giữa hai loại máy

này.

3. Trình bày các chức năng cơ bản của một máy tính.

4. Trình bày cấu trúc của một máy tính hiện đại.

5. Trình bày những đặc trưng cơ bản của các thế hệ máy tính từ trước đến nay.

27

Chƣơng 3. CẤU TRÚC TỔNG QUÁT

Máy tính bao gồm rất nhiều thành phần như: thùng máy, nguồn, bản mạch

chính, ổ đĩa cứng, bàn phím, chuột, … Trong đó, một số thành phần bắt buộc phải

có và một số không bắt buộc, đóng vai trò hỗ trợ chức năng cho máy tính. Mỗi

thành phần đều có những thông số kỹ thuật riêng. Do đó, để có thể lắp ráp được một

chiếc máy tính cá nhân hoàn chỉnh, có tính tương thích cao, hoạt động tốt, ta cần

phải lựa chọn các thành phần thích hợp. Sau đây, ta sẽ lần lượt tìm hiểu về từng

thành phần cấu tạo nên một chiếc máy tính cá nhân.

3.1. Thùng máy – nguồn

a. Thùng máy

Thùng máy tính (còn được gọi là case) là một bộ phận bên ngoài, có tác

dụng bao bọc các thành phần bên trong của máy, giữ chúng luôn sạch sẽ, thoáng

mát và tránh được các tác nhân, tác động không mong muốn từ bên ngoài. Tại Việt

Nam, thùng máy có nhiều chủng loại, mẫu mã đến từ các thương hiệu uy tín như:

CoolerMaster, Corsair, Patriot, Deluxe, … Chúng khá đa dạng về kiểu dáng, kích

thước, màu sắc, chất liệu cấu thành, một số còn hỗ trợ các tính năng cao cấp như:

quản lý dây cáp, khay tháo lắp nhanh ổ cứng, hỗ trợ tản nhiệt nước.

Hình 3.1. Một số kiểu thùng máy

Thùng máy có rất nhiều chuẩn kích thước: full tower, mid tower, case nằm,

… như hình 3.1. Việc lựa chọn thùng máy phải bảo đảm đủ không gian để chứa các

thành phần bên trong như: bản mạch chính, nguồn, cáp, tản nhiệt, các card rời như

card đồ họa, …

28

Để hệ thống vận hành một cách mát mẻ, ổn định, vấn đề tản nhiệt cũng rất

quan trọng. Hầu hết các thùng máy đều có chỗ để đặt quạt tản nhiệt, một số thùng

máy trang bị sẵn quạt tản nhiệt bên trong. Một số thùng máy cao cấp còn trang bị hệ

thống tản nhiệt nước, khi đó hệ thống tản nhiệt có nhiều ống, tương đối phức tạp.

Do đó, việc lắp ráp thùng máy phải hết sức cẩn thận, tỉ mỉ, tránh ảnh hưởng đến

hoạt động của các thành phần bên trong thùng máy. Trong quá trình sử dụng, nếu

nhiệt độ bên trong thùng máy nóng bất thường thì ta cần phải vệ sinh lại thùng máy,

đặc biệt là các lỗ thông gió, bố trí lại dây cáp, hay lắp thêm các quạt tản nhiệt để gia

tăng lưu lượng gió lưu thông trong thùng máy.

Thông thường, các khay để các ổ đĩa như ổ đĩa cứng, ổ đĩa quang, … đã

được làm sẵn trên thùng máy và có kích thước phù hợp với từng loại ổ đĩa. Chỉ có

một số thùng máy dòng mini tower hoặc nhỏ hơn , ta cần phải xem xét bố trí các

linh kiện, ổ đĩa cho thích hơp do không gian bên trong thùng máy này khá chật hẹp.

Một số thùng máy còn hỗ trợ các kiểu kết nối như: cổng USB, lỗ cắm headphone ở

phía trước hay bên hông thùng máy rất tiện lợi trong quá trình sử dụng.

b. Nguồn máy tính

Nguồn máy tính (còn gọi là PSU) là thành phần cấp nguồn cho toàn bộ hoạt

động của máy tính. Việc lựa chọn nguồn rất quan trọng, nếu việc lựa chọn nguồn

không tốt hoặc nguồn hoạt động không ổn định sẽ ảnh hưởng đến tuổi thọ của các

thành phần của máy tính. Hình 3.2 là hình ảnh thực tế của một bộ nguồn máy tính

(hình (a)) và các ngõ ra của bộ nguồn (hình (b)). Một số thông số ta cần phải chú ý

khi lựa chọn nguồn máy tính.

- Công suất danh định: là công suất lớn nhất mà nguồn có thể cung cấp, quá

giá trị này bộ nguồn có thể bị cháy hoặc hệ thống hoạt động không ổn định. Giá trị

này thường được nhà sản xuất in trên bộ nguồn. Ta cần phải dự tính các thành phần

có trong hệ thống để có thể chọn được bộ nguồn thích hợp, không gây quá tải công

suất. Do các nhà sản xuất thường làm bộ nguồn có một vài mức công suất cụ thể,

nên việc lựa chọn nguồn một phần cũng dựa nhiều vào kinh nghiệm. Ví dụ, thông

thường, bộ nguồn có công suất từ 500 đến 600W là đủ cho hệ thống Intel Core-i

mới, có sử dụng card đồ họa.

29

- Hiệu suất: thể hiện mức độ sử dụng điện năng hiệu quả của bộ nguồn, có

giá trị nhỏ hơn 1. Trong quá trình hoạt động, một lượng điện năng thất thoát ra

ngoài dưới dạng nhiệt, do đó, công suất tiêu thụ thực tế thường lớn hơn công suất

trên lý thuyết, công suất này được tính qua hiệu suất của bộ nguồn. Ví dụ, một hệ

thống tiêu thụ công suất 400W, bộ nguồn có hiệu suất 80% thì công suất tiêu thụ

thực tế khi hoạt động là 400/0,8 = 500W. Ta nên chọn bộ nguồn có hiệu suất càng

lớn càng tốt.

(b) (a)

Hình 3.2. Bộ nguồn máy tính

- Điện thế và dòng điện ra: thường được các nhà sản xuất in trên bộ nguồn.

Điện thế ra đã được chuẩn hóa, bao gồm các mức: +12V, +5V, +3,3V, -5V và -12V.

Với mỗi mức điện thế ra, các dòng điện ra sẽ khác nhau tùy vào nhà sản xuất.

Thông thường, ta chỉ chú ý đến việc lựa chọn bộ nguồn có dòng ra thích hợp khi

trong hệ thống có thành phần cần dòng lớn như card đồ họa.

Hầu hết các nhà cung cấp đều trang bị cho bộ nguồn các tính năng bảo vệ

như: bảo vệ quá công suất, bảo vệ quá dòng, bảo vệ ngắn mạch. Các bộ nguồn

thường ngưng hoạt động khi xảy ra các sự cố trên.

Một số thương hiệu nguồn nổi tiếng ở Việt Nam: Arrow, ACbel, Cooler

Master, Cosair, Fsp, …

3.2. Mainboard

30

Mainboard (còn được gọi là bản mạch chính) là một bản mạch in chứa các

linh kiện điện tử điều khiển hoạt động của máy tính, các đế cắm (socket) và các khe

cắm (slot) để kết nối các thành phần mở rộng hỗ trợ cho máy tính như hình 3.3.

Hình 3.3. Mainboard máy tính

Ngoài ra, từ hình 3.4 ta thấy mainboard còn chứa các cổng ngõ ra để kết nối

với các thiết bị ngoại vi như: USB (kết nối với các thiết bị lưu trữ, chuột, bàn phím,

máy in, …), VGA (còn gọi là D-Sub, kết nối với màn hình, máy chiếu), PS/2 (kết

nối với chuột, bàn phím), HDMI, DVI (kết nối với màn hình, tivi, máy chiếu),

ethernet (kết nối mạng), các lỗ cắm micro và loa, … Các mainboard đời cũ còn có

thêm các cổng như: COM, máy in (LPT). Sau đây, ta sẽ tìm hiểu một số thông số kỹ

thuật của mainboard.

Hình 3.4. Các cổng ra trên mainboard

31

- Chipset: là bộ phận quyết định đến công nghệ và các chức năng của

mainboard, nó xử lý giao tiếp giữa các thành phần có trên mainboard và các thiết bị

ngoại vi. Hiện nay, hai thương hiệu cung cấp chipset nổi tiếng là Intel và AMD. Các

chipset đi kèm với mainboard nên các nhà sản xuất thường lấy mã số chipset để đặt

tên cho chủng loại mainboard. Ví dụ, mainboard Asus H81M-A sử dụng chipset

Intel H81, mainboard Gigabyte F2A68HM-HD2 sử dụng chipset AMD A68H.

- CPU: thông số này cho biết mainboard hỗ trợ loại CPU (đơn vị xử lý trung

tâm) nào. Các thương hiệu cung cấp chipset là Intel và AMD, cũng đồng thời cung

cấp các loại CPU. Chipset của thương hiệu nào sẽ hỗ trợ cho CPU của thương hiệu

đó. Một thông số khác cũng cần phải chú ý thường đi kèm với CPU, đó là socket.

Thông số này cho biết chuẩn chân cắm của CPU mà mainboard hỗ trợ. Ví dụ,

mainboard Asus H81M-A có các thông số: sk LGA 1150, S/p Intel 4th, có nghĩa là,

mainboard này hỗ trợ các CPU Intel thế hệ thứ 4 và có chuẩn chân cắm là Socket

LGA 1150

- RAM: cho biết loại RAM, tốc độ bus và số lượng khe cắm RAM mà

mainboard đó hỗ trợ. Ví dụ, mainboard Asus H81M-A có thông số như sau: 2x

DDR3 1600/1333/1066, có nghĩa là trên mainboard có 2 khe cắm RAM loại DDR3,

hỗ trợ các tốc độ bus là 1600/1333/1066MHz.

- VGA onboard: thông số này cho biết, mainboard có tích hợp sẵn card đồ

họa. Các mainboard cũ trước đây thường có bộ xử lý đồ họa riêng, đi kèm với

mainboard giống như chipset. Hiện nay, hầu hết các thành phần xử lý đồ họa đã

được tích hợp trong CPU. Các mainboard tích hợp card đồ họa thường có các thông

tin về các loại cổng xuất tín hiệu video trên mainboard. Ví dụ, mainboard có thông

số như sau: VGA onboard S/p D-Sub/DVI/HDMI, có nghĩa là mainboard có hỗ trợ

các ngõ ra video D-Sub, DVI và HDMI.

- PCI Express: thông số này cho biết số lượng và tốc độ khe cắm PCI có trên

mainboard. Ví dụ, 1x PCI-E 2.0 (x16), 2x PCI-E 2.0 (x1), 1x PCI, có nghĩa là trên

mainboard có 1 khe cắm PCI Express, tốc độ x16, 2 khe cắm PCI Express, tốc độ

x1 và 1 khe cắm PCI. Các thông số x16, x1 cho biết tốc độ của cổng PCI thế hệ mới

(PCI Express), số càng lớn cho tốc độ càng cao.

32

- USB: cho biết số lượng và loại cổng USB trên mainboard. Ví dụ,

mainboard có thông số như sau: 2x USB 3.0, 8x USB 2.0, có nghĩa là trên

mainboard có 2 cổng USB loại 3.0 (thế hệ mới) và 8 cổng USB loại 2.0.

- ATA, SATA: cho biết số lượng và loại chân cắm cho ổ đĩa cứng và ổ đĩa

quang. ATA là chuẩn cũ có 40 chân. SATA là chuẩn mới sử dụng dây cắm nhỏ gọn

và tốc độ cao hơn. Ngoài ra, một số mainboard còn sử dụng thêm công nghệ RAID,

cho phép sử dụng nhiều ổ đĩa cứng để tăng dung lượng lưu trữ và an toàn dữ liệu.

Ví dụ, mainboard có thông số như sau: 6x SATA3 (RAID 0, 1, 5, 10), nghĩa là trên

mainboard có 6 chân cắm SATA3 (tốc độ 6Gb/s) và có hỗ trợ chức năng RAID.

- Một số thông số khác: card mạng tích hợp sẵn trên mainboard thường được

biểu diễn bằng thông số: Gigabit LAN hoặc 1Gb/s. Card âm thanh được tích hợp

trên mainboard với các thông số như: 2CH (2 kênh, sử dụng loa stereo), 6CH (6

kênh, sử dụng loa 5.1), 8CH (8 kênh, sử dụng loa 7.1), … Một số mainboard đời cũ

có thêm các cổng COM, LPT (máy in) cũng được thể hiện trong thông số kỹ thuật.

Trên đây là một số thông số cơ bản của mainboard, ta cần phải chú ý tới các

thông số này để có thể lựa chọn mainboard thích hợp với mục đích sử dụng và các

linh kiện phù hợp với mainboard

3.3. CPU

CPU hay còn gọi là đơn vị xử lý trung tâm, được xem là bộ não của hệ thống

máy tính. Ở Việt Nam hiện nay, có hai thương hiệu cung cấp CPU nổi tiếng là Intel

và AMD. Hình 3.5 là Intel Core i7, một trong những CPU thuộc dòng Core i của

Intel.

Hình 3.5. CPU Intel core i7

33

Trước khi công nghệ CPU đa (nhiều) nhân xuất hiện, kỹ thuật chính để tăng

sức mạnh xử lý cho máy tính là bổ sung thêm các CPU. Điều này đỏi hỏi mainboard

phải có nhiều đế cắm CPU hơn, phải có thêm nhiều phần cứng để kết nối CPU với

RAM và nhiều tài nguyên khác. Một hệ thống như vậy được gọi là hệ thống đa

CPU, thường được sử dụng trong các siêu máy tính, máy chủ và các hệ thống cao

cấp. Tuy nhiên, khi đó hệ thống sẽ phức tạp, tiêu tốn nhiều điện năng hơn và đây

không phải là xu hương của công nghệ.

Các CPU thế hệ mới của hai thương hiệu kể trên đều có từ 2 nhân trở lên.

Mỗi nhân là một CPU riêng biệt. Ngày nay, khi công nghệ chế tạo ngày càng phát

triển, kích thước của một transistor ngày càng nhỏ làm cho mật độ tích hợp ngày

càng cao. Người ta đã có thể chế tạo được nhiều CPU kết nối với nhau và đặt trên

cùng một chip (vi mạch đã được đóng gói như hình 3.5). Khi đó chip này được gọi

là một CPU có chứa các CPU nhỏ hơn ở bên trong, được gọi là các nhân hay còn

được gọi là core. Ví dụ, CPU Intel Core i5-2520M có 2 core, nghĩa là CPU này

thuộc thế hệ thứ hai và có 2 nhân, CPU Intel Core i5-4460 có 4 core, nghĩa là CPU

này thuộc thế hệ thứ tư và có 4 nhân. Việc sử dụng công nghệ tiên tiến, tích hợp

nhiều nhân trên cùng một CPU cho phép máy tính có thể thực hiện nhiều công việc

cùng một lúc, nâng cao tốc độ xử lý của máy tính, hạn chế việc bổ sung phần cứng

trên mainboard mà vẫn tiết kiệm điện năng hơn công nghệ cũ.

Các nhân trong CPU như được đề cập trong phần trên là các nhân vật lý.

Trong một số CPU của Intel, mỗi nhân vật lý có thể được chia thành hai nhân nhỏ

hơn, có khả năng xử lý song song, được gọi là các nhân luận lý. Công nghệ chế tạo

này được gọi là siêu phân luồng của Intel. Chỉ có các hệ điều hành hỗ trợ công nghệ

siêu phân luồng mới nhận biết và sử dụng được các nhân luận lý. Đối với hệ điều

hành Window, tất cả các hệ điều hành từ XP trở về sau này đều có hỗ trợ công nghệ

siêu phân luồng. Công nghệ siêu phân luồng Intel giúp hệ điều hành sử dụng tài

nguyên của bộ xử lý hiệu quả hơn, cho phép nhiều luồng xử lý chạy đồng thời trên

mỗi nhân. Trong các bảng thông số kỹ thuật của một CPU, số nhân vật lý được gọi

là core, đối với các CPU của Intel, số nhân luận lý được gọi là thread. Những CPU

có hỗ trợ siêu phân luồng sẽ có số thread gấp đôi số core. Ví dụ, CPU Intel Core i5-

34

4460 không hỗ trợ siêu phân luồng, có 4 core và 4 thread, CPU Intel Core i7-4790

hỗ trợ siêu phân luồng, có 4 core và 8 thread. Một số hệ điều hành có cung cấp các

thông tin này khá rõ, như hệ điều hành Window 8.1 trong hình 3.6.

Hình 3.6. Thông tin về CPU trong hệ điều hành Window 8.1

Một số yếu tố khác ảnh hưởng đến tốc độ xử lý của CPU

- Xung nhịp (xung clock) hoạt động của CPU: tần số xung nhịp càng lớn thì

tốc độ xử lý càng nhanh. Trong bảng thông số kỹ thuật, xung nhịp của CPU là tần

số xung nhịp của từng nhân bên trong CPU. Ví dụ, CPU Intel Core i5-2520M,

2,5GHz, có 2 nhân, nghĩa là ở chế độ bình thường, mỗi nhân hoạt động với tần số

xung nhịp 2,5GHz.

- Bộ nhớ cache: được tích hợp cùng với các nhân bên trong CPU. Cache là

nơi lưu trữ các lệnh và dữ liệu đã từng được thực thi. Cache là các bộ nhớ RAM

tĩnh (SRAM), có tốc độ cao hơn rất nhiều so với bộ nhớ RAM động (DRAM). Do

đó, việc truy cập bộ nhớ cache nhanh hơn rất nhiều so với truy cập bộ nhớ DRAM.

Tuy nhiên, bộ nhớ cache rất đắt và chiếm diện tích lớn nên dung lượng của cache

cũng thường bị hạn chế. Hiện nay, các CPU thường được trang bị nhiều tầng cache,

35

gọi là L1 cache, L2 cache, L3 cache … Tầng cache L1 thường được chia thành

cache chứa lệnh và cache chứa dữ liệu riêng biệt, các tầng cache sau là tầng dùng

chung để chứa cả lệnh và dữ liệu. Tầng cache sau cùng thường có dung lượng lớn

nhất. CPU có dung lượng cache càng lớn thì tốc độ gọi và thực thi lệnh càng cao.

Thông tin về bộ nhớ cache cũng được thể hiện khá rõ trong một số hệ điều hành

như Window 8.1 như trong hình 3.6.

Ngoài ra, bên trong hầu hết các CPU đều được tích hợp bộ xử lý đồ họa

(Intel HD Graphic hoặc AMD Radeon HD), do đó, các máy tính sử dụng các loại

CPU này không cần phải lắp ráp thêm card đồ họa.

Các thế hệ CPU khác nhau sẽ có kiểu chân (socket) khác nhau. Ví dụ, CPU

Intel thế hệ thứ 3 có kiểu chân 1155, thế hệ thứ 4 có kiểu chân 1150, thế hệ thứ 6 có

kiểu chân 1151, CPU AMD dòng A (A-series) có kiểu chân FM2, Phenom II và

Athlon II có kiểu chân AM3. Do đó, ta cần phải lựa chọn mainboard có kiểu socket

phù hợp với CPU đã chọn.

3.4. RAM

RAM còn được gọi là bộ nhớ truy cập ngẫu nhiên, được điều khiển bằng

mạch điều khiển bộ nhớ được đặt trên chipset (đối với các mainboard hỗ trợ CPU

của Intel) hoặc trên CPU (đối với các mainboard hỗ trợ CPU của AMD). Một đặc

điểm của bộ nhớ này là: dữ liệu trong bộ nhớ sẽ bị xóa khi không được cung cấp

điện. Do đó, RAM còn được gọi là bộ nhớ tạm. Đây là một trong những thành phần

cơ bản và cần thiết nhất bên cạnh CPU và mainboard để có thể khởi động được một

chiếc máy tính. Chương trình thường được lưu trên ổ đĩa cứng. Khi một máy tính

muốn thực thi một chương trình, trước tiên chương trình này sẽ được chép vào bộ

nhớ RAM (có tốc độ cao hơn ổ đĩa cứng), sau đó CPU sẽ đọc và thực thi chương

trình từ bộ nhớ RAM. Vì vậy, dung lượng và tốc độ của RAM có ảnh hưởng rất lớn

đến tốc độ hoạt động của hệ thống. Mainboard thường có các khe cắm RAM để

trống như hình 3.7, ta phải lựa chọn loại RAM thích hợp để cắm vào các khe này.

Hiện nay, RAM máy tính để bàn có ba loại, đó là: DDR2, DDR3 và loại mới

nhất là DDR4, tên gọi đầy đủ là: DDR2 SDRAM, DDR3 SDRAM và DDR4

SDRAM. Loại sau là nâng cấp của loại trước, nên thường có dung lượng lớn hơn,

36

tốc độ cao hơn và công nghệ tiên tiến hơn. Như trong hình 3.8, ta thấy hình dạng

các loại RAM này không tương thích với nhau. Do đó, ta không thể lấy loại RAM

này cắm vào khe cắm của loại RAM khác. Thông thường, một mainboard chỉ có

một loại khe cắm RAM, chỉ có một số ít mainboard hỗ trợ hai loại khe cắm như

hình 3.7.

b) DDR3 và DDR4

Hình 3.7. Các khe cắm RAM trên mainboard

a) DDR2 và DDR3

Hình 3.8. Sự khác biệt giữa các loại RAM

RAM hoạt động dựa trên xung nhịp được cung cấp từ mạch điều khiển. Tần

số của xung nhịp này được quy ước là các giá trị cố định tính bằng MHz như: 800

(DDR2), 1333, 1600, 1866 (DDR3), 2400 (DDR3, DDR4), 2133, 2800, 3000

(DDR4), … Các thông số này thường đi kèm với tên RAM như: DDR3 1333 hoặc

DDR3 bus 1333. Tuy nhiên, do đặc tính của các loại RAM dạng DDR, có khả năng

truyền hai dữ liệu trong cùng một chu kỳ nên tốc độ dữ liệu trên lý thuyết của RAM

DDR là: 2 x tốc độ xung nhịp x số bit truyền của mỗi dữ liệu / 8, đơn vị tính là

MB/s. Hầu hết các loại RAM hiện tại có đường bus dữ liệu 32 bit, do đó tốc độ của

37

RAM là: 2 x tốc độ xung nhịp x 32 / 8 = 8 x tốc độ xung nhịp. Ví dụ, đối với DDR3

bus 1600, tốc độ dữ liệu trên lý thuyết sẽ là: 8 x 1600 = 12800 (MB/s), được thể

hiện dưới dạng PC12800. Hai thông số này thường đi kèm với nhau trong đặc tính

kỹ thuật của RAM như DDR3 bus 1600 PC12800. Các mainboard hiện nay chỉ hỗ

trợ một hoặc hai loại RAM (đối với các mainboard đời cũ) và một số tốc độ bus

RAM nhất định, do đó ta cần phải chú ý tới các thông số này để lựa chọn loại RAM

và tốc độ bus phù hợp với mainboard nhằm tối ưu hóa tốc độ hoạt động của hệ

thống.

Công nghệ dual channel (kênh đôi) cho phép tăng gấp đôi độ rộng đường dữ

liệu của RAM, do đó tăng tốc độ truy xuất dữ liệu đến RAM, cải thiện tốc độ của hệ

thống. Chỉ những bộ nhớ RAM giống nhau và đi theo từng cặp mới sử dụng được

công nghệ này. Để có thể kích hoạt công nghệ dual channel, ta cần phải có một số

điều kiện như sau:

 Chipset và mainboard (đối với CPU của Intel) hoặc CPU (đối với CPU của

AMD) phải hỗ trợ công nghệ dual channel.

 Số thanh RAM cắm trên mainboard phải là số chẵn (2 hoặc 4 RAM)

 Các thanh RAM cắm trên mainboard phải hoàn toàn giống nhau (loại RAM,

tốc độ bus)

Hầu hết các mainboard hiện nay đều hỗ trợ công nghệ dual channel, các khe

cắm RAM dual channel trên các mainboard này thường có màu sắc giống nhau. Ví

dụ, mainboard trong hình 3.7 có các khe cắm cùng màu (đỏ, vàng, lục) hỗ trợ công

nghệ dual channel. Thông thường, hệ thống sẽ tự động kích hoạt dual channel khi

hai thanh RAM được cắm vào đúng vị trí (cùng màu). Do đó, để tối ưu tốc độ hệ

thống bằng cách sử dụng công nghệ dual channel ta nên lựa chọn dung lượng RAM

và số thanh RAM là một số chẵn. Ví dụ, thay vì chọn một thanh RAM DDR3 2GB

ta nên chọn hai thanh RAM DDR3 1GB giống nhau và cắm trên hai khe cắm cùng

màu của mainboard.

Dung lượng RAM cũng có nhiều mức: 256MB, 512MB (các RAM đời cũ),

1GB, 2GB hoặc 4GB. Với kỹ thuật thiết kế ngày càng cao, công nghệ chế tạo ngày

càng tiên tiến, hiện nay dung lượng các loại RAM đời mới có thể đạt đến 8GB

38

(DDR3, DDR4) và 16GB (DDR4). Tuy nhiên, mỗi phiên bản hệ điều hành khác

nhau sẽ có mức giới hạn dung lượng RAM tối đa khác nhau. Bảng 3.1 là một ví dụ

đối với hệ điều hành Window 7. Theo đó, các hệ điều hành Window 7 nền tảng 32

bit (trừ Starter) có giới hạn dung lượng RAM đến 4GB, có nghĩa là dù hệ thống có

nhiều hơn 4GB RAM thì các hệ điều hành loại này cũng chỉ sử dụng được tối đa

4GB RAM. Muốn sử dụng được nhiều dung lượng RAM hơn ta phải cài các phiên

bản hệ điều hành 64 bit. Do đó, ta cần chú ý tới đặc điểm này để chọn RAM và hệ

điều hành phù hợp, tránh tình trạng lãng phí dung lượng RAM.

Bảng 3.1. Giới hạn dung lƣợng RAM của các phiên bản hệ điều hành Win 7

Phiên bản Window 7

Giới hạn trên 32 bit 4 GB 4 GB 4 GB 4 GB 4 GB 2 GB Giới hạn trên 64 bit 192 GB 192 GB 192 GB 16 GB 8 GB Không có phiên bản này

Window 7 Ultimate Window 7 Enterprise Window 7 Professional Window 7 Home Premium Window 7 Home Basic Window 7 Starter 3.5. BIOS VÀ CMOS RAM

BIOS là chương trình quản lý các thao tác khởi động máy tính và chứa các

thông tin về thành phần cơ bản của mainboard . Tất cả các mainboard đều có một bộ

nhớ ROM để chứa chương trình BIOS nên bộ nhớ này còn gọi là ROM BIOS. Một

số nhà sản xuất ROM BIOS lớn hiện nay là: Phoenix, AMI, Award, … Thông

thường, ta không thể thay đổi được nội dung của ROM BIOS do ROM là bộ nhớ chỉ

đọc, tuy nhiên, ngày nay, bộ nhớ ROM truyền thống đã được thay thế bằng bộ nhớ

flash, do đó, ta có thể nạp lại BIOS bằng các kit nạp và chương trình nạp thích hợp.

ROM BIOS có hai loại: loại được cắm trên socket của mainboard (hình 3.9 (a)) và

loại được hàn cứng trên mainboard (hình 3.9 (b)).

Mainboard chỉ chứa các thành phần cơ bản của máy tính, trong quá trình

hoạt động, mainboard có thể được kết nối với rất nhiều thiết bị với rất nhiều cấu

hình khác nhau, do đó không thể lưu cố định cấu hình của hệ thống trong ROM

BIOS. Để khắc phục vấn đề này, người ta sử dụng một bộ nhớ RAM có khả năng

đọc/ghi để chứa cấu hình của hệ thống, gọi là bộ nhớ NVRAM hay là CMOS RAM.

Người dùng có thể sử dụng chương trình BIOS SETUP chứa trong BIOS để thay

39

đổi một số thông tin trong CMOS RAM như: thứ tự đọc đĩa khởi động (boot), ngày

giờ hệ thống, bật/tắt các cổng xuất/nhập, mật khẩu đăng nhập vào hệ thống, … Do

dữ liệu trong CMOS RAM bị mất khi ngừng cấp điện, nên để duy trì dữ liệu trong

CMOS, người ta dùng một viên pin riêng, gọi là pin CMOS. Khi pin CMOS yếu,

ngày giờ hệ thống sẽ chạy sai hoặc ta nhận được thông báo chạy BIOS SETUP mỗi

khi khởi động máy.

(b) (a)

Hình 3.9. Các loại ROM BIOS

Khi khởi động máy tính, BIOS gọi chương trình kiểm tra phần cứng có trong

hệ thống, gọi là chương trình POST. Trong quá trình này, nếu phát hiện một số

thông số phần cứng không phù hợp với các thông tin được lưu trữ trong CMOS

RAM, POST sẽ yêu cầu chạy chương trình BIOS SETUP để khai báo lại cho đúng.

Ví dụ, khi ta gắn thêm RAM, ổ đĩa cứng hoặc ổ đĩa quang … một số hệ thống sẽ tự

động cập nhật, một số khác sẽ yêu cầu người dùng vào BIOS SETUP để cập nhật

các thông tin này.

Sau quá trình POST, BIOS sẽ quét qua tất cả các ổ đĩa có thể có trong hệ

thống để tìm ổ đĩa khởi động đầu tiên (thứ tự quét được định trong CMOS RAM và

có thể thay đổi được). Quá trình này gọi là BOOTSTRAP của BIOS. Sau quá trình

này, hệ thống khởi động vào hệ điều hành và BIOS nhường lại quyền kiểm soát hệ

thống cho hệ điều hành.

3.6. Interfaces

Interfaces còn được gọi là giao diện máy tính. Đây là các thành phần giúp

máy tính có thể giao tiếp với con người và thế giới bên ngoài, phổ biến nhất là các

cổng chuột, bàn phím, màn hình, máy chiếu, Ethernet, eSATA, USB, COM, lỗ cắm

loa, mic, …

40

 Cổng giao tiếp chuột và bàn phím: còn được gọi là cổng PS/2 (hình 3.10).

Cổng màu xanh lam thường để kết nối với bàn phím, màu xanh lục để kết nối với

chuột.

Hình 3.10. Các cổng PS/2 dùng cho chuột và bàn phím

 Cổng giao tiếp với màn hình và máy chiếu: được gọi là cổng VGA (còn gọi

là D-SUB). Một số chuẩn mới giao tiếp với màn hình như: HDMI, DVI (hình 3.11)

ngoài khả năng truyền tải hình ảnh còn có thể truyền cả âm thanh. Do đó, các chuẩn

này thường được sử dụng cho màn hình tivi.

(a) D-SUB (b) DVI (c) HDMI

Hình 3.11 Các cổng xuất tín hiệu video

 Cổng USB: hiện nay có hai chuẩn giao tiếp USB phổ biến với các tốc độ

truyền dữ liệu khác nhau. Chuẩn USB 2.0 ra đời năm 2001, có tốc độ truyền dữ liệu

tối đa 480Mbps và chuẩn USB 3.0 ra đời năm 2009 có tốc độ truyền dữ liệu tối đa

4,8Gbps. USB 3.0 có khả năng tương thích ngược với các thế hệ USB trước, do đó,

hình dạng bên ngoài của cổng USB 3.0 chuẩn A hoàn toàn giống chuẩn A của cổng

USB 2.0. Để phân biệt hai loại cổng USB này ta dựa vào màu sắc hoặc biểu tượng

đi kèm. Cổng USB 2.0 thường có hai màu đen hoặc trắng trong khi cổng USB 3.0

có nhiều màu sắc khác như xanh lam, xanh lục, … Biểu tượng của các chuẩn USB

này cũng có sự khác biệt như trong hình 3.12. USB là cổng đa chức năng, hình dạng

nhỏ, gọn nên ngoài chức năng kết nối với bộ nhớ USB flash, cổng USB còn được sử

41

dụng để kết nối với rất nhiều thiết bị như: chuột, bàn phím, máy in, điện thoại di

động, …

Hình 3.12. Biểu tƣợng của các chuẩn USB 2.0 và 3.0

 Cổng Ethernet: còn gọi là cổng RJ45 (hình 3.13), kết nối máy tính với mạng

máy tính bên ngoài.

Hình 3.13. Cổng Ethernet

 Cổng eSATA: là một biến thể của cổng SATA, dùng để giao tiếp với các ổ

đĩa cứng rời. Tốc độ truyền dữ liệu tối đa của eSATA là 3GBps. Tuy có tốc độ cao

nhưng cáp eSATA chỉ có chiều dài tối đa 2m và không thể cung cấp nguồn nên phải

sử dụng cáp cấp nguồn riêng. Để khắc phục nhược điểm này, hiện nay đã có cổng

eSATAp có thể cung cấp nguồn cho ổ đĩa. Để cho thuận tiên, các nhà sản xuất đã

kết hợp cổng eSATA và USB 2.0 thành một cổng duy nhất gọi là eSATA/USB

Combo (hình 3.14), có thể kết nối cả cáp eSATA và USB.

Hình 3.14. Cổng eSATA/USB Combo

42

 Các đường âm thanh vào/ra: dùng để kết nối máy tính với micro và loa. Hiện

nay, hầu hết các mainboard đều hỗ trợ chế độ âm thanh vòm 5.1 hoặc 7.1.

3.7. Chipset

Chipset như đã giới thiệu là một bộ xử lý trên mainboard, có chức năng như

một cầu nối giúp các thành phần trên mainboard (bao gồm cả CPU) có thể giao tiếp

với nhau. Cấu trúc của các chipset thường dựa trên nền tảng của đơn vị xử lý trung

tâm (CPU), do đó, hiện nay trên thế giới cũng chỉ có hai thương hiện cung cấp

chipset lớn, hỗ trợ CPU của họ, đó là: Intel và AMD. Trên các mainboard thế hệ cũ

thường có hai chipset, được gọi là chip cầu bắc (North Bridge) và chip cầu nam

(South Bridge). Chức năng của hai chip này được quy định rõ ràng. Chip cầu bắc

kết nối trực tiếp với CPU, dùng để quản lý việc giao tiếp của CPU với các thành

phần, ngoại vi có tốc độ cao như: RAM, card đồ họa, các cổng PCIe (PCI Express).

Card đồ họa rời nếu có cũng được kết nối thông qua cổng PCIe nên cũng thuộc

quản lý của chip cầu bắc. Chip cầu nam (còn gọi là ICH) quản lý các ngoại vi tốc độ

thấp hơn như: card âm thanh, card mạng, các ổ đĩa cứng (SATA, PATA), các cổng

USB, cổng nối tiếp (COM, PS/2), ROM BIOS, CMOS, các cổng PCI chuẩn (tốc độ

thấp hơn PCIe). Chip cầu nam kết nối với CPU thông qua chip cầu bắc. Hình 3.15

mô tả mối liên hệ giữa các chipset, ngoại vi và CPU. Để một hệ thống vận hành tốt,

mềm mại, các chipset và CPU phải hoạt động một cách đồng bộ, do đó, chipset

thường đi theo cặp và hỗ trợ một vài dòng CPU cụ thể. Ví dụ, hình 3.16 là cặp

chipset Intel G33 và ICH9 hỗ trợ các dòng CPU Intel Pentium 4, Pentium D, Dual

Core, Core 2 Duo, Core 2 Quad.

Các chipset trực tiếp quản lý các ngoại vi của một hệ thống máy tính, do đó,

các thành phần trên một mainboard phụ thuộc vào chipset sử dụng trên mainboard

đó. Ví dụ, chip cầu bắc Intel G33 có thể quản lý các bộ nhớ RAM DDR2 bus

667/800 và DDR3 bus 800/1600, dung lượng RAM tối đa 8GB, tích hợp card đồ

họa Intel hỗ trợ các ngõ ra VGA, HDMI, DVI, hỗ trợ một cổng PCIe x16, vì vậy,

các mainboard sử dụng chip G33 sẽ có các khe cắm RAM DDR2 hoặc DDR3

nhưng tổng dung lượng tối đa là 8GB, trên mainboard chỉ có tối đa một khe cắm

PCIe x16 và ngõ ra video có thể có các cổng VGA, HDMI và DVI. Có thể nói

43

chipset là thành phần quyết định công nghệ sử dụng trên mainboard, do đó các nhà

sản xuất thường lấy tên của chipset đặt tên cho mainboard sử dụng chipset đó.

Hình 3.15. Kết nối giữa các chipset, ngoại vi và CPU

Hình 3.16. Chipset G33 và ICH9

Hiện nay, với kỹ thuật thiết kế và công nghệ chế tạo ngày càng tiên tiến, Intel

và AMD đã tích hợp cả bộ điều khiển RAM, PCIe và card đồ họa vào CPU, nên

chip cầu bắc không còn cần thiết. Các mainboard sử dụng nền tảng chipset thế hệ

mới chỉ còn chip cầu nam.

3.8. Ổ đĩa cứng

44

Ổ đĩa cứng là thành phần rất quan trọng trong hệ thống máy tính, dùng để

lưu trữ tất cả dữ liệu cá nhân (bao gồm cả hệ điều hành). Hiện nay, có hai loại ổ đĩa

cứng, đó là ổ cứng truyền thống, còn gọi là HDD và thế hệ ổ cứng mới là ổ cứng thể

rắn, còn gọi là SSD.

Ổ cứng truyền thống HDD là thiết bị lưu trữ dữ liệu trên bề mặt các tấm đĩa

hình tròn làm bằng nhôm, thủy tinh hoặc gốm được phủ vật liệu từ tính, gọi là

platter. Hình 3.17 mô tả cấu tạo cơ bản của HDD. Các đĩa platter được xếp đồng

trục, trục xuyên tâm các đĩa gọi là spindle, được gắn trực tiếp với một động cơ quay

ổ đĩa cứng. Bề mặt cả mỗi đĩa được chia thành những đơn vị nhỏ dùng để xác định

vị trí của dữ liệu. Các đường tròn đồng tâm trên bề mặt đĩa gọi là track. Mỗi track

được chia thành những cung nhỏ hơn gọi là sector. Sector là đơn vị chứa dữ liệu

nhỏ nhất của HDD, thông thường mỗi sector có dung lượng 512 byte. Số sector trên

mỗi track không bằng nhau, các track ở phần rìa đĩa thường có số sector nhiều nhất,

các track ở phần gần tâm đĩa thường có số sector ít nhất. Cung tròn tập hợp nhiều

sector liền kề nhau gọi là cluster. Tập hợp các track có cùng bán kính ở các mặt đĩa

khác nhau gọi là cylinder.

(b) Các thành phần cơ bản của HDD (a) Hình dạng cơ bản của HDD

Hình 3.17. Ổ đĩa cứng HDD

Để đọc/ghi dữ liệu, ổ đĩa cứng có các đầu đọc tiếp xúc với các bề mặt đĩa

platter. Các đầu đọc được gắn trên cơ cấu truyền động để có thể di chuyển đến các

cylinder khác nhau. Cơ cấu truyền động này được điều khiển bằng một bộ vi mạch

nhỏ ở ngoài. Khi cần truy xuất dữ liệu, vi mạch này điều khiển đầu đọc đến đúng vị

45

trí trên các đĩa từ khi đĩa đang quay ở tốc độ cao, đồng thời giải mã các tín hiệu từ

tính thành dữ liệu mà máy tính có thể hiểu được.

Một số thống số của ổ đĩa cứng HDD:

 Chuẩn giao tiếp: hai chuẩn giao tiếp phổ biến nhất cho máy tính cá nhân là

ATA và SATA như hình 3.18. Chuẩn ATA bao gồm hai chuẩn IDE và EIDE,

SATA hiện tại gồm ba chuẩn: SATA (còn gọi là SATA 1), SATA 2 và SATA 3.

Ngoài ra ổ đĩa cứng còn có các chuẩn sử dụng cho server như: SAS, SCSI. Bảng 3.2

là tốc độ truy xuất dữ liệu tối đa của các chuẩn. Theo đó, chuẩn ATA có tốc độ thấp

hơn rất nhiều so với chuẩn SATA mới nhất, cáp giao tiếp của SATA cũng nhỏ gọn

hơn của ATA. Do đó, hiện nay, hầu hết các ổ đĩa cứng ATA đã được thay thế bằng

ổ đĩa cứng SATA.

(a) Chuẩn IDE (b) Chuẩn SATA

Hình 3.18. Các chuẩn IDE và SATA trên mainboard

Bảng 3.2. Tốc độ truy xuất dữ liệu tối đa của các chuẩn ổ đĩa cứng

Loại ổ đĩa ATA SATA 1 SATA 2 SATA 3 Tốc độ truy xuất dữ liệu (MB/s) 133 150 300 600

 Dung lượng của ổ đĩa cứng trong máy tính cá nhân hiện nay đã đạt tới hàng

trăm gigabyte (GB) đến vài tetrabyte (TB). Trong tương lai, với công nghệ ngày

càng phát triển, dung lượng ổ đĩa cứng sẽ ngày càng lớn.

 Tốc độ quay của ổ đĩa cứng được tính bằng số vòng quay trong một phút, ký

hiệu là rpm. Tốc độ quay càng cao thì tốc độ tìm kiếm dữ liệu càng nhanh. Hiện

nay, tốc độ quay thông dụng của các ổ đĩa cứng SATA là 7200 rpm.

46

 Bộ nhớ đệm (còn gọi là cache của ổ đĩa cứng) có chức năng lưu trữ dữ liệu

tạm thời trong quá trình làm việc của ổ đĩa cứng, có ảnh hưởng lớn đến tốc độ truy

xuất dữ liệu. Hiện nay, dung lượng bộ nhớ đệm thay đổi từ 16MB đến 64MB, tùy

theo nhà sản xuất.

 Kích thước: để đảm bảo cho việc lắp ráp, kích thước của ổ đĩa cứng đã được

chuẩn hóa. Các ổ cứng thế hệ cũ có kích thước 5,25 inch, các ổ cứng thế hệ mới

hiện tại dùng cho máy tính để bàn cá nhân có kích thước 3,5 inch, dùng cho laptop

có kích thước 2,5 inch.

Ổ đĩa cứng HDD còn được trang bị công nghệ S.M.A.R.T. Đây là công nghệ

tự động giám sát tình trạng của ổ đĩa HDD để dự báo các hư hỏng có thể xảy ra giúp

người dùng chuẩn bị có phương án giải quyết. Khi S.M.A.R.T báo lỗi, ta nên chuẩn

bị một ổ đĩa cứng khác để sao lưu dữ liệu.

Hiện nay, ngoài ổ đĩa cứng cơ truyền thống (HDD), còn có một loại ổ đĩa

cứng hoạt động hoàn toàn bằng điện, đó là ổ cứng thể rắn, còn gọi là SSD. Không

giống như ổ cứng cơ, cấu tạo bên trong của SSD bao gồm các chip điều khiển và

nhiều chip nhớ flash được kết nối trên một bản mạch in như hình 3.19. Do đó, ổ

cứng SSD có rất nhiều ưu điểm so với ổ đĩa cứng HDD.

Hình 3.19. Ổ đĩa cứng SSD

 Tốc độ truy xuất dữ liệu rất nhanh. Thời gian tìm kiếm dữ liệu của ổ đĩa SSD

nhanh hơn HDD từ 80 đến 100 lần. Ta thấy điều này rõ nhất khi khởi động máy tính

hoặc khi chạy các chương trình, máy tính sử dụng SSD gần như khởi động vào hệ

điều hành ngay lập tức, trong khi máy tính sử dụng HDD có thời gian khởi động

khá lâu.

 Do không có động cơ nên SSD không phát sinh tiếng ồn khi sử dụng.

47

 SSD tiêu hao năng lượng ít hơn HDD từ 30% đến 60%.  Độ tin cậy cao hơn: các ổ đĩa HDD có cấu tạo cơ khí, do đó chỉ cần một sai

lệch nhỏ khi có va chạm cũng sẽ làm mất hoặc sai dữ liệu. Các ổ SSD có cấu tạo từ

các chip điều khiển và chip nhớ nên có khả năng chống sốc cao, tránh nguy cơ mất

dữ liệu khi có va chạm.

 Kích thước, hình dáng của SSD nhỏ, gọn hơn rất nhiều so với HDD. Kích

thước SSD chuẩn sử dụng cho máy tính cá nhân để bàn là 2,5 inch

Tuy vậy, SSD cũng có một vài khuyết điểm so với HDD. Ổ đĩa SSD có giá

khá đắt so với HDD. Ở cấp độ người dùng phổ thông, dung lượng của SSD vẫn còn

khá thấp, phổ biến từ 120GB đến 512GB.

Mỗi loại ổ đĩa cứng đều có những ưu điểm riêng. Hiện tại, hai loại ổ đĩa này

đang được sử dụng song song, ta nên xác định rõ mục đích sử dụng của máy tính để

chọn loại ổ đĩa cứng cho phù hợp.

Ổ đĩa cứng là nơi chứa tất cả dữ liệu cá nhân, để tránh những trường hợp rủi

ro có thể làm mất những dữ liệu quan trọng, ta nên thường xuyên sao lưu dữ liệu

bằng một ổ cứng rời hoặc lưu trữ các dữ liệu cần thiết lên mạng.

3.9. Ổ đĩa quang

Ổ đĩa quang là thiết bị đọc hoặc ghi các loại đĩa quang như CD hay DVD.

Nếu phân chia theo khả năng đọc và ghi, ổ đĩa quang có thể được chia thành hai

loại:

 CD/DVD ROM: ổ đĩa quang chỉ có khả năng đọc đĩa

 CD/DVD WR: ổ đĩa quang có khả năng đọc và ghi đĩa

Thông số quan trọng nhất của một ổ đĩa quang là tốc độ đọc/ghi dữ liệu. Ví

dụ, một ổ đĩa quang có các thông số kỹ thuật như sau: DVD WR, DVD R24 W24

RW8, VCD R48 W48 RW32 có nghĩa là: ổ đĩa quang này có khả năng đọc và ghi

DVD/CD, đối với đĩa DVD, tốc độ đọc: 24X, ghi: 24X, xóa: 8X, và 1X tương ứng

là 1,32MB/s, đối với đĩa CD, tốc độ đọc: 48X, ghi: 48X và xóa: 32X và 1X tương

ứng là 150KB/s.

Với các ổ đĩa quang thế hệ cũ, chuẩn giao tiếp với mainboard là IDE. Giống

như ổ đĩa cứng HDD, hiện nay, chuẩn SATA đã thay thế chuẩn IDE trong các ổ đĩa

quang.

48

Hiện nay, với sự tiện lợi của USB, ổ đĩa quang ít được sử dụng trong các

máy tính cá nhân, đặc biệt là trong các laptop.

3.10. Màn hình

Màn hình là thiết bị dùng để hiển thị, giúp con người giao tiếp với máy tính

một cách trực quan hơn. Hiện nay, màn hình máy tính được chia thành hai loại:

CRT và LCD. CRT là công nghệ cũ, màn hình cồng kềnh, chiếm diện tích lớn. LCD

hiện tại là công nghệ mới làm màn hình nhỏ, gọn hơn CRT rất nhiều, vì vậy, LCD

cũng đang dần thay thế CRT trong công nghệ màn hình máy tính.

Hiện nay, có bốn chuẩn giao tiếp giữa màn hình với mainboard là: VGA,

DVI, HDMI và Display port. Hầu hết các thương hiệu cung cấp màn hình đều có hỗ

trợ các chuẩn này. Tuy nhiên, tùy theo từng dòng sản phẩm, màn hình chỉ được

trang bị một số cổng theo các chuẩn trên.

CÂU HỎI ÔN TẬP CHƢƠNG 3

1. Nêu một số thông số ta cần phải lưu ý khi chọn nguồn cho máy tính.

2. Thành phần nào quyết định công nghệ của mainboard? Vì sao? Dấu hiện nhận

biết mainboard đã được tích hợp card đồ họa hay chưa?

3. Công nghệ siêu phân luồng là gì? Lấy ví dụ cụ thể

4. Công nghệ kênh đôi (dual channel) là gì? Điều kiện về phần cứng để có thể sử

dụng được công nghệ dual channel.

5. Giải thích thông số sau: DDR2 bus 800MHz PC6400

6. Trình bày chức năng của BIOS và CMOS RAM..

7. Trình bày chức năng của chipset.

8. Trình bày những ưu điểm và nhược điểm của ổ đĩa cứng truyền thống (HDD) và

ổ cứng thể rắn (SSD).

9. Mainboard Gigabyte H81M-DS2 có các thông số sau: sk LGA 1150, s/p Intel

i3/i5/i7, Chipset Intel H81, 2DDR3 1600/1333 MHz up to 16GB, Graphics Port: D-

Sub, 1 x PCIe x16, Sound 7.1 ch, LAN Realtek 1GB, 6 USB 2.0, 2 USB 3.0, 2 Sata3,

2 Sata2, 1 COM, 1 LPT. Hãy giải thích các thông số trên.

49

Chƣơng 4. CẤU TRÚC BÊN TRONG MÁY TÍNH

4.1. Vi xử lý

4.1.1. Kiến trúc

Vi xử lý trong máy tính, còn gọi là đơn vị xử lý trung tâm hoặc CPU, là

thành phần rất quan trọng, không thể thiếu trong cấu trúc của một máy tính. Chức

năng chính của đơn vị xử lý trung tâm là điều khiển hoạt động của máy tính theo ý

định của người sử dụng. Để thực hiện được công việc này, vi xử lý phải đọc và thực

thi các lệnh được mã hóa dưới dạng số nhị phân và được lưu trong bộ nhớ.

Một bộ vi xử lý có thể được chia thành hai thành phần chính. Thành phần thứ

nhất là đường dữ liệu, bao gồm các thành phần nhỏ hơn như: bộ nhớ (thanh ghi),

đơn vị xử lý số học và các đơn vị luận lý (logic) khác được kết nối với nhau thông

qua các đường bus. Các thành phần này hoạt động đồng bộ theo xung một clock.

Thành phần thứ hai là đơn vị điều khiển, hoạt động tuần tự có chức năng điều khiển,

bảo đảm đưa đúng dữ liệu đến đúng chỗ và đúng thời điểm. Việc kết hợp hai thành

phần trên giúp vi xử lý thực thi các lệnh theo các trình tự như sau: gọi lệnh, giải mã

lệnh, thực thi lệnh.

Sau đây, ta xét vi xử lý 8086, là một trong những vi xử lý thuộc thế hệ đầu,

đặt nền tảng cho các dòng vi xử lý cao cấp sau này của Intel. Hình 4.1 mô tả cấu

trúc cơ bản của vi xử lý 8086.

 Đường dữ liệu của 8086 bao gồm:

 Các thanh ghi 16 bit: AX, BX, CX, DX, IP, thanh ghi tạm, … dùng để

lưu trữ dữ liệu

 Khối ALU: dùng để thực thi các phép toán luận lý và số học

 Khối logic điều khiển bus: có chức năng giao tiếp với bus bên ngoài vi xử

 Khối logic tính toán địa chỉ: dùng để tính toán địa chỉ cần truy xuất dữ

liệu

 Tất cả các khối trên được kết nối với nhau thông qua các đường bus nội

(bus bên trong vi xử lý)

50

 Đơn vị điều khiển (CU) nhận lệnh từ hàng lệnh và tạo các tín hiệu ngõ ra

thích hợp điều khiển hoạt động các thành phần của đường dữ liệu

Hình 4.1. Cấu trúc cơ bản của vi xử lý Intel 8086

Vi xử lý Intel 8086 hoạt động theo xung nhịp clock có tần số khoảng 5MHz.

Từ nền tảng cấu trúc này, Intel tiếp tục có những cải tiến nhằm tăng khả năng xử lý,

tốc độ thực thi lệnh như: mở rộng độ dài thanh ghi từ 16 lên 32 bit, bổ xung thêm bộ

nhớ cache, …, các CPU hiện tại của Intel còn có thêm các đơn vị điều khiển bộ nhớ

RAM và xử lý đồ họa.

4.1.2. Cấu trúc pipeline

Như đã giới thiệu tổng quát ở phần trên, hoạt động của vi xử lý được quy

định bằng một chương trình viết bằng các lệnh cụ thể, được mã hóa dưới dạng các

số nhị phân và lưu trữ trong bộ nhớ. Để thực thi các lệnh này vi xử lý phải thực hiện

nhiều bước nhỏ khác theo trình tự, giả sử bao gồm:

 Gọi lệnh: đọc lệnh từ bộ nhớ

 Giải mã lệnh: xác định chức năng của lệnh vừa gọi và tính toán các địa chỉ

cần thiết

51

 Gọi toán hạng

 Thực thi lệnh và lưu trữ kết quả

Giả sử mỗi bước nhỏ này được thực thi trong một chu kỳ xung máy (bao

gồm nhiều chu kỳ xung clock tùy theo từng loại vi xử lý). Do đó, để thực thi một

lệnh, vi xử lý cần ít nhất 4 chu kỳ máy. Điều này làm giảm tốc độ và không khai

thác hết khả năng hoạt động của các khối thực thi lệnh. Kỹ thuật pipeline (còn gọi

là đường ống) được sử dụng để khắc phục nhược điểm này. Mỗi bước nhỏ trên

được gọi là một tầng pipeline, giả sử được đánh dấu từ S1 đến S4. Pipeline là kỹ

thuật thiết kế cho phép các tầng thực thi lệnh hoạt động song song. Xét một ví dụ

cho trường hợp pipeline 4 tầng như hình 4.2. Một lệnh được thực thi xong sau khi vi

xử lý hoàn thành việc thực thi tầng cuối cùng (S4) của lệnh đó. Từ hình vẽ ta thấy,

bắt đầu từ chu kỳ thứ 2 trở về sau, các tầng của lệnh sẽ được thực thi song song. Ở

chu kỳ thứ 2, trong lúc giải mã lệnh thứ nhất (S2) thì lệnh thứ 2 được gọi (S1). Ở

chu kỳ thứ 3, trong lúc gọi toán hạng (S3) của lệnh thứ nhất thì lệnh thứ 2 được giải

mã (S2) và lệnh thứ 3 được gọi (S1). Quá trình hoạt động liên tục như vậy, do đó,

bắt đầu từ chu kỳ thứ 4 trở về sau, mỗi lệnh sẽ được thực hiện trong một chu kỳ

máy. Vì vậy, trên lý thuyết, với kỹ thuật pipeline, vi xử lý chỉ tốn một chu kỳ máy

để thực thi một lệnh.

Hình 4.2. Kỹ thuật pipeline 4 tầng

Tuy nhiên, trên thực tế, có một số yếu tố ảnh hưởng làm cho kỹ thuật

pipeline không hoạt động đúng theo lý thuyết:

 Tốc độ hoạt động của bộ nhớ thường chậm hơn rất nhiều so với vi xử lý, do

đó việc truy xuất bộ nhớ để lấy dữ liệu phục vụ cho một lệnh thường tốn nhiều hơn

một chu kỳ máy.

52

 Dữ liệu phụ thuộc: đây là trường hợp lệnh sau sử dụng kết quả từ lệnh trước

đó. Ví dụ trong hình 4.2, giả sử tại chu kỳ thứ 4, tẩng S3 của lệnh thứ 2 gọi một

toán hạng là kết quả của lệnh thứ 1 trong khi lệnh thứ 1 đang thực thi tầng cuối

cùng (S4), tức là lệnh thứ 1 chưa có kết quả nhưng lệnh thứ 2 đã có yêu cầu sử dụng

kết quả của lệnh thứ 1. Khi đó, lệnh sau phải chờ đến khi hoàn thành lệnh trước, kéo

dài thời gian thực thi lệnh của vi xử lý.

 Trên thực tế, một chương trình có rất nhiều lệnh rẽ nhánh làm thay đổi luồng

chương trình, các lệnh thực thi không theo thứ tự sắp xếp trong bộ nhớ. Ví dụ như

trong hình 4.3, giả sử lệnh thứ 3 là một lệnh rẻ nhánh đến lệnh thứ 8. Trong khi lệnh

thứ 3 thực thi tầng cuối cùng (S4) thì các lệnh 4, 5, 6 đã được gọi và thực thi ở các

tầng khác. Tuy nhiên, sau khi thực hiện lệnh thứ 3, lệnh tiếp theo sẽ là lệnh thứ 8

mà không phải là lệnh thứ 4. Do đo, quy trình phải được xóa và làm lại từ đầu với

lệnh thứ 8. Vấn đề này làm cho kỹ thuật pipeline không hiệu quả, đôi khi còn làm

quá trình thực thi lệnh chậm hơn bình thường do một chương trình thường có rất

nhiều lệnh rẽ nhánh. Thực tế, ta có thể biết lệnh rẻ nhánh ở bước giải mã lệnh, nên

có thể bắt đầu lại quá trình ngay ở bước này. Tuy nhiên, ta lại không biết lệnh sẽ

được rẻ nhánh đến (lệnh tiếp theo ngay sau lệnh rẻ nhánh) đối với các trường hợp rẻ

nhánh có điều kiện.

Hình 4.3. Cấu trúc pipeline có lệnh rẻ nhánh

Để khắc phục các vấn đề trên, các kỹ sư thiết kế đã có một số giải pháp như:

 Tích hợp thêm bộ nhớ cache cho vi xử lý, giảm thời gian truy xuất đến bộ

nhớ

53

 Thêm khối dự đoán cho lệnh rẻ nhánh có điều kiện dùng để dự đoán lệnh

được rẻ nhánh đến

 Sử dụng trình biên dịch để sắp xếp lại luồng thực thi trong chương trình

 Sử dụng nhiều đơn vị thực thi lệnh, còn gọi là kỹ thuật superscalar

4.1.3. Kỹ thuật superscalar

Mục đích của kỹ thuật đường ống là tăng tốc độ thực thi lệnh, trong trường

hợp lý tưởng, một lệnh sẽ được thực thi trong một chu kỳ máy. Tuy nhiên, mục đích

này gần như không thể đạt được do một số yếu tố đã được nêu ở phần trên, trong

đó, dữ liệu phụ thuộc là yếu tố có ảnh hưởng nhiều nhất do tính chất của một

chương trình, một lệnh thường sử dụng kết của một lệnh khác. Kỹ thuật superscalar

được thiết kế để giải quyết vấn đề này, đồng thời làm tăng tốc độ thực thi lệnh.

Kỹ thuật superscalar sử dụng nhiều đường ống (pipeline), các đường ống

này hoạt động song song. Do đó, sẽ có nhiều lệnh được gọi và giải mã tại cùng một

thời điểm. Một thành phần được thiết kế bổ sung để xác định các lệnh phụ thuộc và

không phụ thuộc. Các lệnh không phụ thuộc sẽ được thực thi đồng thời, các lệnh

phụ thuộc sẽ được thực thi tuần tự.

Kỹ thuật superscalar khắc phục được vấn đề dữ liệu phụ thuộc của đường

ống, nhưng phần cứng phức tạp hơn so với bình thường. IBM RS/6000 và Intel

Pentium là các dòng vi xử lý đầu tiên sử dụng kỹ thuật này.

4.1.4. Thanh ghi

Thanh ghi là một dạng bộ nhớ bên trong bộ xử lý trung tâm dùng để lưu trữ

thông tin và dữ liệu. Chiều dài thanh ghi có thể là 8, 16, 32 hoặc 64 bit tùy theo

dòng CPU. Đây cũng là một yếu tố quyết định đến công nghệ CPU. CPU 32 hay 64

bit tương ứng thường có các thanh ghi có chiều dài 32 hay 64 bit. Ví dụ, Intel 8086

là vi xử lý 16 bit có các thanh ghi có chiều dài 16 bit

Một vi xử lý thường có hai loại thanh ghi: thanh ghi người dùng và thanh ghi

điều khiển và trạng thái.

a. Thanh ghi người dùng

Thanh ghi người dùng là các thanh ghi mà cấp ngôn ngữ máy có thể tác động

được, nói cách khác một người lập trình có thể sử dụng được các thanh ghi này để

54

viết chương trình cho vi xử lý. Các thanh ghi người dùng thường được sử dụng để

lưu trữ dữ liệu tạm thời trong quá trình thực thi lệnh. Ngoài ra, một vài thanh ghi

còn được chuyên môn hóa, sử dụng cho một mục đích cụ thể. Ví dụ đối với vi xử lý

8086, các thanh ghi AX và CX ngoài chức năng lưu trữ kết quả tạm thời của các

lệnh còn được sử dụng để lưu trữ kết quả phép tính nhân và số lần lặp vòng. Các

thanh ghi này được mặc định sử dụng và không cần phải khai báo trong những câu

lệnh như vậy. Điều này làm cho chương trình gọn hơn đồng thời tối ưu hóa tốc độ

xử lý của phần cứng.

Thanh ghi người dùng có số lượng nhiều nhất và được sử dụng thường xuyên

nhất trong chương trình, hầu hết đều là các thanh ghi đọc/ghi được.

b. Thanh ghi điều khiển và trạng thái

Các thanh ghi điều khiển được sử dụng để lựa chọn các chế độ hoạt động của

vi xử lý. Đây thường là các thanh ghi đọc/ghi được.

Trong quá trình hoạt động, các sự thay đổi của phần cứng và chế độ hoạt

động của vi xử lý thường được thể hiện trong một hoặc một vài thanh ghi đặc biệt,

gọi là thanh ghi trạng thái. Các thanh ghi này là các thanh ghi chỉ đọc (read only),

mọi tác động của người lập trình bằng cách sử dụng ngôn ngữ máy ghi dữ liệu vào

các thanh ghi này đều không có tác dụng

Trong hầu hết các vi xử lý, thanh ghi điều khiển và trạng thái là các thanh

ghi riêng biệt, có địa chỉ khác nhau. Tuy nhiên, cũng có một số trường hợp việc

điều khiển và trạng thái vi xử lý được tích hợp vào một thanh ghi chung nhằm tiết

kiệm tài nguyên thiết kế. Ví dụ với vi xử lý 8086, thanh ghi điều khiển và trạng thái

được tích hợp thành một thanh ghi chung gọi là thanh ghi cờ 16 bit như hình 4.4.

Trong đó, các bit OF, SF, ZF, AF, PF và CF là các bit chỉ trạng thái vi xử lý, các bit

DF, IF và TF là các bit điều khiển vi xử lý. Việc ghi vào thanh ghi này tương ứng là

thao tác điều khiển các chế độ hoạt động của vi xử lý, việc đọc thanh ghi này tương

ứng là thao tác lấy trạng thái của vi xử lý tại thời điểm đọc.

Hình 4.4. Thanh ghi điều khiển và trạng thái của vi xử lý 8086

55

Một thanh ghi đặc biệt, bắt buộc phải có đối với tất cả các vi xử lý, đó là

thanh ghi đếm chương trình (PC), còn được gọi là con trỏ lệnh (IP). Thanh ghi này

dùng để chứa địa chỉ lệnh tiếp theo trong chương trình thực thi, vì vậy, thanh ghi

này luôn được cập nhật sau mỗi lệnh của vi xử lý.

4.1.5. Tập lệnh

Quá trình hoạt động của một vi xử lý được quy định trong một chương trình,

được viết bằng các lệnh tương ứng của vi xử lý đó, thường được gọi là ngôn ngữ

máy. Các lệnh này được lấy từ tập lệnh của vi xử lý.

Mỗi lệnh là một chuỗi số bit nhị phân chứa các thông tin cần thiết để vi xử lý

thực hiện một chức năng nào đó. Chuỗi bit này thường được chia thành nhiều

trường nhỏ hơn, chứa các thông tin của lệnh đó.

 Trường mã lệnh (còn được gọi là opcode): các bit trong trường này thể hiện

chức năng của lệnh

 Trường toán hạng: một lệnh thường bao gồm nhiều toán hạng nguồn và một

toán hạng đích. Toán hạng đích như một ngõ ra chứa kết quả thực thi lệnh

với các ngõ vào là các toán hạng nguồn.

o Các toán hạng nguồn có thể là các thanh ghi, các giá trị tức thời (số

không đổi), các giá trị được lưu trữ trong bộ nhớ hoặc ngoại vi, …

o Các toán hạng đích thường là các toán hạng lưu trữ dữ liệu nên

thường là các thanh ghi hoặc ô nhớ.

 Trường chứa địa chỉ của lệnh tiếp theo: thường được sử dụng cho các lệnh rẽ

nhánh

 Ngoài ra còn có một số trường quy định các tính năng khác của lệnh

Sau đây, ta xét một ví dụ về tập lệnh của vi xử lý ARM. Hình 4.5 là cấu trúc

các lệnh xử lý dữ liệu của vi xử lý ARM7TDMI. Ta thấy, lệnh xử lý dữ liệu của

ARM có chiều dài 32 bit, được chia thành nhiều trường nhỏ.

Hình 4.5. Cấu trúc các lệnh xử lý dữ liệu của vi xử lý ARM7TDMI

56

 Trường Operand 2 có chiều dài 12 bit (từ bit 0 đến bit 11): chứa toán

hạng nguồn thứ hai của lệnh, toán hạng này có thể là một thanh ghi hoặc

một giá trị tức thời.

 Trường Rd có chiều dài 4 bit (từ bit 12 đến bit 15): chứa toán hạng đích

của lệnh, trong trường hợp này toán hạng nguồn là các thanh ghi của

ARM.

 Trường Rn có chiều dài 4 bit (từ bit 16 đến bit 19): chứa toán hạng nguồn

thứ nhất của lệnh, trong trường hợp này là các thanh ghi của ARM.

 Trường S (bit 20): chỉ có một bit, dùng để điều khiển trường Cond.

 Trường OpCode có chiều dài 4 bit (từ bit 21 đến bit 24): chứa Opcode

của lệnh. Lệnh xử lý dữ liệu bao gồm các phép toán như: cộng, trừ, AND,

OR, … mỗi phép toán sẽ tương ứng với một Opcode cụ thể. Ví dụ như

0000 ứng với phép AND, 0100 ứng với phép cộng, 0010 ứng với phép

trừ, …

 Trường I (bit 25): dùng để xác định toán hạng thứ hai (Operand 2) là

thanh ghi hay giá trị tức thời. Nếu I = 0 thì Operand 2 là thanh ghi, nếu I

= 1 thì Operand 2 là giá trị tức thời.

 Trường Cond có chiều dài 4 bit (từ bit 28 đến bit 31): chứa các mã điều

kiện của ARM.

Lệnh sau sẽ lấy giá trị thanh ghi R7 trừ giá trị thanh ghi R5 và lưu trữ kết quả

vào thanh ghi R4.

SUB R4, R5, R7

Tương ứng chuỗi bit biểu diễn lệnh này sẽ là:

0000 00 0 0010 0101 0100 00000000_0111 0

Cond Phép trừ R5 R4 R7 S toán hạng thứ hai là thanh ghi

Vi xử lý chỉ đọc và hiểu các chuỗi số nhị phân, còn câu lệnh SUB R4, R5, R7

là ngôn ngữ trực quan của người lập trình. Vì vậy, để chuyển từ ngôn ngữ của con

người sang ngôn ngữ máy ta cần một công cụ phần mềm, được gọi là trình biên

dịch. Con người sẽ lập trình cho vi xử lý bằng những câu lệnh trực quan, dễ hiểu

57

như trên và trình biên dịch sẽ chuyển những câu lệnh này thành ngôn ngữ của vi xử

lý là chuỗi bit nhị phân biểu diễn cho những câu lệnh đó. Các vi xử lý của các công

ty khác nhau có các tập lệnh khác nhau, nên mỗi công ty sẽ có một chương trình

biên dịch riêng sử dụng cho các dòng vi xử lý của công ty đó.

Quy đinh chiều dài của mỗi câu lệnh cũng có sự khác biệt. Đối với các vi xử

lý thiết kế theo kiến trúc CISC (như 8086), các câu lệnh khác nhau sẽ có chiều dài

khác nhau. Các lệnh của CISC là các lệnh phức tạp, một lệnh có thể thực hiện được

nhiều chức năng. Tập lệnh của CISC thường có rất nhiều lệnh. Đối với các vi xử lý

thiết kế theo kiến trúc RISC (như ARM), các câu lệnh khác nhau có cùng chiều dài.

Các câu lệnh của RISC chỉ thực hiện những chức năng đơn giản, các chức năng

phức tạp hơn sẽ được thực hiện bằng lập trình. Tập lệnh của RISC thường ít hơn rất

nhiều so với CISC.

Tập lệnh của hầu hết các vi xử lý đều được chia thành những nhóm lệnh nhỏ

có cấu trúc lệnh giống nhau , ví dụ như nhóm lệnh xử lý dữ liệu của ARM đã đề cập

ở trên. Sau đây là một số nhóm lệnh cơ bản trong tập lệnh của các vi xử lý.

 Nhóm lệnh xử lý dữ liệu: thực hiện các phép toán logic và số học như: cộng,

trừ, AND, OR, XOR, NOT, dịch bit, xoay bit, …

 Nhóm lệnh lưu trữ dữ liệu: có chức năng lưu dữ liệu vào hoặc lấy dữ liệu ra

khỏi bộ nhớ

 Nhóm lệnh di chuyển dữ liệu: có chức năng chuyển dữ liệu giữa các thành

phần như thanh ghi, ngoại vi, ngăn xếp, …

 Nhóm lệnh rẽ nhánh: có chức năng chuyển luồng chương trình theo một

hướng khác phù hợp với trạng thái hiện tại của vi xử lý

 Nhóm lệnh điều khiển: thường được sử dụng để lập trình các chế độ hoạt

động cho vi xử lý

4.2. Bộ nhớ

Bộ nhớ là thành phần lưu trữ dữ liệu của người dùng và chương trình của vi

xử lý. Một hệ thống máy tính thường có hai loại bộ nhớ: bộ nhớ trong và bộ nhớ

ngoài. Bộ nhớ trong thường dùng để lưu thông tin phần cứng máy tính, các chương

trình đang hoạt động trong hệ thống. Bộ nhớ ngoài thường sử dụng để lưu trữ lượng

58

lớn dữ liệu cá nhân. Trong nội dung chương này, chúng ta chỉ tập trung tìm hiểu về

các bộ nhớ trong.

4.2.1. Phân loại bộ nhớ

Bộ nhớ trong được phân làm hai loại cơ bản: ROM và RAM.

a. Bộ nhớ ROM

ROM (viết tắt của Read Only Memory) cơ bản là bộ nhớ chỉ đọc, tức là ta

chỉ có thể đọc dữ liệu từ ROM mà không thể ghi dữ liệu vào ROM. ROM chỉ được

ghi dữ liệu một lần đầu tiên, dữ liệu trong ROM thường chứa những thông tin cố

định, không đổi như: thông tin về các thành phần trên mainboard, chương trình khởi

động máy tính, ... Bộ nhớ ROM truyền thống thường có dung lượng nhỏ, dữ liệu

ROM đã được các nhà sản xuất nạp sẵn. ROM là bộ nhớ không bay hơi, tức là dữ

liệu trong ROM không bị mất khi ngừng cung cấp điện. Dựa vào đặc tính này, các

bộ nhớ sau cũng được xem là ROM: PROM, EPROM, EEPROM và bộ nhớ flash.

Khác với ROM, người dùng có thể nạp dữ liệu tùy ý vào các bộ nhớ này.

 PROM (Programmable ROM): cũng là bộ nhớ không bay hơi và chỉ được

ghi dữ liệu một lần đầu tiên. Khác với ROM truyền thống, PROM là loại ROM

trắng, tức là chưa có dữ liệu. Người dùng có thể tùy ý ghi dữ liệu vào PROM bằng

các thiết bị nạp ROM chuyên dụng.

 EPROM (Erasable Programmable ROM): là bộ nhớ có khả năng đọc và ghi

như PROM, nhưng khác với PROM, EPROM có khả năng ghi được nhiều lần. Tuy

nhiên, trước khi ghi, tất cả các ô nhớ của EPROM phải được xóa bằng tia cực tím.

Trên thân EPROM thường có một cửa sổ trong suốt (như hình 4.6), để xóa dữ liệu

trong EPROM, ta chỉ cần chiếu chùm tia cực tím vào cửa sổ này trong thời gian

khoảng 20 phút.

 EEPROM (Electrically Erasable Programmable ROM): cũng có khả năng

ghi dữ liệu mới như EPROM, nhưng ta không cần phải xóa dữ liệu trước khi ghi dữ

liệu mới vào EEPROM. Việc xóa dữ liệu trong EEPROM được thực hiện ở mức

byte, tức là một lần xóa được một byte. Chính vì đặc tính đọc/ghi dữ liệu linh hoạt,

bộ nhớ EEPROM thường có chi phí đắt nhất trong số các bộ nhớ trên.

59

 Bộ nhớ flash: chức năng cũng giống như EEPROM, nhưng tốc độ ghi dữ liệu

của flash nhanh hơn so với EEPROM. Bộ nhớ flash có khả năng xóa dữ liệu theo

khối, tức là ta có thể xóa một khối dữ liệu nào đó trong bộ nhớ thay vì phải xóa toàn

bộ dữ liệu trong bộ nhớ như EPROM.

Hình 4.6. Bộ nhớ EPROM

b. Bộ nhớ RAM

RAM (viết tắt của Random Access Memory) là bộ nhớ có khả năng đọc và

ghi, còn được gọi là bộ nhớ chính. Một điểm khác biệt nữa so với ROM, RAM là bộ

nhớ bay hơi, tức là dữ liệu trong RAM sẽ bị mất khi ngừng cấp điện. Do đó, RAM

còn được gọi là bộ nhớ tạm. RAM thường được sử dụng để chứa các chương trình

đang hoạt động trên máy tính, vì vậy dung lượng và tốc độ của RAM có ảnh hưởng

rất lớn đến hoạt động của toàn hệ thống. RAM được chia thành hai loại cơ bản,

được sử dụng trong các thế hệ máy tính, đó là: SRAM (RAM tĩnh) và DRAM

(RAM động). Điểm khác biệt giữa hai loại RAM này chủ yếu là ở cấu tạo của từng

bit nhớ (cell), sẽ được phân tích trong phần tiếp theo

 DRAM

DRAM lưu trữ dữ liệu 0 và 1 dưới dạng các tín hiệu điện thế trên một tụ

điện. Hình 4.7a là cấu trúc cơ bản của một DRAM cell. Do tụ điện có xu hướng xả

điện nên DRAM phải nạp lại điện tích cho tụ điện sau một khoảng thời gian nhất

định để duy trì dữ liệu trong bộ nhớ. Quá trình nạp lại được gọi là quá trình làm

tươi. Cũng do đặc tính rò rỉ điện tích trên tụ điện mặc dù vẫn có nguồn cung cấp

điện nên bộ nhớ này còn được gọi là RAM động. Đường địa chỉ (address line) sẽ

tích cực làm cho transistor dẫn khi có sự truy xuất vào DRAM cell. Thông thường,

60

mức điện áp cao trên tụ điện tương ứng với mức logic 1 và mức điện áp thấp tương

ứng với mức 0.

Quá trình ghi dữ liệu, một tín hiệu điện áp được đưa vào ngõ Bit line nạp

điện cho tụ, nạp dữ liệu vào cell.

Quá trình đọc dữ liệu, mức điện áp trên tụ được đưa ra ngoài thông qua

đường Bit line và được so sánh với một mức điện áp chuẩn để xác định dữ liệu

trong cell là 0 hay 1. Việc đọc sẽ làm mất dữ liệu trong cell do tụ xả điện, vì vậy,

phải có quá trình nạp lại để hoàn thành quá trình đọc dữ liệu.

 SRAM

SRAM sử dụng các transistor để lưu trữ dữ liệu. Hình 4.7b là cấu trúc cơ bản

của một SRAM cell. Bốn transistor T1, T2, T3, T4 được kết nối chéo nhau để tạo các

mức logic cố định. Mức logic 1 ứng với trạng thái dẫn của T1, T4 và tắt của T2, T3.

Mức logic 0 ứng với trạng thái dẫn của T2, T3 và tắt của T1, T4. Các mức logic này

không bị mất theo thời gian nên SRAM không cần chu kỳ làm tươi. Cũng giống như

DRAM, đường Address line sẽ tích cực làm cho các transistor T5 và T6 dẫn khi có

sự truy xuất dữ liệu vào DRAM cell. Trong quá trình ghi, bit dữ liệu được đưa vào

đường Bit line B, giá trị bù của dữ liệu sẽ được đưa vào đường Bit line . Trong quá

trình đọc, dữ liệu được đọc ra từ đường Bit line B.

(b) SRAM cell (a) DRAM cell

Hình 4.7. Cấu trúc một bit nhớ

61

Từ đó, ta thấy, một ô nhớ của DRAM đơn giản và nhỏ gọn hơn của SRAM.

Do đó, DRAM có khả năng tích hợp lớn hơn và giá thành sản xuất nhỏ hơn so với

SRAM. Tuy nhiên, DRAM lại cần có chu kỳ làm tươi, tốc độ truy xuất của DRAM

cũng thấp hơn so với SRAM do tụ điện phải có thời gian nạp và xả. Vì vậy, DRAM

có dung lượng lớn thường được sử dụng làm bộ nhớ chính của hệ thống máy tính,

SRAM được sử dụng làm bộ nhớ có yêu cầu tốc độ cao như cache.

4.2.2. Cấu trúc cơ bản

Tất cả các bộ nhớ trên đều là bộ nhớ bán dẫn có cấu trúc gần như tương tự

nhau. Do đó, trong phần này ta chỉ tìm hiểu về cấu trúc cơ bản của bộ nhớ RAM.

Việc truy xuất dữ liệu được điều khiển thông qua các đường địa chỉ và điều khiển.

Mỗi giá trị địa chỉ sẽ tương ứng với một ô nhớ chứa dữ liệu. Mỗi ô nhớ có thể bao

gồm: 4, 8, 16 hoặc 32 bit dữ liệu, được truy cập thông qua các đường dữ liệu.

Hình 4.8 là ví dụ về cấu trúc của bộ nhớ RAM có dung lượng 16Mb. Mỗi ô

nhớ của RAM này có 4 bit nên có 4 đường dữ liệu được ký hiệu từ D1 đến D4. Việc

truy xuất dữ liệu được điều khiển bằng nhóm tín hiệu điều khiển

và nhóm 11 đường tín hiệu địa chỉ (A0 đến A10). Với 11 đường địa chỉ ta có thể xác định được 211 = 2048 địa chỉ. Các ô nhớ được sắp xếp theo dạng ma trận

2048x2048. Khi tín hiệu chọn hàng tích cực, ta sẽ xác định được một hàng

dựa vào các đường địa chỉ (A0 đến A10). Sau đó, tín hiệu chọn cột tích cực, ta

sẽ chọn được một cột dựa vào các đường địa chỉ (A0 đến A10). Từ hàng và cột ta

xác định được ô nhớ cần truy xuất. Dung lượng của RAM được xác định bằng số ô nhớ x số bit trong một ô nhớ, trong trường hợp này là 211 x 211 x 4 = 4x220 x 4 = 4M

x 4 (16Mb). Đây cũng là cách viết cho ta biết cấu trúc và dung lượng của RAM. Ví dụ, bộ nhớ RAM 1M x 8, nghĩa là bộ nhớ có dung lượng 8Mb, trong đó có 220 ô

nhớ, mỗi ô nhớ 8 bit tương ứng có 8 đường dữ liệu. Một số tín hiệu điều khiển còn

lại như được sử dụng để chọn chip (RAM) và cho phép xuất dữ liệu.

Các bộ nhớ RAM được đề cập ở phần trên thường có dung lượng nhỏ. Người

ta thiết kế thêm các bộ điều khiển và giải mã để ghép nhiều bộ nhớ RAM này lại để

có được một thanh RAM (module RAM) dung lượng đủ lớn, sử dụng trong các máy

tính.

62

Hình 4.8. Cấu trúc RAM 4M x 4

4.3. Hệ thống kết nối (bus)

4.3.1. Phân loại

Hệ thống bus là thành phần có chức năng kết nối các thiết bị trong một hệ

thống máy tính. Một bus bao gồm nhiều dây dẫn, mỗi dây dẫn có thể truyền các tín

hiệu nhị phân 0 và 1. Các tín hiệu trên bus được truyền đồng thời, tập hợp các tín

hiệu này tạo thành một giá trị thể hiện thông tin mà bus cần truyền đi. Ví dụ, muốn

thể hiện giá trị A5H (giá trị tương ứng trong hệ nhị phân là: 10100101), ta cần một

bus gồm có 8 dây dẫn truyền đồng thời các giá trị 1, 0, 1, 0, 0, 1, 0, 1.

Mặc dù mỗi vi xử lý có một chuẩn bus khác nhau, nhưng tất cả đều có một

điểm chung, đó là: các bus thường được chia thành ba loại: địa chỉ, dữ liệu và điều

khiển.

 Bus dữ liệu: dùng để truyền dữ liệu giữa các thành phần trong hệ thống. Độ

rộng của bus dữ liệu thường là: 32, 64 hoặc 128 bit. Một số loại bus còn chia bus dữ

liệu thành hai loại: dữ liệu đọc và dữ liệu ghi.

 Bus địa chỉ: mang địa chỉ của nơi phát hoặc nơi nhận của dữ liệu trên bus dữ

liệu. Độ rộng của bus địa chỉ có thể là 16, 32 hoặc 64 bit. Một số bus chia bus địa

chỉ thành hai loại: địa chỉ đọc và địa chỉ ghi.

63

 Bus điều khiển: dùng để mang một số thông tin điều khiển việc truyền dữ

liệu như: lệnh đọc/ghi dữ liệu, chiều dài và số lượng dữ liệu trong một lần truyền,

kiểu truyền, …

Tập hợp các đường bus trên tạo thành khối giao tiếp bus của các thành phần

trong hệ thống (bộ xử lý trung tâm, ngoại vi). Việc kết nối được thực hiện bằng

cách nối các đường bus tương ứng của CPU, I/O, bộ nhớ, ... với bus chính như

trong hình 4.9.

Hình 4.9. Cấu trúc hệ thống bus

Việc truyền dữ liệu giữa các thành phần trong hệ thống được thực hiện một

cách đồng bộ thông qua các bus tín hiệu trên. Quá trình đồng bộ để truyền dữ liệu

được gọi là giao thức bus. Các bus khác nhau thường có giao thức khác nhau. Các

thành phần muốn kết nối đến bus phải có cùng giao thức truyền dữ liệu của bus.

Hình 4.10 mô tả một giao thức đọc và ghi dữ liệu đơn giản của CPU. Bus hoạt động

dựa trên xung nhịp Clock. Trong chu kỳ đầu tiên (T1), CPU đặt địa chỉ của ngoại vi

cần truy xuất lên đường địa chỉ Address lines, đồng thời lái đường tín hiệu điều

khiển Address enable tích cực (mức 1) để xác minh chính xác địa chỉ. Đối với giao

thức đọc dữ liệu, CPU sẽ tiếp tục phát lệnh đọc bằng cách tích cực (mức 1) tín hiệu

điều khiển Read ở ngay đầu chu kỳ thứ hai (T2). Ngoại vi hoặc bộ nhớ có địa chỉ

tương ứng trên đường Address lines sẽ trả về dữ liệu trên đường dữ liệu Data lines.

Ở chu kỳ thứ ba (T3), CPU đọc về dữ liệu này và lái tín hiệu Read xuống mức thấp,

hoàn thành chu kỳ đọc dữ liệu. Đối với giao thức ghi dữ liệu, CPU sẽ đưa dữ liệu

cần ghi lên đường dữ liệu Data lines ở đầu chu kỳ thứ hai (T2) đến khi dữ liệu này

ổn định, CPU phát tiếp lệnh ghi bằng cách tích cực tín hiệu điều khiển ghi Write. Ở

chu kỳ thứ ba (T3), ngoại vi hoặc bộ nhớ có địa chỉ tương ứng trên đường Address

lines sẽ chép dữ liệu trên đường Data lines về, hoàn thành chu kỳ ghi dữ liệu.

64

Hình 4.10. Minh họa về định thì hoạt động của bus

Các giao thức bus thường được chuẩn hóa và được các công ty công nhận

nhằm tạo sự tương thích giữa các thành phần trong hệ thống máy tính. Ngoài ra,

trong quá trình thiết kế, các công ty có thể đưa vào sản phẩm của mình các bus của

riêng công ty, không được chuẩn hóa nhằm làm cho sản phẩm có được các tính

năng mong muốn. Các bus này được gọi là bus nội (hoặc local bus), phụ thuộc vào

kỹ thuật và công nghệ của từng công ty. ALU bus (trong hình 4.1) của vi xử lý Intel

8086 là một ví dụ về bus nội. ALU bus nằm bên trong vi xử lý 8086, có chức năng

kết nối bộ ALU với các thanh ghi của 8086.

4.3.2. Chức năng

Việc kết nối các thành phần trong hệ thống đến bus như đã đề cập ở phần

trên là việc kết nối các đường tín hiệu có cùng chức năng (địa chỉ, dữ liệu, điều

khiển). Hình 4.11 minh họa các thành phần có thể kết nối đến bus. Trong đó, một số

thành phần như CPU được gọi là master, các thành phần còn lại như bộ điều khiển

65

đồ họa, bộ nhớ, … được gọi là slave hoặc ngoại vi. Master là thành phần chủ động,

phát các lệnh truy xuất dữ liệu đến các slave, là các thành phần bị động. Slave sẽ

đáp ứng các lệnh này bằng các dữ liệu trả về cho master. Tại một thời điểm, chỉ có

một master được quyền kết nối (truy xuất) đến một slave. Trong trường hợp tại

cùng một thời điểm nhiều master có yêu cầu truy xuất đến cùng một slave, khi đó

bus sẽ đóng vai trò phân xử để xác định master nào được quyền truy xuất slave

trước.

Hình 4.11. Minh họa một bus của máy tính

Bus quản lý các ngoại vi trong hệ thống bằng địa chỉ. Một ngoại vi trong hệ

thống sẽ có tương ứng một địa chỉ hoặc một tầm địa chỉ. Việc phân phát địa chỉ cho

ngoại vi thường được quyết định bởi người lập ra đặc tính kỹ thuật cho hệ thống. Để

truy cập đến một ngoại vi trong hệ thống, master phải gởi địa chỉ của ngoại vi đó

qua bus địa chỉ. Mạch giải mã địa chỉ của bus có chức năng chọn chính xác ngoại vi

cần truy cập. Thông thường, ta có hai phương pháp giải mã địa chỉ.

 Giải mã toàn phần: mỗi ngoại vi được gán một địa chỉ duy nhất. Khi đó ta

phải sử dụng tất cả các bit địa chỉ cho việc giải mã

 Giải mã một phần: mỗi ngoại vi được gán với một tầm địa chỉ nào đó. Do đó,

ta không nhất thiết phải sử dụng tất cả các bit địa chỉ cho việc giải mã. Phương pháp

này làm cho mạch giải mã địa chỉ đơn giản hơn.

66

Tốc độ hoạt động của một ngoại vi được xác định bằng chu kỳ truy xuất dữ

liệu, nghĩa là thời gian từ khi một master đưa các yêu cầu truy xuất dữ liệu lên bus

đến khi slave trả về các đáp ứng cần thiết. Thời gian càng ngắn ứng với tốc độ của

ngoại vi càng cao và ngược lại. Trong một máy tính thường sẽ có nhiều bus được

nối với nhau thông qua các cầu chuyển bus, gọi là hệ thống bus đa cấp. Hình 4.12

mô tả một hệ thống như vậy. Các ngoại vi có tốc độ chậm như: bộ điều khiển ổ đĩa

cứng HDD, hoặc các bộ điều khiển truyền dữ liệu nối tiếp (COM, PS/2), … nếu

dùng chung bus với các ngoại vi cần tốc độ cao như: bộ điều khiển đồ họa hoặc

PCIe sẽ làm hạn chế tốc độ của các ngoại vi này. Do đó, các ngoại vi có tốc độ

chậm thường sử dụng chung một bus, trong hình 4.12 gọi là bus mở rộng, còn các

ngoại vi có tốc độ cao được kết nối với bus tốc độ cao. Để cải thiện tốc độ truy cập

của vi xử lý trung tâm đến RAM, CPU và bộ điều khiển bộ nhớ chính thường sử

dụng đường bus riêng, gọi là bus hệ thống. Các bus này giao tiếp với nhau thông

qua các cầu chuyển bus. Khi đó, các cầu chuyển bus được xem như một master của

bus mở rộng và bus tốc độ cao.

Hình 4.12. Minh họa một hệ thống bus đa cấp của máy tính

67

Hiện nay, máy tính có rất nhiều ngoại vi và số lượng ngoại vi chắc chắn sẽ

ngày càng tăng trong tương lai. Do đó, để giảm tải cho bus, một số ngoại vi tốc độ

thấp đã dần bị loại bỏ khi có các ngoại vi tốc độ cao hơn xuất hiện.

Trong hệ thống máy tính sử dụng CPU Intel, bus tốc độ cao được tích hợp

trong chip cầu bắc và hiện nay đã được tích hợp vào một số bộ xử lý trung tâm thế

hệ mới, bus mở rộng tốc độ thấp được tích hợp trong chip cầu nam.

4.4. Hệ thống cache

4.4.1. Giới thiệu

Từ khi mô hình máy tính Von Neumann ra đời, với chương trình được lưu

trữ trong bộ nhớ, mối tương quan về tốc độ giữa bộ xử lý trung tâm và bộ nhớ luôn

là vấn đề lớn, cần phải giải quyết. CPU luôn có tốc độ cao hơn bộ nhớ, do đó, khi

phát ra một yêu cầu tới bộ nhớ, CPU phải chờ bộ nhớ đáp ứng trong một khoảng

thời gian dài. Chính điều này đã làm hạn chế đáng kể tốc độ của CPU nói riêng và

của cả hệ thống nói chung.

Quá trình thiết kế bộ nhớ chương trình để có thể đáp ứng được yêu cầu về

tốc độ gặp phải sự ràng buộc giữa ba yếu tố sau: tốc độ, dung lượng và giá thành

chế tạo của bộ nhớ. Như đã phân tích ở các phần trên, để tăng tốc độ của hệ thống,

chúng ta luôn mong muốn bộ nhớ phải có dung lượng lớn, tốc độ cao. Tuy nhiên,

trên thực tế nếu bỏ qua yếu tố giá cả, bộ nhớ có dung lượng lớn luôn có tốc độ thấp

hơn bộ nhớ có dung lượng nhỏ hơn.

Qua quá trình phát triển, người ta cũng nhận thấy rằng, việc thực thi một

chương trình của vi xử lý không hoàn toàn ngẫu nhiên. Nếu lệnh đang thực thi ở địa

chỉ A, thì lệnh kế tiếp thường sẽ nằm trong vùng lân cận của A. Hơn nữa hầu hết

việc thực thi chương trình phần lớn đều là các vòng lặp, trong đó một số lệnh trong

một phần chương trình được thực thi nhiều lần. Do đó, ta chỉ cần một bộ nhớ có

dung lượng nhỏ để có thể lưu một phần chương trình hoặc dữ liệu.

Từ các yếu tố trên, ý tưởng về một bộ nhớ dung lượng nhỏ, tốc độ cao có

chức năng chứa một phần chương trình hoặc dữ liệu ra đời, được gọi là bộ nhớ

cache. Ban đầu, cache có dung lượng khoảng vài KB và được gắn ngoài CPU, về

68

sau, với công nghệ tích hợp ngày càng tiên tiến, cache có dung lượng lớn hơn và

được tích hợp vào bên trong CPU như hình 4.13.

Hình 4.13. Vị trí của cache trong hệ thống

4.4.2. Chức năng

Như đã đề cập ở phần trên, cache dùng để chứa một phần chương trình thực

thi hoặc dữ liệu truy xuất (sau đây ta goi hai thành phần này là một tham chiếu) lặp

lại nhiều lần. Các tham chiếu này được chép từ bộ nhớ lớn, tốc độ chậm (bộ nhớ

chính) vào bộ nhớ cache tốc độ cao. Khi các tham chiếu này được sử dụng lặp lại

nhiều lần sẽ làm tăng đáng kể tốc độ thực thi lệnh của vi xử lý từ đó cải thiện tốc độ

hoạt động của cả hệ thống. Chính vì vây, bộ nhớ cache còn được gọi là bộ nhớ truy

cập nhanh.

Để hiểu rõ hơn về chức năng chính của cache, ta giả sử một tham chiếu được

gọi k lần trong một thời gian ngắn, CPU sẽ cần 1 lần truy xuất bộ nhớ chính và (k-1)

lần truy xuất đến cache. Ta cũng giả sử, c là thời gian truy xuất bộ nhớ cache và m

là thời gian truy xuất bộ nhớ chính, do đặc tính của hai bộ nhớ nên c rất nhỏ hơn m

(c<

chiếu có trong bộ nhớ cache), khi đó h = (k-1)/k và tỉ lệ thất bại tương ứng là (1-h)

= 1/k.

Thời gian truy xuất tham chiếu trung bình = c + (1-h)m

Từ đó ta thấy, khi tham chiếu được gọi nhiều lần (k rất lớn) thì h → 1, thời

gian truy xuất trung bình sẽ tiến tới c. Khi tham chiếu chưa có trong cache, h → 0,

thời gian truy xuất trung bình sẽ tiến tới (c+m). Tuy nhiên, trên thực tế, thời gian

này nhỏ hơn (c+m) nhờ vào kỹ thuật thiết kế. Việc tìm kiếm tham chiếu trong bộ

nhớ chính thông thường sẽ được khởi động cùng lúc với việc tìm kiếm trên cache.

69

Khi tham chiếu không được tìm thấy trên cache (cache miss), chu kỳ truy cập trên

bộ nhớ chính đã được khởi động. Phương pháp này cũng đồng thời dừng ngay chu

kỳ truy cập bộ nhớ chính khi tham chiếu được tìm thấy trong cache (cache hit).

4.4.3. Cache nhiều tầng

Khi kỹ thuật sử dụng bộ nhớ cache được giới thiệu, trong hệ thống chỉ có

duy nhất một bộ nhớ cache, kết nối với vi xử lý thông qua bus hệ thống bên ngoài,

gọi là cache ngoài. Khi kỹ thuật chế tạo phát triển, mật độ tích hợp tăng, cache

được tích hợp vào bên trong vi xử lý, còn được gọi là on-chip cache. So với cache

ngoài, thời gian truy cập on-chip cache giảm đáng kể, do đường dữ liệu được rút

ngắn, góp phần cải thiện tốc độ của hệ thống. Trong thời gian truy cập on-chip

cache, bus hệ thống ở trong trạng thái rãnh sẽ được sử dụng cho các mục đích khác.

Đó là hai ưu điểm chính của bộ nhớ on-chip cache. Do giới hạn về diện tích trên

một chip, cache lại được chế tạo từ các cell SRAM chiếm diện tích khá lớn, nên các

bộ nhớ on-chip cache lúc đầu có dung lượng rất nhỏ, như vi xử lý Intel 80486 chỉ

có một bộ nhớ on-chip cache có dung lượng 8KB.

Theo thời gian, chương trình ngày càng dài và phức tạp trong khi dung lượng

bộ nhớ on-chip cache lại quá nhỏ, nhiều tham chiếu không được tìm thấy trong bộ

nhớ cache làm tăng tỷ lệ cache miss. Vi xử lý phải gọi các tham chiếu này từ bộ nhớ

ngoài có tốc độ chậm, thông qua bus hệ thống. Do đó, tỷ lệ cache miss tăng sẽ làm

ảnh hưởng đến tốc độ của hệ thống. Để khắc phục tình trạng này, một bộ nhớ cache

khác được kết nối với vi xử lý thông qua một bus riêng, gọi là back-side bus. Để

phân biệt các bộ nhớ cache, bộ nhớ on-chip cache trước đó được gọi là L1 cache

(cache cấp 1), bộ nhớ cache thêm vào được gọi là L2 cache (cache cấp 2). L2 cache

thường có dung lượng lớn hơn so với L1 cache và cũng có chức năng lưu trữ lệnh

và dữ liệu. Một tham chiếu khi không được tìm thấy ở L1 cache sẽ tiếp tục được tìm

trong L2 cache. Với kỹ thuật thiết kế và chế tạo ngày càng tiên tiến, L2 cache cũng

được tích hợp vào bên trong vi xử lý. Việc bổ sung L2 cache làm tăng tỷ lệ cache

hit, cải thiện đáng kể tốc độ của hệ thống.

Các bộ vi xử lý hiện đại ngày nay còn được tích hợp thêm bộ nhớ cấp 3 (L3

cache) có dung lượng lên đến hàng MB, làm cho tốc độ của toàn hệ thống máy tính

70

ngày càng được nâng cao. Hình 4.14 là mô hình của cache nhiều tầng. Theo cấp

tăng dần, bộ nhớ cache có tốc độ giảm dần nhưng dung lượng tăng dần, nghĩa là L1

cache có tốc độ cao nhất và dung lượng nhỏ nhất, còn L3 cache có tốc độ thấp nhất

và dung lượng cao nhất.

Hình 4.14. Cấu trúc cache 3 tầng

Bảng 4.1 mô tả sự phát triển của bộ nhớ cache theo các dòng vi xử lý của

Intel.

Bảng 4.1. Sự phát triển của bộ nhớ cache theo các dòng vi xử lý của Intel

Vi xử lý Intel Mô tả

386 Bổ sung bộ nhớ cache ngoài

Tích hợp bộ nhớ cache vào bên trong vi xử lý 486 Bổ sung thêm bộ nhớ cache ngoài, gọi là L2 cache

Pentium Tách riêng bộ nhớ cache dùng cho lệnh và dữ liệu

Pentium II Tích hợp bộ nhớ L2 cache vào bên trong vi xử lý

Pentium III Bổ sung thêm bộ nhớ cache ngoài, gọi là L3 cache

Pentium 4 Tích hợp bộ nhớ L3 cache vào bên trong vi xử lý

4.4.4. Phân loại

Bên trong vi xử lý thường có hai loại cache, đó là: cache dùng để lưu trữ

lệnh của vi xử lý và cache dùng để lưu trữ dữ liệu trong lúc hoạt động. Thời điểm

ban đầu khi kỹ thuật sử dụng bộ nhớ cache vừa mới xuất hiện, chỉ có duy nhất một

bộ nhớ cache dùng để lưu trữ cả lệnh và dữ liệu. Về sau, cache L1 được tách thành

hai phần để chứa lệnh và dữ liệu riêng biệt. Kỹ thuật sử dụng chung bộ nhớ cache

cho lệnh và dữ liệu có một số ưu điểm sau:

71

 Dung lượng bộ nhớ cache lớn, do đó tỷ lệ truy cập cache thành công sẽ cao

hơn so với kỹ thuật sử dụng cache riêng

 Đơn giản hơn so với kỹ thuật sử dụng cache riêng do chỉ cần tổng hợp và

thiết kế một bộ nhớ cache duy nhất

Tuy nhiên, cache chung không còn thích hợp khi kỹ thuật superscalar xuất

hiện. Như đã đề cập ở phần trên, đây là kỹ thuật thực thi nhiều lệnh song song, do

đó, sẽ xảy ra trường hợp tranh chấp bộ nhớ cache để truy cập lệnh và dữ liệu làm

hạn chế tốc độ thực thi của vi xử lý. Giả sử một lệnh truy xuất đang truy xuất dữ

liệu trong cache, khi đó nếu ta sử dụng bộ nhớ cache chung, lệnh sau đó chỉ được

gọi khi lệnh truy xuất dữ liệu này hoàn thành do tại một thời điểm bộ nhớ cache chỉ

có thể đáp ứng việc truy cập cho một lệnh. Xác suất xảy ra các trường hợp này khá

cao, do đó không phát huy hết ưu điểm của kỹ thuật superscalar. Để có thể kết hợp

các ưu điểm của cache chung và riêng, người ta tách bộ nhớ cache L1 thành hai

phần riêng biệt dành để chứa lệnh và dữ liệu, các bộ nhớ cache cấp cao hơn (hiện

nay là các cấp 2 và 3) vẫn là các cache dùng chung.

CÂU HỎI ÔN TẬP CHƢƠNG 4

1. Giải thích nguyên lý hoạt động của cấu trúc pipeline 4 tầng?

2. Trình bày những yếu tố có thể ảnh hưởng đến hoạt động của cấu trúc pipeline và

các giải pháp khắc phục.

3. Kỹ thuật superscalar là gì?

4. Thanh ghi trong vi xử lý là gì? Một vi xử lý thường có mấy loại thanh ghi, trình

bày đặc điểm của từng loại.

5. Tập lệnh của vi xử lý là gì? Mô tả các trường có thể có của một lệnh trong tập

lệnh.

6. Phân biệt các loại bộ nhớ: RAM, ROM, PROM, EPROM, EEPROM.

7. Trình bày chức năng của hệ thống kết nối (bus). Vì sao ta thường phải thiết kế

nhiều bus trong một hệ thống?

8. Trình bày chức năng của bộ nhớ truy cập nhanh cache và đặc điểm của các tầng

cache trong vi xử lý. Tại sao phải phân chia cache L1 thành cache lệnh và dữ liệu?

72

Chƣơng 5. HỆ THỐNG XUẤT NHẬP

Xuất nhập là quá trình chuyển dữ liệu giữa các thành phần của máy tính (bao

gồm các thiết bị ngoại vi và bộ nhớ) dưới sự điều khiển của vi xử lý trung tâm. Các

thiết bị ngoại vi, còn gọi là các I/O (input/output) gồm có ba loại: các thiết bị nhập

dữ liệu (input) (như bàn phím, chuột, micro, …), các thiết bị xuất dữ liệu (output)

(như màn hình, loa, máy in, …) và các thiết bị vừa nhập, vừa xuất (như ổ đĩa cứng,

bộ nhớ USB, màn hình cảm ứng, …). Mỗi thiết bị ngoại vi được điều khiển bằng

một khối điều khiển I/O. Để nội dung được ngắn gọn, ta gọi khối điều khiển I/O là

ngoại vi, phân biệt với các thiết bị ngoại vi là các thiết bị kết nối vào khối điều

khiển I/O. Mỗi ngoại có hai giao diện chính như hình 5.1.

 Giao diện giao tiếp bus: dùng để giao tiếp với bộ xử lý trung tâm và bộ nhớ.

Giao diện này bao gồm các nhóm tín hiệu theo tiêu chuẩn chung của bus như: địa

chỉ, dữ liệu, điều khiển, vì vậy thường như nhau cho tất cả các ngoại vi.

 Giao diện giao tiếp với các thiết bị ngoại vi: bao gồm các tín hiệu kết nối với

thiết bị ngoại vi, vì vậy giao diện này khác nhau cho các ngoại vi khác nhau.

Hình 5.1. Giao diện chính của các ngoại vi

Có ba phương pháp cơ bản để chuyển dữ liệu giữa các thành phần của máy

tính:

 Hỏi vòng: hay còn gọi là xuất nhập dữ liệu được điều khiển bằng chương

trình

 Xuất nhập dữ liệu bằng ngắt

 Truy cập bộ nhớ trực tiếp (còn gọi là DMA)

73

Trong đó, phương pháp đầu tiên ít được sử dụng do không phát huy hết khả

năng của bộ xử lý trung tâm và đáp ứng chậm. Phần tiếp theo ta sẽ tìm hiểu về 2

phương pháp còn lại: ngắt và truy cập bộ nhớ trực tiếp.

5.1. Hệ thống ngắt

Trước khi tìm hiểu về ngắt, ta cần tìm hiểu về hoạt động cơ bản của phương

pháp xuất nhập dữ liệu hỏi vòng. Đây là phương pháp đơn giản nhất, hoạt động chủ

yếu dựa trên sự điều khiển của chương trình phần mềm. Trong đó, ta sẽ lập trình

cho vi xử lý dò hỏi từng ngoại vi có yêu cầu truyền dữ liệu hay không. Quá trình

này sẽ được lặp đi lặp lại trong suốt thời gian hoạt động của hệ thống. Do đó, công

việc của vi xử lý chỉ là liên tục dò trạng thái các ngoại vi và điều khiển việc truyền

dữ liệu. Ngoài ra, do việc dò hỏi diễn ra tuần tự nên một ngoại vi muốn truyền dữ

liệu phải chờ đến khi được vi xử lý dò hỏi. Việc này tạo ra độ trễ dữ liệu gây ảnh

hưởng đến hoạt động của ngoại vi, đặc biệt là các ngoại vi tốc độ cao. Đây là hai

nhược điểm chủ yếu của phương pháp hỏi vòng đã được đề cập ở phần trên. Phương

pháp ngắt xuất hiện đã khắc phục được hai nhược điểm này.

Nếu như ở phương pháp hỏi vòng, các ngoại vi không thể chủ động truyền

dữ liệu tại thời điểm mong muốn thì với phương pháp ngắt, các ngoại vi sẽ chủ

động gởi yêu cầu truy xuất dữ liệu đến vi xử lý. Các yêu cầu này còn được gọi là

yêu cầu ngắt, thường xuất hiện bất đồng bộ và được truyền đến vi xử lý thông qua

ngõ ra ngắt của các ngoại vi. Bên phía vi xử lý, tương ứng cũng có ngõ vào ngắt để

tiếp nhận yêu cầu từ các ngõ ra ngắt này. Khi nhận được yêu cầu, vi xử lý sẽ lập tức

dừng chương trình chính đang thực thi và chuyển đến thực thi chương trình phục vụ

cho yêu cầu ngắt. Quá trình này được mô tả như trong hình 5.2.

Hình 5.2. Hoạt động ngắt của vi xử lý

74

Tùy thuộc vào thiết kế của từng ngoại vi, các yêu cầu ngắt thường được thể

hiện dưới hai hình thức, đó là: ngắt cạnh và ngắt mức.

 Ngắt cạnh: yêu cầu ngắt được thể hiện dưới hình thức là cạnh lên hoặc cạnh

xuống của ngõ ra ngắt.

 Ngắt mức: yêu cầu ngắt được thể hiện dưới hình thức là mức cao hoặc mức

thấp của ngõ ra ngắt.

Đối với các thiết bị ngoại vi, một vài thao tác có thể làm cho các ngoại vi gây

ra yêu cầu ngắt như: thao tác nhấn phím, nhấn chuột, chạm vào màn hình cảm ứng,

Khi xuất hiện yêu cầu ngắt từ ngoại vi, hầu hết các phần cứng vi xử lý sẽ

thực hiện lần lượt một số thao tác sau:

 Tiếp tục hoàn thành lệnh đang thực thi

 Gởi lại một tín hiệu xác nhận để thông báo cho ngoại vi biết đã nhận được tín

hiệu và sẽ đáp ứng cho yêu cầu ngắt, ngoại vi có thể tắt yêu cầu ngắt

 Lưu lại một số thông tin quan trọng trước khi chuyển đến chương trình phục

vụ ngắt để có thể tiếp tục thực hiện chương trình chính sau khi hoàn thành chương

trình ngắt. Các thông tin này thường bao gồm: trạng thái vi xử lý, địa chỉ của lệnh

tiếp theo trong chương trình chính tại thời điểm xảy ra ngắt.

 Chuyển đến chương trình phục vụ ngắt (còn gọi là chương trình ngắt).

 Sau khi hoàn thành chương trình phục vụ ngắt, phần cứng vi xử lý sẽ phục

hồi lại trạng thái của vi xử lý trước khi xảy ra ngắt và rẻ nhánh đến để thực hiện

lệnh tiếp theo trong chương trình chính.

Việc lưu lại trạng thái của vi xử lý là cần thiết vì ngắt là sự kiện bất đồng bộ

đối với chương trình của vi xử lý, có thể xảy ra tại bất kỳ thời điểm nào trong quá

trình hoạt động của hệ thống.

Chương trình phục vụ ngắt được lập trình để thực hiện các thao tác thích hợp

khi có sự kiện ngắt bất đồng bộ xảy ra. Thông thường, các ngoại vi khác nhau sẽ có

các chương trình phục vụ ngắt khác nhau. Việc xác định đúng chương trình ngắt

phục vụ cho ngoại vi đang có yêu cầu ngắt rất quan trọng. Sau đây là một số kỹ

thuật để thực hiện công việc này.

75

 Dò chương trình ngắt bằng phần mềm: trong một số thiết kế, vi xử lý sẽ

chuyển đến thực hiện lệnh trong chương trình ở một địa chỉ cố định khi có yêu cầu

ngắt. Sau đó, chương trình phần mềm phải có nhiệm vụ dò xem ngoại vi nào đang

có yêu cầu ngắt bằng cách đọc thanh ghi trạng thái của các ngoại vi. Sau khi xác

định được ngoại vi có yêu cầu ngắt, vi xử lý sẽ chuyển đến thực thi chương trình

ngắt thích hợp cho ngoại vi đó.

 Phương pháp dò chương trình ngắt bằng phần mềm có một nhược điểm, đó

là: phải tốn thời gian dò tìm chương trình ngắt, làm chậm quá trình xử lý ngắt. Để

khắc phục nhược điểm này, người ta sử dụng một phương pháp khác, đó là daisy

chain (còn được gọi dò ngắt bằng phần cứng). Khi nhận được yêu cầu ngắt, vi xử lý

sẽ gởi lại một tín hiệu xác nhận ngắt. Tín hiệu này được đưa lần lượt qua từng ngoại

vi cho đến khi gặp ngoại vi đang có yêu cầu ngắt. Sau đó, ngoại vi đưa một word

lên bus dữ liệu. Word này còn được gọi là vector ngắt, chứa nhiều thông tin, trong

đó bao gồm cả địa chỉ của chương trình ngắt. Vi xử lý đọc vector ngắt, và chuyển

đến chương trình ngắt tương ứng bắt đầu từ địa chỉ chứa trong vector ngắt này.

Hệ thống máy tính có rất nhiều ngoại vi, mỗi ngoại vi đều có thể tạo yêu cầu

ngắt để truyền dữ liệu. Trong trường hợp có nhiều yêu cầu ngắt xuất hiện cùng một

lúc, thông thường yêu cầu ngắt nào có tính cấp thiết hơn sẽ được đáp ứng trước.

Việc phân xử để xác định thứ tự đáp ứng ngắt được thực hiện bằng bộ điều khiển

ngắt. Tùy theo đặc điểm của từng hệ thống, mức độ ưu tiên ngắt của các ngoại vi có

thể khác nhau, nhưng nhìn chung các ngoại vi sau thường có ưu tiên ngắt cao hơn

so với các ngoại vi còn lại, đó là: bộ xử lý đồ họa, điều khiển bộ nhớ, điều khiển

PCIe, ethernet. Việc quy định mức độ ưu tiên ngắt của các ngoại vi thường do

người thiết kế hệ thống quyết định. Bộ điều khiển ngắt được lập trình để phân xử

ngắt đúng theo những quy định này.

Lấy ví dụ với vi xử lý 8086 của Intel, ngõ vào yêu cầu ngắt có hai chân là

INTR và NMI. Chân INTR thường được kết nối với ngõ ra INT của bộ điều khiển

ngắt 8259A. Ngoài chức năng phân xử ngắt, 8259A còn được sử dụng để mở rộng

số lượng ngõ vào yêu cầu ngắt, đáp ứng cho các hệ thống có nhiều ngoại vi. Các

yêu cầu ngắt vào chân INTR (thông qua 8259A) là các ngắt có thể che được, nghĩa

76

là có thể được hoặc không được đáp ứng. Các yêu cầu ngắt vào chân NMI là các

yêu cầu không che được, nghĩa là các yêu cầu này luôn được đáp ứng. Do đó, chân

NMI thường được sử dụng cho các yêu cầu ngắt quan trọng liên quan đến lỗi phần

cứng như: lỗi pin, lỗi bộ nhớ, …

5.2. Truy cập trực tiếp bộ nhớ

Kỹ thuật truyền dữ liệu sử dụng ngắt có khả năng đáp ứng nhanh nhưng việc

truyền dữ liệu vẫn phải được thực hiện thông qua vi xử lý. Nghĩa là, trong chương

trình ngắt, vi xử lý phải đọc dữ liệu từ ngoại vi muốn truyền dữ liệu (còn gọi là

nguồn) và ghi dữ liệu xuống ngoại vi cần nhận dữ liệu (còn gọi là đích) như hình

5.3. Việc này gần như ít ảnh hưởng đến tốc độ chung của hệ thống nếu dữ liệu cần

truyền có dung lượng nhỏ. Tuy nhiên, khi cần truyền khối dữ liệu có dung lượng

lớn, với nguồn hoặc đích là bộ nhớ hoặc thiết bị lưu trữ, kỹ thuật ngắt không còn

thích hợp do vi xử lý phải truyền và nhận lượng lớn dữ liệu cùng với việc có thể

truy cập đến các bộ nhớ hoặc thiết bị lưu trữ có tốc độ thấp sẽ tiêu tốn rất nhiều thời

gian của vi xử lý, ảnh hưởng đến tốc độ chung của cả hệ thống.

Hình 5.3. Truyền dữ liệu thông qua vi xử lý

Để giải quyết những hạn chế của kỹ thuật ngắt, người ta thiết kế thêm một

phần cứng để hỗ trợ việc truyền dữ liệu không cần thông qua vi xử lý. Kỹ thuật này

được gọi là truy cập trực tiếp bộ nhớ (còn gọi là DMA). Phần cứng được thiết kế

thêm gọi là bộ điều khiển DMA (còn gọi là DMAC). DMAC được kết nối trực tiếp

với bus hệ thống. Chức năng chính của bộ điều khiển DMA là chuyển dữ liệu giữa

các ngoại vi, thiết bị lưu trữ và bộ nhớ trong hệ thống như mô tả trong hình 5.4. Bộ

DMAC thay thế vai trò của vi xử lý trong kỹ thuật sử dụng ngắt. Do đó, DMAC có

quyền chiếm bus khi cần truyền dữ liệu. Vi xử lý buộc phải nhường quyền kiểm

soát bus cho DMAC cho đến khi quá trình truyền dữ liệu hoàn tất.

Bộ điều khiển DMA hoạt động dựa trên một số thông tin cơ bản sau:

 Địa chỉ nguồn: địa chỉ bắt đầu của ngoại vi, thiết bị lưu trữ hoặc bộ nhớ chứa

dữ liệu cần phải truyền đi

77

 Địa chỉ đích: địa chỉ bắt đầu của ngoại vi, thiết bị lưu trữ hoặc bộ nhớ dùng

để lưu dữ liệu được truyền đến

 Cách thức đọc/ghi dữ liệu ở nguồn/đích: dữ liệu được truy xuất theo địa chỉ

tăng dần, giảm dần hoặc không đổi

 Số lượng dữ liệu: dung lượng dữ liệu (thường tính theo byte) cần được truyền

đi

Hình 5.4. Truyền dữ liệu thông qua DMAC

Dữ liệu truyền theo kỹ thuật DMA thường là các khối gồm nhiều byte dữ liệu

được lưu trữ trong các địa chỉ kế tiếp nhau hoặc không đổi (đối với bộ nhớ FIFO).

Như hình 5.5, ta có thể xác định các khối dữ liệu gồm (n+1) byte, địa chỉ đầu là a,

địa chỉ tăng dần hoặc giảm dần. Do đó, DMAC cần phải có các thông tin như trên

để truyền đi một khối dữ liệu.

Hình 5.5. Minh họa một cách xác định khối dữ liệu trong kỹ thuật DMA

Các thông tin này được lập trình cho DMAC thông qua vi xử lý. Sau khi có

lệnh DMAC sẽ thực hiện truyền dữ liệu trực tiếp mà không cần phải thông qua vi

xử lý. Trong thời gian truyền dữ liệu qua DMAC, vi xử lý có thể thực hiện các công

việc khác. Khi hoàn thành, bộ điều khiển DMA sẽ gởi một tín hiệu ngắt để thông

báo và trả lại quyền kiểm soát bus hệ thống cho vi xử lý. Như vậy, vi xử lý chỉ có

chức năng kiểm soát lúc bắt đầu và lúc kết thúc việc truyền dữ liệu.

78

Hiện nay, nhu cầu trao đổi dữ liệu trong hệ thống rất lớn, đặc biệt là giữa các

thành phần như: bộ nhớ USB, ổ đĩa cứng, mạng máy tính, … Do đó, các ngoại vi

như: điều khiển USB, SATA, Ethernet, … cũng được trang bị các bộ điều khiển

DMA riêng.

Sau đây, ta lấy ví dụ bộ điều khiển DMA tương thích với các dòng vi xử lý

Intel họ 8086, có tên là 8237A. Hình 5.6 mô tả sơ đồ kết nối 8237A với vi xử lý.

Giả sử ổ đĩa cứng (disk) muốn nhận dữ liệu từ bộ nhớ (memory) thông qua DMA.

Quá trình đồng bộ (bắt tay) để truyền dữ liệu sẽ được thực hiện như sau:

 Ngoại vi (trong trường hợp này là bộ điều khiển ổ đĩa) sẽ gởi một yêu cầu sử

dụng DMA đến 8237A bằng cách đưa tín hiệu DREQ lên mức cao.

 Chip 8237A sẽ kéo tín hiệu HRQ (kết nối với chân HOLD của vi xử lý) lên

mức cao, báo hiệu cho vi xử lý biết nó cần sử dụng bus để truyền dữ liệu

 Vi xử lý sẽ hoàn thành chu kỳ bus hiện tại và kéo chân HLDA lên mức cao

để báo cho 8237A biết nó đã có thể sử dụng bus để truyền dữ liệu. Trong lúc 8237A

thực hiện việc truyền dữ liệu, chân HOLD phải được giữ ở mức cao.

 Chip 8237A sẽ tích cực tín hiệu DACK để báo hiệu cho ngoại vi có thể thực

hiện việc truyền dữ liệu.

 Chip 8237A bắt đầu truyền dữ liệu bằng cách đặt địa chỉ của byte đầu tiên

lên bus địa chỉ và tích cực chân MEMR để đọc dữ liệu từ bộ nhớ và đặt lên bus dữ

liệu. Sau đó, 8237A sẽ tích cực chân IOW để ghi dữ liệu từ bus dữ liệu xuống ngoại

vi. Chip 8237A, sau đó, sẽ giảm bộ đếm dữ liệu, tăng (hoặc giảm tùy theo cách lập

trình) con trỏ địa chỉ và lặp lại quá trình như trên cho đến khi bộ đếm dữ liệu về 0,

hoàn thành quá trình truyền dữ liệu.

 Chip 8237A đưa chân HRQ xuống mức thấp, thông báo cho vi xử lý lấy lại

quyền điều khiển bus, đồng thời gởi cho vi xử lý một tín hiệu ngắt báo hiệu việc

truyền dữ liệu đã hoàn tất.

79

Hình 5.6. Kết nối 8237A với vi xử lý

Mỗi kỹ thuật truy xuất dữ liệu đều có những ưu điểm riêng tùy thuộc vào

điều kiện hoạt động cụ thể của hệ thống. Do đó, người ta thường sử dụng kết hợp

các kỹ thuật truy xuất dữ liệu này khi lập trình hoạt động cho vi xử lý.

5.3. Thiết bị bên ngoài

Thiết bị bên ngoài là các thành phần giúp máy tính giao tiếp với môi trường

bên ngoài. Như đã đề cập trong phần đầu của chương, các thiết bị này còn được gọi

là các thiết bị ngoại vi, giao tiếp với máy tính thông qua các bộ điều khiển I/O, còn

được gọi là ngoại vi của hệ thống máy tính. Các thiết bị bên ngoài có thể được chia

thành ba nhóm lớn:

 Các thiết bị nhập dữ liệu

 Các thiết bị xuất dữ liệu

 Các thiết bị lưu trữ

Các thiết bị ngoại vi phổ biến và quen thuộc nhất đối với con người có lẽ là:

chuột, bàn phím, màn hình máy tính và ổ đĩa cứng.

Chuột và bàn phím máy tính là các thiết bị nhập dữ liệu, thường kết nối với

máy tính thông qua cổng PS/2. Ngày nay, hầu hết các cổng PS/2 đã được thay thế

bằng cổng USB. Dữ liệu truyền qua bàn phím là các ký tự, thường được mã hóa

dưới dạng chuỗi 7 hoặc 8 bit. Hiện nay, phiên bản 7 bit, tương ứng với 128 ký tự

được sử dụng phổ biến. Các ký tự bao gồm hai loại: ký tự in được và ký tự điều

80

khiển. Ký tự in được là các ký tự chữ, số thông thường và một số ký tự đặc biệt

khác có thể hiển thị trên màn hình hoặc có thể in được trên giấy (thông qua máy in).

Các ký tự điều khiển có chức năng điều khiển việc hiển thị các ký tự trên màn hình.

Ví dụ như ký tự xuống dòng (khi ta nhấn Enter), có chức năng điều khiển con trỏ

chuyển sang dòng mới. Các phím được bố trí theo ma trận, việc xác định chuỗi bit

biểu diễn cho một ký tự khi ta nhấn phím được gọi là quét phím. Quá trình này

được một chip điều khiển quét phím chuyên dụng thực hiện. Chuỗi bit này được

truyền nối tiếp đến máy tính thông qua cổng PS/2. Dữ liệu truyền qua chuột máy

tính thường là các thông tin về tọa độ của chuột theo hai trục X và Y và thông tin về

trạng thái các nút nhấn.

Các thông tin được truyền từ chuột và bàn phím thường được tiếp nhận và

hiển thị trên màn hình. Do đó, màn hình máy tính là thiết bị xuất dữ liệu. Ngày nay,

các màn hình CRT truyền thống gần như đã được thay thế bằng các màn hình LCD

nhỏ gọn hơn rất nhiều.

Ngày nay, cùng với màn hình, máy in cũng là một thiết bị xuất dữ liệu phổ

biến trong hệ thống máy tính. Trên thị trường hiện nay có nhiều loại máy in, nội

dung môn học này chỉ đề cập đến hai loại máy in phổ biến được trang bị trong văn

phòng và các hộ gia đình, đó là máy in phun và máy in laser.

 Bộ phận quan trọng nhất của máy in laser là một ống kim loại hình trụ, rỗng,

được phủ một lớp vật liệu đặc biệt, có khả năng thay đổi điện tích khi ánh sáng laser

chiếu vào, gọi là trống (drum). Nguyên lý chung của các máy in laser là sử dụng

một hệ thống quang học lái tia laser khắc các hình ảnh cần in lên mặt trống. Sau đó,

trống được lăn qua giấy để in những hình ảnh này lên giấy. Mực máy in laser có

dạng bột, được sấy nóng chảy để bám vào giấy. Do đó, các máy in laser có thể in

được trên nhiều loại giấy mà vẫn đảm bảo được chất lượng.

 Các máy in phun sử dụng một đầu phun dùng để phun mực trực tiếp lên giấy.

Mực máy in phun có dạng lỏng nên có hai khuyết điểm như sau: bản in thường bị

lem và hình ảnh thường phai màu theo thời gian. Do đó, ta phải sử dụng đúng loại

giấy cho máy in phun, các loại giấy này thường có đặc điểm chung là không dễ bị

81

thấm nước. Để khắc phục khuyết điểm thứ hai, người ta thường sử dụng các loại

mực chất lượng cao có pha chế với chất chống bay màu.

Hiện nay, các máy in phun thường được sử dụng để in màu. Chất lượng hình

ảnh màu của các máy in phun thường cao hơn, giá thành của máy in phun cũng rẻ

hơn so với máy in laser, tuy nhiên chi phí để in một trang giấy bằng máy in phun

đắt hơn nhiều lần so với máy in laser. Do đó, tùy vào mục đích sử dụng mà ta nên

trang bị loại máy in cho phù hợp.

Ổ đĩa cứng truyền thống là thiết bị lưu trữ dữ liệu dưới dạng từ tính. Các tín

hiệu từ tính được chuyển đổi thành các bit dữ liệu bằng một bộ chuyển đổi chuyên

dụng trước khi truyền đến máy tính. Chuẩn giao tiếp truyền thống giữa ổ đĩa cứng

và máy tính là IDE, thực hiện việc truyền dữ liệu song song. Tuy nhiên, chuẩn này

bị hạn chế về tốc độ truyền dữ liệu, nên hiện nay, chuẩn SATA truyền dữ liệu nối

tiếp, có tốc độ cao và nhỏ gọn hơn được sử dụng phổ biến hơn.

5.4. Các ngoại vi

Như đã đề cập trong phần đầu của chương, ngoại vi của vi xử lý là các khối

điều khiển I/O. Ngoại vi có một số chức năng chính như sau.

 Điều khiển và định thì

 Giao tiếp với vi xử lý

 Giao tiếp với thiết bị bên ngoài

 Đệm dữ liệu

 Phát hiện lỗi

Trong quá trình hoạt động, vi xử lý phải giao tiếp với rất nhiều thiết bị bên

ngoài. Các nguồn tài nguyên của hệ thống như bộ nhớ chính hay bus hệ thống được

chia sẻ để có thể hoạt động với nhiều ngoại vi. Vì vậy, các ngoại vi yêu cầu phải có

chức năng điều khiển và định thì để có thể điều khiển các thiết bị bên ngoài hoạt

động đồng bộ hoạt động đồng bộ trong hệ thống.

Từ hình 5.1, ta có thể thấy, các ngoại vi có hai giao diện chính.

 Giao tiếp bus: dùng để giao tiếp, trao đổi dữ liệu với vi xử lý và các thành

phần khác trong hệ thống thông qua bus. Các tín hiệu trong giao diện này phải

82

tương thích với bus, do đó, thường giống nhau cho các ngoại vi kết nối đến cùng

một bus.

 Giao tiếp với các thiết bị bên ngoài: dùng để kết nối và trao đổi dữ liệu với

các thiết bị bên ngoài. Các tín hiệu trong giao diện này hoàn toàn khác nhau giữa

các ngoại vi do thiết bị bên ngoài có các chuẩn giao tiếp khác nhau.

Tốc độ truy xuất dữ liệu của các ngoại vi và bộ nhớ không giống nhau, do đó

chức năng đệm dữ liệu là cần thiết để đảm bảo việc truyền dữ liệu giữa các thành

phần trong hệ thống diễn ra một cách đồng bộ.

Hầu hết các ngoại vi còn có chức năng phát hiện lỗi trong quá trình truyền dữ

liệu.Khi phát hiện lỗi trong dữ liệu nhận được, ngoại vi thường thông báo lỗi này

cho vi xử lý để có hướng xử lý cho phù hợp. Sử dụng parity bit là một ví dụ đơn

giản về việc dùng thêm một bit để phát hiện lỗi trong các giao thức truyền dữ liệu

nối tiếp.

CÂU HỎI ÔN TẬP CHƢƠNG 5

1. Mô tả hoạt động của vi xử lý khi nhận được yêu cầu ngắt từ ngoại vi. Vì sao phải

lưu lại trạng thái các thanh ghi trước khi thực hiện chương trình ngắt?

2. Kỹ thuật DMA là gì? Trình bày ưu điểm của việc truy xuất dữ liệu bằng kỹ thuật

DMA so với kỹ thuật ngắt.

3. Trình bày quá trình xảy ra trong hệ thống khi có một yêu cầu truy xuất dữ liệu

bằng kỹ thuật DMA.

4. Thiết bị ngoại vi được kết nối với máy tính thông qua thành phần nào trong hệ

thống. Mô tả đặc điểm chính của các thành phần này.

83

TÀI LIỆU THAM KHẢO

[1]. Tống Văn On, Giáo trình Cấu trúc máy tính, Nhà xuất bản Lao động – Xã hội,

2007.

[2]. Paul A.Carter, PC Assembly Language, 2006.

[3]. William Stallings, Computer Organization and Architecture (Ninth Edition),

Prentice Hall, 2012

[4]. Linda Null, Julia Lobur, The Essentials of Computer Organization and

Architecture, Jones and Bartlett Publishers, 2003.

84