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

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

Đ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

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 bit được trình bày hình 2.1 Sơ đồ khối này đặc trưng cho hầu hết các bộ vi xử lý bit đã có thị trường 8085, 8088/8086 và Z80… Các bộ vi xử lý các thế hệ sau sẽ có cấu trúc bên khác vẫn giữ được một số nguyên tắc hoạt động bản của sơ đồ này MARs Data Register SP PC BIU Internal BUS External BUS Acc Queue Cờ ALU CU Các tín hiệu điều khiển và định thời Hình 2.1 Sơ đồ khối của một bộ vi xử lý bit truyền thống Vi xử lý là một mạch số có thể thực hiện nhiều chức số khác Nó sẽ thực hiện một bài toán, một công việc được cung cấp một chương trình Một chương trì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 của vi xử lý hoạt động Quá trình làm việc của vi xử lý bao gồm hai chu kỳ chính lặp lại một cách liên tục đó là: 15 - Chu kỳ lấy các mã lệnh - Chu kỳ thực hiện các chức mà lệnh yêu cầu Tương ứng với hai chu kỳ có thể chia vi xử lý 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 các tín hiệu cho phép chọn các khối VXL được phép hoạ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 các khối khác CPU hoạt động để thực hiện chức của lệnh đó Một bộ phận quan trọng khác của EU là đơn vị số học và logic (ALU - Arithmetic Logic 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ương trình yêu cầu Các toán hạng các phép tính mà ALU thực hiện có thể nằm các ghi dữ liệu, bộ nhớ hoặc được xác định chính mã lệnh Các ghi là các ô nhớ có tốc độ truy xuất rất nhanh, nằm bên 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 VXL, hoặc lưu trữ các địa chỉ cho phép CPU truy cập bộ nhớ hoặc I/O nhanh chóng EU không nối với thế giới bên ngoài, nó nhận lệnh từ bộ nhớ lệnh BIU Khi lệ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 thực hiệ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 (Queue Instruction) Hàng đợi này hoạt động theo nguyên tắc FIFO(Fist Input Fist Output – vào trước trước), EU lấy byte lệnh thì BIU sẽ tự động lấy byte lệnh kế tiếp củ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 đồ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ó byte được gọi là ghi lệnh IR (Instruction Register), với loại CPU 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ệnh mới Đơn vị giao tiếp BUS: BIU thực hiện tất cả các thao tác về BUS EU yêu cầu Ngoài thời gian EU 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 EU thự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 địa chỉ, dữ liệu , điều khiển cần thiết: - Địa chỉ cung cấp bên ngoài thông thường được cung cấp từ một ghi địa chỉ CU chọn, một số trường hợp có thể từ các ghi dữ liệu, hoặc từ mã lệnh mà CU nhận được - Dữ liệu được truyền ngoài từ một ghi dữ liệu, lấy vào một ghi dữ liệu, hoặc lấy trực tiếp vào ALU các lệnh số học và logic - Các tín hiệu điều khiển sẽ được định thời bộ điều khiển BUS tùy theo lệnh cụ 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 ghi lệnh (hoặc hàng đợi lệnh) Khi bắt đầu hoạt động PC = 0, lấy vào byte lệnh PC tăng lên PC sẽ được thiết lập giá trị mới, có các lệnh rẽ nhánh chuyển điều khiển chương trình Trong một số vi xử lý bộ đếm chương trình còn được gọi là trỏ lệnh IP (Instruction Pointer) 16 Để làm việc được VXL phải hoạt động chung với thiết bị khác 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 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 ghi (Registers) Các ghi là một bộ phận rất quan trọng 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ể truy xuất dữ liệu một cách nhanh chóng Các 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ọn nhờ số ít các bit nhị phân mã lệnh CPU có càng nhiều ghi, thì tốc độ thực hiện một chương trình càng cao, giả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 không phải cung cấp địa chỉ các dữ liệu toán hạng Nhưng tất nhiên số lượng ghi quá lớn thì việc truy cập chúng cũng trở nên phức tạp đối với các ô nhớ Để dễ dàng truy xuất, các ghi được chia các nhóm với các chức riêng biệt nào đó Các hãng sản xuất khác đưa các tên gọi các ghi khác Nhưng thông thường CPU bit nào cũng ghi các ghi với các chức sau: - Bộ đếm chương trình (PC Program Counter ) Hay gọi là trỏ lệnh (IP Instruction Pointer) - Thanh ghi lệnh (IR Instruction Register) Một số CPU là hàng đợi lệnh (Instruction Queue) - Thanh ghi địa chỉ bộ nhớ (MAR-Memory Address Register) - Thanh ghi 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 ghi đều được nối chung lên BUS nợi CPU theo sơ đờ hình 2.2 • Thanh ghi bộ đếm chương trình (PC) Ở các CPU bit bộ đếm chương trình thường là 16 bit, nó có nhiệm vụ tạo các địa chỉ cung cấp tới bộ nhớ để CPU có thể đọc vào các byte lệnh của chương trình Sau Bit Bit ……… Bit n đọc xong một byte lệnh, PC 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 Bus địa chỉ để đưa tới bộ nhớ chương trình Tức là chương trình có thể nằm bất cứ nơi đâu vùng nhớ 64KB mà CPU quản lý Một số CPU 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 bit rồi cộng với địa chỉ offset để cung cấp địa chỉ 20 bit cho bộ đệm địa chỉ Trong trường hợp đọc mã lệnh, địa chỉ đoạn thường được chỉ định Nạp đoạn lệnh (CS: ghi ghi Code Segment), và địa chỉ offset sẽ chứa ghi trỏ lệnh Chuyển dữ liệu ghi BUS BUS nội của CPU n Hình 2.2 Nối ghép của ghi tới Bus nội 17 Quá trình đổi địa chỉ CPU: CPU được chế tạo để hoạt động theo các chương trình định sẵn Trong các hệ thống CPU bit (8 đường dữ liệu), chương trình đơn giản bao gồm các byte (8 bit) xếp lần lượt 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 chế điều khiển chương trình, thì sau đọc xong một byte lệnh PC sẽ được tự động tăng lên 1, và vậy chu kỳ đọc lệnh tiếp theo sẽ lấy lệnh tại địa chỉ kế tiếp 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 byte lệnh một bộ đếm bình thường Các chương trình vậy rất ít xảy thực tế, các bài toán thực tế phải có phương hướng giải quyết khác với các điều kiện khác Có rất nhiều lệnh gây việc thay đổi địa chỉ không theo qui luật tuần tự Sự thay đổi tuần tự này không gây nên một sự rối loạn nào, BUS địa chỉ của CPU dễ dàng đưa một địa chỉ bất kỳ, dù cách xa bước nhảy tuần tự bình thường thế nào 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 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 - Đổ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 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 đến nạ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ỳ 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 Khi CPU nhận được lệnh nhảy tương đối, ghi PC sẽ được cộng thêm hoặc trừ một lượng nào đó Lượng thêm vào hay bớt thường là một số nhị phân bit chỉ thị 18 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 Tức là điều khiển chương trình sẽ chuyển đến địa chỉ mới nằm 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 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 theo qui luật tuần tự Điều kiện ở là các cờ trạng thái bằng hoặc bằng (Sẽ xét tới phần ghi cờ ) Ví dụ sau một lệnh so sánh hai số, có thể thực hiện lệnh JE (Jump Equal- 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ánh bằng nhau, ngược lại PC sẽ tăng lên Đổ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 nhiều lần 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 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ự một lệnh nhảy tới đầu chương trình con, thực hiệ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ữ 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ị mã lệnh gọi, chương trình sẽ được chuyển tới địa chỉ mới bất kỳ khoảng từ 0000 FFFFH giống lệnh nhả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ình sẽ quay về nơi nó đã chuyển (quay về lệnh nằm kế lệnh gọi) Các lệnh gọi chương trình cũng có hai dạng không điều kiện và có điều kiện giống các lệnh nhảy Đổi địa chỉ bằng ngắt: Đổi địa chỉ bằng ngắt gần giống 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 có phục vụ ngắt, và được phục hồi có lệnh quay về Khác biệt ở chỗ phục vụ ngắt được gọi bằng xung phần cứng, mà không phải bằng lệnh gọi chương trình Địa chỉ 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ắt không che, chương trình ngắt được thực hiện có tín hiệu yêu cầu Còn với ngắt che, có tín hiệu yêu cầu CPU sẽ kiểm tra cờ ngắt, nếu cờ ngắt =1 chương trình ngắt thực hiện, cờ ngắt bằng 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 chế ngắt sẽ được mô tả kỹ phần hệ 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 chươ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 ….Còn các toán hạng sẽ chỉ dữ liệu cần xử lý lệnh nằm ở đâu hoặc bằng Thanh ghi lệnh sẽ là nơi các mã lệnh qua (từ ngoài bộ nhớ vào bộ giải mã lệnh) Còn các toán hạng sẽ tới các khối khác của vi xử lý tùy theo mã lệnh Ví dụ một lệnh cộng sẽ có byte Op Code để phân biệt với các lệnh khác, và các byte tiếp theo sẽ chỉ toán hạng của phép cộng Nó có thể là giá trị sẽ được đưa thẳng tới ALU, hoặc có thể là địa chỉ để lấy dữ liệu từ bộ nhớ cung cấp cho ALU, đó địa chỉ này sẽ được đưa tới BIU để truy cập dữ liệu, cũng có thể phần toán hạng chỉ thị dữ liệu cho lệnh nằm một ghi dữ liệu bên CPU 19 Trong mã lệnh của vi xử lý bit thường phần Op code có kích thước giống (1byte) Với bit sẽ phân biệt 256 tổ hợp, có nghĩa là CPU bit có khả xử lý dễ dàng 256 lệnh Trong thực tế số lệnh của CPU bit ít số này mà vẫn đủ cho tất cả các công việc Có rất nhiều sự trùng lặp các mã lệnh, chúng bao gồm nhiều công việc giống sử dụng các toán hạng khác Trong thực tế thường chỉ có khoảng 20 nhiệm vụ khác cho CPU, còn lại là các kiểu khác của cùng một nhiệm vụ Trong một số CPU bit ghi lệnh được thay thế bằng hàng đợi lệnh, Khi đó tất cả 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ẽ được chuyển từ hàng đợi lệnh tới các nơi khác 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 Start Nạp MAR1 = 1000 Nạp MAR2 = 2000 Nạp dữ liệu tại ô nhớ có địa chỉ MAR1 = 1000 vào Acc Nạp dữ liệu từ Acc vào ô nhớ có địa chỉ MAR2 Tăng MAR1 Tăng MAR2 Yes Đủ 10 ô nhớ chưa ? No Start Hình 2.3: Giải thuật di chuyển 10 ô nhớ từ địa chỉ 1000 qua địa chỉ 2000 • 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ới CPU một chương trình Dữ liệu này có thể là dữ liệu vào thông thường các lệnh đọc ghi, hoặc là các toán hạng 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 mã lệnh, chương trình có thể sử dụng MAR để lưu trữ địa chỉ này Trong chu kỳ truy xuất, giá trị ghi này sẽ đưa BUS địa chỉ để xác định ô nhớ cần truy cập Như vậy sẽ giảm được độ dài của mã 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ương trì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 ghi địa chỉ bộ nhớ nằm ở nhóm các ghi đa Một số CPU khác các ghi này là chuyên dụng Các lệnh sử dụng ghi 20 địa chỉ bộ nhớ bao gồm ít byte lệnh và được thực hiện nhanh chóng các lệnh chỉ trực tiếp địa chỉ của ô nhớ Đặc biệt các lệnh thao tác chuỗi dữ liệu các ghi này đóng một vai trò rất quan trọng Nhờ những 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ỉ hoặc byte 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ở là của một lệnh di chủn ch̃i • Thanh ghi 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ày hoạt động theo nguyên tắc LIFO (Last Input Fist Output- vào trước sau), dữ liệu nào đưa vào trước tiên sẽ được lấy sau cùng Để thực hiện chức này CPU sử dụng ghi trỏ ngăn xếp Vào đầu chương trình 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 được nạp vào ngăn xếp SP tự động giảm đi, ngược lại lấy dữ liệu 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ó địa chỉ 0100H (hình 2.4a) Khi CPU lệnh nạp 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ị một ghi đa năng, SP sẽ tăng lên trở lại cũ (hình 2.4c) (a) (b) Memory Memory Push Acc Pop Reg Acc SP 100H (c) Memory Reg Acc 0FFH SP 100H Hình 2.4: Thao tác với ngăn xếp Khi gặp các lệnh gọi chương trình hoặc yêu cầu ngắt, giá trị của bộ đếm chương trình sẽ được nạp vào đỉnh của ngăn xếp, SP sẽ tự động giảm Khi có lệnh quay về (Return), 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 chương trình không còn dữ liệu nào nạp vào mà chưa lấy được Vậy chương trình nếu nạp vào ngăn xếp cái gì, thì trước có lệnh quay về phải lấy hết Nếu không PC phục hồi từ đỉnh ngăn xếp sẽ 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 ghi địa chỉ, được sử dụng để địa chỉ hóa các ô nhớ chương trình Với CPU bit ghi chỉ số thường là16 bit Khi ghi chỉ số 21 đã đượ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 vùng nhớ này, chỉ cần chỉ thị lệnh khoảng cách từ địa chỉ chứa ghi chỉ 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ụ ghi chỉ số giữ giá trị 1000H, thì lệnh xử lý dữ liệu tại ô nhớ 1010H chỉ cần cung cấp chỉ số là 10H, mà không phải đưa giá trị 1010H 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 ghi chỉ số hình 2.5 Internal Bus Index Register Bộ cộng Bus địa chỉ Hình 2.5: Cung cấp địa chỉ bằng ghi chỉ số Giá trị của ghi chỉ số sẽ được cộng với khoảng cách từ ô nhớ cần thao tác, để cho địa chỉ cần thiết những lệnh có chế đợ định vị địa chỉ chỉ sớ • Các ghi đa (General Register) Các ghi này thông thường chiếm một số lượng lớn các CPU Các CPU bit thông thường cũng có các ghi đa bit, các ghi này cũng có thể ghép chung từng cặp để tạo thành các ghi 16 bit Tuy không có các chức chuyên dụng các ghi khác, chúng có thể thực hiện hầu hết các chức mà các ghi khác đảm nhiệm Thường thì các ghi đa được sử dụng lưu trữ dữ liệu vào CPU, hoặc làm các biến tạm thời một chương trình Ngoài 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ác biế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ệnh về chuỗi thì chúng có thể được sử dụng làm các bộ đếm số lần lặp, địa chỉ các lệnh về ch̃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 các lệ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 ALU Đồng thời chứa còn được sử dụng để lưu kết quả cuối cùng của phép tính mà ALU vừa thực hiện Với các chức này chiều dài các lệnh tính toán sẽ được giảm ngắn, không phải chỉ thị cả hai toán hạng và nơi lưu trữ kết quả Ngoài chứa còn được sử dụng các phép quay dịch, và hầu hết các lệnh về di chuyển và xử lý dữ liệu một ghi đa thông thường Các CPU trước chỉ có một 22 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 ghi chứa Càng ngày CPU càng có nhiều chứa hơn, nên chương trình được thực hiện nhanh chóng hơn, giảm bớt được các lệnh di chuyển dữ liệu đến chứa • Thanh ghi cờ (Flag Register) Thanh ghi cờ còn được gọi là ghi mã trạng thái CCR (Condition Code Register) bao gồm các bit độc lập Mỗi bit chỉ có hai trạng thái hoặc được gọi là các cờ Các cờ rất ít tác động lẫn nhau, chúng chỉ tác động một cách độc lập tùy theo 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à 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ướng này, còn ngược lại sẽ theo một hướng khác, tạo sự rẽ nhánh cho các chương trình phù hợp với bài toán thực tế Trong CPU bit thường ghi cờ bit, số lượng các bit được sử dụng và các kiểu cờ hiệu khác tùy thuộc vào từng loại CPU Các cờ thông thường của một CPU gồm: Cờ nhớ (Carry Flag) Cờ nhớ được sử dụng làm bit dữ trữ kết quả các phép tính mà ALU thực hiện vượt ngoài giới hạn lưu trữ cho phép của chứa Ví dụ sử dụng các ghi bit để cộng hai số bit, kết quả có thể là bit và cờ C sẽ giữ bit thứ Tương tự cộ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 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 số bị trừ nhỏ số trừ Ngoài cờ nhớ còn được sử dụng bit thứ các lệnh quay dịch, ví dụ dịch trái bit ở MSB sẽ bị rớt 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ột ghi để biểu diễn một số dương Ví dụ một ghi bit có thể biểu diễn các số thập phân dương từ 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ụ ghi bit thì bit D7 sẽ là bit dấu Khi D7 ở mức thì các bit D0 D6 giữ một số nhị phân dương nằm khoảng tới 127 Khi D7=1 thì ghi sẽ giữ số nhị phân âm 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ừ 127 tổ hợp tiếp theo 1000 0000 số có dấu được xem 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 dấu thay đổi, cờ dấu =0 kết quả phép tính bộ chứa là số dương (bit D7=0) Nếu bit D7=1 kết quả là một số âm 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 có sự tràn bit từ D6 sang D7, tức là dấu của số bit thay đổi từ (+) sang (-) Cờ VF được thiết lập có tràn, nó được dùng cho các số được biểu diễn theo cách bit hay cách 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 D7 trở về mức Cờ ZERO ZF Khi ALU thực hiện các phép tính có kết quả ghi chứa bằng 0, lúc đó cờ Z sẽ được thiết lập lên mức Còn ngược lại cờ Z=0 Thông thường cờ Z để thông báo trạng thái so sánh bằng, kết quả của phép trừ = , các phép logic = Khi thực hiện các phép cộng, mặc dù kết quả có dư bit thứ nếu chứa có giá trị thì cờ 23 ZF vẫn = Ví dụ cộng FF+01 kết quả là 100 thì số ở cờ CF còn chứa có giá trị 00 đó 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ảm một ghi nào đó, cho đến nó trở về thì ngưng Với các công dụng ZF cùng với CF được sử dụng rất nhiều các chương trình Cờ nửa nhớ HF (Half Carry Flag ) Cờ nửa nhớ một số CPU còn được gọi là cờ phụ AF (Auxiliary Flag) không giống CF, đóng vai trò bit thứ của chứa Nó giống cờ tràn nhiều hơn, cờ nửa nhớ sẽ được thiết lập mức có sự tràn bit từ D3 qua D4 Tám bit của bộ chứa bao gồm nibble riêng biệt, các bit 7-4 gọi là nibble trọng số lớn MS(Most Significant) và 3-0 là nibble số nhỏ LS(Least Significant) Mỗi nibble là 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 bit thấp đơn vị 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 cờ tràn 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 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 các chươ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 để bên thu có thể kiểm tra xem dữ liệu nhận được đúng hay sai Chú ý là cờ chẵn lẻ không tác động 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 CPU thực hiện các phép tính trừ (trừ, so sánh , giảm) Cờ này thường ít được sử dụng 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 đã mô tả ở trên, 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ụ 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 chuỗi Để có được các thao tác này CPU sử dụng các ghi địa chỉ và sau mỗi lần xử lý byte nó tự động tăng hoặc giảm ghi địa chỉ Việc tăng hay giảm ghi địa chỉ, tức là chuỗi được thao tác từ dưới lên hay từ xuố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ỗi sẽ 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ùng là di chuyển chuỗi có một lệnh thực hiện theo chiều tăng địa chỉ, và một lệnh thực hiện theo chiều giảm địa chỉ Các CPU thế sẽ không có định hướng Cờ ngắt IF : (Interrupt Flag) Cờ ngắt được thiết lập =1 bằng lệnh SI (Set Interrupt ) và xóa bằng lệnh CLI(Clear Interrupt) 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ực hiệ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ắt sẽ không được thực hiện Với các yêu cầu ngắt không che NMI (Non-Mask able Interrupt) cờ ngắt không có ý nghĩa Cờ bẫy TF: (Trap Flag) 24 Một bộ vi xử lý hiện đại có thể có hàng trăm chân kết nối, điều này cho phép có thể có nhiều Bus dữ liệu, phân biệt riêng các đường dữ liệu và địa chỉ, phân biệt các đường giao tiếp với bộ nhớ chính và các đường giao tiếp với cache thứ cấp (secondary cache), và có thể có rất nhiều các tín hiệu thông báo trang thái và điều khiển Một bộ vi xử lý có thể có nhiều đường cấp nguồn và nối masse nằm các phía của chip, điều này cho phép các đường nối nguồn và masse bên chip ngắn hơn, việc thiết kế chip đơn giản và vì thế có thể giảm được giá thành của nó Ngoài thông thường các đường kết nối ngắn sẽ có thời gian trễ và sự lan truyền tín hiệu ngắn 2.4 CÁC VI XỬ LÝ INTEL THẾ HỆ TRƯỚC (8086/8088, 80186, 80286) 2.4.1 Vi xử lý 8086/8088 Sơ đồ khối và chức các khối Sơ đồ khối của 8086/8088 trình bày hình 2.14 bao gồm hai phần chính Đơn vị giao tiếp BUS (BIU -Bus Interface Unit) có chức lấy lệnh đọc các toán hạng và ghi kết quả, và đơn vị thực hiện lệnh (EU-Execution Unit) để thực hiện các lệnh Hai bộ phận này hoạt động gần độc lập hầu hết các trường hợp BIU thực hiện việc lấy lệnh sắp vào hàng đợi sẵn sàng cho EU lấy, vì thế thời gian lấy lệnh và thực hiện lệnh xảy mộtExternal ng thời Khi có các lệnh điều khiển chương trình, BIU sẽ cách đồ BUS xóa hàng đợi lệnh để lấy các lệnh tại địa chỉ mới Đơn vị số học và logic (ALU- Arithmetic Logic Unit) thực hiện tất cả các phép toán mà chương trình yêu cầu Thanh ghi cờ sẽ thông báo trạng thái các phép toán mà ALU BUS Interface thực hiện BIU EU + byte queue ES CS DS SS IP AH BH CH DH Execution Unit Control System AL BL CL DL SP BP SI DI ALU Flags EU 34 Hình 2.14: Sơ đồ khối vi xử lý 8086/8088 Đơn vị thực hiện và điều khiển hệ thống có nhiệm vụ lấy lệnh từ hàng đợi lệnh giải mã để cung cấp các tín hiệu cho phép các khối khác CPU hoạt động theo đúng yêu cầu của lệnh, tức là nó quyết định hầu hết các hoạt động của CPU Bộ cộng địa chỉ thực hiện việc tính toán các địa chỉ để cung cấp địa chỉ vật lý thực sự cho việc truy cập bộ nhớ Một địa chỉ vật lý cung cấp ngoài sẽ được tính bằng cách dịch trái ghi đoạn bit, rồi cộng với địa chỉ độ dời (offset) Các ghi Thanh ghi trỏ lệnh : (IP - Instruction Pointer) Sử dụng việc cung cấp địa chỉ offset của vùng nhớ mã lệnh Sau lấy vào một lệnh BIU sẽ đổi giá trị IP để trỏ tới mã lệnh sẽ thực hiện chu kỳ kế tiếp Ở các lệnh thông thường sau lấy vào một byte mã lệnh IP sẽ tự động tăng lên Ở các lệnh nhảy giá trị của IP sẽ được xóa để nạp một giá trị mới, giá trị mới này được cung cấp lệnh nhảy Trong các lệnh gọi chương trình trước xóa giá trị cũ để nạp giá trị mới giá trị cũ của IP được cất vào đỉnh ngăn xếp, và có lệnh quay về nó sẽ được phục hồi Khi phục vụ ngắt quá trình biến đổi IP cũng thực hiện tương tự xảy lệnh nhảy Các ghi đa năng: các ghi đa ngoài chức lưu trữ dữ liệu và địa chỉ thông thường mỗi ghi còn có các chức đặc biệt sau: + Thanh ghi tích lũy AX (Accumulator) : thường sử dụng giữ một toán hạng và kết quả của các phép toán nhân và chia + Thanh ghi sở BX (Base) thường được sử dụng chỉ địa chỉ sở của một vùng nhớ truy cập theo phương pháp định vị chỉ số sở + Thanh ghi đếm : CX (Counter) thường dùng làm bộ đếm cho các vòng lặp, bộ đếm các lần quay và dịch + Thanh ghi dữ liệu : DX (Data) Sử dụng lưu các dữ liệu chuyển giao các chương trình, nó cũng sử dụng chứa kết quả các phép toán nhân và chia Các ghi trỏ và chỉ số : + Thanh ghi trỏ ngăn xếp (SP - Stack Pointer) là ghi giữ địa chỉ offset của đỉnh vùng nhớ ngăn xếp Khi sử dụng các lệnh truy cập tới vùng nhớ ngăn xếp thì chỉ có ghi SP thay đổi Còn ghi đoạn ngăn xếp SS sẽ không thay đổi + Thanh ghi trỏ sở (BP - Base Pointer) có chức giữ địa chỉ offset của bộ nhớ truy cập theo chỉ số giống BX + Các ghi chỉ số (Index): Bao gồm ghi chỉ số nguồn (Source Index) và chỉ số đích (Destination Index) , sử dụng giữ địa chỉ offset các lệnh truy cập giữ liệu Ngoài chúng còn sử dụng cho các lệnh về chuỗi Các ghi đoạn : 35 CPU họ X86 truy cập bộ nhớ theo các đoạn, bằng cách sử dụng các ghi đoạn 16 bit dịch trái bit sau đó cộng với địa chỉ offset để cung cấp địa chi vật lý cho bộ nhớ Do đó các đoạn sẽ là các phần 64 KB Trong một chương trình CPU sẽ quản lý đoạn bằng ghi đoạn sau: + Thanh ghi đoạn mã lệnh (CS - Code Segment) chứa địa chỉ đoạn mã lệnh của chương trình hiện hành + Thanh ghi đoạn dữ liệu (DS - Data Segment) chứa địa chỉ đoạn của vùng nhớ dữ liệu sử dụng chương trình (các hằng các biến) + Thanh ghi đoạn ngăn xếp (SS - Stack Segment) chứa địa chỉ đoạn vùng nhớ ngăn xếp + Thanh ghi đoạn mở rộng (ES - Extra Segment) chứa địa chỉ đoạn mở rộng, đoạn thường dùng cho các dữ liệu dạng chuỗi (string) Thanh ghi cờ : (Flags Register) Là một ghi 16 bit đó chỉ sử dụng bit Trong đó bao gồm cờ thông báo trạng thái các phép toán, và cờ sử dụng cho các thao tác điều khiển, vị trí các cờ ghi cờ được biểu diễn hình 2.15 Chức của các cờ đã mô tả mục 2.1 D15 * D0 * * * O D I T S Z * A * P * C Hình 2.15: Cấu tạo ghi cờ Hoạt động của 8088/8086 CPU 8088 có tuyến dữ liệu bit, còn đối với 8086 là 16 bit Cả hai CPU này đều có 20 bit địa chỉ, vì thế chúng có thể quản lý 220 địa chỉ bộ nhớ khác CPU 8086/8088 có chế định địa chỉ bộ nhớ theo cách phân đoạn, địa chỉ vật lý 20 bit cung cấp ngoài Bus được tính từ hai giá trị địa chỉ logic 16 bit là: địa chỉ đoạn (segment address) và địa chỉ độ dời (offset address) Địa chỉ đoạn sẽ được dịch trái bit, sau đó cộng với giá trị địa chỉ độ dời thành địa chỉ vật lý 20 bit Khi bắt đầu hoạt động các ghi đoạn lệnh CS được khởi động giá trị F000H, ghi trỏ lệnh IP, và ghi cờ của 8086/8088 bằng Chu kỳ lệnh đầu tiên giá trị của CS được dịch trái bit rồi cộng với giá trị ghi trỏ lệnh IP Địa chỉ 20 bit (bằng F0000H) này sẽ được cung cấp BUS địa chỉ xác định tới ô nhớ chứa lệnh đầu tiên mà hệ thống sẽ thực hiện, mã lệnh ô nhớ này được lấy qua BUS dữ liệu đưa vào hàng đợi lệnh của BIU Sau đó giá trị ghi trỏ lệnh IP được tự động tăng lên một, quá trình tính toán địa chỉ sẽ lặp lại và mã lệnh kế tiếp bộ nhớ sẽ được lấy và sắp tiếp vào hàng đợi cho tới hàng đợi đầy Đồng thời với quá trình lấy lệnh nói trên, mã lệnh hàng đợi sẽ được CU giải mã để đưa các tín hiệu cho phép cung cấp tới các khối tương ứng với yêu cầu của lệnh Ví dụ đối với các lệnh tính toán CU sẽ cung cấp tín hiệu chọn một hàm ALU, và toán hạng thứ hai của hàm Đối với một lệnh truyền dữ liệu các ghi CU sẽ cung cấp các tín hiệu cho phép mở ngõ vào ghi nhận và ngõ ghi truyền Với các lệnh truyền dữ liệu với bộ nhớ hoặc vào ra, CU sẽ cung cấp tín hiệu cho phép tới bộ giao tiếp BUS, và đẩy địa chỉ chỉ thị phần toán hạng của lệnh BUS địa chỉ xác định tới ô nhớ hoặc vào truyền dữ liệu với CPU, kèm theo các tín hiệu điều khiển thích hợp cho phép bộ nhớ hoặc vào truyền dữ liệu với CPU thông qua BUS dữ liệu Tất nhiên việc cung cấp các tín hiệu bên ngoài tuân theo một chế định thời nhất định Đối với các lệnh 36 tính toán và truyền dữ liệu nói trên, lệnh thực hiện xong mã lệnh kế tiếp hàng đợi sẽ được thực hiện Riêng đối với các lệnh điều khiển chương trình, lệnh thực hiện giá trị ghi IP (có thể cả giá trị CS) sẽ bị biến đổi, hàng đợi lệnh sẽ được xóa trắng, lệnh kế tiếp sẽ được BIU lấy ở địa chỉ mới cung cấp Khi yêu cầu ngắt của thiết bị bên ngoài được CPU chấp nhận, thì tại bất kỳ lệnh loại nào lệnh thực hiện xong hàng đợi cũng bị xóa trắng và lệnh kế tiếp mà CPU thực hiện sẽ được lấy tại vị trí mới cung cấp bởi chế ngắt Quá trình lấy lệnh và thực hiện lệnh nói sẽ diễn liên tục cho đến CPU gặp phải lệnh treo, mất nguồn hay clock, hoặc tạm ngưng gặp các yêu cầu treo BUS 2.4.2 CPU 80186 CPU 80186 là một vi xử lý 16 bit được nâng cấp từ 8086 tích hợp thêm một số khối chức mới Sơ đồ khối của 80186 biểu diễn hình 2.16 INT3/INTA1 CLKOUT Vcc GND NMI EU Clock Generator 16 bit ALU 16 bit General Register TIMER IN1 INT2/INTA0 TIMER OUT1 INT1 TIMER IN0 INT0 TIMER OUT0 Programmable Interrupt Control HOLDA RES RESET BIU Control Registers Control Reg 16 bit Counter Programmable DMA Unit Chip select Unit DRQ1 DRQ0 20 bit source point 20 bit dest point 16 bit sequent Reg byte Prefetch queue Max count Reg A Max count Reg B Internal Bus S0-S2 SRDY ARDY TEST HOLD Programmable Timer Programmable Control Registers 16bit transfer count Control Reg UCS A16/S3 – DEN RD ALE PCS5/A1 LCS A19/S6 LOCK WR vớDT/R cần bộ tạo xung clock ở MCS0-3 80186PCS6/A2 o i 8086 BHE/S7 ngoài, PCS0-4 khối tạ AD0-AD15 Khác xung clock được chế tạo chip, tần số xung sẽ tuỳ thuộc vào tần số của thạch anh nối vào các chân X1 X0 Khối này còn Hình 2.16: Sơ đồ khốira bên80186 để đồng bộ hoạt động giữa cung cấp xung chuẩn CPU ngoài CPU và các thiết bị khác 80186 có hai kênh DMA độc lập và bộ điều khiển DMA lập trình tích hợp chip, với 8086 cần có bộ điều khiển DMA nối ghép thêm ở bên ngoài Khối định thời cung cấp bộ định thời 16 bit có thể lập trình Khối logic chọn 37 mạch cho bộ nhớ và vào lập trình được sẽ cung cấp các tín hiệu cho phép bộ nhớ và vào thay cho bộ giải mã địa chỉ bên ngoài Như vậy có thể thấy rằng 80186 bao gồm một hệ thống 8086 chuẩn cùng một chip Với cấu hình này 80186 có độ lưu thoát dữ liệu cao gấp đôi hệ thống 8086 chuẩn 5Mhz 80186 hoàn toàn tương thích với các chương trình viết cho 8086/8088, ngoài nó còn có thêm 10 lệnh mới Ngoài các tín hiệu cung cấp từ các khối chức mới các tín hiệu còn lại của 80186 hoàn toàn giống với CPU 8086 Tập các ghi sử dụng 80186 cũng hoàn toàn với các ghi của 8086/8088 2.4.3 CPU 80286 ADDRESS UNIT (AU) ADDRESS LATCH AND DRIVER PHYSICAL ADDRESS ADDER OFFSET ADDER SEGMENT BASE SEGMENT SEGMENT LIMIT SIZE CHECK PROCESSOR EXTENTION INTERFACE PREFETCH BUS CONTROL DATA TRANSCEIVERS BUS BYTE PREFETCH QUEUE UNIT (IU) ALU REGISTER CONTROL LIMIT CHECK EXECUTION UNIT (EU) INSTRUCTION UNIT (IU) DECODER INSTRUCTION INSTRUCTION DECODER QUEUE Bộ vi xử lý 80286 là một biến tướnSơ đồckhốa của 80286 đời cùng thời gian với 80186 Hình 2.17: g khá củ i 8086, nó được phát triển theo một hướng khác Thay vì phối ghép các bộ điều khiển ngoại vi chip 80186, 80286 có mạch quản lý bộ nhớ (MMU) để làm việc với bộ nhớ ảo với chế bảo vệ bộ nhớ và khả địa chỉ hoá bộ nhớ vật lý với dung lượng đạt tới 16 Mbytes 80286 là bộ vi xử lý đầu tiên được thiết kế làm việc với mô trường đa nhiệm hoặc nhiều người sử dụng, chế này bao gồm việc trì các môi trường chuyển qua các nhiệm vụ khác, việc bảo vệ hệ thống, quản lý bộ nhớ ảo CPU 80286 được sử dụng các máy tính IBM PC/AT đầu tiên cũng các máy tính tương thích với nó Sơ đồ khối của 80286 biểu diễn hình 2.17 có thể chia thành khối xử lý riêng biệt Khối EU (Execution Unit) thực hiện tất cả các phép toán mà chương trình yêu cầu Khối giao tiếp Bus (BU – Bus Unit) là bộ phận cung cấp tất cả các tín hiệu các chu kỳ đọc/ghi bộ nhớ và vào và các thiết bị bên ngoài khác của hệ thống, ví dụ bộ đồng xử lý toán học 80287 Khối lệnh (IU – Instruction Unit) thực hiện việc giải mã các lệnh sắp vào hàng đợi sẵn sàng cho khối thực hiện lệnh (EU – Execution Unit) có thể truy cập Điều này là một ví 38 dụ giải thích việc các bộ vi xử lý hiện đại có thể thực hiện đồng thời một số lệnh (trong một đường ống) thay vì phải chờ thực hiện xong một lệnh rồi mới thực hiện lệnh kế tiếp Khối tạo địa chỉ (AU – Address Unit) có nhiệm vụ tạo địa chỉ truy cập bộ nhớ và vào gửi tới BU 80286 có thể hoạt động ở một hai chế độ địa chỉ bộ nhớ là : chế độ địa chỉ thực (real address mode), hoặc chế độ địa chỉ ảo bảo vệ (protected virtual address mode) hay còn gọi là chế độ bảo vệ (protect mode) Trong chế độ thực 80286 sẽ tạo địa chỉ vật lý 20 bit từ các địa chỉ đoạn và địa chỉ độ dời 16 bit giống 8086, và vậy dung lượng nhớ cực đại chế độ thực cũng là 220 giống 8086 Khi hoạt động chế độ địa chỉ ảo bảo vệ, AU sẽ thực hiện chức của một khối quản lý bộ nhớ (MMU – Memory Management Unit) Trong chế độ này 80286 sử dụng 24 đường địa chỉ để truy cập tới một dung lượng 224 = 16 Mbytes bộ nhớ vật lý Trong chế độ bảo vệ 80286 cũng cung cấp lên tới Gbyte bộ nhớ ảo sử dụng bảng mô tả 2.5 VI XỬ LÝ I386, I486 VÀ PENTIUM 2.5.1 Một số vấn đề hệ thống đa nhiệm (nhiều người sử dụng) • Khái niệm về hệ thống đa nhiệm Trong các hệ thống phân chia thời gian phục vụ đồng thời nhiều người sử dụng, CPU sẽ thực hiện chương trình của người này vài msec, sau đó sẽ chuyển qua thực hiện chương trình của người khác Quá trình cứ tiếp tục vậy cho tới tất cả các chương trình đều được thực hiện Do tốc độ quá nhanh nên mọi người có cảm giác máy tính chỉ làm việc riêng với mình Một hệ điều hành có khả phối hợp các hoạt động phân chia theo thời gian có thể gọi là hệ điều hành đa nhiệm, vì mỗi người sẽ có ít nhất một tác vụ (task) được hoạt động dưới sự điều khiển của hệ thống MS DOS không phải là một hệ điều hành đa nhiệm, vì thế các máy tính có sử dụng các bộ vi xử lý tiên tiến của Intel (80286 trở lên) được thiết kế để có thể làm việc đa nhiệm, vì chạy dưới mô trường DOS nên vẫn chỉ là đơn nhiệm Các hệ điều hành Unit, OS/2 hoặc Windows là các hệ điều hành đa nhiệm Các hệ điều hành đa nhiệm có thể làm việc theo hai cách: định kỳ theo thời gian hoặc theo mức ưu tiên đặt trước • Vấn đề về bảo tồn môi trường làm việc Các ghi, dữ liệu bộ nhớ … dùng một tác vụ được gọi là môi trường Khi chuyển từ tác vụ này sang tác vụ khác, thì môi trường của tác vụ bị gián đoạn cần được bảo vệ, để đảm bảo nó tiếp tục thực hiện đúng được phục vụ trở lại Thông thường để bảo vệ các môi trường, là bảo quản các thông tin này một vùng nhớ đặc biệt hoặc một ngăn xếp, có thể phân chia cho mỗi tác vụ một vùng nhớ hoặc vùng ngăn xếp riêng biệt Khi cần thiết có thể cất môi trường của tác vụ này và lấy mơi trường của tác vụ khác • Vấn đề tranh chấp sử dụng chung tài nguyên Khi nhiều người sử dụng chung một số tài nguyên, hệ thống sẽ làm nảy sinh sự tranh chấp Vì vậy hệ điều hành phải có các cờ báo bận cho các tài nguyên được sử dụng, và phải sắp xếp các yêu cầu cho các tài nguyên sử dụng chung theo hàng đợi để phục vụ lần lượt • Vấn đề về bảo vệ bợ nhớ Mợt vấn đề về bộ nhớ có thể xảy hệ thống nhiều người làm việc là có hai hoặc nhiều người cùng một lúc muốn thay đổi nội dung của một vùng nhớ dùng chung Hệ điều hành phải có chế bảo vệ, cho một vùng nhớ được dùng cho tác vụ 39 này, không bị hoạt động của các tác vụ khác làm cho sai lệch Chính bản thân hệ điều hành cũng cần được bảo vệ bởi vì thực hiện một tác vụ, một người sử dụng nào đó có thể có các lệnh ghi vào vùng nhớ chứa mã lệnh của hệ điều hành Để giải quyết vấn đề này hệ điều hành thường được xây dựng theo chế nhiều lớp, các lớp sẽ được gán các mức đặc quyền thâm nhập cho: người sử dụng chỉ được quyền thâm nhập vào vùng dữ liệu ở mức ngoài cùng, có mức đặc quyền thấp nhất (lớp ngoài cùng sẽ chứa mã lệnh và dữ liệu dành cho người sử dụng) Khi muốn thâm nhập vào các lớp trong, người sử dụng phải thâm nhập qua các chế phức tạp, để không có khả gây lỗi cho hệ điều hành Bản thân hệ điều hành sẽ để mã lệnh và dữ liệu của nó ở lớp cùng, và nó được gán quyền thâm nhập vào tất cả các lớp Các bộ vi xử lý của Intel thường có bớn mức đặc qùn • Việc quản lý bộ nhớ Có hai lý khiến cho bộ nhớ cần được quản lý một cách đặc biệt làm việc đa nhiệm là: bộ nhớ bán dẫn thường có kích thước bé, không đủ cả hệ điều hành lẫn các chương trình của người sử dụng, và các vùng nhớ phải được bảo vệ nghiêm ngặt để không bị chương trình của người sử dụng làm hỏng Một số hệ điều hành có cả chức quản lý bộ nhớ, để tăng tốc độ hoạt động của hệ thống tốt nhất là có riêng một khối quản lý bộ nhớ (MMU) thực hiện bằng phần cứng Để giải quyết các vấn đề nêu MMU sẽ phải quản lý một chế nhớ khác, đó là chế độ bộ nhớ ảo Đó là sự kết hợp của các loại bộ nhớ : cache (SRAM tốc độ cao), bộ nhớ chính (DRAM) và bộ nhớ phụ (ổ đĩa) chúng hoạt động dưới sự quản lý của MMU, cho dưới quan điểm lập trình và đối với người sử dụng tập hợp các bộ nhớ giống là một bộ nhớ thuần nhất với dung lượng lớn (gần bằng dung lượng của ổ đĩa cứng), lại làm việc với tốc độ cao (gần bằng tốc độ của bộ nhớ chính) Bộ nhớ ảo có thể quản lý bằng cách chia bộ nhớ thành các mảng nhỏ có độ lớn tính theo đoạn, động tác này được gọi là phân đoạn (đối với các bộ vi xử lý Intel từ 80286 trở đi), hoặc có thể phân theo trang (từ 80386 trở lên) Trong bộ nhớ ảo vậy, từng mảng mã lệnh và từng mảng dữ liệu dùng cho chương trình hiện tại được nạp từ ổ đĩa vào DRAM, và chúng sẽ được truy cập theo chế của MMU cần thiết Nếu chương trình chạy cần một mảng nào đó chưa có DRAM thì nó sẽ được nạp vào DRAM Nếu DRAM không còn đủ chỗ chứa thì một mảng nào đó của DRAM (xác định theo các tiêu chuẩn nhất định nào đó) sẽ bị đẩy trở lại ổ đĩa hoặc bị ghi đè lên Một chế tương tự cũng sẽ điều khiển hoạt động truyền dữ liệu giữa bộ nhớ cache và bộ nhớ chính Nói cách khác DRAM làm bộ nhớ đệm cho ổ đĩa, còn bộ nhớ cache sẽ đóng vai trò làm bộ nhớ đệm cho DRAM Trong các CPU thông thường một đoạn có thể có dung lượng lên tới 4GB, còn một trang thông thường có độ lớn là 4KB Bộ nhớ chính một hệ thống vi xử lý (còn được gọi là bộ nhớ vật lý) là các bộ nhớ bán dẫn (ROM+RAM) có dung lượng lớn nhất bị hạn chế bởi Bus địa chỉ của CPU Theo quan điểm bộ nhớ ảo thì bộ nhớ vật lý chẳng qua chỉ là chỗ chứa các mảng (các đoạn hay các trang) hiện có liên hệ với hệ điều hành hoặc với chương trình của người sử dụng Để truy cập các bộ nhớ ảo chương trình sẽ dùng địa chỉ ảo (hay còn gọi là địa chỉ logic) còn để truy cập tới bộ nhớ vật lý cần phải dùng địa chỉ vật lý Trong các CPU có MMU, CPU cần đọc lệnh hoặc toán hạng thì nó đưa địa chỉ logic của lệnh hay toán hạng đó MMU nhận địa chỉ logic và chuyển đổi (dịch) nó địa chỉ vật lý, địa chỉ này sẽ được cung cấp Bus để truy cập bộ nhớ vật lý Có hai cách hoạt động chế độ địa chỉ ảo là phân đoạn và phân trang 40 - Chuyển đổi địa chỉ hệ thống làm việc theo cách phân đoạn Trong các hệ thống sử dụng bộ vi xử lý Intel từ 80286 tới Pentium, làm việc theo cách phân đoạn bảng mô tả (descriptor) sẽ được sử dụng làm bộ chuyển đổi địa chỉ hình 2.18 Địa chỉ logic sẽ bao gồm hai phần: Bộ chọn (Selector) và độ dời (Offset) Trong bộ chọn có hai bit dành riêng để mã hoá mức đặc quyền thâm nhập vào một đoạn nào đó của chương trình chạy Trong bảng mô tả, mỗi phần tử của bảng sẽ bao gồm hai phần: một phần chứa địa chỉ sở đoạn dùng để tìm địa chỉ vật lý của toán hạng, một phần chứa các bit quản lý (gồm các bit điều khiển và các bit bảo vệ của đoạn), hai số các bit này sẽ chứa quyền thâm nhập của đoạn Khi một chương trình có nhu cầu thâm nhập đoạn nào đó, MMU sẽ so sánh mức đặc quyền của đoạn được ghi phần các bit quản lý Nếu mức đặc quyền phần chọn lớn hay bằng mức đặc quyền phần quản lý, thì MMU cho phép chương trình thâm nhập vào đoạn được yêu cầu Nếu không chương trình yêu cầu thâm nhập không được MMU trao quyền thâm nhập, và MMU sẽ gây ngắt để báo cho CPU biết có sự vi phạm đặc quyền thâm nhập, bộ nhớ nhờ chế này sẽ được bảo vệ Chuyển đổi địa chỉ hệ thống làm việc theo cách phân trang Trong các hệ thống sử dụng các bộ vi xử lý Intel từ 80386 tới Pentium, ngoài việc quản lý bộ nhớ ảo theo đoạn, MMU còn có khả quản lý theo trang Việc quản lý bộ nhớ ảo theo trang được áp dụng rất nhiều loại CPU, các bộ vi xử lý loại RISC và họ 680x0 của hãng Motorola đều sử dụng cách quản lý này Việc các bộ vi xử lý Intel vẫn dùng cách quản lý theo đoạn là để đảm bảo tính tương thích với 80286 Trong chế độ phân trang, thường độ lớn của trang được chọn là 4KB để đạt được tốc độ tối ưu phải trao đổi các trang qua lại giữa bộ nhớ bán dẫn và đĩa Trong chế độ phân trang, địa chỉ logic được đưa qua bộ phận tính địa chỉ theo kiểu phân đoạn để thu được địa chỉ tuyến tính, địa chỉ tuyến tính này sẽ được chuyển đổi thành địa chỉ vật lý bộ phận tính địa chỉ theo kiểu phân trang (hình 2.19) Bộ phận tính địa chỉ kiểu phân đoạn Selector Địa chỉ sở của đoạn Offset Các bit bảo vệ, điều khiển Bảng mô tả Hình 2.18: Chuyển đổi địa chỉ hệ thống phân đoạn 41 Trong các bộ vi xử lý từ 80386 trở lên có các ghi điều khiển CR0 – CR3 dài 32 bit Khi muốn CPU làm việc theo kiểu phân trang cần phải đưa bit điều khiển thích hợp vào CR0, lúc này CR3 sẽ chứa địa chỉ sở của danh mục bảng trang Địa chỉ tuyến tính sẽ bao gồm phần: - Phần danh mục (Directory) sẽ cộng với nội dung CR3 để trỏ tới một danh mục bảng các danh mục trang - Phần bảng trang (Page Table) sẽ được cộng với nội dung danh mục mong muốn thu được ở để trỏ tiếp vào một bảng trang các bảng trang - Phần độ dời (Offset) sẽ được cộng với nội dung của bảng trang thu được ở để trỏ tiếp tới toán hạng hoặc mã lệnh cần tìm giới hạn cho phép của khuôn trang Bộ phận tính địa Bộ phận tính địa chỉ kiểu phân đoạn chỉ kiểu phân trang địa chỉ ảo địa chỉ tuyến địa chỉ vật lý tính Hình 2.19: Phân đoạn và phân trang Hoạt động tạo địa chỉ vật lý theo chế độ phân trang được biểu diễn hình 2.20 Trong bảng phân trang, mỗi mục cho một khuôn trang 4KB bao gồm các bit địa chỉ sở của khuôn trang và các bit quản lý Trong danh mục bảng trang cũng vậy, mỗi mục của bảng trang bao gồm các bit địa chỉ sở của bảng trang và các bit quản lý Trong số các bit quản lý có bit U/S (User/Supervisor) dùng để mã hoá các mức đặc quyền (U/S = biểu thị mức đặc quyền của hệ điều hành và nó tương ứng với mức 1, 2, chế độ phân đoạn; U/S = biểu thị mức đặc quyền của người sử dụng ứng với mức chế độ phân đoạn) bit R/W (read/write) dùng để biểu thị quyền được đọc ghi vào trang hoặc bảng trang Tổ hợp hai bit này tạo thành mã các mức đặc quyền thâm nhập (đọc/ghi) khác (11 là mức cao nhất và 00 là mức thấp nhất) Địa chỉ tuyến tính Directory Table Offset 31 31 31 0 Bộ nhớ vật lý 31 Bảng trang Danh mục bảng Thanh ghi điều trang khiển CR3 2.5.2 Bộ vi xử lý 80386 Bộ vi xử lý 803862.20: Chuyểnt đổi n tiếp theo củhệ80286, phânlà bộ vi xử lý 32 bit đầu Hình là bước phá triểđịa chỉ a thống trang tiên với Bus địa chỉ 32 bit (khả địa chỉ hoá Gbyte) ALU và các ghi thao 42 tác với các dữ liệu có độ dài 32 bit làm tốc độ xử lý nhanh 80386 là một bộ vi xử lý công nghệ cao được thiết kế cho các hệ thống yêu cầu hiệu suất rất cao và hoạt động tối ưu với yêu cầu đa nhiệm 80386 có các ghi 32 bit và các đường dữ liệu có thể chuyển các địa chỉ hoặc các dữ liệu 32 bit Bộ xử lý địa chỉ cho phép truy cập 4Gbyte dung lượng nhớ vật lý và 64Tbyte dung lượng nhớ ảo với mỗi đoạn cực đại 4Gbyte Bên 80386 còn tích hợp các mạch chức cho việc quản lý bộ nhớ, cấu bảo vệ, các ghi chuyển đổi địa chỉ, các cấu trúc phần cứng công nghệ cao phục vụ cho các yêu cầu đa nhiệm Cấu trúc xử lý lệnh theo đường ống và Bus tốc độ cao của 80386 cho phép rút ngắn thời gian thực hiện các lệnh và tăng độ lưu thoát của toàn bộ hệ thống 80386 có được chia thành hai thế hệ chính: 386DX có Bus địa chỉ và dữ liệu đều là 32 bit đóng vỏ gốm 132 chân, và 386SX có cấu trúc giống 386DX có Bus địa chỉ 24 bit và Bus dữ liệu 16 bit sử dụng cho các hệ thống có giá thành hạ 80386 bao gồm: một khối xử lý trung tâm (Central Processing unit), một khối quản lý bộ nhớ MMU và một khối giao tiếp Bus Sơ đồ khối của 80386 trình bày hình 2.21 – INPUT ADDER ADDER DESSCRIPTOR REGISTERS PAGE CACHE LIMIT & ATTRIBUTE PLA CONTROL & ATTRIBUTE PLA PROTECTION TEST UNIT BARREL SHIFTER ADDER ADDRESS DRIVER PIPELINE/ Bus SIZE CONTROL DECODER & SEQUENCING INSTRUCTION DECODER PREFETCHER/ LIMIT CHECK CONTROL ROM DECODER INSTRUCTION QUEUE MUX/ TRANS CEIVER 16 BYTE CODE QUEUE MULTIPLY/ DIVIDE REGISTER FILE REQUEST PRIORITIZER Khối xử lý trung tâm bao gồm khối lệnh và khối thực hiện lệnh Khối thực hiện lệnh có Hìn cho việc tính toán đị xử lý 80386 ghi 32 bit sử dụng h 2.21: Sơ đồ khối via chỉ và lưu trữ dữ liệu, ngoài còn có bộ dịch vòng (barrel shifter) 64 bit sử dụng để tăng tốc độ các phép toán quay, dịch, nhân, chia Khối lệnh sẽ thực hiện nhiệm vụ giải mã các mã lệnh sắp vào hàng đợi sẵn sàng cung cấp cho khối thực hiện lệnh Khối quản lý bộ nhớ (MMU) bao gồm một khối phân đoạn và một khối phân trang Bộ phân đoạn cho phép tăng cường hiệu quả quản lý bộ nhớ ảo Cơ cấu phân trang sẽ hoạt động sau và thông qua quá trình phân đoạn, mỗi đoạn được chia thành một hoặc nhiều trang KB Để thực hiện hiệu quả hệ thống quản lý bộ nhớ ảo, 80386 hỗ trợ tất cả các quá trình khởi động lại cho các trang và các đoạn lỗi 43 Bộ nhớ được tổ chức thành một hoặc nhiều đoạn với độ dài có thể thay đổi được, mỗi đoạn có thể có độ dài cực đại lên tới GB Mỗi nhiệm vụ thực hiện hệ thống 80386 có thể bao gồm 16381 đoạn, vì vậy nó có dung lượng nhớ cực đại lên tới 64 TB Khối phân đoạn cung cấp mức đặc quyền để ngăn cách và bảo vệ các ứng dụng cũng hệ điều hành không bị thân nhập bởi các ứng dụng khác Sự bảo vệ từ phần cứng này cho phép thiết kế các hệ thống với khả đa nhiệm cao BARREL SHIFTER SEMENT UNIT PAGING UNIT REGISTER FILE DESCRIPTOR REGISTER ALU LIMIT & ATTRIBUTE PLA CACHE UNIT ADDRESS DRIVERS KB CACHE WRITE BUFFERS 4x80 TRANSLATION LOOKASIDE BUFFER DATA BUS TRANSCEIVER BUS CONTROL REQUEST SEQUENCER PREFETCHER FLOATING CONTROL & POINT PROTECTION UNITBRANCH TEST UNIT TLB TARGET CONTROL ROM BUFFER FP REGISTER FILE 32 BYTE CODE QUEUE 2x16 BYTE BUS BURST CONTROL 32 BYTE CODE QUEUE 2x16 BYTE BUS SIZE CONTROL CACHE CONTROL ICACHE 8KB PREFETCH BUFFER PARITY GENERATOR AND CONTROL ROM CONTROL BUS 80386 có hai chế độ hoạt độnnhlàDECODER thực (Real Mode) và chế độ bảo vệ (Protect : chế độ Hì g 2.22: Sơ đồ khối CPU 80486 UNIT PAGE Mode) Trong chế độ thực 80386 hoạt động với tốc độ nhanh rất nhiều so với các UNIT thế hệ trước đó có cấu trúc Bus 32 bit Chế độ thực cũng cần được thực hiện trước để thiết lập các thông số cho chế độ bảo vệ Chế độ bảo vệ sẽ quản lý bộ nhớ theo cách CONTROL UNIT phức tạp để cho phép hệ thống hoạt động đa nhiệm Bộ giao tiếp Bus của 80386 cũng được thiết kế với các cấu trúc FPU i cho phép tăng mớ cường tốc độ giao tiếp như: bộ tạo địa chỉ theo cấu trúc đường ống, Bus dữ liệu có kích Điều hiệ thước động, các byte ADDRESS u có thể đọc riêng rẽ tuỳ theoCONTROL n cho phép Bus dữ liệ ADDRESS các tín khiểu 2.5.3 Vi xử lý 80486 UNIT UNIT Register file U-PIPELINE tự 80386, được tăng cường thêm V-PIPELINE 80486 về bản có cấu trúc tương bên một bộ nhớ cache với dung lượng 8KB dùng chung ADDERnh và dữ liệu cho lệ 80486 còn được cấy thêm bộ đồng xử lý toán học dấu phẩy động (FPU) Khả thao tác của 80486 vì thế caoINTEGER REGISTER địa chỉ hoá bộ nhớ thì vẫn giống hơn, khả FILE 80386 Sơ đồ khối của 80486 biểu diễn hình 2.22 DIVIDER ALU ALU 2.5.4 Vi xử lý Pentium U-PIPELINE V-PIPELINE BARREL SHIFTER MUL DCACHE 8KB TLB 44 Hình 2.23: Sơ đồ khối vi xử lý Pentium Pentium là bộ vi xử lý đầu tiên họ có Bus dữ liệu 64 bit, Bus địa chỉ của nó vẫn là 32 bit So với 80486, Pentium được tăng cường thêm dung lượng cache 8KB, nhờ vậy thực hiện các chương trình nó dành riêng 8KB cho dữ liệu và 8KB cho mã lệnh Ngoài bộ FPU có tốc độ gấp 10 lần 486, Pentium còn được tích hợp thêm hai bộ IU có khả hoạt động song song để thực hiện các phép tính với số nguyên Các cải tiến này làm tăng đáng kể tốc độ hoạt động của Pentium so với các thế hệ trước nó Sơ đồ khối một bộ vi xử lý Pentium biểu diễn hình 2.23 Cấu trúc hai bộ nhớ cache dành riêng cho lệnh và dữ liệu, mỗi bộ cache có bộ đệm chuyển đổi địa chỉ riêng cho phép bộ vi xử lý thực hiện đồng thời việc thực hiện lệnh và truy cập dữ liệu, hiệu quả hệ thống sẽ cao chế đường ống Có 256 đường nối giữa Icache và các bộ đệm tiền đọc lệnh (Prefetch buffers) cho phép đọc trước 32 byte mã lệnh Pentium là vi xử lý có cấu trúc superscalar hai đường (two-issues superscalar), cho phép hai chu kỳ đọc và giải mã lệnh có thể thực hiện đồng thời Pentium có hai cấu trúc đường ống xử lý số nguyên song song: U pipeline và V pipeline U pipeline có bộ dịch vòng để thực hiện nhanh chóng các phép quay dịch, nhân chia Pentium còn có hai cấu trúc đường ống FPU riêng biệt cùng với các tập ghi sử dụng cho tính toán số nguyên và dấu phẩy động Cache dữ liệu có cấu trúc hai cổng truy cập, có thể cho phép việc truy cập đồng thời các cấu trúc đường ống U pipeline và V pipeline 2.6 VI XỬ LÝ Z80 Z80 là bộ vi xử lý bit của hãng Zilog được chế tạo với công nghệ HMOS có mã lệnh tương thích với các loại CPU 8085 và 8080 của Intel Z80 có Bus địa chỉ 16 bit định vị tuyệt đối các chương trình, tức là 16 bit này có thể cung cấp thẳng từ lệnh hoặc từ 45 các ghi 16 bit, mà không sử dụng các địa chỉ đoạn (Segment) và địa chỉ độ dời (offset) 8088/8086 Sơ đồ khối của Z80 được biểu diễn hình 2.24 bao gồm các khối: ALU thực hiện các phép toán số học và logic thông dụng như: cộng, trừ, And, Or, Xor, Not và các phép quay dịch Bộ điều khiển dữ liệu (Data Bus Control): thực hiện vai trò kiểm soát Bus dữ liệu, cho phép CPU truyền dữ liệu với thế giới bên ngoài Bộ điều khiển Bus địa chỉ (Address Control): kiểm soát Bus địa chỉ mở cho địa chỉ CPU cung cấp Bus tại các thời điểm thích hợp các chu kỳ truy xuất bộ nhớ và vào Thanh ghi lệnh (INST REG.) là nơi chứa mã lệnh lấy vào từ bộ nhớ sẵn sàng để giải mã thực hiện Khối giải mã lệnh và điều khiển CPU (Instruction Decode & CPU control): lấy lệnh từ ghi lệnh giải mã cung cấp các tín hiệu điều khiển các khối CPU và cung cấp các tín hiệu định thời cho bộ nhớ vào/ra hoạt động, ngoài nó còn nhận các tín hiệu điều khiển từ bên ngoài để thay đổi các chế độ hoạt động Các ghi bao gồm 18 ghi bit và ghi 16 bit: Thanh ghi bộ đếm chương trình PC 16 bit cung cấp địa chỉ tuyệt đối Bus địa chỉ các chu kỳ lấy mã lệnh từ bộ nhớ Thanh ghi trỏ ngăn xếp SP 16 bit giữ địa chỉ đỉnh ngăn xếp Các ghi chỉ số IX, IY được dùng kiểu định vị chỉ số, chế độ này dữ liệu toán hạng của lệnh sẽ nằm ô nhớ có địa chỉ là tổng của ghi chỉ số và số độ dời được chỉ lệnh Bus dữ liệu bit Data Bus control Các tín hiệu điều khiển hệ thống và CPU Instruction decode & CPU control INST REG Các tín hiệu điều khiển CPU ALU CPU registers Address control Bus địa chỉ 16 bit Thanh ghi địa chỉ trang ngắt I (Interrupt page address) sử dụng cung cấp bit địa chỉ Hì h ngắ đồ địa CPU Z80 cao của chương trình phụcnvụ2.24:t,Sơ bit khốichỉ thấp sẽ được cung cấp từ thiết bị yêu cầu ngắt 46 Thanh ghi làm tươi bộ nhớ RAM động R (Refresh): sử dụng lưu bit địa chỉ hàng cung cấp tới Bus địa chỉ làm tươi RAM động sau mỗi chu kỳ lấy lệnh Thanh chứa A (Accumulator) của Z80 là ghi bit, nó sử dụng giữ một toán hạng và kết quả cuối cùng tất cả các phép toán số học và logic Thanh ghi cờ F (flags) bao gồm cờ : CF, ZF, OF, HF, PF, SF, NF Các ghi đa bao gồm: B, C, D, E, H, L có thể sử dụng riêng rẽ các ghi bit, hoặc có thể sử dụng từng cặp BC, DE, HL để trở thành các ghi 16 bit Ngoài Z80 còn có nhóm các ghi bổ phụ : A’, B’, C’, D’, E’, H’, L’ sử dụng để chứa dữ liệu tạm thời cho các ghi A, B, C, D, E, H, L cần thiết bằng các lệnh chuyển đổi dữ liệu (Exchange) 2.7 HỌ VI XỬ LÝ MOTOROLA M68000 Họ vi xử lý M68000 được sử dụng rất rộng rãi các thế hệ máy PC có chức mạnh về đồ hoạ cho các ứng dụng CAD/CAM, các máy tính chuyên dụng cho ngành y tế, công nghiệp, tự động điều khiển, các tổng đài chuyển mạch MC68000 được dùng là CPU cho các họ máy vi tính Apple Macintosh Họ M68000 là một các sản phẩm cạnh tranh rất mạnh với Intel, các đặc tính bản của chúng được trình bày bảng sau: Thuộc tính Data Bus Address Speed (MHz) Icache Internal Dcache Internal FPU MMU Memory max 68000 16 24 8, 10, 12, 16 68010 16 16 8, 10, 12 Ngoài Ngoài 16 MB Ngoài Ngoài 16 MB Ngoài Ngoài GB 68030 8, 16, 32 32 16, 20, 25, 33, 40, 50 256 bytes 68040 32 32 25, 40 KB 68060 32 32 50, 60, 66, 75 KB 256 bytes words 68020 8, 16, 32 32 16, 20, 25, 33 256 bytes KB KB Ngoài Trong GB Trong Trong GB Trong Trong GB Họ 68000 thường bảo vệ bộ nhớ bằng hai mức đặc quyền Mức đặc quyền người sử dụng sử dụng cho các chương trình ứng dụng, và mức đặc quyền giám sát (supervisor) sử dụng cho các chức của hệ điều hành Các chương trình ứng dụng sẽ không được phép truy cập vào bất kỳ ghi nào mức giám sát, còn các chương trình ở mức giám sát có thể truy cập bất kỳ ghi nào của vi xử lý Các ghi của họ 68000 bao gồm: Các ghi cho phần xử lý số nguyên có : 16 ghi chung ( ghi dữ liệu 32 bit D0- D7 và ghi địa chỉ 32 bit A0 – A7), một ghi bộ đếm chương trình PC 32 bit và một ghi mã điều kiện CCR (Condition Code Register) bit Các ghi dấu phẩy động bao gồm: ghi dữ liệu cho dấu phẩy động 80 bit (FP0 – FP7), một ghi điều khiển dấu phẩy động bit (FPCR), một ghi trạng thái dấu phẩy động 32 bit (FPSR) và một ghi địa chỉ dấu phẩy động 32 bit 47 (FPIAR) Các ghi này có thể các bộ FPU nằm bên CPU, cũng có thể thuộc các bộ FPU kết nối bên ngoài CPU 48 ... mạch điện tử bên của đơn vi? ? điều khiển khác nhau, mà CPU của các hãng khác sẽ có các tập lệnh khác Vi? ? thế một chương trình vi? ?́t cho hệ thống vi xử lý, sử dụng CPU của... rẽ nhánh chuyển điều khiển chương trình Trong một số vi xử lý bộ đếm chương trình còn được gọi là trỏ lệnh IP (Instruction Pointer) 16 Để làm vi? ?̣c được VXL phải hoạt động... phục hồi từ đỉnh ngăn xếp Vi? ? vậy chương trình sẽ quay về chỗ đã gọi nó, nếu chương trình không còn dữ liệu nào nạp vào mà chưa lấy được Vậy chương trình nếu nạp vào

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan