Giáo trình Cấu trúc máy tính - Nguyễn Hữu Lộc

CHƯƠNG 1:

GIỚI THIỆU CHUNG

Máy tính số là thiết bị có khả năng giải các bài toán bằng cách thực hiện một số

lệnh hữu hạn. Chương trình máy tính gồm một dãy lệnh sắp xếp theo một trình tự nhất

định để thực hiện một việc cho trước. Những linh kiện điện tử trong mỗi máy tính chỉ

có thể nhận biết và thực hiện trực tiếp một số lệnh hữu hạn và một chương trình máy

tính chỉ có thể thực hiện trên máy tính đó nếu sử dụng chính số lệnh hữu hạn đó.

Tập lệnh mà máy tính thực hiện trực tiếp tạo ra một ngôn ngữ cho phép người sử

dụng trao đổi được với máy tính. Đó là ngôn ngữ máy. Khi chế tạo ra một máy tính

mới, người ta tạo ra các lệnh, hình thành ngôn ngữ máy. Thông thường người ta có

khuynh hướng chọn các lệnh này càng đơn giản càng tốt để hạn chế mức độ phức tạp

(và dĩ nhiên là giá thành ) của các linh kiện điện tử cần thiết. Khó khăn là các ngôn

ngữ máy này còn quá nguyên sơ nên rất khó sử dụng.

 

pdf126 trang | Chia sẻ: phuongt97 | Lượt xem: 303 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Giáo trình Cấu trúc máy tính - Nguyễn Hữu Lộc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ố cho biết than bit. Thông tin đặt trong thanh ghi sẽ tồn tại cho đến khi có một thông tin khác thay thế. Qúa trình đọc thông tin ra khỏi một thanh ghi không làm thay đổi nội dung của thanh ghi này. Nói cách khác, khi một thanh ghi được đọc, một bản sao nội dung của thanh ghi được tạo ra và bản gốc trong thanh ghi không bị xáo trộn. 2. Bus nội: Bus nội là tập hợp các đường dây truyền tín hiệu theo dạng song song. Thí dụ: các bus được dùng để cho phép nội dung của một thanh ghi được sao chép đến một thanh ghi khác. Không giống bus hệ thống đã khảo sát ở chương 3, các bus này chỉ kết nối h . guồn và thanh ghi còn lại luôn luôn . Một bus mà các thành phần kết nối có đặc tính này được gọi là bus b rãi khi có nhiều thành phần nối đến bus và ch ai thành phần do vậy không cần các đường địa chỉ hoặc các đường điều khiển bao quát chỉ cần n đường dữ liệu và trong trường hợp tổng quát một hoặc hai đường điều khiển cũng đủ. Các bus được dùng do bởi việc chuyển song song tất cả các bit cùng một lúc sẽ nhanh hơn nhiều so với truyền nối tiếp từng bit một ở mỗi thời điểm Một bus có thể là đơn hướng (unidirectional) hay song hướng (bidirectional). Bus đơn hướng chỉ có thể chuyển dữ liệu theo một chiều trong khi bus song hướng chuyển dữ liệu theo cả hai chiều nhưng không đồng thời. Các bus đơn hướng điển hình được dùng để nối hai thanh ghi, một thanh ghi luôn luôn là n là đích. Các bus song hướng điển hình được dùng khi bất kỳ thanh ghi nào trong tập thanh ghi cũng có thể là nguồn hoặc là đích. Nhiều thành phần có khả năng tự kết nối hoặc không kết nối về mặch địên với bus (nhưng vẫn kết nối về mặt vật lý. Các kết nối này có thể được thực hịên hoặc không trong vài ngiây a trạng thái (tristate bus) vì mỗi một đường của bus có thể là 0, 1 hoặc không kết nối. Các bus ba trạng thái được sử dụng rộng úng đều có khả năng đưa thông tin lên bus . Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -92- Hình 4.1 (a) mô tả một thanh ghi 8 bit được nối với một bus nhập và một bus xuất. Thanh ghi bao gồm 8 flip flop loại D, mỗi flip flop lưu trữ 1 bit và được nối với bus xuất qua một cổng đệm không đảo. Thanh ghi có hai tín hiệu điều khiển, CK và ối đến tất cả các flip flop. Bình thường 2 tín hiệu này g thỉnh thoảng chúng được xác lập, gây nên tác động tương ứng. Khi CK không xác lập, nội dung của tha xác l cho phép xuất OE (output enable), n ở trạng thái tĩnh nhưn nh ghi bởi các tín hiệu trên Bus. Khi CK ập, thanh ghi được nạp từ bus nhập. Khi OE không xác lập, thanh ghi không được kết nối với bus xuất. Ngược lại khi OE được xác lập, nội dung của thanh ghi được nạp nên bus xuất ( thanh ghi xuất thông tin lên bus ) Hình 4.1 (a) chi tiết một thanh ghi 8-bit nối với một bus nhập và một bus xuất b) ký hiệu của một thanh ghi 16 – bit với một bus nhập và 2 bus xuất Nếu có một thanh ghi khác, R chẳng hạn, có các ngõ vào nối với Bus xuất của thanh ghi vừa mô tả ở trên, thanh gi này có thể truyền thông tin đến R. Để thực hiện điều này, OE phải được xác lập và giữ ở trạng thái này đủ lâu để đưa thông tin lên bus ổn định. Kế đến đường CK của R được xác lập để nạp cho R thông tin này. Thao tác mở cổng đưa thông tin của một thanh ghi lên bus để nột thanh ghi khác nạp vào thường xảy ra ở lớp vi chương trình. Hình 4.1 b) trình bày một thanh ghi 16 bit với 2 bus xuất , mỗi bus được điều khiển bơiû một tín hiệu OE khác nhau Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -93- II. MỘT VÍ DỤ VỀ VI CHƯƠNG TRÌNH: Hình 4.2: Sơ đồ khối của 1 CPU đơn giản của một máy tính điện tử thiết kế theo phương pháp vi chương trình hoá. Để thực hiện một lệnh cộng (ADD) cần một hệ tối thiểu các phép vi toán: Ký tự gợi nhớ Ghi chú MAR-M Nối MAR với BUS M MBR-M Nối MBR với BUS M PC-D Nối PC với BUS D IA-D Nối IA (của IR) với BUS D AC-D Nối Accumulator với BUS D MTS Nối BUS M với BUS S qua ALU DTS Nối BUS D với BUS S qua ALU S-MAR Nối BUS S với MAR S-MBR Nối BUS S với MBR S-PC Nối BUS S với PC S-IR Nối BUS S với IR Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -94- S-AC Nối BUS S với AC R Đọc nội dung trong Mem ra MBR W Viết nội dung từ MBR vào Mem PLUS Cộng nội dung có trên BUS D và BUSM tại ALU và đưa ra BUS S ONE Nối BUS D với BUS S qua ALU cộng 1 JMP Nhảy đến địa chỉ trong lệnh sau nếu A=0 JOPC Nhảy đến địa chỉ của mã lệnh (giải mã lệnh) Hình 4.3: hệ tối thiểu các phép vi toán VI LỆNH MEM Nhảy ALU BUSM BUSD BUSS Địa chỉ PC-MAR DTS PCD SMAR |ADDR|MBR R (MBR)IR MTS MBRM SIR DECODE JOPC (IA)MAR DTS IAD SMAR |DATA|MBR R MBR+A PLUS MBRM ACD SAC PC+1 ONE PCD SPC Hình 4.4: Vi chương trình thực hiện lệnh ADD Sử dụng các phương pháp viết chương trình: - Móc nối chương trình con - Đánh địa chỉ chỉ số hoá - Đánh địa chỉ thông số hoá Ưu điểm: mô phỏng nhiều thiết bị có chức năng khác nhau Xây dựng kết cấu của hệ thống có thể quyết định trong giai đoạn ối của quá tr Giảm sai lầm logic - Có khả năng bằng 1 máy - cu ình thiết kế Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -95- CHƯƠNG 5: g này giới t cấu t a lớp này. T iển trước bất kỳ một n gữ máy nào khác ổ biến. Do bởi trên n áy, vi chương tr ụng (không phải nữa, ngay trên n trình, sự phức tạp rất lớn của cấu trúc lớp 1 cũng đủ làm hầu hết những người lập trình n ài h ù m ùy s ệ ư kh o phe một ng ời sư (debu các v ơng trình mới trong khi một ng dụng áy. Đa tính na chương trình. I. CÁC THÍ DỤ VỀ LỚP MÁY QUI ƯỚC: LỚP MÁY QUY ƯỚC Chươn hiệu lớp máy qui ước (lớp 2) và thảo luận nhiều khía cạnh về heo lrúc củ ịch sử, ngôn ngữ máy lớp 2 được phát tr gôn n và vẫn được xem là một ngôn ngữ máy ph hiều m ình được đặt trong bộ nhớ chỉ đọc, người sử d ương trình cho máy lớp 1. Hơnngười chế tạo máy) không thể viết ch ững máy người sử dụng có thể vi lập h e ngại, trừ những người lập trình chuyên nào có ghiệp. Ngo ra, do k ông co ột ma ự bảo v phần c ùng ở lớp 1, nên ông thể ch ùp ư ûa sai g) i chư người khác đa sử m ëc øy hơn nữa còn lớp người sử dụng lập vi cố g định nghĩa một cách hính xác lớp máy qui ước là gì (có lẽ kh nh ngh a được) chún g lơ nà cách khảo sát các ví dụ, trước tiên là Intel. Mục đích của việc n hiên c ï C trình bày những ý tưởn thế nào với thế giới t hiếu theo nhiều cách khác nhau để trình bày những chọn lựa khác nhau của các nhà thiết kế khác nhau. Các CPU này tưởng thiết kế một máy tính như là một chuỗi các lớp máy. à cấu trúc của chúng sẽ được khảo sát về lập trình trên chúng cũng được giới thiệu tại những điểm cần thiết. Tuy nhiên, ở đây không cung cấp một mô tả hoàn toàn đầy đủ. Để hiểu thông suốt về tất cả chi tiết của các C g xuất bản. Cuối cùng, chương này chủ yếu xử lý những l trình của người sử dụng dùng đến (nghĩa là chương trình ứng dụng). Các khía cạnh về cấu trúc và những lệnh liên quan đến người viết hệ điều hành sẽ bị bỏ qua hoặc được gác lại cho tới khi vấn đề được bàn đến trong chương 6. 1. Họ 8088 của Intel : Bắt đầu thảo luận về lớp máy qui ước với chip 8088 của Intel là thích hợp vì đây là bộ óc của các máy IPM PC và những máy mô phỏng theo, và do vậy CPU này được sử dụng rộng rãi hầu như trên khắp thế giới. Thay vì gắn c ông thể đị ĩ , g ta sẽ iới thiệu ùp máy y bằng g ứu ho PU hiện có này là nhằm g được thảo luận ở đây có thể được áp dụng như hực. Các máy này sẽ được so sánh và đối c được dùng để minh họa ý Những đặc tính khác nhau ve và thông tin PU, hãy tham khảo những tài liệu được các nhà chế tạo ra chún ệnh và cấu trúc mà các chương Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -96- Hình 5.1:Cấu trúc bộ nhớ của 8088 Ở lớp máy qui ước, 8088 và 8086 giống hệt nhau nên mọi điều chúng ta nói về 8088 cũng áp dụng được cho 8086. Chip 8088 có thể địa chỉ hóa 220 byte, đánh số liên tục bắt đầu từ 0 như trình bày trong hình 5.1. oặc trên các từ 16 bit. Từ không PU phải cần đến giải p 20 xuất. Để truy xuất một lệnh ở ngoài tầm này, ta phải thay đổi nội dung thanh ghi phân đoạn truy xuất các phân đoạn dữ liệu và phân đoạn ngăn xếp. Cuối cùng, thanh ghi phân đoạn phụ (cũng dùng để truy xuất phân đoạn dữ liệu) là một thanh ghi dự phòng khi cần. Các lệnh có thể hoạt động trên các byte 8 bit h nhất thiết bắt đầu ở byte chẵn mặc dù với các từ bắt đầu ở byte chẵn, 8086 làm việc có hiệu quả hơn. Với bộ nhớ 220 byte, 8088 thực sự cần các địa chỉ 20 bit để địa chỉ hóa bộ nhớ. Vì các thanh ghi và mọi thứ khác của máy đều dùng các từ 16 bit, nên các số 20 bit rõ ràng không thuận tiện. Để giải quyết vấn đề này, các nhà thiết kế C háp gọi là "què quặt" (kludge=một biệt ngữ của máy tính chỉ một phương pháp không lịch sự và vụng về được dùng để làm một điều gì đó). Giải pháp này đưa ra 4 thanh ghi phân đoạn (segment): mã, dữ liệu, ngăn xếp và phụ (code, data, stack và extra), mỗi thanh ghi phân đoạn chứa một địa chỉ bộ nhớ trỏ tới nền (base) của một phân đoạn 64K. Mỗi thanh ghi phân đoạn trỏ tới một nơi nào đó trong không gian địa chỉ 2 byte, như trình bày trong hình 5.2. tất cả việc tìm nạp lệnh đều có liên quan đến thanh ghi phân đoạn mã. Thí dụ, nếu thanh ghi này trỏ đến địa chỉ 96000 và bộ đếm chương trình có giá trị 1024, lệnh kế tiếp sẽ được tìm nạp từ địa chỉ 97024. Với giá trị này của thanh ghi phân đoạn mã, các lệnh đặt trong tầm địa chỉ từ 96000 tới 161535 đều được truy mã. Tương tự, thanh ghi phân đoạn dữ liệu và thanh ghi phân đoạn ngăn xếp dùng để Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -97- Sơ đồ này có nghĩa là bất cứ lúc nào, 256K bộ nhớ đều có thể truy xuất được mà không phải thay đổi một thanh ghi phân đoạn nào cả. Hình 5.2: Sử dụng các thanh ghi phân đoạn trên 8088 Một số trình biên dịch giới hạn chương trình với chiều dài 64K cho văn bản chương trình (nghĩa là các lệnh) và 64K khác cho cả dữ liệu và ngăn xếp nhằm tránh tổn p ết, các thanh ghi phân đoạn nên có độ rộng 20 bit để trỏ tới bất kỳ địa chỉ nào trong không gian địa chỉ 220 byte. Tuy nhiên, như đã nói trên, 8088 không được lệnh tương ứng để thực hiện phép toán sẽ dài hơn và chậm hơn so với những lệnh dùng thanh ghi AX. hí (overhead) thời gian kết hợp với việc nạp và cất liên tục các thanh ghi phân đoạn hoặc dùng thanh ghi phân đoạn phụ. Theo lý thuy trang bị để xử lí các số thanh ghi phân đoạn chỉ trỏ tới những địa chỉ là bội số của 16 để 4 bit thấp nhất của địa chỉ là zero và 4 bit này không cần cất vào thanh ghi phân đoạn. Như vậy, các thanh ghi phân đoạn chỉ chứa 16 bit cao của địa chỉ 20 bit. 8088 có 14 thanh ghi 16 bit ( hình 5.3 ). Thanh ghi AX chủ yếu được dùng cho các phép toán số học. Thí dụ để tính tổng 2 số nguyên, chương trình có thể nạp 1 trong 2 số nguyên nào đó vào AX, sau đó cộng số thứ 2 với AX và cuối cùng cất AX vào bộ nhớ. Cũng có thể dùng những thanh ghi khác, nhưng các Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -98- Thanh ghi BX tiêu biểu dùng để chứa con trỏ ( pointer ) trỏ đến bộ nhớ, thanh ghi CX chứa số đếm trong các lệnh vòng lặp. Để lặp lại một vòng lặp n lần, CX được nạp giá trị n sau mỗi lần lặp, CX được giảm 1 cho đến khi CX bằng zero, vòng lặp kết thúc. DX là một thanh ghi mở rộng của AX trong các lệnh nhân và chia, thanh ghi này chứa nửa cao của một tích 32 bit hoặc nửa cao của số bị chia 32 bit. Mỗi thanh ghi 16 bit này (AX, BX,CX,DX) đều có nửa thấp và nửa cao, chúng đều có thể được địa chỉ hoá riêng lẻ. Khi dùng phương pháp địa chỉ hoá này, chúng hình nh bởi thanh ghi SI trong phân đoạn dữ liệu và địa chỉ đích xác định bởi thanh ghi DI trong phân đoạn phụ. Thí dụ, lệnh cho phép di chuyển 1 số byte từ nguồn tới đích. Thanh ghi BP và SP thường được dùng để địa chỉ hoá stack. BP trỏ tới đáy của khung ngăn xếp hiện tại và SP trỏ tới đỉnh của khung ngăn xếp. Biến cục bộ của thủ tục hiện tại thường được địa chỉ hoá bằng cách cung cấp bước nhảy (offset) của biến từ BP (bởi vì biến cục bộ không thẻ chỉ rõ địa chỉ liên quan tới SP). Kế tiếp là 4 thanh ghi phân đoạn, như đã mô tả trước đây, theo sau là bộ đếm chương trình PC dùng để trỏ tới lệnh kế tiếp (liên quan tới vị trí bắt đầu của phân đoạn mã). (a) Hình 5.3: Các thanh ghi 8088 thành một tập 8 thanh ghi 1 byte có thể dùng với lệnh thao tác trên các đại lượng 1 byte. Sử dụng các thanh ghi theo kiểu này là dấu vết còn tồn tại của cách làm việc trong 8088 cũ (CPU 8 bit). Thanh ghi SI và DI được dùng cho các thao tác chuỗi. Một thao tác chuỗi điển hình cần có địa chỉ nguồn xác đị Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -99- Hai thanh ghi cuối cùng là con trỏ chương trình IP (instruction pointer) và các cờ (flag), trên hầu hết các máy khác chúng được gọi là bộ đếm chương trình và từ trạng thái chương trình PSW (program status word). Bộ đếm chương trình trỏ tới lệnh kế tiếp sẽ được thực hiện. Thanh ghi các cờ (xem hình 5.4) là thanh ghi mới. Thật ra đây không phải là thanh ghi bình thường màlà 1 tập hợp các bit có thể được thiết lập (set), xóa (clear) và kiểm tra bởi những lệnh khác nhau. Một cách tóm tắt, các bit có ý nghĩa như sau: it D g (direction) của các thao tác chuổi. Bit I cho phép ngắt. Bit T cho phép chạy chương trình từng bước để theo dõi. B xác định hướn Hình 5.4: Thanh ghi các cờ của 8088 ố học bị tràn. Bit S được thiết lập bởi các lệnh số học, 1 cho kết quả âm, 0 cho kết quả dương. Tương t khi k ột lệnh số học. Có 7 bit không được sử dụng trong 8088, nhưng m g trên các byte 8-bit. Những biến thể này được phân biệt bằng một bit trong lệnh. i chuyển dữ liệu bên trong máy ; giữa các thanh ghi, bộ nhớ và ngăn xếp. Nhóm thứ 2 thực hiện các phép tính số học, cả số có dấu và không có dấu. Đối với phép nhân Các bit còn lại thường được gọi là các mã điều kiện (condition code) bởi vì chúng được thiết lập và xóa bởi những lệnh khác nhau tùy thuộc vào những điều kiện khác nhau xảy ra (kết quả âm, zero, và v.v ). Bit 0 được thiết lập khi kết quả của phép toán s ự, bit Z được thiết lập là 1 khi kết quả bằng zero và bị xóa về 0 ết quả khác zero. Các bit A và C biểu thị số nhớ xuất hiện ở giữa và cuối toán hạng. Cuối cùng, bit P là bit kiểm tra chẵn lẻ (parity) kết quả của m ột số trong chúng được dùng cho những chip kế thừa. Tập lệnh của 8088 được liệt kê trong hình 5.5. Nhiều lệnh tham chiếu 1 hoặc 2 toán hạng (operand), hoặc trong các thanh ghi hoặc trong bộ nhớ. Thí dụ, lệnh INC cộng thêm 1 vào toán hạng. Lệnh ADD cộng nguồn vào đích. Một số lệnh có vài biến thể liên quan mật thiết. Thí dụ, các lệnh dịch bit có thể dịch trái hoặc dịch phải, có thể xử lý với bit có dấu hoặc không. Hầu hết các lệnh đều có nhiều dạng mã hoá khác nhau tuỳ thuộc vào bản chất của các toán hạng. Trong hình 5.5, trường scr là nguồn của thông tin và không bị thay đổi. Trái lại, trường dst là đích của thông tin và thường bị thay đổi bởi lệnh. Có những quy luật cho phép một toán hạch nào đó là nguồn hay là đích , chúng thường thay đổi giữa lệnh này với lệnh khác và chúng ta sẽ không bàn thêm ở đây. Đa số lệnh đều có 2 biến thể, một biến thể hoat động trên các từ 16-bit và một số biến thể hoặt độn Để thuận tiện, ta sẽ chia các lệnh thành nhiều nhóm. Nhóm đầu tiên chứa các lệnh d Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -100- chia, ực hiện các phép tính số BCD (binary-coded decimal), xử lý từng byte ø dạng lưu trữ này không có hiệu quả nhưng tránh được phân rồi sau đó phải đổi lại thành thập Các lệnh đại số logic và dịch / quay thao tác với các bit trong 1 từ hoặc 1 byte theo nhiều cách khác nhau. Một tích số hoặc số bị chia 32-bit được cất trong AX (chứa phần thấp) và DX (chứa phần cao). Nhóm thứ 3 th như là hai nibble (nửa byte)4 bit. Mỗi nibble chứa một số thập phân (từ 0 đến 9). Các tổ hợp bit từ 1010 tới 1111 không được dùng . một số nguyên 16-bit có thể chứa một số thập phân từ 0 đến 9999. Du sự cần thiết phải đổi số thập phân sang nhị phân để xuất kết quả. Những lệnh này được dùng để thực hiện các phép tính số học trên các số BCD. vài kết hợp cũng được cung cấp. Hình 5.5 tập lệnh của 8088 Hai nhóm lệnh kế tiếp thực hiện phép kiểm tra và so sánh, sau đó thực hiện nhảy dựa vào kết quả sinh ra. Kết quả của các lệnh kiểm tra và so sánh được cất trong những bit khác nhau của thanh ghi cờ. Jxx nghĩa là tập các lệnh nhảy có điều kiện tùy thuộc vào kết quả của phép so sánh trước ( nghĩa là, các bit trong thanh ghi cờ ). Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -101- 8088 có vài lệnh nạp, cất, di chuyển, so sánh và quét chuỗi các kí tự hoặc các từ. Những lệnh này có thể được mở đầu bằng 1 byte đặc biệt gọi là REP, byte này làm cho lệnh được lặp lại cho tới khi thỏa mãn một điều kiện nào đó, như CX chẳng hạn, trong 86, 80386 ) có một số lệnh tiền tố ( prefix ), và chúng ta đã đề cập đến một tiền tố, REP. Mỗi tiền tố này là một byte đặc biệt thường đứng trước lệnh. REP g để buộc lệnh phải tìm nạp toán hạng của lệnh từ ngăn xếp hoặc từ phân đoạn phụ thay vì từ phân đoạn dữ liệu. II. CÁC KHUÔN DẠNG LỆNH đó CX bị giảm 1 sau mỗi lần lặp cho tới khi bằng 0. Bằng cách này, các khối dữ liệu tùy ý có thể được di chuyển, so sánh, và v.v Nhóm cuối cùng là những lệnh hỗn độn không thích hợp trong một nhóm nào cả. Những lệnh này bao gồm các lệnh biến đổi, xuất / nhập và dừng CPU. 8088 ( và cả 802 làm cho lệnh theo sau tiền tố này được lặp lại. LOCK dành riêng bus cho toàn bộ lệnh để cho phép đồng bộ đa xử lí. Những tiền tố khác được dùn Chương trình bao gồm một chuỗi các lệnh, mỗi lệnh xác định một động tác cụ thể nào đó. Một phần của lệnh được gọi là mã thao tác (operation code ) hoặc opcode cho biết động tác gì được thực hiện. Nhiều lệnh chứa hoặc chỉ rõ vị trí của dữ liệu được lệnh sử dụng. Thí dụ lệnh so sánh 2 ký tự xem chúng có giống nhau không cần phải xác định rõ các ký tự nào được so sánh. Vấn đề chung cho biết các toán hạng ở đâu được gọi là định địa chỉ hay địa chỉ hóa hay đánh địa chỉ ( addressing ) sẽ được thảo luận trong phần sau nữa. Hình 5.6 trình bày vài khuôn dạng ( format ) tiêu biểu cho các lệnh lớp 2. Trên một số máy lớp 2, tất cả các lệnh có cùng chiều dài, trên một số máy khác có thể có 2 hoặc 3 chiều dài khác nhau. Hơn nữa các lệnh có thể có chiều dài ngắn hơn, bằng hoặc dài hơn chiều dài của 1 từ. Hình 5.6: 3 khuôn dạng chỉ thị tiêu biểu hí dụ về các khuôn dạng lệnh không ở trong bộ nhớ. Vì vậy tồn tại những lệnh cộng 2 thanh ghi,cộng thanh ghi với bộ nhớ T Họ 8088/80286/80386 của Intel Với các CPU của Intel,tình huốn hoàn toàn khác và rất ít theo quy luật. Nhìn chung, với các lệnh 2 toán hạng, nếu 1 toán hạng ở trong bộ nhớ, toán hạng kia Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -102- và co hương tiện để đi tới các opcode 2 byte. Cấu trúc duy nhất trong trường opcode là việc dùng bit thấp trong một số lệnh để cho b heo sau byte opcode trong hầu hết các lệnh là 2 byte thứ 2 cho biết toán hạng ở đâu, số tổ hợp nào đó và dùng chúng cho những trường hợp đặc biệt. Trên 80386, trong các phân đoạn 32 bit, các kiểu hoàn toàn khác với các kiểu øy cần thêm 1 byte, gọi là SIB (scale, index, base te. III. KIỂU ĐỊNH VỊ ĐỊA CHỈ : äng bộ nhớ với thanh ghi,nhưng không tồn tại lệnh cộng từ nhớ này với từ nhớ kia, PDP-11 cho phép điều này như là một kết quả trực tiếp cảu tính trực giao. Trên 8088 mỗi opcode là 1 byte, nhưng với 80386 các opcodé-byte đều đã được tận dụng hết, vì thế opcode 15 được dùng như là p iết byte /từ và dùng bit kế bên để cho địa chỉ bộ nhớ (nếu có) là nguồn hay đích. T tương tự với 2 trường kiểu/thanh ghi trong hình 5.21. Vì chỉ có 8 bit nên byte thứ 2 được chia thành 1 trường kiểu 2 bit và 2 trường thanh ghi 3 bit . Như vậy chỉ có 4 cách để địa chỉ hoá các toán hạng (PDP-11 có 8) và 1 trong các toán hạng luôn luôn phải là thanh ghi. Một cách logic, một thanh ghi bất kỳtrong các thanh ghi AX, BX, CX, DX, SI, DI, BP hoặc SP cần được chỉ rõ như thanh ghi khác, nhưng các quy luật mã hoá cấm một trên 8088 và80286. Một số các kiệu na ) để cho thêm một đặc tính kỹ thuật nữa. Sơ đồ này không phải là sơ đồ lý tưởng nhưng đơn giản là vì chúng không còn bit. Ngoài ra một số lệnh có 1, 2 hoặc 4 byte nữa để xác định địa chỉ bộ nhớ và 1, 2 hoặc 4 byte khác dược dùng làm toán hạng hằng số ( thí dụ để chuyển số 100 vào thanh ghi). Mỗi lệnh có thể có 6 trường, mỗi trường có tầm từ 0 tới 5 byte. Trên 8088 và 80286, lệnh ngắn nhất dài 1 byte và lệnh dài nhất có 9 byte ( kể cả các tiền tố REF, LOCK và các tiền tố thay thế phân đoạn ). Trên 80386, lệnh ngắn nhất vẫn dài 1 byte, nhưng với việc cộng thêm các tiền tố, kích thước của toán hạng và kích thước của địa chỉ, một lệnh có thể dài tới 17 by Các lệnh có thể được phân loại theo số địa chỉ sử dụng. Nên nhớ rằng tập các thanh ghi được đánh số của CPU thực tế hình thành một bộ nhớ tốt độ cao và xác định một không gian địa chỉ i 2 được xếp vào loại có 2 địa chỉ bởi vì lệnh phải xác định các thanh ghi nào tham gia vào phép cộng, giống như l ác từ nhớ nào được cộng. ù thể có 1, 2 và 3 địa chỉ. Trên nhiều máy, việc thực . Một lệnh cộng thanh ghi 1 với thanh gh ệnh cộng 2 từ nhớ phải cho biết c Một cách tổng quát, các lệnh co hiện phép toán số học chỉ có 1 địa chỉ và người ta sử dụng 1 thanh ghi đặc biệt gọi là thanh chứa (accumulator), thanh ghi này cung lớp 1 toán hạng. Nguyễn Hữu Lộc Khoa Vật Lý Cấn Trúc Máy Tính -103- Trên những máy này địa chỉ thường là địa chỉ cửa từ nhớ m, ở đó toán hạng được định vị. Lệnh cộng xác định địa chỉ m có kết quả là Accumulator:= accumulator + memory[m] Các lệnh cộng có 2 địa chỉ sử dụng 1 địa chỉ là nguồn và địa chỉ kia là đích . sau đó cộng nguồn với đích: Destination := destination + source Các lệnh có 3 địa chỉ cho biết 2 nguồn và 1 đích. Nội dung của 2 nguồn được cộng với nhau và cất kết quả vào đích. Chú

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_cau_truc_may_tinh_nguyen_huu_loc.pdf