1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Chương 2: Cấu trúc và hoạt động của vi xử lý pdf

34 3,1K 34

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cấu Trúc Và Hoạt Động Của Vi Xử Lý
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Kỹ thuật Vi xử lý
Thể loại Tài liệu học tập
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 34
Dung lượng 512 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong một số vi xử lý bộ đếm chương trình còn được gọi là con trỏ lệnh IPInstruction Pointer.. Khi đó bộ vi xử lý được gọi là đơn vị xử lýtrung tâm CPU Central Pro

Trang 1

CHƯƠNG II: CẤU TRÚC VÀ HOẠT ĐỘNG CỦA VI XỬ LÝ.

2.1. SƠ ĐỒ CẤU TRÚC TỔNG QUÁT CỦA VI XỬ LÝ.

Sơ đồ khối của một bộ vi xử lý truyền thống 8 bit được trình bày trên hình 2.1 Sơ đồkhối này đặc trưng cho hầu hết các bộ vi xử lý 8 bit đã có trên thị trường như 8085,8088/8086 và Z80… Các bộ vi xử lý các thế hệ sau sẽ có cấu trúc bên trong khác đinhưng vẫn giữ được một số nguyên tắc hoạt động cơ bản của sơ đồ này

Vi xử lý là một mạch số có thể thực hiện nhiều chức năng số khác nhau Nó sẽ thựchiện một bài toán, một công việc khi được cung cấp một chương trình Một chươngtrình là một chuỗi các tín hiệu nhị phân nối tiếp nhau, mỗi chuỗi nhị phân sẽ yêu cầu(cho phép) một chức năng của vi xử lý hoạt động Quá trình làm việc của vi xử lý baogồm hai chu kỳ chính lặp lại một cách liên tục đó là:

Acc

ALUCờ

BIU

SPPC

QueueCU

Các tín hiệu điều khiển và định thời

External BUS

Hình 2.1 Sơ đồ khối của một bộ vi xử lý 8 bit truyền thống

Internal BUS

Trang 2

- Chu kỳ lấy các mã lệnh.

- Chu kỳ thực hiện các chức năng mà lệnh yêu cầu

Tương ứng với hai chu kỳ trên có thể chia vi xử lý ra hai phần chính: Đơn vị thực hiện lệnh EU (Execution Unit), và đơn vị giao tiếp BUS (Bus Interface)

Đơn vị thực hiện lệnh bao gồm bộ giải mã lệnh, hay còn gọi là đơn vị điều khiển CU(Control Unit), sẽ đưa ra các tín hiệu cho phép chọn các khối trong VXL được phéphoạt động tùy theo mã lệnh mà nó nhận được từ BIU Tức là với các lệnh khác nhau,

CU sẽ chọn ra các khối khác nhau trong CPU hoạt động để thực hiện chức năng củalệnh đó

Một bộ phận quan trọng khác của EU là đơn vị số học và logic (ALU - ArithmeticLogic Unit ), ALU là nơi thực hiện tất cả các phép tính số học và logic mà chươngtrình yêu cầu Các toán hạng trong các phép tính mà ALU thực hiện có thể nằm trongcác thanh ghi dữ liệu, trong bộ nhớ hoặc được xác định trong chính mã lệnh

Các thanh ghi là các ô nhớ có tốc độ truy xuất rất nhanh, nằm ngay bên trong VXL.Chúng được dùng làm nơi lưu trữ các toán hạng cung cấp cho ALU, lưu trữ các dữliệu vào ra VXL, hoặc lưu trữ các địa chỉ cho phép CPU truy cập bộ nhớ hoặc I/Onhanh chóng hơn

EU không nối với thế giới bên ngoài, nó nhận lệnh từ bộ nhớ lệnh trong BIU Khilệnh cần thâm nhập bộ nhớ hay ngoại vi EU sẽ yêu cầu BIU thực hiện

Bộ nhớ lệnh là các ô nhớ chuyên để cất giữ các mã lệnh của chương trình đang thựchiện Có loại vi xử lý bộ nhớ lệnh bao gồm nhiều ô được gọi là hàng đợi lệnh (QueueInstruction) Hàng đợi này hoạt động theo nguyên tắc FIFO(Fist Input Fist Output –vào trước ra trước), khi EU lấy đi 1 byte lệnh thì BIU sẽ tự động lấy byte lệnh kế tiếpcủa chương trình lấp đầy vào hàng đợi Với hàng đợi lệnh các chu kỳ giải mã lệnh vàlấy lệnh có thể xảy ra đồng thời, nâng cao tốc độ vi xử lý Ở một số loại vi xử lý bộnhớ lệnh chỉ có 1 byte được gọi là thanh ghi lệnh IR (Instruction Register), với loạiCPU này BIU phải chờ EU thực hiện xong lệnh hiện hành mới được phép lấy vào lệnhmới

Đơn vị giao tiếp BUS: BIU thực hiện tất cả các thao tác về BUS do EU yêu cầu.Ngoài ra trong thời gian EU đang thực hiện lệnh, BIU sẽ tự động truy cập tới bộ nhớlệnh lấy các mã lệnh của chương trình sắp vào bộ nhớ lệnh, sẵn sàng cung cấp cho EUthực hiện Để giao tiếp bên ngoài BIU cung cấp cho bộ nhớ và ngoại vi các tín hiệu địachỉ, dữ liệu , điều khiển cần thiết:

- Địa chỉ cung cấp ra bên ngoài thông thường được cung cấp từ một thanh ghi địa chỉ

do CU chọn, một số trường hợp có thể từ các thanh ghi dữ liệu, hoặc từ ngay mãlệnh mà CU nhận được

- Dữ liệu được truyền ra ngoài từ một thanh ghi dữ liệu, lấy vào một thanh ghi dữliệu, hoặc lấy trực tiếp vào ALU trong các lệnh số học và logic

- Các tín hiệu điều khiển sẽ được định thời trong bộ điều khiển BUS tùy theo lệnhcụ thể

Riêng các trường hợp lấy mã lệnh, địa chỉ được BIU cung cấp từ bộ đếm chương trình

PC (Program Counter), và lấy mã lệnh từ bộ nhớ vào thanh ghi lệnh (hoặc hàng đợilệnh)

Khi bắt đầu hoạt động PC = 0, khi lấy vào 1 byte lệnh PC tăng lên 1 PC sẽ được thiếtlập giá trị mới, khi có các lệnh rẽ nhánh chuyển điều khiển chương trình

Trang 3

Trong một số vi xử lý bộ đếm chương trình còn được gọi là con trỏ lệnh IP(Instruction Pointer)

Để làm việc được VXL phải hoạt động chung với thiết bị khác như là bộ nhớ vàngoại vi, để tạo thành hệ thống VXL Khi đó bộ vi xử lý được gọi là đơn vị xử lýtrung tâm CPU (Central Processing Unit ) Phần kế tiếp sẽ miêu tả cấu trúc và hoạtđộng cụ thể, của các bộ phận chính trong một CPU

2.2. CHỨC NĂNG, HOẠT ĐỘNG CỦA CÁC THÀNH PHẦN BÊN TRONG

VI XỬ LÝ

2.2.1 Các thanh ghi (Registers).

Các thanh ghi là một bộ phận rất quan trọng trong một CPU Chúng là một số ít các

ô nhớ có tốc độ truy xuất rất nhanh, cách đánh địa chỉ đơn giản để CPU có thể truyxuất dữ liệu một cách nhanh chóng Các thanh ghi được cho phép hoạt động từ các bộchọn MUX (Multiplex) được điều khiển từ đơn vị điều khiển CU Chúng được chọnnhờ số ít các bit nhị phân trong mã lệnh

CPU có càng nhiều thanh ghi, thì tốc độ thực hiện một chương trình càng cao, dogiảm được thời gian truy xuất các hằng, biến ngoài bộ nhớ Giảm được số byte lệnh

do không phải cung cấp địa chỉ các dữ liệu toán hạng Nhưng tất nhiên khi số lượngthanh ghi quá lớn thì việc truy cập chúng cũng trở nên phức tạp như đối với các ô nhớ Để dễ dàng truy xuất, các thanh ghi được chia ra các nhóm với các chức năng riêngbiệt nào đó Các hãng sản xuất khác nhau đưa ra các tên gọi các thanh ghi khác nhau.Nhưng thông thường CPU 8 bit nào cũng ghi các thanh ghi với các chức năng sau:

- Bộ đếm chương trình (PC Program Counter ) Hay gọi là con trỏ lệnh (IPInstruction Pointer)

- Thanh ghi lệnh (IR Instruction Register) Một số CPU là hàng đợi lệnh (InstructionQueue)

- Thanh ghi địa chỉ bộ nhớ (MAR-Memory Address Register)

- Thanh ghi con trỏ ngăn xếp (SP-Stack Pointer)

- Thanh ghi chỉ số (Index Register)

- Thanh ghi đa dụng (General Register)

- Thanh ghi chứa (Accumulator Register)

- Thanh ghi cờ (Flag Register)

Các thanh ghi đều được nối chung lên BUS nội trong CPU theo sơ đồ hình 2.2

Thanh ghi bộ đếm chương trình (PC)

Ở các CPU 8 bit bộ đếm chương trình thường là 16 bit, nó có nhiệm vụ tạo ra các địachỉ cung cấp tới bộ nhớ để CPU có thể đọc vào các byte lệnh của chương trình Saukhi đọc xong một byte lệnh, PC luôn trỏ tới địa chỉ của byte lệnh kế tiếp cần lấy vào Các CPU có 16 đường địa chỉ, PC sẽ được nối thẳng tới bộ đệm địa chỉ, giá trị của nósẽ được cung cấp thẳng ra Bus địa chỉ để đưa tới bộ nhớ chương trình Tức là chươngtrình có thể nằm bất cứ nơi đâu trong vùng nhớ 64KB mà CPU quản lý

Một số CPU 8 bit quản lý bộ nhớ bằng 20 đường địa chỉ, địa chỉ vật lý 20 bit nàyđược tính toán từ một địa chỉ đoạn và một địa chỉ offset Địa chỉ đoạn sẽ được dịch trái

4 bit rồi cộng với địa chỉ offset để cung cấp địa chỉ 20 bit cho bộ đệm địa chỉ Trongtrường hợp đọc mã lệnh, địa chỉ đoạn thường được chỉ định trong thanh ghi đoạn lệnh(CS: Code Segment), và địa chỉ offset sẽ chứa trong thanh ghi con trỏ lệnh

Trang 4

Quá trình đổi địa chỉ trong CPU:

CPU được chế tạo để hoạt động theo các chương trình định sẵn Trong các hệ thốngCPU 8 bit (8 đường dữ liệu), chương trình đơn giản bao gồm các byte (8 bit) xếp lầnlượt trong các vùng nhớ có thể địa chỉ hóa được Khi hệ thống bắt đầu hoạt động, bộđếm chương trình sẽ được khởi động một giá trị qui định trước trỏ tới lệnh đầu tiên màhệ thống sẽ thực hiện Khi không có các cơ chế điều khiển chương trình, thì sau khiđọc xong một byte lệnh PC sẽ được tự động tăng lên 1, và như vậy chu kỳ đọc lệnhtiếp theo sẽ lấy lệnh tại địa chỉ kế tiếp trong bộ nhớ

Có thể có các chương trình được thực hiện từ tuần tự từ đầu đến cuối, lúc đó PC sẽtuần tự tăng lên sau mỗi lần lấy vào 1 byte lệnh như một bộ đếm bình thường Cácchương trình như vậy rất ít xảy ra trong thực tế, do các bài toán thực tế luôn phải cóphương hướng giải quyết khác nhau với các điều kiện khác nhau Có rất nhiều lệnhgây ra việc thay đổi địa chỉ không theo qui luật tuần tự Sự thay đổi tuần tự này khônggây nên một sự rối loạn nào, BUS địa chỉ của CPU dễ dàng đưa ra ngay một địa chỉbất kỳ, dù cách xa bước nhảy tuần tự bình thường như thế nào đi nữa Và các bộ nhớbán dẫn với nguyên tắc truy cập ngẫu nhiên cũng sẽ chấp nhận cơ chế này

Có ba cách để đổi địa chỉ chương trình không theo qui luật tăng tuần tự là:

- Đổi địa chỉ bằng lệnh nhảy và rẽ nhánh

- Đổi địa bằng chương trình con

- Đổi địa chỉ bằng ngắt

Đổi địa chỉ bằng lệnh nhảy và rẽ nhánh: Đổi địa chỉ bằng lệnh nhảy được chia ra hai

loại: Nhảy tuyệt đối (Jump) và nhảy tương đối (Jump Relative)

Khi CPU nhận được mã của lệnh nhảy tuyệt đối thì hai byte tiếp theo sẽ được gửi đếnnạp vào bộ đếm chương trình PC Tức là PC được thiết lập tức thời một giá trị mới,giá trị này có thể là một số bất kỳ trong khoảng 0000H FFFFH bất chấp giá trị cũ.Và byte lệnh tiếp theo được lấy vào sẽ nằm ở địa chỉ mới này

Nạp thanh ghiChuyển dữ liệu thanh ghi ra BUS

BUS nội của CPU

01nHình 2.2 Nối ghép của thanh ghi tới Bus nội

Trang 5

Khi CPU nhận được lệnh nhảy tương đối, thanh ghi PC sẽ được cộng thêm hoặc trừ

đi một lượng nào đó Lượng thêm vào hay bớt đi thường là một số nhị phân 7 bit chỉthị trong mã lệnh, phép trừ sẽ được thực hiện nếu bit cao nhất của byte này bằng 1, vàcộng thêm nếu bit này bằng 0 Tức là điều khiển chương trình sẽ chuyển đến địa chỉmới nằm trong khoảng từ -128 127 byte so với vị trí hiện tại của lệnh nhảy

Đổi địa chỉ bằng rẽ nhánh được thực hiện bằng các lệnh nhảy có điều kiện Tức làCPU thực hiện các lệnh nhảy tuyệt đối hoặc tương đối giống như trên nếu thỏa mãnđiều kiện, nếu điều kiện không thỏa PC sẽ tiếp tục được tăng lên 1 theo qui luật tuầntự Điều kiện ở đây là các cờ trạng thái bằng 1 hoặc bằng 0 (Sẽ xét tới trong phầnthanh ghi cờ ) Ví dụ sau một lệnh so sánh hai số, có thể thực hiện lệnh JE (JumpEqual- Nhảy nếu bằng) Lúc này PC có giá trị mới theo lệnh nhảy nếu hai số so sánhbằng nhau, ngược lại PC sẽ tăng lên 1

Đổi địa chỉ bằng chương trình con: Cách đổi địa chỉ này được thực hiện bằng các

lệnh gọi (Call) và quay về (Return) Khi có một đoạn lệnh nào đó cần sử dụng trongnhiều lần trong một chương trình, Để tránh viết lặp lại đoạn lệnh đó nhiều lần, có thểviết nó dưới dạng một chương trình con Khi cần thực hiện đoạn lệnh này thì gọi nóbằng lệnh gọi (CALL), tương tự như một lệnh nhảy tới đầu chương trình con, thựchiện xong điều khiển sẽ được chuyển trở về chương trình chính bằng lệnh quay về Khi gặp lệnh gọi giá trị của PC sẽ được lưu trữ trong bộ nhớ tại một nơi đặc biệt gọi làngăn xếp, rồi được nạp giá trị mới được chỉ thị trong mã lệnh gọi, chương trình sẽđược chuyển tới địa chỉ mới bất kỳ trong khoảng từ 0000 FFFFH giống như lệnhnhảy Khi có lệnh quay về, giá trị PC sẽ được phục hồi từ đỉnh ngăn xếp, chương trìnhsẽ quay về nơi nó đã chuyển đi (quay về lệnh nằm kế lệnh gọi) Các lệnh gọi chươngtrình con cũng có hai dạng không điều kiện và có điều kiện giống như các lệnh nhảy

Đổi địa chỉ bằng ngắt: Đổi địa chỉ bằng ngắt gần giống như việc đổi địa chỉ bằng các

lệnh gọi và quay về Thanh ghi PC cũng được lưu trữ và nạp giá trị mới khi có phụcvụ ngắt, và được phục hồi khi có lệnh quay về Khác biệt ở chỗ phục vụ ngắt được gọibằng xung phần cứng, mà không phải bằng lệnh gọi như trong chương trình con Địachỉ chương trình phục vụ ngắt có thể là một địa chỉ cố định được qui định trước, hoặcđược lấy từ vùng nhớ gọi là bảng vector ngắt

Có hai loại ngắt: ngắt không che, và ngắt có thể che được bằng phần mềm: Với ngắtkhông che, chương trình ngắt luôn được thực hiện khi có tín hiệu yêu cầu Còn vớingắt che, khi có tín hiệu yêu cầu CPU sẽ kiểm tra cờ ngắt, nếu cờ ngắt =1 chươngtrình ngắt thực hiện, cờ ngắt bằng 0 chương trình ngắt sẽ bị bỏ qua Cờ ngắt có thểthiết lập hay xóa bằng lệnh phần mềm Các cơ chế ngắt sẽ được mô tả kỹ trong phầnhệ thống ngắt của vi xử lý

Thanh ghi lệnh IR (Instruction Pointer).

Thanh ghi lệnh nằm ở ngõ vào của bộ giải mã lệnh Trong bộ nhớ, các lệnh của 1chương trình bao gồm hai phần: mã hoạt động (Op Code) và phía sau là các toán hạng(Operand) Op Code sẽ phân biệt các lệnh: Số học, logic, di chuyển dữ liệu, bit, nhảy,chương trình con ….Còn các toán hạng sẽ chỉ ra dữ liệu cần xử lý trong lệnh nằm ởđâu hoặc bằng bao nhiêu Thanh ghi lệnh sẽ là nơi các mã lệnh đi qua (từ ngoài bộ nhớvào bộ giải mã lệnh) Còn các toán hạng sẽ đi tới các khối khác nhau của vi xử lý tùytheo mã lệnh Ví dụ một lệnh cộng sẽ có 1 byte Op Code để phân biệt với các lệnhkhác, và các byte tiếp theo sẽ chỉ ra toán hạng của phép cộng Nó có thể là 1 giá trị sẽđược đưa thẳng tới ALU, hoặc có thể là 1 địa chỉ để lấy dữ liệu từ bộ nhớ cung cấp

Trang 6

cho ALU, khi đó địa chỉ này sẽ được đưa tới BIU để truy cập dữ liệu, cũng có thể phầntoán hạng chỉ thị dữ liệu cho lệnh nằm trong một thanh ghi dữ liệu ngay bên trongCPU.

Trong mã lệnh của vi xử lý 8 bit thường phần Op code có kích thước giống nhau(1byte) Với 8 bit sẽ phân biệt 256 tổ hợp, có nghĩa là CPU 8 bit có khả năng xử lý dễdàng 256 lệnh Trong thực tế số lệnh của CPU 8 bit ít hơn con số này mà vẫn đủ chotất cả các công việc Có rất nhiều sự trùng lặp trong các mã lệnh, chúng bao gồm nhiềucông việc giống nhau nhưng sử dụng các toán hạng khác Trong thực tế thường chỉ cókhoảng hơn 20 nhiệm vụ khác nhau cho 1 CPU, còn lại là các kiểu khác nhau của cùngmột nhiệm vụ

Trong một số CPU 8 bit thanh ghi lệnh được thay thế bằng hàng đợi lệnh, Khi đó tấtcả các byte mã lệnh của chương trình đều qua hàng đợi lệnh (kể cả mã hoạt động vàcác toán hạng) Khi bộ giải mã lệnh nhận được mã hoạt động, các toán hạng sẽ đượcchuyển từ hàng đợi lệnh tới các nơi khác nhau trong CPU Với một hàng đợi lệnh, quátrình giải mã lệnh và quá trình lấy lệnh có thể thực hiện một cách đồng thời, tốc độhoạt động của CPU sẽ được tăng lên

Thanh ghi địa chỉ bộ nhớ: (MAR: Memory Address Register).

Thanh ghi MAR được để sử dụng để giữ địa chỉ của ô nhớ cần truyền dữ liệu vớiCPU trong một chương trình Dữ liệu này có thể là dữ liệu vào ra thông thường trongcác lệnh đọc ghi, hoặc là các toán hạng trong các lệnh số học và logic Thay vì phải chỉthị địa chỉ cụ thể của ô nhớ cần truy cập trong mã lệnh, chương trình có thể sử dụngMAR để lưu trữ địa chỉ này Trong chu kỳ truy xuất, giá trị trong thanh ghi này sẽ đưa

ra BUS địa chỉ để xác định ô nhớ cần truy cập Như vậy sẽ giảm được độ dài của mã

Nạp MAR1 = 1000Nạp MAR2 = 2000

Nạp dữ liệu tại ô nhớ có địa chỉ MAR1 = 1000 vào AccNạp dữ liệu từ Acc vào ô nhớ có địa chỉ MAR2

Trang 7

lệnh, tức là giảm được độ lớn của chương trình, làm tăng tốc độ thực hiện chươngtrình và giảm dung lượng lưu trữ cần thiết cho hệ thống.

Trong một số CPU các thanh ghi địa chỉ bộ nhớ nằm ngay ở nhóm các thanh ghi đanăng Một số CPU khác các thanh ghi này là chuyên dụng Các lệnh sử dụng thanhghi địa chỉ bộ nhớ bao gồm ít byte lệnh và được thực hiện nhanh chóng hơn các lệnhchỉ ra trực tiếp địa chỉ của ô nhớ Đặc biệt trong các lệnh thao tác chuỗi dữ liệu cácthanh ghi này đóng một vai trò rất quan trọng Nhờ những thanh ghi này mà CPU cóthể di chuyển, so sánh một khối dữ liệu bằng một lệnh đơn giản với độ dài chỉ 1 hoặc 2byte Ví dụ lưu đồ hình 2.3 sử dụng một chương trình chuyển 10 byte từ vùng nhớ1000H qua vùng nhớ 2000H Trong đó vòng lặp kể từ bước thứ ba trở đi là của mộtlệnh di chuyển chuỗi

Thanh ghi con trỏ ngăn xếp (SP-Stack Pointer).

Tất cả các CPU đều có một vùng nhớ RAM làm nhiệm vụ ngăn xếp Vùng nhớ nàyhoạt động theo nguyên tắc LIFO (Last Input Fist Output- vào trước ra sau), dữ liệu nàođưa vào trước tiên sẽ được lấy ra sau cùng Để thực hiện chức năng này CPU sử dụngthanh ghi con trỏ ngăn xếp Vào đầu chương trình thanh ghi này sẽ được gán một giátrị trỏ tới một địa chỉ của vùng nhớ RAM Ngăn xếp sẽ được truy cập bằng những lệnhđặc biệt là PUSH (nạp dữ liệu vào) và POP (lấy dữ liệu ra) Khi có dữ liệu nào đượcnạp vào ngăn xếp SP tự động giảm đi, ngược lại khi lấy dữ liệu ra khỏi ngăn xếp SP sẽđược tự động tăng lên

Ví dụ vào đầu chương trình SP được gán 0100H, giá trị của SP sẽ trỏ đến ô nhớ có địachỉ 0100H (hình 2.4a) Khi CPU lệnh nạp thanh chứa Acc vào ngăn xếp(PUSH Acc),giá trị của Acc sẽ được cất vào ô nhớ có địa chỉ SP-1 =00FFH (hình 2.4b), và giá trịcủa SP bây giờ sẽ là 00FFH Nếu lấy giá trị ra một thanh ghi đa năng, SP sẽ tăng lên 1trở lại như cũ (hình 2.4c)

Khi gặp các lệnh gọi chương trình con hoặc yêu cầu ngắt, giá trị của bộ đếm chươngtrình sẽ được nạp vào đỉnh của ngăn xếp, SP sẽ tự động giảm đi 2 Khi có lệnh quayvề (Return), thanh ghi PC sẽ được phục hồi từ đỉnh ngăn xếp Vì vậy chương trình sẽquay về chỗ đã gọi nó, nếu trong chương trình con không còn dữ liệu nào nạp vào màchưa lấy được ra Vậy trong chương trình con nếu nạp vào ngăn xếp cái gì, thì trướckhi có lệnh quay về phải lấy hết ra Nếu không thanh PC phục hồi từ đỉnh ngăn xếp sẽ

Reg

Hình 2.4: Thao tác với ngăn xếp

Trang 8

chuyển điều khiển của chương trình tới địa chỉ không được quản lý, mà không phải vềnơi đã gọi nó.

Thanh ghi chỉ số: (Index).

Thanh ghi chỉ số cũng là một thanh ghi địa chỉ, được sử dụng để địa chỉ hóa các ônhớ trong chương trình Với CPU 8 bit thanh ghi chỉ số thường là16 bit Khi thanh ghichỉ số đã được nạp một giá trị nào đó, thì vùng nhớ 256 byte kể từ địa chỉ đó có thểtruy cập tới bằng kiểu chỉ số Tức là các lệnh yêu cầu thao tác với các dữ liệu trongvùng nhớ này, chỉ cần chỉ thị trong lệnh khoảng cách từ địa chỉ chứa trong thanh ghichỉ số tới địa chỉ cần truy cập, mà không cần phải chỉ thị cụ thể địa chỉ của ô nhớ đó Ví dụ khi thanh ghi chỉ số giữ giá trị 1000H, thì lệnh xử lý dữ liệu tại ô nhớ 1010Hchỉ cần cung cấp chỉ số là 10H, mà không phải đưa ra giá trị 1010H như cách địa chỉhóa thông thường

Có thể biểu diễn hoạt động địa chỉ hóa của thanh ghi chỉ số như hình 2.5

Giá trị của thanh ghi chỉ số sẽ được cộng với khoảng cách từ ô nhớ cần thao tác, đểcho ra địa chỉ cần thiết trong những lệnh có chế độ định vị địa chỉ chỉ số

Các thanh ghi đa năng (General Register).

Các thanh ghi này thông thường chiếm một số lượng lớn trong các CPU Các CPU 8bit thông thường cũng có các thanh ghi đa năng 8 bit, các thanh ghi này cũng có thểghép chung từng cặp để tạo thành các thanh ghi 16 bit Tuy không có các chức năngchuyên dụng như các thanh ghi khác, nhưng chúng có thể thực hiện hầu hết các chứcnăng mà các thanh ghi khác đảm nhiệm Thường thì các thanh ghi đa năng được sửdụng lưu trữ dữ liệu vào ra CPU, hoặc làm các biến tạm thời trong một chương trình.Ngoài ra khi sử dụng chung từng cặp chúng có thể là nơi lưu trữ dữ liệu, và làm cácbiến 16 bit, hoặc giữ địa chỉ của ô nhớ mà chương trình cần truy cập Trong các lệnhvề chuỗi thì chúng có thể được sử dụng làm các bộ đếm số lần lặp, địa chỉ trong cáclệnh về chuỗi dữ liệu…

Thanh ghi chứa: (Accumulator Register).

Thanh ghi chứa thường được các CPU sử dụng làm nơi chứa một toán hạng trong cáclệnh số học và logic, tức là nó thường án ngữ một đầu vào của đơn vị số học và logic

Internal BusIndex Register

Bộ cộngBus địa chỉ

Hình 2.5: Cung cấp địa chỉ bằng thanh ghi chỉ số

Trang 9

ALU Đồng thời thanh chứa còn được sử dụng để lưu kết quả cuối cùng của phép tínhmà ALU vừa thực hiện Với các chức năng này chiều dài các lệnh tính toán sẽ đượcgiảm ngắn, do không phải chỉ thị cả hai toán hạng và nơi lưu trữ kết quả Ngoài rathanh chứa còn được sử dụng trong các phép quay dịch, và hầu hết các lệnh về dichuyển và xử lý dữ liệu như một thanh ghi đa năng thông thường Các CPU trước đâychỉ có một thanh ghi chứa, nên các lệnh logic và số học bắt buộc phải di chuyển dữliệu tới thanh ghi chứa Càng ngày CPU càng có nhiều thanh chứa hơn, nên chươngtrình được thực hiện nhanh chóng hơn, do giảm bớt được các lệnh di chuyển dữ liệuđến thanh chứa.

Thanh ghi cờ (Flag Register).

Thanh ghi cờ còn được gọi là thanh ghi mã trạng thái CCR (Condition CodeRegister) bao gồm các bit độc lập Mỗi bit chỉ có hai trạng thái 0 hoặc 1 được gọi làcác cờ Các cờ rất ít khi tác động lẫn nhau, chúng chỉ tác động một cách độc lập tùytheo trạng thái của các phép tính mà ALU thực hiện Trạng thái các cờ là cơ sở đểCPU thực hiện các quyết định, nếu thỏa điều kiện chương trình thực hiện theo hướngnày, còn ngược lại sẽ theo một hướng khác, tạo ra sự rẽ nhánh cho các chương trìnhphù hợp với bài toán thực tế

Trong CPU 8 bit thường thanh ghi cờ 8 bit, số lượng các bit được sử dụng và các kiểucờ hiệu khác nhau tùy thuộc vào từng loại CPU Các cờ thông thường của một CPUgồm:

Cờ nhớ (Carry Flag).

Cờ nhớ được sử dụng làm bit dữ trữ khi kết quả các phép tính mà ALU thực hiện vượt

ra ngoài giới hạn lưu trữ cho phép của thanh chứa Ví dụ khi sử dụng các thanh ghi 8bit để cộng hai số 8 bit, kết quả có thể là 9 bit và cờ C sẽ giữ bit thứ 9 Tương tự khicộng hai số 16 bit cờ C sẽ giữ bit thứ 17 của kết quả

Cờ nhớ cũng được thiết lập mức 1 khi ALU thực hiện phép trừ, giảm hoặc so sánh cókết quả âm Tức là cờ CF =1 khi số bị trừ nhỏ hơn số trừ

Ngoài ra cờ nhớ còn được sử dụng như bit thứ 9 trong các lệnh quay dịch, ví dụ khidịch trái bit ở MSB sẽ bị rớt ra ngoài, cờ C sẽ giữ lấy bit đó

Cờ dấu S ( Sign Flag).

CPU có hai cách biểu diễn một số: Cách thứ nhất nó dùng tất cả các bit của mộtthanh ghi để biểu diễn một số dương Ví dụ một thanh ghi 8 bit có thể biểu diễn cácsố thập phân dương từ 1 tới 255 Cách thứ hai CPU sử dụng bit trọng số cao nhất đểlàm bit dấu Ví dụ như thanh ghi 8 bit thì bit D7 sẽ là bit dấu Khi D7 ở mức 0 thì cácbit D0 D6 giữ một số nhị phân dương nằm trong khoảng 0 tới 127 Khi D7=1 thìthanh ghi sẽ giữ số nhị phân âm trong khoảng –128 tới -1

Tổ hợp nhị phân từ 0000 0000 0111 1111 biểu diễn các số từ 0 127 tổ hợp tiếptheo 1000 0000 trong số có dấu được xem như là -128 và tiếp theo 1000 0001 = -127.Khi tiếp tục đếm lên tới tổ hợp 1111 1111 = -1

Cờ dấu S sẽ báo khi dấu thay đổi, cờ dấu =0 khi kết quả phép tính trong bộ chứa làsố dương (bit D7=0) Nếu bit D7=1 kết quả là một số âm 7 bit thì SF=1 Dựa vào cờnày mà các chương trình này sẽ có cách tính thích hợp với các số có dấu

Cờ tràn V (overflow)

Cờ tràn VF sẽ được thiết lập mức 1 khi có sự tràn bit 1 từ D6 sang D7, tức là khi dấucủa số 7 bit thay đổi từ (+) sang (-) Cờ VF luôn được thiết lập khi có tràn, nó được

Trang 10

dùng cho các số được biểu diễn theo cách 7 bit hay cách 8 bit Vì thế cần phải chú ýđể nó không ảnh hưởng gì đến chương trình Cờ tràn sẽ bị xóa khi D7 trở về mức 0

Cờ ZERO ZF.

Khi ALU thực hiện các phép tính có kết quả trong thanh ghi chứa bằng 0, lúc đó cờ Zsẽ được thiết lập lên mức 1 Còn ngược lại cờ Z=0 Thông thường cờ Z để thông báotrạng thái so sánh bằng, kết quả của phép trừ = 0 , các phép logic = 0 Khi thực hiệncác phép cộng, mặc dù kết quả có dư ra bit thứ 9 nhưng nếu thanh chứa có giá trị 0thì cờ ZF vẫn = 1 Ví dụ cộng FF+01 kết quả là 100 thì số 1 ở cờ CF còn thanh chứacó giá trị 00 do đó cờ ZF =1

Cờ Z đặc biệt tiện lợi cho các vòng lặp sử dụng bộ đếm xuống Vòng lặp có thể giảmmột thanh ghi nào đó, cho đến khi nó trở về 0 thì ngưng Với các công dụng như trên

ZF cùng với CF được sử dụng rất nhiều trong các chương trình

Cờ nửa nhớ HF (Half Carry Flag ).

Cờ nửa nhớ trong một số CPU còn được gọi là cờ phụ AF (Auxiliary Flag) khônggiống như CF, đóng vai trò bit thứ 9 của thanh chứa Nó giống cờ tràn nhiều hơn, cờnửa nhớ sẽ được thiết lập mức 1 khi có sự tràn bit 1 từ D3 qua D4

Tám bit của bộ chứa bao gồm 2 nibble riêng biệt, các bit 7-4 gọi là nibble trọng số lớnMS(Most Significant) và 3-0 là nibble trong số nhỏ LS(Least Significant) Mỗi nibblelà mã số thập phân hoặc HEXA đơn Khi thực hiện các phép tính với số BCD (tức sốthập phân) cần phải ghi nhận số nhớ của 4 bit thấp trong đơn vị 8 bit Ta gọi số nhớnày là số nửa nhớ Một số CPU cờ nữa nhớ được gọi là cờ nhớ phụ AF (Auxiliary Flag) nó sử dụng như cờ tràn như trong các phép tính 16 bit

Cờ chẵn lẻ PF (Parity Flag).

Cờ chẵn lẻ được sử dụng thông báo số các bit 1 trong kết quả của phép tính logic làchẵn hoặc lẻ tùy theo từng loại CPU Cờ chẵn lẻ thường được sử dụng trong cácchương trình truyền các dữ liệu nối tiếp, trạng thái của cờ có thể được phát ra để bênthu có thể kiểm tra xem dữ liệu nhận được đúng hay sai Chú ý là cờ chẵn lẻ khôngtác động khi ALU thực hiện các phép tính số học

Cờ trừ Subtract.

Cờ trừ thường được viết tắt là N (Negative) để phân biệt với cờ dấu S (Sign) Cờtrừ được thiết lập khi CPU thực hiện các phép tính trừ như (trừ, so sánh , giảm) Cờnày thường ít được sử dụng trong các chương trình

Ngoài các cờ sử dụng cho việc thông báo trạng thái các phép tính như đã mô tả ở trên,thanh ghi cờ còn có các cờ điều khiển sử dụng cho các mục đích khác như:

Cờ định hướng DF (Direction Flag).

Cờ này được sử dụng cho các lệnh xử lý chuỗi dữ liệu Ví dụ như di chuyển chuỗi từvùng nhớ này sang vùng nhớ khác, so sánh chuỗi… Khi thực hiện CPU lần lượt xử lýtừng byte 1 trong chuỗi Để có được các thao tác này CPU sử dụng các thanh ghi địachỉ và sau mỗi lần xử lý 1 byte nó tự động tăng hoặc giảm thanh ghi địa chỉ Việctăng hay giảm thanh ghi địa chỉ, tức là chuỗi được thao tác từ dưới lên trên hay từ trênxuống dưới, sẽ tùy thuộc vào cờ định hướng Thông thường DF=1 các lệnh xử lý chuỗisẽ thực hiện từ địa chỉ cao đến địa chỉ thấp

Trong một số CPU các lệnh xử lý chuỗi tăng và giảm địa chỉ khác nhau, nghĩa là cùnglà di chuyển chuỗi nhưng có một lệnh thực hiện theo chiều tăng địa chỉ, và một lệnhthực hiện theo chiều giảm địa chỉ Các CPU như thế sẽ không có định hướng

Cờ ngắt IF : (Interrupt Flag).

Trang 11

Cờ ngắt được thiết lập =1 bằng lệnh SI (Set Interrupt ) và xóa bằng lệnh CLI(ClearInterrupt) Khi cờ ngắt=1 cho phép CPU ghi nhận tín hiệu yêu cầu ngắt có che, và thựchiện chương trình ngắt Khi cờ ngắt =0, mặc dù có tín hiệu yêu cầu, chương trình ngắtsẽ không được thực hiện Với các yêu cầu ngắt không che NMI (Non-Mask ableInterrupt) cờ ngắt không có ý nghĩa.

Cờ bẫy TF: (Trap Flag).

Cờ bẫy được thiết lập =1 và xóa = 0 bằng các lệnh lập xóa cờ bẫy, khi cờ bẫy bằng 1,CPU hoạt động ở chế độ chạy từng bước để gỡ rối sửa sai chương trình Cụ thể là khiCPU thực hiện xong một lệnh nó chuyển qua chương trình con giám sát (Monitor).Chương trình con giám sát được thực hiện bởi người sử dụng để kiểm tra lại kết quảcủa lệnh vừa thực hiện ở các ô nhớ, các thanh ghi, các cờ Sau đó CPU lại quay vềthực hiện lệnh tiếp theo của chương trình chính Chương trình con giám sát sẽ đượcđặt tại một địa chỉ xác định tùy theo loại CPU

2.2.2 Đơn vị điều khiển CU: (Control Unit).

Đơn vị điều khiển còn được gọi là bộ giải mã lệnh, nó là nơi cung cấp các tín hiệuđiều khiển, cho phép tất cả các bộ phận khác trong CPU làm việc Đơn vị điều khiểnnhận các mã lệnh từ hàng đợi lệnh, mã lệnh này sẽ được hệ thống các mạch điện tửgiải mã, tạo ra một dãy các tín hiệu cho phép Tùy theo từng lệnh cụ thể mà các khốikhác nhau trong CPU sẽ được cho phép hoạt động Các bộ vi xử lý khác nhau cơ bảnở cấu trúc của đơn vị điều khiển Một lệnh của họ vi xử lý này có thể là một lệnh hoàntoàn khác trong một họ vi xử lý khác Do cấu trúc các mạch điện tử bên trong của đơnvị điều khiển khác nhau, mà CPU của các hãng khác nhau sẽ có các tập lệnh khácnhau Vì thế một chương trình viết cho hệ thống vi xử lý, sử dụng CPU của hãng nàothì phải tuân theo tập lệnh , và trình biên dịch của hãng đó, nếu không chương trình sẽkhông thể thực hiện mặc dù cấu trúc bộ nhớ và I/O tương đương nhau

Đơn vị điều khiển của các CPU truyền thống có thể thực hiện bằng hai phương phápchính là: Thực hiện bằng cách nối ghép cứng hệ thống các cổng logic, hoặc sử dụng bộnhớ Đối với loại thứ nhất tập lệnh sẽ không thể thay đổi Đối với loại sử dụng bộ nhớ,mã lệnh lấy từ ngoài bộ nhớ sẽ đóng vai trò là địa chỉ của bộ nhớ, còn các đường dữliệu của bộ nhớ này sẽ đóng vai trò là các tín hiệu cho phép Nếu cho phép lập trình lạibộ nhớ này có thể tạo ra các lệnh mới cho vi xử lý, hoặc có thể thay đổi tập lệnh chonó

Nhờ có đơn vị điều khiển mà mã lệnh sẽ được giảm, vì nếu cung cấp các tín hiệu chophép ngay trong mã lệnh thì mỗi khối chức năng trong CPU sẽ phải được cho phéphoặc không cho phép bằng một bit của mã lệnh Nhưng khi có đơn vị điều khiển, mỗilệnh của chương trình đều phải tốn thời gian giải mã Để khắc phục nhược điểm nàyngười ta chế tạo ra các CPU không có đơn vị điều khiển, các tín hiệu cho phép cáckhối chức năng bên trong CPU hoạt động sẽ được lấy trực tiếp từ mã lệnh Khi đó đểđảm bảo mã lệnh không quá dài số lệnh thực hiện được của CPU loại này ít hơn loạitruyền thống rất nhiều, tuy nhiên nó vẫn đủ để thực hiện tất cả các công việc, các lệnhphức tạp sẽ được thực hiện bằng các thuật toán thích hợp từ các lệnh đơn giản CácCPU loại này được gọi là các CPU có tập lệnh rút gọn RISC (Reduce Instruction SetComputer) Còn các CPU có đơn vị điều khiển như đã mô tả ở trên được gọi là cácCPU có tập lệnh đầy đủ CISC (Complex Instruction Set Computer)

2.2.3 Bộ điều khiển BUS.

Trang 12

Bộ điều khiển BUS nhận tín hiệu cho phép hoạt động từ bộ giải mã lệnh Nó định thờicác tín hiệu địa chỉ, dữ liệu và điều khiển để các CPU liên lạc với thế giới bên ngoài.Thông thường bộ điều khiển BUS được chia thành 3 phần: Bộ kiểm soát địa chỉ, bộkiểm soát dữ liệu và bộ định thời các tín hiệu điều khiển

Bất cứ một lệnh truy cập bộ nhớ vào/ra nào cũng cần cung cấp đầy đủ ba nhóm tínhiệu địa chỉ, dữ liệu và điều khiển Địa chỉ từ một thanh ghi địa chỉ bộ nhớ hay lấy trựctiếp từ mã lệnh trước tiên được cung cấp lên Bus nội (Internal Bus) đưa tới bộ đệm địachỉ, sau đó theo định thời của từng lệnh bộ đệm này sẽ được mở để cung cấp địa chỉ raBus địa chỉ bên ngoài xác định bộ nhớ vào ra làm việc với CPU Chú ý rằng bộ đệmđịa chỉ có một chiều truyền ra Tương tự như vậy với bộ kiểm soát dữ liệu, chỉ khác làbộ đệm dữ liệu là hai chiều, hoặc mở cho dữ liệu từ ngoài đi vào Bus nội trong các chukỳ đọc, hoặc mở cho dữ liệu từ Bus nội cung cấp ra bên ngoài trong các chu kỳ ghi.Tuỳ theo lệnh truy cập là đọc hay ghi mà các tín hiệu điều khiển sẽ được định thờicung cấp ra bên ngoài một cách thích hợp Ngoài ra BIU còn nhận các tín hiệu điềukhiển cung cấp từ bên ngoài để thực hiện một số chu kỳ truy xuất đặc biệt khác nhưngắt, DMA…

2.2.4 Đơn vị số học và logic ALU : (Arithmetic Logic Unit).

Đơn vị số học và logic (ALU) là một bộ phận quan trọng trong CPU để thực hiện cácphép toán số học và logic bao gồm:

Phép toán Dạng lệnh gợi nhớ Ý nghĩa lệnh

OR MXOR MNOTSHLSHRRRLRRRASR

Cộng số M với AccTrừ Acc đi MNhân Acc với MChia Acc cho MAnd Acc với M

Or Acc với MXor Acc với MĐảo AccDịch trái AccDịch phải AccQuay trái AccQuay phải AccDịch phải số học Acc

Khi CPU thực hiện các bài toán thực tế, chương trình phải có các hướng giải quyếtvới các điều kiện khác nhau bằng các lệnh nhảy Trước khi thực hiện các lệnh nhảy,chương trình thường thực hiện các lệnh so sánh để thiết lập các bit của thanh ghi cờ.Các lệnh so sánh và nhảy cũng được ALU đảm nhiệm Các lệnh này được viết nhưtrong bảng sau:

Lệnh Dạng lệnh gợi nhớ Ý nghĩa lệnh

So sánh

Nhảy

CMP MJxx L

So sánh Acc với M, lập cờ EQ nếubằng, lập cờ GT nếu M>Acc

Thực hiện lệnh tại nhãn L nếu điều kiệnthoả mãn:

Trang 13

JGT: nhảy nếu lớn hơnJGE: nhảy nếu lớn hơn hoặc bằng.

JEQ: nhảy nếu bằngJLE: nhảy nếu nhỏ hơn hoặc bằngJLT: nhảy nếu nhỏ hơn

JNE: nhảy nếu không bằng

Ngoài ra còn một số lệnh di chuyển dữ liệu trong hệ thống vi xử lý tác động tới ALUnhư:

Lệnh Dạng gợi nhớ Ý nghĩa của lệnh

Nạp giá trị M vào Acc

Chuyển đổi giá trị giữ M và Acc

Xoá Acc

Trong thực tế các loại CPU của các hãng khác nhau, sẽ có các lệnh với cách viết gợinhớ khác nhau

Cấu trúc ALU.

Trong các bài toán các phép toán cần thực hiện, có thể bao gồm hai toán hạng (nhưcộng ) hoặc một toán hạng (not) Phép toán một số còn gọi là phép toán đơn (monadicoperation), phép toán hai số gọi là phép toán hai ngôi (dyadic operation) Để thực hiệncác phép toán trên ALU có cấu trúc như hình vẽ 2.6

ALU nối với BUS hệ thống bằng hai nhóm đường Nhóm bên phải chỉ sử dụng đểnhập dữ liệu vào ALU, nhóm này thường được sử dụng để đưa một toán hạng vàoALU trong các phép toán Nhóm bên trái được nối với thanh chứa Acc và từ thanhchứa nối ra BUS hệ thống Nhóm tín hiệu này có thể là vào hoặc ra Thanh chứa đượcsử dụng cho các công việc:

- Giữ toán hạng thứ hai trong các phép toán hai ngôi

- Giữ toán hạng duy nhất trong các phép toán đơn

- Giữ kết quả của các phép toán

Một số CPU không có thanh chứa mà sử dụng bộ nhớ tạm thời là một thanh ghi ngoàiALU, các loại này không phổ biến lắm nên ta xem xét Acc như một phần của ALU

Các hàm số cơ bản

Hình 2.6: Cấu trúc ALU

Trang 14

2.3. CẤU TRÚC CỦA CÁC BỘ VI XỬ LÝ CÔNG NGHỆ CAO.

Trong thập kỷ 90 và cho tới ngày nay việc cải tiến về tốc độ và cấu trúc vi xử lý cócác bước tiến vượt bậc Để nâng cao tốc độ tính toán với nhu cầu đa phương tiện, đanhiệm hàng loạt bộ vi xử lý mới ra đời với công nghệ cao, các kỹ thuật mới và có thêmcác khối chức năng chuyên dụng Sơ đồ khối tổng quát cho các bộ vi xử lý này có thểbiểu diễn trên hình 2.7 Sơ đồ này không chỉ thị cho một bộ vi xử lý cụ thể, tuy nhiênnó bao gồm các đặc trưng chính của tất cả các bộ vi xử lý hiện đại

Hầu hết các bộ vi xử lý hiện đại có 32 bit dữ liệu, nhưng một số vi xử lý có số đườngdữ liệu là bội số của 32 Ngoài ra còn có các vi xử lý truy cập dữ liệu bằng nhiều BUS

32 bit, hoặc nhiều BUS 64 bit khác nhau Trong các vi xử lý 32 bit, thông thường đơnvị xử lý số nguyên (IU – Integer Unit) là 32 bit và các thanh ghi trong tập thanh ghi(RF) cũng là 32 bit Các vi xử lý 64 bit ngày càng nhiều trên thị trường, trong các bộ vixử lý này thường có các thanh ghi 64 bit

Bus địa chỉ của hầu hết các bộ vi xử lý hiện đại thường là 32 bit để truy cập trực tiếp

232 ô nhớ, cũng có một số vi xử lý có số đường địa chỉ nhiều hơn, khi đó BUS nội củanó cũng nhiều hơn 32 bit

Bus Interface Unit(BIU)

Prefetch Unit and Instruction

Instruction Cache (Icache)Data Cache (Dcache)

Branch Target Cache (BTC)

Control Unit(CU)

Memory Manage-ment Units (MMU)

Special Function Units

Operation Units

Integer Register File

(IRF)

Floating Point Register File (FRF)Floating Point Operation Units

Trang 15

2.3.1 Đơn vị giao tiếp BUS (BIU).

Đơn vị giao tiếp BUS là hệ thống bộ đệm để kiểm soát các tín hiệu giữa các khối bêntrong vi xử lý với các hệ thống bên ngoài Sơ đồ khối của một bộ BIU biểu diễn trênhình 2.8, nó được chia thành 3 phần chính là:

- Giao tiếp dữ liệu

- Giao tiếp địa chỉ

- Giao tiếp điều khiển

Khối giao tiếp dữ liệu có nhiệm vụ kết nối BUS dữ liệu của hệ thống với các khối bêntrong vi xử lý Thông thường dữ liệu truyền giữa giao tiếp dữ liệu và các khối khácbên trong vi xử lý thông qua BUS nội Nhưng cũng có một số đường truyền khác, nhưtrên hình vẽ khối giao tiếp dữ liệu truyền trực tiếp với các khối như đơn vị tiền đọclệnh và hàng đợi lệnh (PUIQ) và với bộ nhớ cache

Khối giao tiếp dữ liệu có nhiệm vụ kiểm soát các địa chỉ cung cấp ra bên ngoài Cácđịa chỉ thông thường được tạo ra bởi đơn vị quản lý bộ nhớ (MMU), vì vậy MMUđược nối trực tiếp tới khối giao tiếp địa chỉ

Khối giao tiếp điều khiển thực hiện việc gửi và nhận một số tín hiệu trạng thái và điềukhiển từ CPU cung cấp ra hệ thống bên ngoài và từ các thiết bị bên ngoài cung cấp cho

vi xử lý Hầu hết các đường điều khiển của giao tiếp điều khiển được nối tới đơn vịđiều khiển (CU), tất nhiên CU còn được kết nối tới các khối khác bên trong vi xử lý.Các tín hiệu điều khiển cung cấp từ trong ra chỉ thị các trạng thái hoạt động bên trongcủa vi xử lý, các tín hiệu tích cực thông báo cho bộ nhớ và vào/ra trong các chu kỳ đọcghi dữ liệu, chỉ thị sự khác nhau trong các chế độ truy cập, các chế độ địa chỉ, chấpnhận các yêu cầu ngắt, các yêu cầu về Bus … Các tín hiệu cung cấp từ bên ngoài chỉthị trạng thái của các thiết bị, thông báo cho vi xử lý nhận biết các trường hợp Bus lỗi,nhận các yêu cầu ngắt hoặc yêu cầu về Bus của các thiết bị bên ngoài, nhận biết việchoàn tất một chu kỳ Bus, nhận tín hiệu yêu cầu cấm bộ nhớ cache nội… Số lượng, cơchế hoạt động của các tín hiệu điều khiển của các CPU khác nhau có thể khác nhau

2.3.2 Khối tiền đọc lệnh và hàng đợi lệnh (PUIQ)

PUIQ bao gồm các mạch logic thực hiện việc đọc trước các lệnh từ Icache và sắpchúng vào hàng đợi lệnh FIFO Một hàng đợi lệnh thông thường có từ 8 tới 32 byte

Data Interface

Address Interface

Control Interface

Trang 16

Lệnh sắp ở trên cùng sẽ được chuyển tới đơn vị giải mã lệnh (DU - Decoder Unit) DUsẽ giải mã các lệnh và truyền các tín hiệu điều khiển thích hợp tới CU Hầu hết các bộ

vi xử lý hiện đại ngày nay đều có cấu trúc siêu hướng (superscalar), cấu trúc này chophép nhiều lệnh không tranh chấp có thể thực hiện một cách đồng thời

2.3.3 Khối chức năng đặc biệt.

Để tăng tốc độ xử lý cho các nhu cầu đa phương tiện, một số vi xử lý có các khối chứcnăng chuyên dụng nằm trong khối các chức năng đặc biệt (SFU – Special FunctionUnit) Một SFU thông thường có các khối chức năng sau:

- Khối đồ hoạ (Graphics Unit)

- Khối xử lý tín hiệu (Signal processing Unit)

- Khối xử lý ảnh (Image Processing Unit)

- Khối xử lý ma trận và vector (Vector and Matrix Processor)

Một số bộ vi xử lý có nhiều hơn một SFU, với nhiều bộ SFU sẽ giảm thiểu thời giantrễ trong giao tiếp giữa giao tiếp của SFU với các khối khác làm tăng tốc độ hoạt độngcủa toàn bộ hệ thống với các nhu cầu đa phương tiện ngày một tăng cao

2.3.4 Bộ nhớ cache.

Bộ nhớ cache là bộ nhớ có tốc độ truy xuất rất nhanh nằm giữa CPU và bộ nhớ chính(main memory) Dữ liệu sẽ được truyền theo từng khối từ bộ nhớ chính tới cache sẵnsàng cung cấp cho CPU Với bộ nhớ cache có kích thước hợp lý sẽ cho phép cải thiệnhiệu suất của toàn bộ hệ thống, vì nhờ có nó mà CPU có thể truy cập dữ liệu nhanhhơn nhiều so với việc truy cập trong bộ nhớ chính Gần như tất cả các bộ vi xử lý hiệnnay đều có cấu trúc đường ống (Pipeline), với cấu trúc này cho phép thực hiện đồngthời nhiều lệnh tại cùng một thời điểm Vì vậy trong khi CPU đang thực hiện một chukỳ lệnh, nó có thể đồng thời truy cập bộ nhớ để lấy dữ liệu cho một lệnh khác Nếu chỉcó một bộ nhớ cache thì rõ ràng việc truy cập đồng thời như mô tả ở trên sẽ khôngthực hiện được Do đó trong hầu hết các bộ vi xử lý hiện đại đều có hai bộ nhớ cacheđược sử dụng riêng cho mã lệnh (Icache) và dữ liệu thông thường (Dcache) Thôngthường hai loại cache này có dung lượng giống nhau, nhưng trong một số vi xử lýchúng có dung lượng khác nhau Cache nhận thông tin từ bộ nhớ chính thông qua Busdữ liệu và BIU sẽ chỉ định kích thước khối dữ liệu trong mỗi lần truy cập của cache.Trong hầu hết các bộ vi xử lý hiện đại kích thước này là 16 hoặc 32 byte Icachethường được nối trực tiếp tới khối tiền đọc lệnh (Prefetch Unit), nó có thể truyền tớikhối này một hoặc nhiều lệnh trong một chu kỳ Trong nhiều bộ vi xử lý, Dcache đượcnối tới các khối xử lý dữ liệu bằng một Bus riêng gọi là ODB (operation data bus) nhưtrên hình 2.9 ODB có độ rộng đủ lớn (128 hoặc 256 bit) để có thể cung cấp nhiều toánhạng tại cùng một thời điểm, điều này sẽ làm tăng tốc độ hoạt động của hệ thống

Secondary cache

Secondary cache control logic

Instruction Cache(Dcache)

Data Cache(Dcache)

Trang 17

Nhiều vi xử lý hiện đại có thiết kế thêm cache ngoài (cache thứ cấp - secondarycache) Cache bên trong còn được gọi là cache sơ cấp Cache ngoài nằm giữa bộ nhớchính và cache nội trong phân cấp bộ nhớ, nó có thời gian truy cập nhanh hơn so vớibộ nhớ chính và thường có dung lượng lớn hơn cache nội Với cache ngoài hiệu suấthệ thống được cải thiện vì bộ nhớ này cho phép CPU truy cập dữ liệu trong một bộnhớ có tốc độ cao và dung lượng tương đối lớn Một số vi xử lý có bộ điều khiển vàgiao tiếp logic nối trực tiếp với cache ngoài như hình 2.9 Dung lượng của cache ngoàicó thể lên tới vài Mbytes.

Một số vi xử lý hiện đại còn có bộ nhớ cache phân nhánh đích (BTC – Branch TargetCache) Trong một hệ thống đường ống (pipeline), khi một nhánh lệnh có xung đột thìcác lệnh thuộc nhánh đó cần được lấy ra ngoài đường ống, và các lệnh đích (nằm đầutiên trong nhánh được thực hiện) cần được lấy vào đường ống Nếu lệnh đích nằmngoài bộ nhớ, CPU sẽ phải thực hiện chu kỳ trễ trong quá trình thực hiện lệnh, còn nếulệnh đích đầu tiên nằm trong BTC chúng sẽ được đẩy vào đường ống nhanh chónghơn Như vậy BTC cũng làm tăng tốc độ của hệ thống Trong một số vi xử lý BTCkhông chứa các lệnh đích mà chỉ chứa địa chỉ của lệnh đích

Trong hầu hết các vi xử lý hiện đại đều có đặc tính xử lý lệnh song song (ILP –Instruction Level Parallelism), đặc tính này được thực hiện bằng cấu trúc siêu hướng(superscalar) Trong cấu trúc này khối tiền đọc lệnh sẽ gửi đồng thời i lệnh tới bộ giảimã lệnh như mô tả trên hình 2.10 Sau đó bộ điều khiển (CU) sẽ tạo ra các chỉ thị chomột số đường ống thực hiện Hiệu suất thực hiện lệnh sẽ cao nhất khi số đường ốngđúng bằng số lệnh gửi tới để có thể thực hiện đồng thời i lệnh cùng một thời điểm.Trong thực tế điều kiện này không phải lúc nào cũng có thể thực hiện được, do các

IcachePrefetch Unit

Decoding UnitPipeline

Operation

Unit 1

Pipeline Operation Unit 2

Pipeline Operation Unit n

………

Hình 2.10: Xử lý lệnh theo kiến trúc siêu hướng

32 i

32 i

Ngày đăng: 12/12/2013, 16:15

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w