Bộ xử lý trung tam cpu

3. Đặc điểm của các thế hệ máy tính điện tử

1.1 Bộ xử lý trung tâm (CPU)

+ Chức năng:

- Điều khiển hoạt động của máy tính . - Xử lý dữ liệu .

+ Nguyên tắc hoạt động cơ bản: CPU hoạt động theo chương trình nằm trong bộ nhớ chính.

Cấu trúc cơ bản của CPU:

Hình 2.2: Cấu trúc cơ bản của CPU

Các thành phần cơ bản của CPU

- Đơn vị điều khiển (Control Unit – CU): điều khiển hoạt động của máy tính theo chương trình đã định sẵn.

- Đơn vị số học và logic (Arithmetic and Logic Unit – ALU): thực hiện các phép toán số học và các phép toán logic trên các dữ liệu cụ thể.

- Tập thanh ghi (Register File - RF): lưu giữ các thông tin tạm thời phục vụ cho hoạt động của CPU.

- Đơn vị nối ghép bus (Bus interface Unit - BIU): kết nối và trao đổi thông tin giữa bus bên trong (internal bus) và bus bên ngoài (external bus).

Đơn vị điều

khiển (CP) học và logic Đơn vị số

(ALU)

Tập

thanh ghi (RF).

Đơn vị ghép nối bus (BIU)

Bus bên ngoài

28 Bộ nhớ ngoài Bộ nhớ trong CPU 1.2 Bộ nhớ máy tính

- + Chức năng: lưu trữ chương trình và dữ liệu.

- + Các thao tác cơ bản với bộ nhớ: - Đọc (Read)

- Ghi (Write)

- + Các thành phần chính:

- Bộ nhớ trong (Internal Memory) - Bộ nhớ ngoài (External Memory)

Hình 2.3: Bộ nhớ máy tính

➢ Bộ nhớ trong (Internal memory) - Chức năng và đặc điểm:

+ Chứa các thông tin mà CPU có thể trao đổi trực tiếp. + Tốc độ rất nhanh.

+ Dung lượng không lớn.

+ Sử dụng bộ nhớ bán dẫn: ROM, RAM.

- Các loại bộ nhớ trong: Bộ nhớ chính, Bộ nhớ cache (bộ nhớ đệm nhanh). ▪ Bộ nhớ chính (Main memory)

- Chứa các chương trình và dữ liệu đang được CPU sử dụng.

- Tổ chức thành các ngăn nhớ được đánh địa chỉ.

- Ngăn nhớ thường được tổ chức theo byte.

- Nội dung của ngăn nhớ có thể thay đổi, song địa chỉ vật lý của ngăn nhớ luôn cố định.

▪ Bộ nhớ đệm nhanh (Cache memory)

- Bộ nhớ có tốc độ nhanh được đặt đệm giữa CPU và bộ nhớ chính nhằm tăng tốc độ CPU truy nhập bộ nhớ.

- Dung lượng nhỏ hơn bộ nhớ chính

- Tốc độ nhanh hơn

- Cache thường được chia thành một số mức

29

- Cache có thể có hoặc không

Hình 2.4: Bộ nhớ đệm Cache

➢ Bộ nhớ ngoài (External memory)

- Chức năng và đặc điểm:

+ Lưu giữ tài nguyên phần mềm của máy tính.

+ Được kết nối với hệ thống dưới dạng các thiết bị vào-ra. + Dung lượng lớn.

+ Tốc độ chậm.

- Các loại bộ nhớ ngoài:

+ Bộ nhớ từ: đĩa cứng, đĩa mềm. + Bộ nhớ quang: đĩa CD, DVD.

+ Bộ nhớ bán dẫn: Flash disk, memory card.

1.3 Hệ thống vào - ra

- Chức năng: Trao đổi thông tin giữa máy tính với thế giới bên ngoài. - Các thao tác cơ bản: + Vào dữ liệu (Input)

+ Ra dữ liệu (Output)

- Các thành phần chính:

+ Các thiết bị ngoại vi (Peripheral Devices): chuyển đổi dữ liệu giữa bên trong và bên ngoài máy tính.

Thiết bị vào: bàn phím, chuột, máy quét ... Thiết bị ra: màn hình, máy in ...

+ Các mô-đun vào ra (IO Modules): nối ghép các thiết bị ngoại vi với máy tính.

30

1.4 Liên kết hệ thống

Luồng thông tin trong máy tính trong đó có các mô đun trong máy tính như CPU, mô đun nhớ, mô đun vào ra cần được kết nối với nhau.

Hình 2.5 Kết nối mô đunnhớ

Hình 2.6 Kết nối mô đun vào ra

31 Kết nối và vận chuyển thông tin giữa các thành phần với nhau.Để thực hiện được điều đó chúng ta có khái niệm bus.Bus là đường truyền tín hiệu điện chung nối các thiết bị khác nhau trong một hệ thống máy tính. Bus thường bao gồm 50 đến 100 dây dẫn được gắn chặt với mainboard, trên các dây này có các đường nối đưa ra, các đầu này được sắp xếp và cách nhau một khoảng quy định để có thể cắm vào đó các bảng mạch điều khiển vào ra hoặc bộ nhớ. Chúng ta sẽ tìm hiểu kĩ hơn hệ thống bus ở chương 6 trong giáo trình.

2. Kiến trúc các tp lnh CISC và RISC

Mc tiêu:Hiểu được kiến trúc tập lệnh Cisc và Risc

2.1. Kiến trúc tập lệnh CISC

Các kiến trúc với tập lệnh phức tạp CISC (Complex Instruction Set Computer) được nghĩ ra từ những năm 1960. Vào thời kỳ này, người ta nhận thấy các chương trình dịch khó dùng các thanh ghi, rằng các vi lệnh được thực hiện nhanh hơn các lệnh và cần thiết phải làm giảm độ dài các chương trình. Các đặc tính này khiến người ta ưu tiên chọn các kiểu ô nhớ - ô nhớ và ô nhớ - thanh ghi, với những lệnh phức tạp và dùng nhiều kiểu định vị. Điều này dẫn tới việc các lệnh có chiều dài thay đổi và như thế thì dùng bộ điều khiển vi chương trình là hiệu quả nhất.

Bảng 2.1 cho các đặc tính của vài máy CISC tiêu biểu. Ta nhận thấy cả ba máy đều có điểm chung là có nhiều lệnh, các lệnh có chiều dài thay đổi. Nhiều cách thực hiện lệnh và nhiều vi chương trình được dùng.

Tiến bộ trong lãnh vực mạch kết (IC) và kỹ thuật dịch chương trình làm cho các nhận định trước đây phải được xem xét lại, nhất là khi đã có một khảo sát định lượng về việc dùng tập lệnh các máy CISC.

Năm sản xuất Sốlệnh Bộ nhớ vi chương trình Chiều dài lệnh (tính bằng bit) Kỹ thuật chế tạo Cách thực hiện lệnh Dung lượng cache

1973 208 420 KB

16 - 48 ECL - MSI Thanh ghi- thanh ghi Thanh ghi - bộ nhớ Bộ nhớ - bộ nhớ 1978 303 480 KB 16 - 456 TTl - MSI Thanh ghi - thanh ghi

Thanh ghi - bộ nhớ Bộ nhớ - bộ nhớ 64 KB 1982 222 64 KB 6 - 321 NMOS VLSI Ngăn xếp Bộ nhớ- bộ nhớ 0

32

2.2. Kiến trúc tập lệnh RISC

Ví dụ, chương trình dịch đã biết sử dụng các thanh ghi và không có sự khác biệt đáng kể nào khi sử dụng ô nhớ cho các vi chương trình hay ô nhớ cho các chương trình. Điều này dẫn tới việc đưa vào khái niệm về một máy tính với tập lệnh rút gọn RISC vào đầu những năm 1980. Các máy RISC dựa chủ yếu trên một tập lệnh cho phép thực hiện kỹ thuật ống dẫn một cách thích hợp nhất bằng cách thiết kế các lệnh có chiều dài cố định, có dạng đơn giản, dễ giải mã. Máy RISC dùng kiểu thực hiện lệnh thanh ghi - thanh ghi. Chỉ có các lệnh ghi hoặc đọc ô nhớ mới cho phép thâm nhập vào ô nhớ. Bảng 2.2 diễn tả ba mẫu máy RISC đầu tiên: mẫu máy của IBM (IBM 801) của Berkeley (RISC1 của Patterson) và của Stanford (MIPS của Hennessy). Ta nhận thấy cả ba máy đó đều có bộ điều khiển bằng mạch điện (không có ô nhớ vi chương trình), có chiều dài các lệnh cố định (32 bits), có một kiểu thi hành lệnh (kiểu thanh ghi - thanh ghi) và chỉ có một số ít lệnh.

Bộ xử lý IBM 801 RISC1 MIPS

Năm sản xuất Sốlệnh Dung lượng bộ nhớ vi chương trình Độ dài lệnh (tính bằng bit) Kỹ thuật chế tạo Cách thực hiện lệnh 1980 120 0 32 ECL MSI Thanh ghi-thanh ghi 1982 39 0 32 NMOS VLSI Thanh ghi-thanh ghi 1983 55 0 32 NMOS VLSI Thanh ghi-thanh ghi

Bảng 2.2 : Đặc tính của ba mẫu đầu tiên máy RISC

Tóm lại, ta có thể định nghĩa mạch xử lý RISC bởi các tính chất sau: - Có một số ít lệnh (thông thường dưới 100 lệnh ).

- Có một số ít các kiểu định vị (thông thường hai kiểu: định vị tức thì và định vị gián tiếp thông qua một thanh ghi).

- Có một số ít dạng lệnh (một hoặc hai) - Các lệnh đều có cùng chiều dài.

- Chỉ có các lệnh ghi hoặc đọc ô nhớ mới thâm nhập vào bộ nhớ.

- Dùng bộ tạo tín hiệu điều khiển bằng mạch điện để tránh chu kỳ giải mã các vi lệnh làm cho thời gian thực hiện lệnh kéo dài.

- Bộ xử lý RISC có nhiều thanh ghi để giảm bớt việc thâm nhập vào bộ nhớ trong.

Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu kỳ máy.

Bộ xử lý RISC có các lợi điểm sau :

- Diện tích của bộ xử lý dùng cho bộ điều khiển giảm từ 60% (cho các bộ xử lý CISC) xuống còn 10% (cho các bộ xử lý RISC). Như vậy có thể tích hợp thêm vào bên trong bộ xử lý các thanh ghi, các cổng vào ra và bộ nhớ cache...

- Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều thanh ghi (ít thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên tục và

33

có hiệu quả (các lệnh đều có thời gian thực hiện giống nhau và có cùng dạng). - Thời gian cần thiết để thiết kế bộ điều khiển là ít. Điều này góp phần làm giảm chi phí thiết kế.

- Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà ta gặp thường trong bộ điều khiển.

Trước những điều lợi không chối cãi được, kiến trúc RISC có một số bất lợi: ➢ Các chương trình dài ra so với chương trình viết cho bộ xử lý CISC. Điều

này do các nguyên nhân sau :

+ Cấm thâm nhập bộ nhớ đối với tất cả các lệnh ngoại trừ các lệnh đọc và ghi vào bộ nhớ. Do đó ta buộc phải dùng nhiều lệnh để làm một công việc nhất định.

+ Cần thiết phải tính các địa chỉ hiệu dụng vì không có nhiều cách định vị. + Tập lệnh có ít lệnh nên các lệnh không có sẵn phải được thay thế bằng một chuỗi lệnh của bộ xử lý RISC.

➢ Các chương trình dịch gặp nhiều khó khăn vì có ít lệnh làm cho có ít lựa chọn để diễn dịch các cấu trúc của chương trình gốc. Sự cứng nhắc của kỹ thuật ống dẫn cũng gây khó khăn.

➢ Có ít lệnh trợ giúp cho ngôn ngữ cấp cao.

Các bộ xử lý CISC trợ giúp mạnh hơn các ngôn ngữ cao cấp nhờ có tập lệnh phức tạp. Hãng Honeywell đã chế tạo một máy có một lệnh cho mỗi động từ của ngôn ngữ COBOL.

Các tiến bộ gần đây cho phép xếp đặt trong một vi mạch, một bộ xử lý RISC nền và nhiều toán tử chuyên dùng.

Thí dụ, bộ xử lý 860 của Intel bao gồm một bộ xửlý RISC, bộ làm tính với các số lẻ và một bộ tạo tín hiệu đồ hoạ.

3. Mã lnh

Mục tiêu:nắm được lệnh máy,hiểu được mã lệnh

3.1 Khái niệm lệnh máy, mã lệnh

Một lệnh mô tả bằng mã nhị phân có thể dài từ 1 đến 6 byte. Cấu trúc chung của một lệnh bao gồm:

Mã lệnh Toán hạng

Mã lệnh nhằm xác định tương ứng với lệnh là hoạt động hay thao tác nào cần được thực hiện.

Các toán hạng là đối tượng được xử lý bởi lệnh.

Ví dụ: Trong lệnh MOV AX,BX thì MOV là mã lệnh, xác định đây là lệnh chuyển dữ liệu. AX,BX xác định toán hạng được xử lý bởi lệnh.

34

3.2 Tập lệnh

Mỗi bộ xử lý có một tập lệnh xác định. Tập lệnh thường có hàng chục đến hàng trăm lệnh. Mỗi lệnh là một chuỗi nhị phân mà bộ xử lý hiểu được để thực hiện một thao tác xác định

Các lệnh được mô tả bằng kí hiệu gợi nhớ.

3.2.1 Các kiểu thao tác

* Gán trị

Việc gán trị, gồm cả gán trị cho biểu thức số học và logic, được thực hiện nhờ một số lệnh mã máy. Cho các kiến trúc RISC, ta có thể nêu lên các lệnh sau :

- Lệnh bộ nhớ

LOAD Ri, M (địa chỉ) ; M[địa chỉ] ← Ri : nạp dữ liệu. STORE Ri, M(địa chỉ); Ri ← M[địa chỉ] : Cất dữ liệu. Địa chỉ được tính tuỳ theo kiểu định vị được dùng.

- Lệnh tính toán số học: tính toán số nguyên trên nội dung của hai thanh ghi Ri, Rj và xếp kết quả vào trong Rk:

ADD (cộng) ADDD (cộng số có dấu chấm động, chính xác kép) SUB (trừ) SUBD (trừ số có dấu chấm động, chính xác kép) MUL (nhân) DIV (chia)

- Lệnh logic: thực hiện phép tính logic cho từng bit một. AND (lệnh VÀ)

OR (lệnh HOẶC)

XOR (lệnh HOẶC LOẠI) NEG (lệnh lấy số bù 1 )

35

Hình 2.5: Minh hoạ lệnh dịch chuyển và quay vòng

- Các lệnh dịch chuyển số học hoặc logic (SHIFT ), quay vòng (ROTATE) có hoặc không có số giữ ở ngã vào, sang phải hoặc sang trái. Các lệnh này được thực hiện trên một thanh ghi và kết quả lưu giữ trong thanh ghi khác. Số lần dịch chuyển (mỗi lần dịch sang phải hoặc sang trái một bit) thường được xác định trong thanh ghi thứ ba. Hình 2.5 minh hoạ cho các lệnh này.

Cho các kiến trúc kiểu RISC, ta có :

SLL (shift left logical : dịch trái logic) SRL (shift right logical : dịch phải logic) SRA (shift right arithemtic : dịch phải sốhọc) * Lệnh có điều kiện

Lệnh có điều kiện có dạng :

Nếu <điều kiện> thì <chuỗi lệnh 1> nếu không <chuỗi lệnh 2> (IF <condition> THEN <instructions1> ELSE <instructions2>)

Lệnh này buộc phải ghi nhớđiều kiện và nhảy vòng nếu điều kiện được thoả.

a) Ghi nhớđiều kiện .

Bộ làm tính ALU cung cấp kết quả ở ngã ra tuỳ theo các ngã vào và phép tính cần làm. Nó cũng cho một số thông tin khác về kết quả dưới dạng các bit trạng thái. Các bit này là những đại lượng logic ĐÚNG hoặc SAI (Hình 2.6).

Trong các bit trạng thái ta có bit dấu S (Sign - Đúng nếu kết quả âm), bit trắc nghiệm zero Z (Zero - Đúng nếu kết quả bằng không), bit tràn OVF

(Overflow) ĐÚNG nếu phép tính số học làm thanh ghi không đủ khả năng lưu trữ kết quả, bit số giữ C (carry) ĐÚNG nếu số giữ ở ngã ra là 1 .... Các bit trên thường được gọi là bit mã điều kiện.

36

Hình 2.6: Bit trạng thái mà ALU tạo ra

Có hai kỹ thuật cơ bản để ghi nhớ các bit trạng thái:

Cách thứ nhất, ghi các trạng thái trong một thanh ghi đa dụng. Ví dụ lệnh CMP Rk, Ri, Rj

Lệnh trên sẽ làm phép tính trừ Ri - Rj mà không ghi kết quả phép trừ, mà lại ghi các bit trạng thái vào thanh ghi Rk. Thanh ghi này được dùng cho một lệnh nhảy có điều kiện. Điểm lợi của kỹ thuật này là giúp lưu trữ nhiều trạng thái sau nhiều phép tính để dùng về sau. Điểm bất lợi là phải dùng một thanh ghi đa dụng để ghi lại trạng thái sau mỗi phép tính mà số thanh ghi này lại bị giới hạn ở 32 trong các bộ xử lý hiện đại.

Cách thứ hai, là để các bit trạng thái vào một thanh ghi đặc biệt gọi là thanh ghi trạng thái. Vấn đề lưu giữ nội dung thanh ghi này được giải quyết bằng nhiều cách. Trong kiến trúc SPARC, chỉ có một số giới hạn lệnh được phép thay đổi thanh ghi trạng thái ví dụ như lệnh ADDCC, SUBCC (các lệnh này thực hiện các phép tính cộng ADD và phép tính trừ SUB và còn làm thay đổi thanh ghi trạng thái). Trong kiến trúc PowerPC, thanh ghi trạng thái được phân thành 8 trường, mỗi trường 4 bit, vậy là thanh ghi đã phân thành 8 thanh ghi trạng thái con.

b) Nhảy vòng

Các lệnh nhảy hoặc nhảy vòng có điều kiện, chỉ thực hiện lệnh nhảy khi điều kiện được thoả. Trong trường hợp ngược lại, việc thực hiện chương trình được tiếp tục với lệnh sau đó. Lệnh nhảy xem xét thanh ghi trạng thái và chỉ nhảy nếu điều kiện nêu lên trong lệnh là đúng.

Chúng ta xem một ví dụ thực hiện lệnh nhảy có điều kiện.

Giả sử trạng thái sau khi bộ xử lý thi hành một tác vụ, được lưu trữ trong thanh

ALU Số giữ Toán hạng Kết Toán hạng Bit S Bit Z Bit OVF Bit C

37

ghi, và bộ xử lý thi hành các lệnh sau :

1. CMP R4, R1, R2 : So sánh R1 và R2 bằng cách trừ R1 cho R2 và lưu giữ trạng thái trong R4

2. BGT R4, +2 : Nhảy bỏ 2 lệnh nếu R1 > R2

3. ADD R3, R0, R2 : R0 có giá trị 0. Chuyển nội dung của R2 vào R3

4. BRA +1 : nhảy bỏ 1 lệnh

5. ADD R3, R0, R1 : chuyển nội dung R1 vào R3

6. Lệnh kế

Nếu R1 > R2 thì chuỗi lệnh được thi hành là 1, 2, 5, 6 được thi hành, nếu không thì chuỗi lệnh 1, 2, 3, 4, 6 được thi hành.

Chuỗi các lệnh trên , trong đó có 2 lệnh nhảy, thực hiện công việc sau đây : Nếu R1 > R2 thì R3 = R1 nếu không R3 = R2

Các lệnh nhảy làm tốc độ thi hành lệnh chậm lại, trong các CPU hiện đại dùng kỹ thuật ống dẫn. Trong một vài bộ xử lý người ta dùng lệnh di chuyển có điều kiện để tránh dùng lệnh nhảy trong một vài trường hợp. Thí dụ trên đây