thanh ghi

Màu nền
Font chữ
Font size
Chiều cao dòng

Thanh ghi

Bách khoa toàn thư mở Wikipedia

Bước tới: menu, tìm kiếm

Trong kiến trúc máy tính, một thanh ghi là một bộ nhớ dung lượng nhỏ và rất nhanh được sử dụng để tăng tốc độ xử lý của các chương trình máy tính bằng cách cung cấp các truy cập trực tiếp đến các giá trị cần dùng. Hầu hết, nhưng không phải tất cả, các máy tính hiện đại hoạt động theo nguyên lý chuyển dữ liệu từ bộ nhớ chính vào các thanh ghi, tính toán trên chúng, sau đó chuyển kết quả vào bộ nhớ chính.

Các thanh ghi xử lý là phần đầu tiên của phân cấp bộ nhớ, và cung cấp nhanh nhất vào hệ thống để xử lý dữ liệu. Thuật ngữ này thường được dùng để nói đến một tập các thanh ghi có thể được chỉ trực tiếp cho việc nhập hay xuất các câu lệnh, xem thêm ở tập lệnh . Chúng được gọi là " kiến trúc thanh ghi". Ví dụ, Processor registers are the top of the memory hierarchy, and provide the fastest way for the system to access data. The term is often used to refer only to the group of registers that can be directly indexed for input or output of an instruction, as defined by the instruction set. More properly, these are called the "architectural registers". For instance, the x86 instruction set defines a set of eight 32-bit registers, but a CPU that implements the x86 instruction set will contain many more registers than just these eight.

Đưa các biến số thường dùng vào thanh ghi là một hoạt động then chốt làm tăng hiệu ứng của chương trình. Việc này có tên là register allocation và thường được thực hiện bởi một trình biên dịch trong giai đoạn phát sinh mã hoá.

[sửa] Các loại thanh ghi

Thanh ghi thường được đo bằng các bit nó có thể chứa, ví dụ, một thanh ghi "8-bit" hay thanh ghi "32-bit". Các thanh ghi hiện nay thường được xem như file thanh ghi - register file, nhưng chúng cũng được dùng riêng rẽ flip-flops, tốc độ cao core memory, thin film memory, và các cách khác trong nhiều máy móc.

Có một số phân lớp các thanh ghi tùy theo nội dung:

Thanh ghi khả hiện - Có hai loại. Thanh ghi dữ liệu và thanh ghi địa chỉ.

Thanh ghi dữ liệu được dùng để lưu số nguyên (xem thanh ghi số thực dưới đây). Trong một số bộ CPU hiện nay và trước đây, có một thanh ghi đặc biệt là thanh ghi tích lũy tích lũy, được dùng cho nhiều tính toán.

Thanh ghi địa chỉ chứa địa chỉ bộ nhớ và được dùng để truy cập bộ nhớ. Trong một số CPU, có một thanh ghi địa chỉ đặc biệt thanh ghi chỉ mục, dù chúng thường được dùng để sửa đổi địa chỉ hơn là chứa địa chỉ.

Thanh ghi điều kiện chứa giá trị thực thường dùng để quyết định hoật động thực thi lệnh

Thanh ghi đa năng (GPRs) có thể chứa cả dữ liệu lẫn địa chỉ., là kết hợp giữa thanh ghi dữ liệu và thanh ghi địa chỉ

Thanh ghi dấu phẩy động(FPRs) dùng để chứa các kiểu số

Thanh ghi hằng số chứa các giá trị đọc được (Ví dụ: 0, 1, pi, ...).

Thanh ghi định hướng chứa dữ liệu cho việc xử lý định hướng đối tượng, thực hiện bởi lệnh SIMD (lệnh đơn, bội dữ kiện)

Thanh ghi chuyên biệt chứa trạng thái chương trình; thường bao gồm con trỏ chỉ lệnh, con trỏ ngăn xếp, và thanh ghi trạng thái.

Thanh ghi chỉ lệnh chứa lệnh tạm huỷ

Thanh ghi chỉ mục dùng cho sửa đổi địa chỉ tác tử trong quá trình thực hiện 1 chương trình

Trong một số cấu trúc, thanh ghi kiểu mẫu (còn được gọi là thanh ghi thiết bị riêng biệt) chứa dữ liệu và thiết lập liên quan đến bộ xử lý. Vì các thanh ghi này được thiết kế gắn liền với bộ xử lý đặc trưng nên chúng không thể giữ nguyên chuẩn qua các thế hệ của bộ xử lý.

Thanh ghi điều khiển và trạng thái - Có 3 loại: chương trình phản hồi, thanh ghi chỉ lệnh, chương trình trạng thái từ.

Thanh ghi liên quan đến tìm nạp thông tin từ bộ nhớ truy cập ngẫu nhiên (RAM), 1 tập hợp lưu giữ các thanh ghi được định vị trên các chip riêng biệt từ CPU (không giống đa số các loại trên, đây thông thường là những thanh ghi không có cấu trúc):

Thanh ghi bộ nhớ trung gian

Thanh ghi bộ nhớ địa chỉ

Thanh ghi bộ nhớ kiểu miền

Thanh ghi ổ cứng cũng tương tự nhưng ở ngoài CPU

Thanh ghi nằm bên trong CPU tùy theo đội dài 8 hay 16 bít và tùy theo chức năng. Khi đó, thanh ghi được dùng để chứa dữ liệu, lưu trữ dữ liệu, kết quả trung gian của máy tính hoặc đơn vị địa chỉ bộ nhớ 8088 có 14 thanh ghi được chia làm 5 nhóm

I. Nhóm thanh ghi đa dụng : (General Register)

Gồm 4 thanh ghi đa dụng : AX,BX,CX và DX (có 16 bít)

Công dụng chung của các thanh ghi này là : dùng trong các phép

toán số học, logic, chứa dữ liệu.

Một thanh ghi 16 bít có thể được xem là 2 thanh ghi 8bít và

chúng được chia như sau :

Thanh ghi

16 bít 2 thanh ghi 8 bít

=========================

Byte cao Byte thấp

AX AH AL

BX BH BL

CX CH CL

DX DH DL

==========================

Ví dụ :

AX = 0x1234

AH = 0x12

AL = 0x34

Mỗi thanh ghi còn có những công dụng riêng của nó :

a. Thanh ghi AX : (Auxliary Register)

Công dụng riêng dùng trong các phép toán số học, lưu kết

quả của các phép toán *, chia, ...

b. Thanh ghi BX : (Base Regiser)

Dùng trong phép định địa chỉ cơ sở của bộ nhớ, nó đóng vai

trò như 1 thanh ghi địa chỉ offset của bộ nhớ

c. Thanh ghi CX : (Count Regiser)

Dùng để chứa số vòng lặp trong chương trình, nó đóng vai

tròn như một biến đếm cho việc lặp vòng. Ngoài ra, thanh ghi

CL còn được dùng trong các phép dịch chuyển với số lần dịch

chuyển là nội dung của thanh ghi CL.

d. Thanh ghi DX : (Data Regiser)

Dùng để lưu trữ kết quả của phép toán * hoặc /, định địa chỉ

cổng trong các lệnh xuất nhập cổng.

II. Nhóm thanh ghi đoạn : (Segiment regiset)

Gồm 4 thanh ghi : CS, DS, ES, SS

a. Thanh ghi CS : (Code Segment)

Dùng để chứa địa chỉ Segment của đoạn mã của đoạn mã

chương trình.

b. Thanh ghi DS : (Data Segment)

Chứa địa chỉ Segment của đoạn dữ liệu

c. Thanh ghi ES : (Extra Segment)

Chứa địa chỉ Segment của đoạn dữ liệu bổ sung. Như vậy nếu

ta có hai đoạn dữ liệu thì một sẽ do thanh ghi DS và hai sẽ do

thanh ghi ES quản lý

d. Thanh ghi SS (Stack Segment)

Dùng lưu địa chỉ Segment của đoạn Stack

Bốn thanh ghi này có thể truy xuất trên bốn đoạn khác nhau.

Như vậy một chương trình làm việc cùng một lúc tối đa là bốn

đoạn

III. Nhóm thanh ghi con trỏ và chỉ mục :

a. Thanh ghi SI : (Source Index)

Dùng để trỏ đến ô nhớ trong đoạn dữ liệu định bởi thanh ghi

DS, trong xử lí chuỗi thanh ghi SI dùng để trỏ đến địa chỉ bắt

đầu của chuỗi nguồn

b. Thanh ghi DI : (Distination Index)

Dùng để trỏ đến ô nhớ có địa chỉ Segment định bởi thanh ghi

ES, trong xử lí chuỗi nó dùng để trỏ đến địa chỉ của chuỗi đích

c. Thanh ghi SP : (Stack pointer)

Dùng để trỏ đến phần tử ở trên đỉnh của Stack

d. Thanh ghi BP : (Base pointer)

Dùng trong phép định địa chỉ cơ sở, trong việc truy xuất

phần tử trên Stack. Nó được dùng trong các phép gọi chương

trình con

e. Thanh ghi IP : (Instruction Pointer)

Chứa đến địa chỉ ô nhớ được định bởi thanh ghi CS để chỉ

đến mã lệnh của chương trình. Khi thực thi một lệnh CPU sẽ tự

động thay đổi nội dung của thanh ghi IP để trỏ đến lệnh kế tiếp

của chương trình, thanh ghi này không bị tác động trực tiếp bởi

các lệnh. Vì vậy, nó thường không có mặt trong những lệnh của

hợp ngữ.

Những cặp thanh ghi thường đi chung :

DS : SI

ES : DI

SS : SP

SS : BP

CS : IP

IV. Thanh ghi cờ :

Mục đích của việc sử dụng cờ là việc chỉ ra trạng thái của CPU.

Để làm được điều đó bộ vi xử lí đã dành riêng ra một thanh ghi

gọi là thanh ghi cờ. Những bit trên thanh ghi này được gọi là các

cờ . Có hai loại cờ : Cờ trạng thái, cờ điều khiển

Cờ trạng thái phản ánh kết quả của phép toán

Cờ điều khiển dùng để cho phép hay không cho phép một thao tác

nào đó

Chúng ta chỉ quan tâm đến nhóm cờ trạng thái gồm 6 cờ là :

CF, AF, SF, OF, PF, ZF.

a. Cờ CF : (Carry Flag) " Cờ nhớ "

Cờ CF được bật lên một nếu kết quả của phép toán có mượn

hay có nhớ đối với bít cao

b. Cờ AF : (Awiliary Flag) " Cờ nhớ phụ "

Bật lên một khi có mượn hay có nhớ ở bít 3

c. Cờ SF : (Sign Flag) " Cờ dấu "

Cờ SF được bật lên một nếu như kết quả của một phép tính có

bít cao nhất bằng một (số âm)

d. Cờ OF : (Over Flag) " Cờ tràn "

Được bật lên một nếu như kết quả của phép toán có dấu bị sai

Ví dụ :

01010000 = AL (dương)

+ 01110000 = BL (dương)

11000000

e. Cờ PF : (Parity Flag) " Cờ chẵn le "

Cờ PF được bật lên một nếu như kết quả của một phép toán có

tổng 8 bít thấp là một số chẵn

f. Cờ ZF : (Zero Flag)

ZF = 1 nếu như kết quả của phép toán bằng không

Ví dụ :

AX = FFFFh

+

BX = FFFFh

1FFFEh

Bạn đang đọc truyện trên: Truyen2U.Pro

#thanhghi