Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

  • Hoạt động xử lý chủ yếu liên quan đến xử lý dữ liệu. Những dữ liệu này có thể được lưu trữ trong bộ nhớ và được truy cập từ đó. Tuy nhiên, việc đọc và lưu trữ dữ liệu vào bộ nhớ lại làm chậm tiến trình vì nó phải gửi yêu cầu dữ liệu thông qua bus điều khiển.
  • Để tăng tốc độ hoạt động xử lý, các bộ vi xử lý có chứa 1 vài bộ nhớ trong để lưu trữ gọi là thanh ghi. Số lượng giới hạn thanh ghi được xây dựng trong con chip vi xử lý.
  • Có 10 thanh ghi 32-bit và 6 thanh ghi 16-bit trong kiến trúc IA-32. Những thanh ghi này được nhóm thành 3 loại:

    1. Những thanh ghi đa năng (General registers)
    2. Những thanh ghi điều khiển (Control registers)
    3. Những thanh ghi phân đoạn (Segment registers)
  • Những thanh ghi đa năng lại được chia thành các nhóm:

    1. Thanh ghi dữ liêu
    2. Thanh ghi con trỏ
    3. Thanh ghi chỉ số (Index)
  • Có 4 thanh ghi dữ liệu 32-bit được dùng cho số học,logic,và hoạt động khác. Những thanh ghi này được dùng theo 3 cách.
    1. Ghi dữ liệu: EAX,EBX,ECX,EDX.
    2. Nửa thấp của các thanh ghi 32-bit có thể dùng như thanh ghi 16-bit: AX,BX,CX,DX và nó có thể dùng như thanh ghi 8-bit: AH,AL,BH,BL,CH,CL,DH,DL.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

  • AX là bộ tích luỹ đầu tiên, nó được dùng trong nhập xuất và hầu hết các instruction số học. Ví dụ trong phép nhân, 1 toán hạng được lưu vào EAX hoặc AX hoặc AL tuỳ theo kích cỡ của toán hạng đó.
  • BX là thanh ghi cơ sở (base register) được dùng để đánh số địa chỉ
  • CX là thanh ghi đếm (count register) được dùng như để đếm số vòng lặp
  • DX là thanh ghi dữ liệu, nó cũng được sử dụng trong hoạt động nhập xuất tương tự như AX.
  • Những thanh ghi con trỏ 32-bit như EIP,ESP,EBP tương ứng 16-bit vị trí phải IP,SP,BP.
    1. Instruction Pointer (IP) - là những thanh ghi 16-bit lưu trữ địa chỉ offset của instruction tiếp theo để thực thi. IP cùng với thanh ghi CS đưa ra địa chỉ chính xác của instruction hiện tại trong code segment.
    2. Stack pointer (SP) - Những thanh ghi 16-bit cung cấp giá trị offset nằm trong ngăn xếp chương trình ( program stack). SP cùng với thanh ghi SS tham chiếu tới vị trí hiện tại của dữ liệu hoặc địa chỉ nằm trong program stack.
    3. Base Pointer (BP) - Những thanh ghi 16-bit BP chủ yếu hỗ trợ trong việc tham chiếu biến tham số truyền tới chương trình con. Địa chỉ trong thanh ghi SS kết hợp với với thanh ghi DI và SI cho địa chỉ cụ thể
      Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Thanh ghi chỉ số

  • Những thanh ghi 32-bit ESI và EDI tương ứng thanh ghi 16-bit SI và DI được dùng để đánh số địa chỉ và đôi lúc dùng trong phép cộng và trừ.
    1. Source Index (SI) - được dùng đánh số của nguồn cho chuỗi operations.
    2. Destination Index (DI) - ngược lại với source

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Thanh ghi con trỏ

  • Thanh ghi 32-bit con trỏ và 32-bit cờ (flags) kết hợp được coi là thanh ghi điểu khiển.
  • Nhiểu instructions so sánh, tính toán số học, thay đổi trạng thái của cờ, kiểm tra điều kiện giá trị trạng thái của cờ để có được dòng điểu khiển (control flow) đến vị trí khác.
  • Những bit flag thông thường là:
    1. Overflow Flag (OF) - nó cho thấy sự tràn bit cao ngoài cùng bên trái của dữ liệu sau 1 tín hiệu của thuật toán.
    2. Direction Flag (DF) - nó xác định hướng trái hay phải cho việc di chuyển hoặc so sánh chuỗi dữ liệu. Khi giá trị DF là 0, chuỗi hoạt động lấy từ trái qua phải và ngược lại khi DF là 1.
    3. Interrupt Flag (IF) - nó cho phép thiết lập hoạt động của bộ xử lý trong chế độ đơn bước (single-step mode). Chương trình Debug dùng thiết lập cờ mật thám (trap flag). Vì thế có thể từng bước thực thi tại 1 thời điểm.
    4. Sign Flag (SF) - nó show tín hiệu kết quả của 1 phép toán số học. Cớ này được thiết lập tuỳ theo dấu hiệu của data item theo sau phép toán số học. Dấu hiệu được chỉ thị bới bit cao ngoài cùng bên trái. Kết quả khẳng định thiết lập giá trị SF là 0 và ngược lại là 1.
    5. Zero Flag (ZF) - cho thấy kết quả phép toán số học hay so sánh. Kết quả không = 0 thì cờ thiết lập là 0 và kết quả = 0 thì cờ là 1.
    6. Auxiliary Carry Flag (AF) - nó chứa bit 3 tới bit 4 theo sau phép toán số học, dùng để chỉ rõ cụ thể phép toán.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Hệ thống thanh ghi Là các phần tử có khả năng lưu trữ thông tin với dung lượng 8, 16, 32, 64 bit. Được xây dựng từ các Flip Flop nên có tốc độ truy xuất rất nhanh. Phân loại thanh ghi:

+ Thanh ghi tổng quát: Chủ yếu dùng để lưu trữ dữ liệu trong quá trình thực thi chương trình, nhưng mỗi thanh ghi còn có 1 số chức năng riêng.


+ Thanh ghi điều khiển: Các bit của nó qui định tác vụ của các đơn vị chức năng của máy tính.
+ Thanh ghi trạng thái: Lưu trữ thông tin mô tả trạng thái.
AX Register

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Thanh ghi AX (Accumulator register): Thanh ghi tích luỹ, dài 16 bit nhưng nó cũng có thể chia làm 2 thanh ghi 8 bit AH và AL. AX ngoài chức năng lưu trữ dữ liệu, nó còn được CPU dùng trong phép toán số học như nhân, chia.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Thanh ghi AH là nửa cao của thanh ghi AX. Thanh ghi AL là nửa thấp của thanh ghi AX. VD: Nếu AX = 1234h thì AH = 12HAL = 34h.

BX Register


Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Thanh ghi BX (Base register): Dài 16 bit nhưng nó cũng có thể chia làm 2 thanh ghi 8 bit BH và BL. BX lưu trữ địa chỉ của 1 thủ tục hay biến, nó cũng được dùng thực hiện các phép dời chuyển số học và dữ liệu.

DX Register


Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Thanh ghi DX (Data register): Dài 16 bit nhưng nó cũng có thể chia làm 2 thanh ghi 8 bit DH và DL. Thanh ghi DX: Có vai trò đặc biệt trong phép nhân và phép chia ngoài chức năng lưu trữ dữ liệu. VD: Khi nhân DX sẽ lưu giữ 16 bit cao của tích.

CX Register


Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

CX (Counter register): Thanh ghi này dùng làm bộ đếm trong các vòng lặp. Các lệnh tự động lặp lại và sau mỗi lần lặp giá trị của CX tự động giảm đi 1. CL thường chứa số lần dịch, quay trong các lệnh dịch, quay thanh ghi. CX dài 16 bit, nó cũng có thể chia làm 2 thanh ghi 8 bit CH và CL.

Các thanh ghi Segment

CPU có 4 thanh ghi segment dài 16 bit, các thanh ghi này không thể chia làm 2 thanh ghi 8 bit như 4 thanh ghi AX, BX, CX và DX. Các thanh ghi đoạn được sử dụng như là địa chỉ cơ sở của các lệnh trong chương trình, Stack và dữ liệu. 4 thanh ghi đoạn: CS (Code Segment), DS (Data Segment), SS (Stack Segment) và ES (Extra Segment). CS: Chứa địa chỉ bắt đầu của code trong chương trình. DS: Chứa địa chỉ của các biến khai báo trong chương trình. SS: Chứa địa chỉ của bộ nhớ Stack dùng trong chương trình. ES: Chứa địa chỉ cơ số bổ sung cho các biến bộ nhớ.

Thanh ghi 32 bit

Đối với một số CPU đời mới, có các thanh ghi dài 32, 64 bit. Ta ghi thêm E đứng trước tên các thanh ghi 16 bit... EAX, EBX, ECX, EDX...

Thanh ghi đoạn và sự hình thành địa chỉ

8088 sử dụng 20 bit để đánh địa chỉ bộ nhớ -> quản lý trên 1Mb bộ nhớ. Nhưng 8088 lại không có thanh ghi nào 20 bit, tất cả là 16 bit do đó 1 thanh ghi chỉ có thể đánh địa chỉ tối đa là 64Kb bộ nhớ. Như vậy phải kết hợp 2 thanh ghi mới địa chỉ hoá toàn bộ nhớ, 8088 sử dụng 1 trong các thanh ghi dùng chung và 1 trong các thanh ghi đoạn (CS, DS, SS, ES) để tạo thành 1 địa chỉ 20bit.

Sự phân đoạn bộ nhớ

CPU 8086 dùng phương pháp phân đoạn bộ nhớ để quản lý bộ nhớ 1Mb của nó. Địa chỉ 20bit của bộ nhớ 1Mb không thể chứa đủ trong các thanh ghi 16bit của CPU 8086 -> bộ nhớ 1Mb được chia ra thành các đoạn (segment) 64Kb. Địa chỉ trong các đoạn 64Kb chỉ có 16bit nên CPU 8086 dễ dàng xử lý bằng các thanh ghi của nó. -> Phân đoạn bộ nhớ: Là cách dùng các thanh ghi 16bit để biểu diễn cho địa chỉ 20bit.

Địa chỉ vật lý và địa chỉ luận lý

Địa chỉ 20 bits được gọi là địa chỉ vật lý. Địa chỉ vật lý dùng như thế nào? Dùng trong thiết kế các mạch giải mã địa chỉ cho bộ nhớ và xuất nhập. Còn trong lập trình, địa chỉ vật lý không thể dùng được mà nó được thay thế bằng địa chỉ luận lý (logic).

Địa chỉ luận lý

Địa chỉ của 1 ô nhớ được xác định bởi 2 phần:

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Sự hình thành địa chỉ Hãng Intel đề xuất 1 phương pháp để hình thành địa chỉ. Mỗi địa chỉ ô nhớ được hình thành từ 1 phép tính tổng 1 địa chỉ cơ sở và 1 địa chỉ offset. Địa chỉ cơ sở lưu trong 1 thanh ghi segement, còn địa chỉ offset nằm trong 1 thanh ghi chỉ số hay thanh ghi con trỏ. Phép cộng này sẽ tạo 1 địa chỉ 20 bit gọi là địa chỉ vật lý.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?


Sự hình thành địa chỉ tuyệt đối

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?


Cách tính địa chỉ vật lý từ địa chỉ luận lý

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Sự chồng chất các đoạn Địa chỉ segment hay còn gọi là địa chỉ nền của đoạn. Nó cho biết điểm bắt đầu của đoạn trong bộ nhớ. Địa chỉ offset thể hiện khoảng cách kể từ đầu đoạn của ô nhớ cần tham khảo. Do offset dài 16 bit nên chiều dài tối đa của mỗi đoạn là 64K. Trong mỗi đoạn, ô nhớ đầu tiên có offset là 0000h và ô nhớ cuối cùng là FFFFh.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Mỗi ô nhớ chỉ có địa chỉ vật lý nhưng có thể có nhiều địa chỉ luận lý. VD: 1234 : 1234 1334 : 0234 1304 : 0534 Đều có chung địa chỉ vật lý 13574h Tại sao? Để hiểu rõ tại sao ta hãy xét mối quan hệ giữa địa chỉ vật lý với sagment và offset.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Giải thích: 0000 : 0000 -> 00000h Giữ nguyên phần segment, tăng phần offset lên 1 thành ra địa chỉ luận lý là 0000 : 0001. Địa chỉ vật lý tương ứng là 00001h. Tương tự với địa chỉ luận lý là 0000 : 0002 ta có địa chỉ vật lý là 00002h Khi offset tăng 1 đơn vị thì địa chỉ vật lý tăng 1 địa chỉ hoặc là tăng 1 byte. Như vậy có thể xem đơn vị của offset là byte. Làm lại quá trình trên nhưng giữ nguyên phần offset chỉ tăng phần segment. 0001 : 0000 -> 00010h 0002 : 0000 -> 00020h Khi segment tăng 1 đơn vị thì địa chỉ vật lý tăng 10h địa chỉ hoặc là tăng 16 bytes. Đơn vị của segment là paragraph. Ta thấy segment 0000 nằm đầu vùng nhớ nhưng segment 0001 bắt đầu cách đầu vùng nhớ chỉ có 16 bytes, segment 0002 bắt đầu cách đầu vùng nhớ 32 bytes... Phần chồng chập 3 segment 0000, 0001, 0002 trên hình vẽ là vùng bộ nhớ mà bất kỳ ô nhớ nào nằm trong đó (địa chỉ vật lý từ 00020h đến 0FFFFh) đều có thể có địa chỉ luận lý tương ứng trong cả 3 segment. VD: Ô nhớ có địa chỉ 0002Dh sẽ có địa chỉ logic trong segment 0000 là 0000 : 002D Trong segment 0001 là 0001 : 001D Trong segment 0002 là 0002 : 000D -> Nếu vùng bộ nhớ nào càng có nhiều segment chồng chập lên nhau thì các ô nhớ trong đó càng có nhiều địa chỉ luận lý. Một ô nhớ có bao nhiêu địa chỉ luận lý? Một ô nhớ có ít nhất 1 địa chỉ luận lý và nhiều nhất là 65536/16 = 4096 địa chỉ luận lý.

Các thanh ghi đoạn CS, DS, SS, ES

3 trong 4 thanh ghi đoạn được dùng trong các mục đích đặc biệt sau. CS: Xác định đoạn lệnh - nơi chứa chương trình được thi hành. DS: Xác định đoạn dữ liệu - nơi chứa chương trình được thi thành. SS: Xác định đoạn Stack - vùng làm việc tạm thời dùng để theo dõi các tham số và các địa chỉ đang được chương trình hiện hành sử dụng. ES: Trỏ đến đoạn thêm, thường được dùng để bổ sung cho đoạn dữ liệu -> có vùng nhớ > 64k cho đoạn dữ liệu.

Thanh ghi trạng thái (thanh ghi cờ)

Thanh ghi cờ là thanh ghi 16 bit nằm trong EU (Excution Unit). Tuy nghiên chỉ có 9 trong 16 bit được sử dụng, 7bit còn lại không dùng.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?

Giải thích: Cờ CF: Chỉ thị cộng có nhớ, trừ có mượn. Cờ PF: On khi kết quả của tác vụ có số bit 1 là số chẵn. Nếu số bit 1 là số lẻ thì PF là Off. Cờ AF: Có nhớ trong phép cộng hoặc có mượn trong phép trừ với 4 bit thấp sang 4 bit cao. Cờ ZF: On khi tác vụ luận lý cho kết quả là 0. Cờ SF: Bit cao nhất của kết quả sẽ được copy sang SF.SF = 1 kết quả là số âm. SF = 0 khi kết quả là số dương. Cờ OF: OF = 1 khi kết quả bị tràn số (vượt quá khả năng lưu trữ). Nếu kết quả không bị tràn thì OF = 0. 3 bit còn lại là 3 bit điều khiển: Cờ TF: Báo CPU thi hành từng bước. Cung cấp công cụ debug chương trình. Cờ IF: IF = 1 giúp 8086 nhận biết có yêu cầu ngắt quãng có che. Cờ DF: Xác định hướng theo chiều tăng/giảm trong xử lý chuỗi. 8086 cho phép User lập trình bật tắt các cờ CF, DF, IF, TF.

Thanh ghi chỉ số (Index)

5 thanh ghi offset dùng để xác định chính xác 1 byte hay 1 word trong 1 đoạn 64k, Đó là: IP: Thanh ghi con trỏ lệnh, cho biết vị trí của lệnh hiện hành trong đoạn lệnh. Con trỏ lệnh IP còn được gọi là bộ đếm chương trình. Thường được dùng kết hợp với CS để theo dõi vị trí chính xác của lệnh sẽ được thực hiện kế tiếp. Các thanh ghi con trỏ Stack: SP và BP, mỗi thanh ghi dài 16 bit. SP (Stack pointer) cho biết vị trí hiện hành của đỉnh Stack. BP (Basic pointer) dùng để truy cập dữ liệu trong Stack. SI (Source index) trỏ đến ô nhớ trong đoạn dữ liệu được định địa chỉ bởi thanh ghi DS. DI (Destination) chức năng tương tự SI. Hai thanh ghi này thường dùng trong xử lý chuỗi.

Địa chỉ luận lý và thanh ghi

Để tham khảo đến bộ nhớ trong chương trình, VXL 8086 cho phép sử dụng các địa chỉ luận lý 1 cách trực tiếp hoặc thông qua các thanh ghi của nó. Thanh ghi đoạn dùng để chứa segment. Thanh ghi tổng quát dùng để chứa địa chỉ trong đoạn offset. Để tham khảo đến địa chỉ luận lý có segment trong thanh ghi DS, offset trong thanh ghi BX, ta viết DS:BX.

Các đặc tính của CPU Intel

Hiệu quả của CPU thuộc họ Intel khi xử lý và chuyển giao thông tin được xác định bởi các yếu tố sau: + Tần số mạch xung đồng hồ của CPU. + Độ rộng của Data bus. + Độ rộng của Address bus. + Tần số mạch xung đồng hồ của CPU càng nhanh thì tốc độ xử lý càng nhanh. + Độ rộng của Data bus càng rộng thì càng nhiều data được chuyển giao trong 1 lần giao dịch. + Độ rộng của Address bus càng rộng thì khả năng quản lý bộ nhớ càng lớn.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?


RISC & CISC
Nguyên lý CISC Complex Intruction Set Computer + Tập lệnh khá lớn > 300 lệnh. + Khả năng định vị phức tạp. + Một số lệnh cần phải vi lệnh hoá quá nhiều lệnh -> nạp lâu -> làm chậm hệ thống lệnh phức tạp -> nên thời gian giãi mã lệnh nhiều khi lớn hơn thời gian thực thi. Chỉ có hơn 20% lệnh thường dùng tới.

Nguyên lý RISC (tập lệnh thu gọn)

Reduce Intruction Set Computer Tập lệnh nhỏ -> thi hành ngay không cần giải mã. Lệnh làm việc theo cơ chế đường ống (pipeline).

CPU Pentium

3 thành phần góp sức tăng tốc độ xử lý của Petium + Đơn vị tính toán số nguyên supercallar. + Bộ nhớ Cache cấp 1 ở bên trong CPU. + Đơn vị tính toán số chấm động supercallar.

Trong tập thanh ghi của cpu8086 – nhóm thanh ghi con trỏ và chỉ mục ?