Gi¸o tr×nh VI xö lý TỔng quan về CÁc bộ VI xử LÝ CỦa intel


CHƯƠNG 2: CÁC BỘ VI XỬ LÝ TIÊN TIẾN CỦA INTEL



tải về 0.85 Mb.
trang2/6
Chuyển đổi dữ liệu23.08.2016
Kích0.85 Mb.
#25990
1   2   3   4   5   6

CHƯƠNG 2: CÁC BỘ VI XỬ LÝ TIÊN TIẾN CỦA INTEL


2.1. BỘ VI XỬ LÝ 80286

Về cơ bản, bộ vi xử lý 80286 có cấu trúc giống như 8086, nhưng có một số đặc điểm khác biệt như sau:



2.1.1. Các thanh ghi

Bộ vi xử lý 80286 có thêm một số thanh ghi


- Thanh ghi từ trạng thái (MSW - Machine Status Word)

15 4 3 2 1 0






TS

EM

MP

PE

TS - Task Switch: chuyển nhiệm vụ

EM - Emulation: cho phép mô phỏng bộ đồng xử lý

MP - Math Present: Cho biết có bộ đồng xử lý

PE - Protection Enable: Cho phép chế độ bảo vệ

- Thanh ghi nhiệm vụ (TR - Task Register)

- Thanh ghi bảng mô tả cục bộ (LDTR - Local Descriptor Table Register)

- Thanh ghi bảng mô tả toàn cục (GDTR - Global Descriptor Table Register)

- Thanh ghi bảng mô tả ngắt (IDTR - Interrupt Descriptor Table Register)

15 Bộ chọn 0 23 Địa chỉ cơ sở 0 15 Độ dài 0










TR










LDTR






















IDTR










GDTR

- Các thanh ghi đoạn: bao gồm 2 phần

Phần hở: gồm 16 bit có thể nạp được bằng chương trình gọi là bộ chọn

Phần kín: gồm 48bit do CPU tự nạp

+ 8bit quyền truy nhập (Access Right)

+ 24bit địa chỉ cơ sở (Base Address)

+ 16bit độ dài đoạn (Limit)

Phần hở Phần kín


Bộ chọn




Quyền

truy nhập



Địa chỉ cơ sở

Độ dài đoạn

CS













DS













SS













ES













FS













GS













2.1.2. Tập lệnh

80286 có thêm một số lệnh đặc quyền

- LGDT: Nạp thanh ghi GDTR, địa chỉ cơ sở 24bit, độ dài 16bit

- LIDT: Nạp thanh ghi IDTR, địa chỉ cơ sở 24bit, độ dài 16bit

- LLDT: Nạp phần chọn của thanh ghi LDTR, độ dài 16bit

- LTR: Nạp phần chọn của thanh ghi TR, độ dài 16bit

- LMSW: Nạp từ trạng thái máy

- CLTS: xoá bit TS (task Switch)

- HALT: Dừng hoạt động của CPU

2.2. BỘ VI XỬ LÝ 80386



2.2.1. Sơ đồ khối của 80386

2.2.2. Các thanh ghi

a/ Các thanh ghi đa năng, thanh ghi cờ và con trỏ lệnh

Các thanh ghi của bộ vi xử lý 80386 có độ dài 32 bit, song vẫn giữ nguyên phần 16bit đầu được truy nhập tương tự như các thanh ghi tương tự trong 8086.





31 16

15 8

7 0

EAX




AH

AL

EBX




BH

BL

ECX




CH

CL

EDX




DH

DL

ESI




SI

EDI




DI

EBP




BP

ESP




SP










EIP




IP










EFlags




Flags

b/ Các thanh ghi đoạn

Bao gồm 2 phần

Phần hở: gồm 16 bit có thể nạp được bằng chương trình gọi là bộ chọn

Phần kín: gồm 64 bit do CPU tự nạp

+ 12 bit quyền truy nhập (Access Right)

+ 32 bit địa chỉ cơ sở (Base Address)

+ 20 bit độ dài đoạn (Limit)

Phần hở Phần kín



Bộ chọn




Địa chỉ cơ sở

Độ dài đoạn

Quyền truy nhập

CS













DS













SS













ES













FS













GS













15 0




32bit

20bit

12bit

c/ Các thanh ghi điều khiển

Có 4 thanh ghi điều khiển 32 bit được đặt là: CR0, CR1, CR2, CR3



31
















0

PG




r

TS

EM

MP

PE

Dự trữ

Địa chỉ tuyến tính trang có lỗi

Địa chỉ cơ sở của thư mục trang

12 bit dự trữ

PG - Paging (Trang)

r - reversed (dự trữ)

TS - Task Switch: chuyển nhiệm vụ

EM - Emulation: cho phép mô phỏng bộ đồng xử lý

MP - Math Present: Cho biết có bộ đồng xử lý

PE - Protection Enable: Cho phép chế độ bảo vệ

d/ Các thanh ghi hệ thống

- Thanh ghi nhiệm vụ (TR - Task Register)

- Thanh ghi bảng mô tả cục bộ (LDTR - Local Descriptor Table Register)

- Thanh ghi bảng mô tả toàn cục (GDTR - Global Descriptor Table Register)

- Thanh ghi bảng mô tả ngắt (IDTR - Interrupt Descriptor Table Register)

15 Bộ chọn 0 31 Địa chỉ cơ sở 0 15 Độ dài 0












TR










LDTR






















IDTR










GDTR

GDTR và IDTR chứa 32 bit địa chỉ cơ sở tuyến tính và 16 bit giới hạn độ dài của các đoạn GDT và IDT.

LDTR và TR có hai phần: phần chọn đoạn hệ thống (thanh ghi chọn đoạn hệ thống) và phần chứa bộ mô tả quy chiếu đoạn này (thanh ghi mô tả đoạn hệ thống). LDTR chứa bộ chọn 16 bit trỏ đến bộ mô tả của LDT và TSS sẽ được sao sang phần kín của các thanh ghi LDTR và TR. Mỗi một nhiệm vụ có một LDT và TSS riêng.

e/ Các thanh ghi kiểm tra và gỡ rối





31 0




DR0

Địa chỉ tuyến tính của điểm dừng 0

Các thanh ghi gỡ rối

DR1

Địa chỉ tuyến tính của điểm dừng 1

DR2

Địa chỉ tuyến tính của điểm dừng 2

DR3

Địa chỉ tuyến tính của điểm dừng 3

DR6

Từ trạng thái của các điểm dừng

DR7

Từ điều khiển của các điểm dừng










TR6

Từ điều khiển kiểm tra

Các thanh ghi kiểm tra

TR7

Từ trạng thái kiểm tra

2.2.3. Quản lý bộ nhớ

2.2.3.1 Không gian nhớ và nhiệm vụ nhớ

Không gian nhớ và nhiệm vụ nhớ của 80386 cũng giống 80286, có điều khác là 80386 hoạt động với môt trường với 32 bit. Do vậy bộ nhớ trong hệ thống 80386 có thể được tổ chức theo byte (8 bit), theo từ (16 bit) hay từ kép

(32 bit). Từ được xếp như 2 byte liên tiếp, byte thấp có địa chỉ thấp, byte có địa chỉ cao, địa chỉ của từ là địa chỉ của byte thấp. Từ kép cũng được lưu trữ 4 byte theo cách như vậy.

Ngoài quản lí bộ nhớ theo đoạn (đoạn có thể có độ dài khác nhau và có thể trao đổi với bộ nhớ ngoài hay phân chia giữa các chương trình) 80386 còn có thể quản lí bộ nhớ theo trang (page) có độ dài 4 Kbyte mỗi trang.

2.2.3.2. Các đia chỉ lôgic, tuyến tính, vật lí và quản lí bộ nhớ theo trang.

Trong 80386 có 3 loại địa chỉ cần được phân biệt: địa chỉ lôgic, tuyến tính, vật lí và quản lí bộ nhớ theo trang.

Mỗi nhiệm vụ có nhiều nhất 2­­= 16k bộ chọn, offset có thể là 2= 4 Gbyte, như vậy một nhiệm vụ có cực đại 2= 64 tetrabyte. Nói cách khác, không gian địa chỉ lôgic là 2= 64 tetrabyte, trong khi không gian địa chỉ vật lí chỉ rông 4 Gbyet vì 80386 có 32 dây địa chỉ. Tổ hợp của các địa chỉ cơ sở đoạn và offset bên trong các đoạn đó tạo nên thang địa chỉ tuyến tính, có nghĩa rằng ta có thể tìm thấy các địa chỉ tuyến tính lớn hơn chỉ tới một đoạn lôgic nằm ở vùng địa chỉ thấp. Địa chỉ tuyến tính 32 bit bằng 32 bit địa chỉ cơ sở cộng với 32 bit offset. Việc sử dụng địa chỉ đoạn lôgic có vài đièu bất tiện (ví dụ như trong việc trao đổi, swapping, các đoạn nhớ với đĩa từ) nên 80386 được tran bị thêm cách quản lí bộ nhớ theo trang sẽ được trình bày trong các phần sau.

1. Định địa chỉ ở chế độ thực.

Sau khi bật nguồn hay reset, 80386 ở chế độ thực. Cơ chế địa chỉ hoá và kích thước bộ nhớ 80286 ( Kích thước cực đại là Mbyte ), vì vậy chỉ có các dây địa chỉ A2-A19 và BE0 -BE3 là tích cực. ở chế độ này bộ nhớ theo trang không được phép, do vậy địa chỉ tuyến tính cũng giống địa chỉ vật lí. Cách tính địa chỉ vật lí giống như ở 80386.

2. Định địa chỉ ở chế độ bảo vệ.

Lúc này địa chỉ lôgic được xác định bởi hai phần:

- Bộ chọn là nội dung các thanh ghi chọn đoạn 16Bit trong đó chỉ số để xác định địa chỉ cỏ sở 32 Bit của bộ mô tả đoạn.

- Offset đựoc tạo nên bởi 3 thành phần: Địa chỉ có cơ sở đoạn nhớ(base), chỉ số(index) và đọ dịch chuyển (displacement).

Việc chuyển từ chế độ thực sang chế độ bảo vệ được thực hiện bằng cách đặt bit PE trong thanh ghi CR0 bằng 1 và được nghi lại từ chế độ bảo vệ chế độ thực bằng cách xoá bit PE bằng 0.

Đơn vị quản lí đoạn sẽ chuyển địa chỉ lôgic thành địa chỉ tuyến tính 32 bit. Nếu đơn vị quản lí trang không được phép làm việc thì 32bit địa chỉ tuyến tính sẽ tương ứng với các địa chỉ vật lí.

3. Khởi động và chuyển sang chế độ bảo vệ

Ngay sau khi khởi động, 80386 làm việc ở chế độ thực. Để chuyển sang chế độ bảo vệ phải đặt bit PE của thanh ghi điều khiển CR0 bằng lệnh move CR0, R/M.

Sau khi chuyển sang chế độ bảo vệ, lệnh nhảy giữa các đoạn sẽ được thực hiện để xếp lại hàng nhận lệnh trước PQ. Tiếp theo các đoạn số liệu được nạp vào bằng các bộ chọn với giá trị khởi đầu.

Một cách khác để chuyển vào chế độ bảo vệ trong các hệ điều hành đa nhiệm là sử dụng phép chuyển nhiệm vụ đã nạp các thanh ghi. Lúc này trong GDTM ngoài các bộ mô tả đoạn số liệu và đoạn lệnh còn có hai bộ mô tả TSS. Lệnh JMP đầu tiên trong chế độ bảo vệ sẽ gây ra phép chuyển nhiệm vụ và nạp tất cả các thanh ghi các giá trị chứa trong TSS. Thanh ghi TR được khởi động để trỏ tới một bộ mô tả TSS, vì khi chuyển nhiệm vụ, thạng thái của nhiệm vụ đang thực hiện sẽ được cất vào TSS.

2.3. BỘ VI XỬ LÝ 80486

2.3.1. Các phần tử xử lí CISC và RISC

Họ 80x86 của Intel thường hoạt động theo nguyên tắc dùng vi xử lí có tập lệnh phức tạp CISC (Complex Instruction Set Computer). Đặc điểm là nó có số lượng lệnh lớn (thường hơn 300 lệnh), có khả năng định địa chỉ phức tạp, các lệnh được vi lệnh hoá có nghĩa là CPU hoạt động bằng vi chương trình.

Nghiên cứu điều tra thống kê đã chỉ ra những kết luận sau:

- Trong nhiều chương trình điển hình được xử lí bằng bộ vi xử lí CISC như nói trên thì đến 80% thời gian chạy chương trình được thực hiện bởi 20% số lệnh trong tập lệnh.

- Có những trường hợp, để đạt được cùng một kết quả thì việc chạy một chuỗi lệnh đơn giản sẽ nhanh hơ là chạy một lệnh phức tạp.

Những kết luận này là tiền đề để một loại vi xử lí khác ra đời; nó hoạt động theo phương pháp sử dụng tập lệnh ngắn gọn RISC (Reduced Instruction Set computer), thí dụ như i860 của Intel. Tập lệnh ở đây được hạn chế vào các lệnh chính yếu cần thiết trong số 20% lệnh nói trên và phần cứng được thiết kế sao cho phần tử RISC này hiểu ngay được lệnh máy do trương trình cung cấp. Do đó các lệnh loại này không cần chuyển cho bộ giải mã vi lệnh nữa mà được thực hiện ngay. Như bên phải hình 59, các lệnh máy trong hàng nhận lệnh trước PQ được trực tiếp chạy ngay mà không cần phải được giải mã thành một chuỗi các vi lệnh. Rõ ràng thời gian để thực hiện một lệnh ở đây được rút ngắn đi nhiều so với trường hợp ở bộ vi xử lí CISC.



2.3.2. vi xử lí 80486

2.3.2.1. Đặc điểm chung

Chip i486 có mật độ tích hợp rất cao gồm bên trong một vi xử lí i386 đã cải tiến, một bộ đồng xử lí toán 80387, một bộ điều khiển cache và một bộ nhớ cache 8 kbyte (Cache là một loại bộ nhớ RAM tĩnh có dung lượng nhỏ nhưng tốc độ truy cập nhanh hơn so với bộ nhớ chính là các RAM động, sẽ được đề cập tới trong các phàn sau). Giống như i386, bus số liệu và bus địa chỉ ở đây cũng rộng 32 bit, tốc đọ truyền tải dữ liệu có thể lên tới 160 Mbyte/s.

Đây là thiết kế dựa trên kết quả của việc tích hợp hai loại phần tử xử lí CISC và RISC trong cùng một chip CPU. Trong i486, các lệnh mac máy thường xuyên được sử dụng sẽ được cài đặt sẵn và có thể được thực hiện ngay, trong khi các lệnh phức tạp nhất và ít được sử dụng sẽ thông qua bộ giải mã vi lệnh. Theo phương thức này, hầu như tất cả các lệnh có thể được thực hiện gọn trong một chu kì xung nhịp đồng hồ.

Vi xử lí i486 hoàn toàn tương tích với i386 về tập lệnh và các loại số liệu. Nó cũng có thể chạy trong các chế đọ thực, bảo vệ cũng như phân loại và phân trang. Vì đơn vị đồng sử lí toán (đơn vị dấu phảy động) được tích hợp ngay trong cùng một chip với CPU nên tốc độ trao đổi dữ liệu cũng nhanh hơn so với hệ i386 và i387 tách rời.



2.3.2.2. cấu trúc bên trong i486

Bởi vì có đến 3 đơn vị xử lí cùng được tích hợp trong một chip (CPU, bộ đồng xử lí toán, bộ điều khiển cache và bộ nhớ cache) nên cấu trúc của i486 phức tạp hơn i386 nhiều. Sơ đồ khối bên trong của nó được chỉ ra trên hình 60.

Các bus số liệu, địa chỉ và số liệu được nối với bên ngoài qua khối ghép nối bus, khối này được nối trực tiếp với bộ nhớ cache bên trong vi xử lí (được gọi là cache cấp một, để phân biệt với bộ nhớ cache cấp hai nằm trên bản mạch chính ở bên ngoài vi xử lí). Bộ nhớ cache nội 8 byte này được dùng làm bộ đệm cho số liệu và lệnh đến từ bộ nhớ chính trước khi chúng được chuyển tới các thanh ghi, ALU, bộ đồng xử lí toán hoặc hàng nhận lệnh trước PQ dài 32 byte.

Khác với chu kì thâm nhập bộ nhớ cache cấp hai phải mất hai nhịp đồng hồ, việc thâm nhập cache cấp một này chỉ mất một chu kì nhịp đồng hồ. Do vậy, mặc dù dung lượng nhớ của cache nội chỉ có 8 kbyte nhưng nó vẫn cải thiện đáng kể chỉ tiêu của hệ thông. Trong trường hợp các số liệu hoặc lệnh từ bộ nhớ chính không được nạp qua cache thì chúng sẽ được đưa trực tiếp tới các thanh ghi hoặc hàng nhận lệnh trước PQ qua khối ghép nối bus. Điều này xảy ra khi i486 xử lí các số liệu rất phân tán hoặc trong trường hợp thực hiện các lệnh nhảy tới một địa chỉ xa.

Sau bộ nhớ cache, các đường lệnh và số liệu được phân tách ra. Các byte số liệu được chuyển tới các thanh ghi hoặc bộ đồng xử lí toán. Các byte lệnh được đưa vào hàng nhận lệnh trước, hàng này dài 32 byte. Đơn vị giải mã sẽ giải mã các lệnh và truyền chúng tới khối điều khiển để điều khiển các thanh ghi, khối tính số học và lôgic ALU, khối phân đoạn và bộ đồng xử lí toán. Một số lệnh không cần giải mã mà có thể chạy ngay lập tức do i486 có tích hợp cả công nghệ RISC.

Nếu các toán hạng tức thời hoặc độ dịch chuyển hiện diện trong dòng lệnh thì hàng nhận lệnh trước sẽ phân tách chúng và truyền chúng tới ALU hoặc khối phân đoạn. Các byte số liệu được cấp tới khối phân đoạn, các thanh ghi, ALU hoặc bộ đồng xử lí toán và được xử lí tại những nới đó. Hai bus dữ liệu 32 bit hình thành nên một bus dữ liệu 64 bit dùng cho việc truyền tải dữ liệu giữa CPU tương ứng với i386 và bộ đồng xử lí toán tương ứng với i387. Khác với tổ hợp i386/ 1387 thông thường, quá trình trao đổi số liệu và mã lệnh ở đây không cần chu kì bus vào/ra vì cả hai khối đã được tích hợp cả trên những chip rồi. Hơn nữa, do bề rộng dữ liệu bên trong chip lại là 64 bit khi sử dụng bộ đồng xử lí toán nên các lệnh ESC ở đây sẽ chạy nhanh hơn nhiều so với máy tính dùng i386 và 387.

Giống như các vi xử lí họ 80x86, ở đây cũng dùng các thanh ghi đoạn và thanh ghi offset. Trong khối phân đoạn, nội dung của hai thanh ghi này được kết hợp lại thành địa chỉ tuyến tính. Trong chế độ bảo vệ, khối phân đoạn sẽ thực hiện các kiểm tra cần thiết để bảo vệ các nhiệm vụ riêng biệt và bảo vệ hệ thống. Nếu chế độ trang không được kích hoạt thì địa chỉ tuyến tính này chính là địa chỉ vật lí. Nếu chế độ trang được kích hoạt thì địa chỉ tuyến tính được chuyển thành địa chỉ vật lí bởi khối phân trang.

Vì những lí do trên, CPU i486 có hiệu suất cao gấp hai đến ba lần so với các CPU trước nếu hoạt động ở cùng một tần số. Tần số hoạt động của bộ vi xử lí cũng chính là tần số của mạch tạo xung nhịp. Để thi hành đa xử lí (multiprocessing), nhiều lệnh mới đã được trang bị để dễ dàng trao đổi dữ liệu giữa các bộ vi xử lí.

Với vi xử lí 486 DX2 hoặc DX4, tần số nhịp được cấp cho CPU sẽ được nhân 2 hoặc 3 ở bên trong chip cho phép có thể tăng tốc độ của vi xử lí mà không đòi hỏi bản mạch chính cũng phải có cùng tốc độ đó. Điều này làm giảm nhẹ việc thiết kế chế tạo các bản mạch chính phải chạy ở tần số cao, do đó giá thành sản phẩm cũng được giảm theo. Thí dụ, vi xử lí i486 DX2/50MHz chỉ cần chạy với bản mạch chính 25 MHz, DX2/66MHz hay DX4/100MHz với bản mạch chính 33MHz. Theo phương án này, nhìn chung máy vi tính phải chịu thiệt về hiệu suất, vì CPU tiến hành xử lí số liệu nhanh gấp hai hoặc ba lần so với các bộ phận trên bản mạch chính, do đó có thể phải xen vào một vài chu kì đợi (wait cycle). Để giải quyết vấn đề này, một bộ nhớ cache ngoài đủ rộng để giữ tạm các lệnh và dữ liệu mà bộ vi xử lí phải đợi. Nếu được thiết kế hợp lí, hệ thống như vậy có thể đạt tới hiệu suất 80% so với các hệ thống có tốc độ xung nhịp trên bản mạch chính bằng tốc độ xung nhịp ở trong CPU.

Sự khác biệt duy nhất giữa loại 486DX và 486SX chỉ là trong 486SX không có bộ đồng xử lí toán.

2.4. CÁC BỘ VI XỬ LÝ INTEL PENTIUM

2.4.1. Đặc điểm chung

Bộ vi xử lí pentium ra đời làm cho kĩ thuật của máy PC lại thay đổi. Về phần mềm, pentium vẫn có tập lệnh, thanh ghi, các chế độ định địa chỉ và các chế độ hoạt động hoàn toàn tương thích với các CPU trước nó. Nhưng về phần cứng, pentiumcó những cải tiến đáng kể. Phiên bản đầu tiên ra đời năm 1993 được chế tạo theo công nghệ 0,8 micron BiCMOS, đó là công nghệ cho phép tạo ra các vi mạch có những phần tử tích cực trong đó có kích thước nhỏ nhất cỡ 0,8 phần triệu mét. Với công nghệ này các chip điện tử sẽ có kích thước bé hơn, tiêu thụ ita năng lượng hơn và cái chính là hiệu suất cao hơn vì các tín hiệu di chuyển trong nội bộ chip với quãng đường ngắn hơn. Với 3,1 triệu linh kiện bán dẫn trong cấu trúc gọi là superscalar xây dựng trên hai hay nhiều đường ống (pipeline), loại pentium có đặc trưng 100MIPS (Million Instruction Per Second), tức là có thể thực hiện hàng triệu lệnh trong một giây với tốc độ đồng hồ là 66 MHz. Do đó nó hoạt động nhanh gấp hai lần chip 486DX2/66 về các phép tính số nguyên và ba đến bảy lầnvới các phép tính số học có dấu phảy động. Mặc dù có bus dữ liệu rộng 64 bit nhưng pentium vẫn được thiết kế để làm việc với bus dữ liệu ngoài 32 bit tương thích với các thế hệ vi xử lí i386/i486 trước đó.



2.4.2. Cấu trúc và tính năng

Sơ đồ khối của vi xử lí pentium có thể được trình bày như sau:



- Pentium có hai bộ nhớ cache 8 kbyte riêng biệt, một dành cho lệnh một dành cho số liệu.

- Có hai hàng nhận lệnh trước 32 bit và hai bộ tính số học và lôgic ALU được cung cấp lệnh và dữ liệu trên hai đường ống song song U và V (superscalr) cho phép thi hành hai lệnh máy trong một chu kì.

- Bộ xử lí vẫn làm việc với các thanh ghi 32 bit và bus địa chỉ 32 bit nhưng có thể nối với bus số liệu ngoài là 64 bit.

- Bus nội bộ là 64 bit và 128 bit, bus từ bộ nhớ cache nội nối với các vùng đệm của các ALU rộng 256 bit. Điều này cho phép tăng tốc độ trao đổi dữ liệu trong nội bộ vi xử lí lên rất cao.

- Có một vùng nhớ gọi là vùng đêm đích rẽ nhánh BTB (branch target buffer) của lệnh đối với 256 lệnh rẽ mới đây nhất.

- Có một bộ đọc xử lí với hiệu xuất cao hơn nhiều lần các thế hệ trước nhờ các giải thuật (algorthm) nhanh hơn, cách xắp sếp bố trí lệnh cũng như có thể thực hiện đồng thời hai lệnh.

Một vài đặc trưng khác làm cho pentium phân biệt được với các vi xử lí trước là:

- Kích thước trang của bộ nhớ trong chế độ bảo vệ và ảo không chỉ hạn chế ở 4 kbyte mà có thể lên đến 2 Mbyte hay 4Mbyte.

- Khả năng tự tìm kiếm các lỗi phức tạp và gỡ rối (debugging) bằng các mạch phần cứng lắp thêm.

- Có thể tự đánh giá được hiệu suất thi hành chương trình.

Mặc dù một số vi xử lí được xây dựng trên nguyên tắc CISC nhưng pentium đã ứng dụng nhiều công nghệ mới giống như các loại vi xử lí RISC tốc độ cao, thí dụ như việc sử dụng các cấu trúc đường ống, cấu trúc superscalar và dự đoán rẽ nhánh. Điều này làm cho nó có hiệu suất cao như các vi xử lí RISC thực sự. Các lệnh chạy trong pentium được thực hiện trên cấu trúc superscalar với hai đường ống song song U và V, các cache nội bộ và vùng đệm đích rẽ nhánh BTB. Xét qua các cấu trúc này sẽ cho phép giải thích tại sao pentium lại có hiệu suất cao hơn so với các vi xử lí trước đó:

Cấu trúc superscalar với hai đường ống song song.

Việc thi hành lệnh trong các vi xử lí 80x86 và pentium được diễn ra qua 5 công đoạn:

1. Nhận lệnh trước từ bộ nhớ (Prefetch): lện máy được lấy từ bộ nhớ chuyển vào CPU.

2. Giải mã lệnh 1 (Decode 1): giải mã, phân tích để xác định loại lệnh.

3. Giải mã lệnh 2 (Decode 2): xác định địa chỉ ô nhớ cần truy nhập.

4. Thực hiện lệnh (Execute)

5. Viết các kết quả dữ liệu vào các thanh ghi và bộ nhớ (Writeback).

Nếu như mỗi công đoạn đòi hỏi tối thiểu một chu kì nhịp đồng hồ thì khi thi hành tuần tự các công đoạn này cho mỗi lệnh, thông thường phải mất tổng cộng năm chu kì nhịp. Nhưng với một cấu trúc đường ống có thể thực hiện đồng thời song song những công đoạn trên, pentium tạo ra một phương thức làm việc như sau: khi lệnh thứ (n) vừa chuyển sang công đoạn thứ hai thì một lệnh mới thứ (n+1) được đưa ngay vào công đoạn thứ nhất v.v… Nhờ đó cả thảy có 5 lệnh sẽ cùng được xử lí đồng thời trên một đường ống và có thể coi mỗi lệnh chỉ được xử lí trong một chu kì nhịp đông hồ.

Hơn thế nữa, Pentium lại có đến hai đường ống gọi tên là U và V được chế tạo hoạt động song song với nhau. Về mặt lí thuyết, nó sẽ có khả năng thi hành cùng một lúc hai lệnh. Tuy nhiên, thực tế không phải lúc nào cũng thực hiện được điều đó vì hai lệnh kế tiếp nhau thường phụ thuộc vào nhau và lúc này chỉ có thể xử lí chúgn một cách tuần tự. Một mạch đặc biệt sẽ kiểm tra tính phụ thuộc dữ liệu đó xem chúng có yêu cầu phải liên kết trong quá trình xử lí hay không. Nếu không phụ thuộc, hai lệnh sẽ được gửi tới hai đường ống theo đúng thứ tự. Quá trình có thể dẫn giải như sau:trong công đoạn

một, lệnh hiện tại sẽ đưa vaod đơn vị giải mã của đường ống U, lệnh kế tiếp vào đơn vị giải mã của đường ống V. Nếu trong công đoạn hai, mạch đặc biệt nói trên xác định có thể thực hiện đồng thời hai lệnh thì mỗi lệnh sẽ trải qua các công đoạn còn lại trong mỗi đường ống của nó, ngược lại thì lệnh trong ống U sẽ trải qua công đoạn kế tiếp như bình thường còn lệnh kế tiếp trong ống V sẽ được chuyển qua thi hành trong ống U như là lệnh theo sau lệnh hiện tại.

Bộ nhớ cache nội bộ 16 kbyte (cache cấp một)

Pentium có hai bộ nhớ cache rieng biệt, một dành cho số liệu và một dành cho lệnh. Do tốc độ nhanh lại được tích hợp ngay trong chip vi xử lí nên các lệnh và dữ liệu ở đây có thể được truy cập rất nhanh. Mỗi cache có dung lượng 8kbyete gồm hai tuyến, 128 hàng cache, mỗi hàng dài 32byte. Cả hai cache này có thể được truy xuất đồng thời từ hai đường ống U và V nhờ vào cấu trúc đan xen gấp tám (trang).

Pentium có thể hoạt động nhịp nhàng với các vi xử lí khác trong chế độ đa xử lí (mỗi vi xử lí có một cache nội riêng) nhờ được cấp một giao thức đặc biệt gọi là MESI (Modified, Exclusive, Shared, Invalid). Nó cho phép việc hỗ trợ việc đồng bộ hoá giữa các cache trong một hệ thống đa xử lí. Giao thức có chứa thủ tục bus snooping cho phép một bộ xử lí thăm dò và xử lí các thông tin được trữ trong các bộ nhớ cache của các bộ xử lí khác trong hệ thống.

Vùng đệm đích rẽ nhánh BTB.

Xét trường hợp khi CPU thực hiện một lệnh nhảy (JUMP). Lúc này, thay vì tiếp tục với lệnh kế tiếp trong bộ nhớ thì việc thi hành chương trình lại được tiếp tục với một lệnh hoàn toàn khác tại địa chỉ đích của lệnh nhảy. Điều đó dẫn tới việc phải "tống" lệnh kế tiếp trên, vốn đã nằm sẵn trong đường ống, ra ngoài và phải nạp một lệnh mới vào đường ống. Kết quả là hiệu suất của bộ xử lí sẽ bị giảm xuống vì phải mất đi một vài chu kì nhịp đồng hồ cho quá trình trên. Để khắc phục tình trạng này, petium có một vùng nhớ đệm gọi là vùng đệm đích rẽ nhánh BTB (nghĩa là vùng đệm dành cho các lệnh nhảy- IF/THEN). Nó được sử dụng trong công đoạn giải mã lệnh 1 (Decode 1) của tất cả các lệnh nhảy gần (NEAR JUMP). Nếu lệnh nhảy được thi hành, CPUsẽ cất cả địa chỉ lệnh nhảy và địa chỉ đích của lệnh vào BTB. Khi thực hiện lệnh nhảy, thay vì nạp lệnh kế tiếp theo sau lệnh nhảy vào đường ống, CPU sẽ nạp lệnh ở địa chỉ đích của lệnh nhảy. Còn nếu lệnh nhảy chưa được thi hành, tức là các địa chỉ lệnh nhảy và địa chỉ đích của nó chưa được đăng kí trong BTB thì lệnh kế tiếp theo sau lệnh nhảy sẽ được nạp vào đường ống như bình thường.

* Các pentium thế hệ mới

Trong khi thế hệ pentium đầu tiên được gọi là P5 đang được sử dụng thì Intel đã đưa ra thế hệ tiếp sau, Intel P6, với tên gọi là pentium Pro. Trên cơ sở công nghệ 0,4 micro với 250 MISP, nó có thiết kế đổi mới và tốc độ xử lí nhanh hơn nhưng lại giữ được tính tương tích hoàn toàn với tập lệnh của i386/i486. Điều đó cho phép vân sử dụng được một khối lượng đồ sộ các phần mềm DOS và Microsoft Windows trên thế giới. Chip P6 thuộc loại superscalar và superpipelining. Thay vì cho 5 công đoạn là 7 công đoạn mới trong đường ống và nó có khả năng xử lí 3 chứ không phải là 2 lệnh đồng thời như P5. Khác với pentium có thiết kế CISC, P6 được chế tạo theo công nghệ RISC nhưng sử dụng các mạch thông dịch gắn trên bản mạch chính để chuyển đổi các lệnh của i486 thành các lệnh RISC. Pentium Pro dùng phương pháp thực hiện theo suy đoán (speculative execution) để tối ưu hoá quá trình xử lí, nó là phương pháp lưu trữ và phân tích trên 30 lệnh trước khi chúng được thực hiện. Các lệnh này đều được dự đoán là chúng sắp đi qua bộ xử lí nên được hướng dân và sắp xếp thứ tự thích hợp để tối thiểu hoá thời gian xử lí. Đồng thời cũng nhờ phương pháp suy đoán này mà P6 ít gặp trường hợp phải "nhốt" lệnh trong đường ống khi có hai lệnh yêu cầu phải được hoàn thành trong cùng một lúc, như P5 đã mất rất nhiều thì giờ vì nó. Nhờ suy đoán, P6 đã nâng cao hiệu quả lên 100% so với P5. Bộ xử lí P6 còn có một số tính năng tiên tiến khác: dùng phương pháp đặt tên lại thanh ghi (register renaming) cho phép tăng số lượng thanh ghi lôgic lên nhiều để tránh trường hợp tranh chấp thanh ghi và sử dụng một ghép nối trực tiếp tốc độ cao với cache cấp hai nên không bị chậm vì bus số liệu khi truy cập cache. Với 5,5 triệu transistor, đầu tiên chạy với tốc độ 133MHz đến nay có phiên bản P6 đã chạy lên đến trên 200MHz. Các chip vi xử lí pentium 11 với công nghệ MMX (Multimedia extensions) và bộ nhớ cache nội lớn tới 32kbyte lại là một phiên bản cải tiến mới. Các chip này sử dụng ít lệnh hơn nhiều so với một CPU chuẩn thông thường. Với bộ nhớ cache nội lớn, nó có thể thực hiện các phép xử lí nhanh hơn pentium tương đương từ 7 10%. Tốc độ của nó lên tới trên 266MHz. Loại pentium II cho phép dễ dàng nâng cấp nhờ một hệ thống đóng vỏ hoàn toàn mới. Thay cho loại chíp hình vuông quen thuộc có thể cắm vào chân đế, vỏ "tiếp xúc một mạch đơn" (Single Edge Contact - SEC) của nó bao gồm một vi xử lí được đặt trên một bản mạch nhỏ (card) nằm trong hộp (cartridge) có thể cắm vào khe cắm dành riêng nằm trên bản mạch chính. Cache cấp hai nằm cạnh vi xử lí trên cugn card, cho phép nó chạy ở tốc độ cao hơn nhiều so với cache cấp hai thông thường nằm trên bản mạch chính. Trong tương lai gần có thể có những phiên bản pentium khác chạy nhanh hơn nữa do sử dụng những qui trình sản xuất mới cho phép giảm khoảng cách giữa các transistor cấu thành chip tới 0,25 micron, vì vậy có thể tăng tốc độ xung nhịp lên cao tới trên 400MHz.




tải về 0.85 Mb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương