Xét đoạn bộ nhớ có địa chỉ thay đổi từ 0000h ÷ FFFFh (chiều dài đoạn là 64 KB).
Địa chỉ logic hay offset: địa chỉ trong một đoạn, là độ lệch (offset) từ vị trí 0 của một đoạn cho trước.
Ví dụ : như địa chỉ logic 0010h của đoạn mã trong hình trên sẽ có địa chỉ thật sự là 28000h + 0010h = 28010h.
Địa chỉ này gọi là địa chỉ vật lý. Địa chỉ vật lý chính là địa chỉ thật sự xuất hiện ở bus địa chỉ, nó có chiều dài 20 bit
43 trang |
Chia sẻ: lylyngoc | Lượt xem: 1578 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Chương 5 Mức máy thông thường, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 5 MỨC MÁY THÔNG THƯỜNG Địa chỉ logic và địa chỉ vật lý Địa chỉ logic và địa chỉ vật lý Xét đoạn bộ nhớ có địa chỉ thay đổi từ 0000h ÷ FFFFh (chiều dài đoạn là 64 KB). Địa chỉ logic hay offset: địa chỉ trong một đoạn, là độ lệch (offset) từ vị trí 0 của một đoạn cho trước. Ví dụ : như địa chỉ logic 0010h của đoạn mã trong hình trên sẽ có địa chỉ thật sự là 28000h + 0010h = 28010h. Địa chỉ này gọi là địa chỉ vật lý. Địa chỉ vật lý chính là địa chỉ thật sự xuất hiện ở bus địa chỉ, nó có chiều dài 20 bit Khuôn dạng lệnh Opcode Opcode Address Opcode Address 1 Address 2 (a) (b) (c) Khuôn dạng lệnh Chương trình bao gồm một dãy các chỉ thị, mỗi chỉ thị chỉ rõ một hành động cụ thể nào đó Một phần chỉ thị gọi là Opcode – mã phép toán Chỉ thị có thể không có địa chỉ hoặc có nhiều địa chỉ Khuôn dạng lệnh Các tiêu chuẩn thiết kế khuôn dạng chỉ thị Chỉ thị ngắn tốt hơn chỉ thị dài Có đủ chỗ trong chỉ thị để biểu diễn tất cả các thao tác Độ dài word của máy là bội số nguyên của chiều dài ký tự: nếu mã ký tự có k bit thì chiều dài word cần phải là k, 2k, 3k, … tránh lãng phí không gian nhớ chứa ký tự Số bit trong trường địa chỉ càng ngắn càng tốt Khuôn dạng lệnh Mở rộng mã chỉ thị Chỉ thị có (n+k) bit: opcode: dài k bit có 2k chỉ thị address: dài n bit đánh được 2n ô nhớ Nếu opcode: dài k-1 bit có 2k-1 chỉ thị address: dài n+1 bit đánh được 2n+1 ô nhớ số chỉ thị chỉ còn một nửa, số ô nhớ tăng gấp đôi Khuôn dạng lệnh Ví dụ: xét một máy có chỉ thị dài 16 bit: 16 chỉ thị 3 địa chỉ Opcode Address 1 Address 2 Address 3 Khuôn dạng lệnh Nếu nhà thiết kế cần 15 chỉ thị 3 địa chỉ, 14 chỉ thị 2 địa chỉ, 31 chỉ thị 1 địa chỉ, 16 chỉ thị không có địa chỉ nào làm thế nào? Khuôn dạng lệnh 0000 xxxx yyyy zzzz 0001 xxxx yyyy zzzz …1101 xxxx yyyy zzzz 1110 xxxx yyyy zzzz 1111 0000 yyyy zzzz 1111 0001 yyyy zzzz …1111 1100 yyyy zzzz 1111 1101 yyyy zzzz 1111 1110 0000 zzzz 1111 1110 0001 zzzz …1111 1110 1110 zzzz 1111 1110 1111 zzzz 1111 1111 0000 zzzz 1111 1111 0001 zzzz … 1111 1111 1110 zzzz 1111 1111 1111 0000 1111 1111 1111 0001 …1111 1111 1111 1110 1111 1111 1111 1111 Mã chỉ thị 4 bit Mã chỉ thị 8 bit Mã chỉ thị 12 bit Mã chỉ thị 16 bit 15 chỉ thị 3 địa chỉ 14 chỉ thị 2 địa chỉ 31 chỉ thị 1địa chỉ 16 chỉ thị không có địa chỉ Khuôn dạng lệnh 3 khuôn dạng lệnh cơ bản Lệnh tham chiếu bộ nhớ Lệnh tham chiếu thanh ghi Lệnh vào/ra Cấu trúc khuôn dạng lệnh Ví dụ: Độ lớn: 16 bit, chia làm 3 phần Mã lệnh (opcode): 3bit Các thao tác: 13 bit Khuôn dạng lệnh Lệnh tham chiếu bộ nhớ 12bit để xác định địa chỉ 3 bit xác định mã lệnh 1 bit để xác định kiểu định địa chỉ I=0: định địa chỉ trực tiếp I=1 định địa chỉ gián tiếp Khuôn dạng lệnh Lệnh tham chiếu thanh ghi Mã lệnh: 111 Bit 15 =0 Khuôn dạng lệnh Lệnh vào/ra Mã lệnh: 111 Bit 15 =1 Khuôn dạng lệnh Một số lệnh cơ bản Tham chiếu thanh ghi Ví dụ: AND (I=0) AND (I=1) ( 0xxx ) ( 8xxx ) Khuôn dạng lệnh Một số lệnh cơ bản Tham chiếu vào ra Ví dụ: CLA INC Khuôn dạng lệnh Một số lệnh cơ bản Vào/ra Ví dụ: INP ADD (I=1) Các chế độ địa chỉ Xác định địa chỉ của các toán hạng tham gia vào phép toán Xác định địa chỉ của các từ nhớ tham gia vào phép toán Các chế độ địa chỉ Tức thời Trực tiếp Gián tiếp qua bộ nhớ Gián tiếp qua thanh ghi Chỉ số Thanh ghi Tương đối Các chế độ địa chỉ Địa chỉ tức thời Phần địa chỉ của chỉ thị chứa chính toán hạng đó Không có bộ nhớ tham chiếu để lấy dữ liệu Thực hiện nhanh Phạm vi bị giới hạn Instruction Operand Opcode Các chế độ địa chỉ Trực tiếp Địa chỉ trong chỉ thị là địa chỉ của ô nhớ chứa toán hạng Address A Opcode Instruction Memory Operand Các chế độ địa chỉ Gián tiếp qua bộ nhớ Địa chỉ trong lệnh là địa chỉ ô nhớ chứa địa chỉ thứ 2. Địa chỉ thứ 2 là địa chỉ ô nhớ chứa toán hạng Address A Opcode Instruction Memory Operand Pointer to operand Address 2 Các chế độ địa chỉ Gián tiếp qua thanh ghi Địa chỉ trong lệnh là địa chỉ thanh ghi. Nội dung thanh ghi là địa chỉ ô nhớ chứa toán hạng Register Address R Opcode Instruction Memory Operand Pointer to Operand Registers Các chế độ địa chỉ Chỉ số Địa chỉ ô nhớ chứa toán hạng được xác định bằng cách cộng địa chỉ trong lệnh với nội dung thanh ghi chỉ số Register R Opcode Instruction Memory Operand Pointer to Operand Registers Address A + Các chế độ địa chỉ Tương đối Địa chỉ ô nhớ chứa toán hạng được xác định bằng cách cộng địa chỉ trong lệnh với nội dung thanh ghi PC Các chế độ địa chỉ Thanh ghi Trường địa chỉ của chỉ thị chứa số của thanh ghi đang chứa tóan hạng. Register Opcode Instruction Registers Operand Address Hoạt động của một phần tử (cell) nhớ Thao tác đọc bộ nhớ - Bước 1 CPU Memory Thao tác đọc bộ nhớ - Bước 2 CPU Memory Accessed location at XXXX Thao tác đọc bộ nhớ - Bước 3 CPU Memory Thao tác ghi bộ nhớ - bước 1 CPU Memory Thao tác ghi bộ nhớ - bước 2 CPU Memory Memory request Thao tác ghi bộ nhớ - bước 3 CPU Memory Memory request Register Write Accessed location at YYYY Lược đồ nhớ Là cách mô tả bộ nhớ của hệ thống thông qua hàng dọc; có nghĩa là biểu diễn mô hình ma trận nhớ trong đó các hàng sẽ tương ứng với các đơn vị nhớ. Trong một vùng địa chỉ nhớ gồm các phân vùng nhỏ chứa các nguồn tài nguyên riêng biệt Lược đồ nhớ Kích thước các dữ liệu được lưu trong bộ nhớ chính là số lượng các bit có thể lưu trong một đơn vị nhớ là cố định và chính bằng số các cột trong ma trận nhớ đó Một đoạn dữ liệu: Các đoạn mã của chương trình, các dữ liệu… Được lưu trong một địa chỉ duy nhất hay chính là các hàng trong bộ nhớ đó. Một số đoạn trong bộ nhớ được thiết kế dành riêng cho các mục đích đặc biệt Ví dụ: BIOS, Hệ điều hành Lược đồ nhớ Kích thước không gian nhớ: số lượng các đơn vị nhớ Ví dụ: không gian nhớ 2m, m là đường địa chỉ cần có của bộ VXL Đỉnh của bộ nhớ có địa chỉ là FFFFF = 1111 1111 1111 1111 1111. Bộ VXL truy cập vào địa chỉ cao nhất của bộ nhớ bằng cách đặt tất cả các đường địa chỉ đều bằng 1 Bộ VXL có 20 đường địa chỉ: Không gian địa chỉ nhớ sẽ là 220=1048 576=1MB Lược đồ nhớ Số phân vùng (partition) Hãy tính số phân vùng cho BIOS với Địa chỉ cao: FFFF=65535 Địa chỉ thấp: FF00=65280 Số phân vùng:= (địa chỉ cao –địa chỉ thấp) +1 Bộ giải mã địa chỉ ( Address Decoding ) Giải mã địa chỉ là một cách sử dụng địa chỉ để cho phép tại một thời điểm chỉ có một thiết nhớ làm việc trong khi các thiết bị khác không được cấp phép. Địa chỉ đầy đủ được chia ra làm hai nhóm; Nhóm thứ nhất được sử dụng để xác định thiết bị nhớ Nhóm thứ hai xác định đơn vị nhớ trong thiết bị nhớ được lựa chọn Bộ giải mã địa chỉ ( Address Decoding ) Để chia một địa chỉ ra thành hai nhóm như trên cần phải biết được độ lớn của thiết bị nhớ đó và không gian nhớ là bao nhiêu? Kích thước không gian nhớ của thiết bị : 2m, m là số đường địa chỉ đến thiết bị đó am-1 am-2 am-3 … ak ak-1 ak-2 … a2 a1 a0 m-k bit dùng để xác định thiết bị nhớ k bit còn lại được nối trực tiếp đến thiết bị nhớ Ta thấy, các bit có trọng số cao luôn để thực hiện việc cho phép hay không cho phép thiết bị nhớ hoạt động, các bit có trọng số thấp được dùng để truy cập vào đơn vị nhớ. Bộ giải mã địa chỉ ( Address Decoding ) Ví dụ, một thiết bị nhớ có 28 đường địa chỉ , ta có 228=256Mega đơn vị nhớ. Có nghĩa là phải sử dụng 28 bit địa chỉ để xác định đơn vị nhớ trong thiết bị đó. Tất cả các Bit còn lại trong địa chỉ đầy đủ đó sẽ được sử dụng để kích hoạt hay không kích họat thiết bị. Bộ VXL cũng thông qua các bit còn lại này để xác định bộ nhớ sẽ được đặt ở đâu trong lược đồ nhớ. Bộ giải mã địa chỉ ( Address Decoding ) Kích thước bộ nhớ cùng với số lượng các đường địa chỉ cần thiết để truy cập vào tất cả các đơn vị nhớ trong lược đồ nhớ đó. Bộ giải mã địa chỉ ( Address Decoding ) Ví dụ: Có một bộ VXL có không gian nhớ là 256Meg đang có địa chỉ là 35E3C03 truy cập vào một thiết bị nhớ có dung lượng là 16Meg. Vậy Cần bao nhiêu đường địa chỉ để cho phép kích hoạt thiết bị nhớ có không gian nhớ là 16 Meg này? Địa chỉ nào trong thiết bị nhớ 16 Meg là địa chỉ sẽ được sử dụng để truyền nhận dữ liệu Địa chỉ thấp nhất trong bản đồ nhớ của thiết bị nhớ 16 Meg là bao nhiêu? Địa chỉ cao nhất trong bản đồ nhớ của thiết bị nhớ 16 Meg là bao nhiêu? Bộ giải mã địa chỉ ( Address Decoding ) Ví dụ: Có một bộ VXL có không gian nhớ là 256Meg đang có địa chỉ là 35E3C03 truy cập vào một thiết bị nhớ có dung lượng là 16Meg. Vậy Số đường địa chỉ để cho phép kích hoạt thiết bị nhớ có không gian nhớ 16M là: 256M = 228 có 28 đường địa chỉ 16M=224 có 24 đường địa chỉ Như vậy cần có 4 đường địa chỉ từ 28 – 24 để kích hoạt không gian nhớ 16M Địa chỉ từ 23 – 0 là địa chỉ được sử dụng để truyền nhận dữ liệu 35E3C03 = 0011 0101 1110 0011 1100 0000 0011 0011 | 0000 0000 0000 0000 0000 0000 – địa chỉ thấp nhất 0011 | 1111 1111 1111 1111 1111 1111 – địa chỉ cao nhất Các kiểu chỉ thị Các chỉ thị vận chuyển dữ liệu: vd: copy dữ liệu Các chỉ thị cho phép toán 2 ngôi Các chỉ thị cho phép tóan một ngôi Các chỉ thị so sánh và nhảy có điều kiện Các chỉ thị gọi chương trình con Các chỉ thị lặp Các chỉ thị vào/ra