Tập lệnh của bộ vi xử lý – chương trình ngôn ngữ máy

4.3 Bus địa chỉ Phần này sẽ mô tả cách thức một phần tử đọc/ghi đơn được chọn từ rất nhiều kết nối tới bus. Trong mạng Telephone đường dây chung đã được đề cập tới ở phần đầu chương chúng ta đã biết rằng tất cả các phần tử của hệ thống phải trả lời mọi cuộc gọi đến để phần tử được chỉ định có thể được chọn. Trong hệ thống bus máy tính, việc chỉ định phần tử được chọn không thực hiện trên bus dữ liệu thay vào đó người ta sử dụng một hệ thống bus nhiều đường thứ hai được gọi là bus địa chỉ. Nó

doc50 trang | Chia sẻ: huyen82 | Lượt xem: 1767 | Lượt tải: 1download
Tóm tắt tài liệu Tập lệnh của bộ vi xử lý – chương trình ngôn ngữ máy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
nối đến tất cả các phần tử slave và mỗi phần tử được gán một mã hay mẫu định trước duy nhất gọi là địa chỉ. Phần tử làm nhiệm vụ điều khiển việc trao đổi được gọi là bus-master; các phần tử còn lại chịu sự điều khiển này gọi là slave. Master xác định slave được tham gia trao đổi dữ liệu bằng cách đặt mã hay mẫu của slave được chỉ định lên bus dữ liệu. Tất cả các slave đều phải thấy được bus này và nó chỉ được phép trao đổi dữ liệu khi mã của nó trùng với mã trên bus địa chỉ. Trong một máy vi tính, bộ vi xử lý thường là master của bus và một cách không thay đổi nó có mặt trong mọi quá trình trao đổi ghi/đọc dữ liệu; nó chỉ cần sử dụng bus địa chỉ để xác định một phần tử slave đơn. Mọi mẫu bit có thể của bus địa chỉ đều có thể được sử dụng để xác định những phần tử khác nhau. Trong máy vi tính với một từ 8-bit dữ liệu, thường có 16 đường bus địa chỉ do đó có thể có được 216 địa chỉ phân biệt. Với mỗi bus địa chỉ 16 bit, nó có thể được xem ở cách nhìn đầu tiên, mỗi trong số 65336 phần tử slave riêng biệt cần tới một bộ giải mã địa chỉ 16 bit để xác nhận địa chỉ duy nhất của nó. Hầu hết không gian địa chỉ trong máy tính được gán cho những phần tử nhớ. Những mạch nhớ khối nằm ở tầng mà các cell nhớ 256K bit nhị phân có thể được gắn vào một chip silicon. Nhìn chung, những chip nhớ 16K được cấu tạo từ ma trận 128 *128 những cell một bit riêng biệt. 8 chip được sắp xếp song song với nhau để tạo nên những nhân tố nhớ 16K-8bit, mỗi chip cho 1 bit trong 8 bit từ máy và được kết nối đến một đường dây tương ứng của bus dữ liệu. Ma trận bit-cell được miêu tả ở hình 4.8 cho thấy cách sắp xếp việc giải mã của chip sử dụng14 bit địa chỉ để định rõ mỗi cell riêng biệt. 2 bộ giải mã đường 7-128 được đưa vào hệ thống mạch logic điều khiển của chip nhớ. 2 đường địa chỉ còn lại được giải mã trong bộ giải mã đường 2-4 để chia không gian địa chỉ thành 4 khối logic hay 4 cung tròn (hình 4.9). Các đầu ra của bộ giải mã này được gửi đến đầu vào CHIP ENABLE được nhóm lại ở mỗi hàng của chip nhớ; đầu vào CHIP ENABLE cho phép chip được chọn lựa để trao đổi với bus dữ liệu. Vì vậy 3 khối nhớ đầu tiên của không gian địa chỉ được giải mã hoàn toàn với các phần tử nhớ 48K.16kK còn lại trong không gian địa chỉ được gán cho thành phần khác của bộ nhớ và những địa chỉ vào/ra; vấn đề này sẽ được mô tả kỹ hơn ở chương kế tiếp. 4.4 Định thời trao đổi và bus điều khiển Những khái niệm và phần cứng được mô tả đầy đủ và chi tiết dưới đây cho phép mô tả toàn bộ phương thức hay giao thức trao đổi dữ liệu giữa hai nhân tố. Rõ ràng phương thức trao đổi dữ liệu phải được quản lý bởi hệ thống logic điều khiển những hệ thống bus dữ liệu và địa chỉ đã được giới thiệu ở trên; hệ thống logic đặc biệt này thường được gọi là bus điều khiển của máy tính. Chúng ta sẽ xét dưới đây một mô hình hệ thống bus đơn giản nhưng đầy đủ được dùng trong những bộ vi xử lý 8 bit đơn, nhưng vẫn bộc lộ được những bản chất tối thiểu của nó. Nó chỉ sử dụng những mạch logic đã được mô tả. Xét hệ thống bus được miêu tả ở hình 4.10(a). Hệ thống này gồm 1 phần tử master và 4 phần tử slave. Mỗi phần tử bao gồm một nhóm 4 bit dữ liệu chốt và một nhóm 4 bit điều khiển việc kết nối tới bus dữ liệu, do đó chúng có thể ghi hoặc đọc bus dữ liệu. Master có thể ghi một mẫu 2 bit lên bus địa chỉ 2 bit và mỗi slave có chứa một bộ giải mã kết nối tới bus này. Mỗi bộ giải mã là một bộ so sánh đơn đầu ra của nó có giá trị logic true khi một mẫu logic duy nhất đã được định trước trùng với giá trị hiện tại trên bus địa chỉ. Phần tử master bao gồm một bộ logic điều khiển và định thời để quản lý việc trao đổi dữ liệu. Công việc trao đổi yêu cầu một chuỗi các tác động được gọi là chu kỳ xử lý bus. Chuỗi xử lý này bao gồm 3 pha đã được xác định một cách rõ ràng (hình 4.11(a)). Đầu tiên, phần tử master cần gửi mã địa chỉ của slave được chỉ định lên bus địa chỉ. Đường bus địa chỉ cần một chút thời gian để xác định mẫu chính xác; trong thời gian này đầu ra các bộ giải mã của các slave không được xác định và không thực hiện bất cứ điều gì. Khi các mức của bus địa chỉ đã ổn định, chỉ đầu ra của slave được chỉ định mới có giá trị true. Pha thứ hai bắt đầu ngay khi kết thúc pha thứ nhất. Phần tử ghi dữ liệu bây giờ phải gửi nó lên bus dữ liệu. Một trong số các đường logic của bus điều khiển được sử dụng để báo hiệu tới tất cả các phần tử kể cả master và các slave để ghi dữ liệu lên bus dữ liệu. Ở các hình vẽ đường này được gọi là READ/WRITE (R/W). Khi nó mang giá trị true có nghĩa là phần tử master đọc dữ liệu từ bus dữ liệu, còn nếu nó mang giá trị false thì master sẽ ghi dữ liệu (giá trị thực tế liên quan tới phần tử master). Bộ phận logic điều khiển của phần tử master xác định khi nào pha thứ hai bắt đầu bằng việc điều khiển đường DEPOSIT (D) trên mức điều khiển mức thấp. Các mạch logic trong cả phần tử master và các phần tử slave đều sử dụng đường báo hiệu D và R/W dể phát ra những tín hiệu cho phép điều khiển bus dữ liệu cần thiết. Dữ liệu sau đó được ghi lên bus dữ liệu. Cần phải có một chút thời gian để bus dữ liệu ổn định. Pha thứ ba cũng là pha cuối cùng của chu kỳ trao đổi sau đó có thể thực hiện. Dữ liệu hợp lệ đang nằm trên bus dữ liệu được chốt hoàn toàn vào phần tử được yêu cầu. Đường R/W lúc này được sử dụng để xác định master hoặc slave cần chốt, và đường LATCH của bus điều khiển sẽ định thời gian thực hiện việc chốt. Những tín hiệu logic được phát ra bởi phần tử master để xác định thời gian và điều khiển 3 bước riêng biệt hay 3 pha của chuỗi xử lý này được trình bày ở dạng đơn giản nhất của nó trên hình 4.11(a). Một số qui ước rời rạc dùng để mô tả các trạng thái của ba pha và các đường bus được trình bày trên hình 4.11. Hai đường địa chỉ trên cùng của sơ đồ miêu tả khoảng thời gian ổn định (vùng gạch đường bong) và nó cũng biểu thị một đường ba trạng thái khi không có cổng nào đang điều khiển nó (mức trung gian giữa 0 và 1). Những đường được trình bày trên sườn xuống của các xung LATCH chính là phương thức qui qước cho thấy rằng thời điểm xung xuống không quan trọng. Bus dữ liệu được trình bày thấp hơn trong đồ thị cho thấy thông tin đa bit trên bus thường được xem như một dấu hiệugiải thích sự hoạt động khi các mức logic không có nghĩa; khi bus không được điều khiển nó được vẽ là một đường đơn (giữa mức 0 và mức 1), đường gạch bóng biểu diễn thời gian ổn định, và khi các mức đã ổn định nó được vẽ là hai đường ứng với mức 0 và 1. Khối 4.2 Những phần tử nhớ trên hệ thống bus Mô hình bus đơn trên hình 4.10 và 4.11 bao gồm những đầu vào và ra logic số đa bit ở mỗi phần tử; mục đích của nó chỉ để diễn tả việc trao đổi dữ liệu. Những khái niệm khác về sự vận hành của máy tính có thể được hiểu từ mô hình này nếu như đưa thêm vào một vài nét đặc trưng khác nữa. Tưởng tượng rằng một tập chuyển mạch điều khiển bằng tay đặt thêm vào phần tử master để cung cấp những đầu vào logic cho bộ điều khiển bus của nó và một tập các đèn chỉ thị trên những bus dữ liệu được đưa thêm vào các đầu ra chốt số liệu của master. Những mô hình này chính là sự xử xự của phần tử nhớ R/ W đa bit trên bus. Những bo mạch mô tả công việc trao đổi trên bus với toàn bộ các đặc t ính này được dùng trong phòng thí nghiệm trong quá trình xuất bản cuốn sách này. Chúng quay vòng chu kỳ trong toàn bộ chuỗi, việc trao đổi chậm đến nỗi những đèn chỉ thị trên những bus dữ liệu, chẳng hạn, có thể được giám sát để thấy được vị trí của chuỗi. Những đầu vào và ra đa bit trên những phần tử slave có thể được kết nối với nhau để mô phỏng những phần tử nhớ. Theo một cách khác, chúng có thể được kết nối tới những đầu vào chuyển mạch logic, và những bộ chỉ thị trạng thái logic hoặc tới những khối chức năng logic đa bit. Những điều này cho phép thực hiện các phép AND, OR đa bit hay phép cộng số học được thực hiện giữa những biến đa bit được lập trình bằng tay ở đầu vào master. _____________________________________________________________ Giao thức trao đổi bus đề cập ở t rên rất giống với việc trao đổi dữ liệu trong máy vi tính 8_bit. Phần 4.5 mô tả giao thức trao đổi dữ liệu và định thời được sử dụng với 2 họ máy vi tính nói chung. 4.4.1 Những giao thức giao tiếp trong quá trình trao đổi bus Ph ần n ày m ô t ả m ột s ố kh ả n ăng m ạnh c ó th ể đ ư ợc cung c ấp trong nh ững h ệ th ống b us ph ức t ạp h ơn. 4.4.1.1_Giao tiếp master-slave Trong một phạm vi rộng những h ệ thống bus phức tạp thượng bao gồm nhiều loại phần tử slave có thời gian đáp ứng khác nhau khá nhiều. Những phần tử nhớ là những ví dụ điển hình, những loại chip nhớ khác nhau có thời gian đáp ứng trong phạm vi từ 15ns – 5 ns. Những phần tử slave khác có thể có thời gian đáp ứng chậm hơn nhiều. Một hệ thống bus bao gồm một tập các phần tử như vậy chỉ có thể làm việc ở tốc độ lớn nhất có thể khi chu kỳ trao đổi dữ liệu được biến đổi cho phù hợp với mỗi phần tử tích cực. Điều này không thể có được với giao thức trao đổi đã được nêu ở trên, từ đây không có sự cung cấp nào cho tín hiệu phản hồi từ slave được chỉ định; toàn bộ hệ thống phải làm việc với tốc độ của phần tử chậm nhất. Việc thêm vào một đặc tính gọi là giao tiếp cung cấp phản hồi cần thiết. Điều này cho phép mọi việc trao đổi dữ li ệu được thi hành ở tốc độ ớn nhất có thể; hơn nữa cung cấp một hệ thống cho phép vài phần tử master để chia sẻ và cạnh tranh khả năng truy cập tới một tập các bus đơn. Ở đây chúng ta chỉ phác thảo một vài nét có liên quan, chúng thực sự không cần đến ở phần này nhưng về mặt logic cần phải được giới thiệu chung. Tuy nhiên chúng rất quan trọng trong những hệ thống tập hợp dữ liệu mạnh. Một vài ví dụ ứng dụng của chúng sẽ được mô tả ở những chương sau. Vấn đề đầu tiên cần giải quyết là khoảng thời gian đáp ứng thay đổi của những phần tử slave. Điều này thường được xử lý bằng cách thêm vào một cái bắt tay với giao thức trao đổi dữ liệu. Những tín hiệu lệnh đặc biệt được master đưa ra và phần tử slave báo cho biết đã nhận được tín hiệu hay chưa, cả hai công việc này được thực hiện trong suốt khoảng thời gian trao đổi dữ liệu. Một phương thức điển hình dành cho cả trao đổi master/slave và slave/master được mô tả dưới đây và được trình bày như một biểu đồ thời gian trên hình 4.12. Nó phức tạp hơn một chút so với phương thưc đơn giản trên hình 4.10 và 4.11. (a) Trao đổi dữ liệu từ master tới slave (1) Master bắt đầu quá trình trao đổivới việc đặt địa chỉdữ liệu và những tín hiệu báo hiệu R/W trên những đường bus tương ứng. Nó dành một chút thời gian cho việc ổn định và bộ giải mã địa chỉ của slave được chỉ định tìm thấy mẫu của nó. (2) Sau đó master phát đi tín hiệu đồng bộ trên đường bus điều khiển yêu cầu slave được chỉ định trả lời. Nói chung tín hiệu này được gọi là MASTER SYNC. (3) Slave được chỉ định trả lời MASTER SYNC và những tín hiệu báo hiệu R/W bằng việc chốt bus dữ liệu. (4) Khi slave hoàn thành việc chốt nó trả lời với một tín hiệu đồng bộ khác trên bus điều khiển, tín hiệu này được gọi là SLAVE SYNC. (5) Khi master nhận được tín hiệu SLAVE SYNC, ngay lập tức nó loại bỏ MASTER SYNC của mình. (6) Slave cũng đáp ứng lại việc loại bỏ MASTER SYNC bằng việc cũng loại bỏ SLAVE SYNC của nó, kết thúc chu trình. Lưu ý maser có thể bắt đầu thiết lập chu trình trao đổi tiếp theo ngay khi nó nhận được đáp ứng SLAVE SYNC, nhưng như vậy nó không thể phát tín hiệu MASTER SYNC tiếp sau cho đến khi SLAVE SYNC trước đó được giải phóng. (Điều này cho phép chu trình trao đổi tiếp theo bắt đầu trước khi chu trình thứ nhất kết thúc, đây là một dạng của chu trình trao đổi liên hợp, xem chương 8). (b) Trao đổi từ slave tới master (1) Trước tiên master đặt địa chỉ slave và những tín hiệu báo hiệu R/W. (2) Sau đó nó chờ thời gian ổn định và giải mã trước khi phát tín hiệu MASTER SYNC. (3) Khi slave được chỉ định nhận được tín hiệu MASTER SYNC nó lưu ý rằng đây là lúc để ghi, sau đó thực hiện những quy trình hoạt động bên trong để nhận dữ liệu. Khi đã sẵn sang nó đặt bus dữ liệu và sau đó là những tín hiệu lên đường SLAVE SYNC. (4) Khi master nhận được SLAVE SYNC, bus dữ liệu đã ổn định. Nó sẽ chốt dữ liệu và loại bỏ tín hiệu MASTER SYNC. (5) Khi MASTER SYNC được loại bỏ, slave trả lời trở lại bằng việc loại bỏ SLAVE SYNC của mình. Lưu ý rằng việc loại bỏ SLAVE SYNC chính là dấu hiệu kết thúc quá trình trao đổi, như vậy chu trình làm việc này sẽ luôn được thực hiện trong thời gian ngắn nhất có thể bất kể slave có chậm như thế nào. Giao thức trên mô tả việc trao đổi dữ liệu trong cả hai hướng đảm bảo độ đáng tin cậy của việc truyền tin trên một quãng đường rất dài; việc ổn định đường truyền và thời gian trễ truyền được tự động điều chỉnh. Nếu master gọi một slave không tồn tại, khi đó sẽ không hề có đáp ứng từ phía slave và hệ thống sẽ bị treo. Để tránh điều này, người ta thường đặt thêm một bộ phát hiện khoảng thời gian “time out”. Bộ này sẽ chuyển hệ thống thực hiện một số công việc khác nếu như không có tín hiệu SLAVE SYNC theo sau MASTER SYNC trong khoảng thời gian time out cho trước. Một giao thức bắt tay tương tự thường được sử dụng trong việc truyền thông giữa các máy tính hay giữa máy tính và các thiết bị cuối; vấn đề này sẽ được thảo luận trong chương 8. 4.4.1.2_Giao tiếp master-master Một dạng tương tự của giao thức có thể được sử dụng để cho phép vài master chia sẻ một vài đường bus đơn. Những đường điều khiển được bổ sung thêm cho phép các master có thể cạnh tranh với nhau để sử dụng tập đường bus này. Từ hình 4.12 có thể nhận thấy rằng master chỉ sử dụng bus trong chu trình trao đổi thực, còn trong quá trình xử lý hay thao tác dữ liệu thì nó lại không cần tới bus. Như vậy một số phần tử khác của hệ thống có thể sử dụng những đường bus trong khoảng thời gian này. Cần hết sức quan tâm tới vấn đề đảm bảo sao cho không có nhiều hơn một master cố gắng được sử dụng bus tại một thời điểm. Nếu đưa thêm vào bus điều khiển những đường giao tiếp khác và một giao thức thích hợp được thiết lập, những master có khả năng có thể chia sẻ những đường bus một cách có trật tự. Với một hệ thống bus 2 master, sự tương tác rất đơn giản; hình 4.13 mô tả sự sắp xếp một cách hợp lý. Cả hai master đều được phép yêu cầu truy cập tới những đường bus bằng cách phát tín hiệu BUS REQUEST của chính nó. Tuy nhiên không thể dung tín hiệu này chừng nào tín hiệu BUS GRANT của nó cho biết rằng master còn lại hiện không sử dụng bus. Giao thức bắt tay rất đơn giản này cho phép chia sẻ bus một cách có trật tự mà không gặp bất cứ xung đột nào. Master nào cũng có thể khoá master còn lại (đảm bảo quá trình trao đổi không bị gián đoạn) bằng việc không kết thúc tín hiệu BUS REQUEST. Một số kỹ thuật được ứng dụng để phát triển giao thức đơn giản này cho nhiều master. Thông thường chỉ có một đường điều khiển đơn (được gọi là đường BUSBUSY) được tất cả các master sử dụng để thông báo rằng bus đang bận. Bất cứ master nào muốn giành được quyền sử dụng các đường bus sau đó phải sử dụng yêu cầu thong qua một hoặc nhiều đường BUS REQUEST. Cần phải có một vài dạng logic lựa chọn để quản lý những đường BUS REQUEST và quyết đình master nào được phép sử dụng bus khi master hiện thời hoàn thành công việc. Master được chọn sẽ được cầp một tín hiệu BUS ACKNOWLEDGE (BUSACK) cụ thể bởi phần tử logic lựa chọn. Ngay khi bus thong, master được chọn sẽ chiếm dụng đường BUS BUSY. Việc thiết kế logic lựa chọn xác định hoạt động của hệ thống. Thông thường có 3 cấu trúc: daisy-chain (chuỗi ưu tiên); polled request và multi-level request (hình 4.14). Daisy-chain (chuỗi ưu tiên) là cấu trúc đơn giản nhất. Khi bus thong logic lựa chọn phát ra một tín hiệu BUSACK và gửi tới master đầu tiên trong chuỗi. Nếu master này cần dung bus, nó sẽ huỷ chuỗi BUSACK, kéo đường BUSBUSY và sử dụng những đường bus. Nếu nó không cần truy nhập bus nó sẽ đẩy tín hiệu BUSACK cho master kế sau. Vị trí các master trong chuỗi xác định mức độ ưu tiên được truy nhập bus của chúng. Bằng việc hỏi mức độ ưu tiên sẽ làm tăng tính linh động cho việc cấp bus trong chuỗi daisy-chain mà cấu trúc ưu tiên đã được xác định trước. Công việc này được thực hiện bằng cách đặt các đường grant song song tới tất cả các master. Khi bus thong phần tử logic lựa chọn sẽ xem xét tất cả các mẫu có thể trên các đường grant theo một thứ tự đã định trước; khi mẫu grant đáp ứng tới master yêu cầu truy cập, master này sẽ chiếm việc truy cập bus và chặn việc hỏi vòng tới các master khác có mức độ ưu tiên thấp hơn. Cách sắp xếp này cho ta 2n mức ưu tiên với n đường grant và nó cũng cho phép mức độ ưu tiên của mỗi master được thao tác bởi việc thay đổi đáp ứng của nó; nhưng nó chỉ cho phép một master mỗi mức ưu tiên. Sự cần thiết của những chu trình trong chuỗi hỏi vòng và phải chờ đáp ứng tại mỗi mức khiến cho kỹ thuật này bị chậm trong hệ thống bus dài. Khái niệm hỏi vòng có thể được phát triển bởi cách sắp xếp điều khiển sử dụng đa yêu cầu và các đường grant. Trong cách sắp xếp này, logic lựa chọn bus so sánh tất cả các yêu cầu (sử dụng logic kết hợp nhanh) và phát ra một lệnh cấp trên đường grant đáp ứng tới yêu cầu có mức ưu tiên cao nhất ngay lập tức khi master hiện thời không dùng bus nữa. Cách sắp xếp này được sử dụng trong hệ thống Digital Equipment Corporation (DEC) PDP-11và dẫn xuất của nó. Nó cho phép chọn mức ưu tiên của bất cứ master nào nhờ tín hiệu yêu cầu và những đường grant; để giảm kinh phí cho các đường grant và các đường yêu cầu, PDP-11chỉ sử dụng 5 mức yêu cầu nhưng nó cung cấp mọi mức ưu tiên trong cách sắp đặt chuỗi daisy-chain. 4.5 Kiến trúc bus bên trong máy vi tính Phần này mô tả tổ chức các bus và sự phân phối địa chỉ cho những phần tử khác nhau trong một máy tính điển hình. Kiến trúc hệ thống điều khiển bus trong máy tính thông thường khá đơn giản và đặc tính giao tiếp rất có hạn. Trong nhiều hệ thống máy tính 8-bit, bộ vi xử lý chỉ gồm một master và nó là nguồn hoặc đích trong quá trình trao đổi dữ liệu. Những tín hiệu định thời và điều khiển trong bộ vi xử lý đươc xác định bởi một đồng hồ hệ thống thống qua một hệ thống mạch phụ. (Đây là những xung vuông chứ không phải là các sườn đơn). Bộ vi xử lý có hệ thống bus dữ liệu bên trong của chính nó cho phép trao đổi dữ liệu giữa các phần tử bên trong (các thanh ghi), hoặc giữa chúng với các slave bên ngoài. Những bus dữ liệu bên trong và bên ngoài được kết nối với nhau bởi bộ đệm đa bit hai chiều, bộ này cho phép cách li bộ xử lý thực hiện các công việc trao đổi bên trong với bên ngoài. Sơ đồ khối của một bộ vi xử lý điển hình được trình bày trên hình 4.15. Trong vai trò thông thường là một bus-master, bộ vi xử lý bao gồm ít nhất 2 thanh ghi để điều khiển bus địa chỉ. (Chúng ta sẽ mô tả tất cả các nhiệm vụ của các thanh ghi trong chương 5 và 6.) Tín hiệu điều khiển R/W tại đầu ra bộ vi xử lý được kết hợp đầy đủ với bus địa chỉ và có cùng kiểu nhớ đệm. Chương 5 sẽ mô tả chi tiết hoạt động của bộ xử lý; trong phần này chúng ta chỉ khẳng định rằng nó phải nhận về những từ đa bit từ bộ nhớ và gửi trở lại những từ đã được biến đổi. Hệ thống bus cho phép truyền kí tự giữa bộ vi xử lý và bộ nhớ hoặc giữa bộ vi xử lý với vùng ngoài (chuyển tác trong ngoài). Đơn giản là vì không có sự khác biệt nhiều lắm giữa bộ nhớ và bộ trao đổi vào ra. Nếu slave được sử dụng để trao đổi dữ liệu kết nối với bên ngoài thì đó là sự trao đổi vào hoặc ra, còn nếu slave chỉ đơn giản lưu dữ liệu và chuyển nó tới mục yêu cầu, khi đó nó là phần tử nhớ. Những địa chỉ slave được xác định bởi bus địa chỉ cần phải được phân phối bởi chuyên gia phần cứng tới trao đổi vào/ra hoặc bộ nhớ. Dãy các slave được địa chỉ hoá được gọi là vùng địa chỉ của máy và được phân phối hay sắp xếp như là không gian nhớ hay không gian vào/ra để phù hợp với những ứng dụng cần đạt được. Có hai loại sơ đồ phổ biến được dung để lập bản đồ cho địa chỉ I/O vào vùng địa chỉ, đó là “memory mapped I/O” và “I/O mapped I/O”. Những thí dụ đơn giản cho hai sơ đồ này được mô tả lần lượt bởi các bộ vi xử lý 6502 và Z80. Khối 4.3 Bus máy tính, kiến trúc và chu trình trao đổi dữ liệu Phần này mô tả kiến trúc và chu trình trao đổi dữ liệu của các bộ vi xử lý 6502 và Z80. Hiểu biết sâu sắc về lĩnh vực này chính là bước khởi đầu để thiết kế các phần tử điều khiển và tập hợp các giao diện. (1) “Memory mapped I/O” và 6502 Bộ vi xử lý không phân biệt địa chỉ vùng nhớ và địa chỉ I/O. Hình 4.16 trình bày vùng nhớ của một máy tính. Bộ nhớ không được nêu ra như những slave đơn lẻ mà được xếp chồng lên nhau thành một khối như thể đó là một khối riêng có nhiều địa chỉ (khối 4.2). Những bus điều khiển địa chỉ và dữ liệu đều có những kết nối đơn tới bộ này. Có hai cách sắp xếp bộ địa chỉ nhị phân này: hướng lên trên hoặc hướng xuống dưới, và tất nhiên cả hai cách đều được sử dụng. Chúng ta sớm biết rằng bộ xử lý thường thực thi những chương trình của nó bằng cách tăng các vùng địa chỉ. Chúng ta viết xuôi ra giấy để tránh nhoè mực vì vậy lập trình viên phần mềm nghĩ đến việc bộ nhớ sẽ chạy từ trên xuống dưới Tuy nhiên, những kỹ sư phần cứng lại nghĩ khác họ luôn nghĩ rằng máy móc được lắp ráp từ dưới lên trên. Những bản vẽ kỹ thuật đều để dành một góc nhỏ phía dưới bên phải cho một hộp tiêu đề để có thể vẫn được nhìn thấy trong ngăn xếp khi bản vẽ được gấp lại. Danh sách các thành phần trên bản vẽ được vẽ phía bên trên hộp này, vì vậy nó được các kỹ sư dung bút chì để vẽ từ dưới lên. Chính vì thế, những bản vẽ cách bố trí phần cứng thường được đánh số địa chỉ từ dưới lên. Việc định thời cho một chu trình trao đổi dữ liệu được xác định bởi đồng hồ hệ thống. Trong một máy vi tính thông thường việc hạn chế thời gian do bộ nhớ qui định và có những yêu cầu cần đạt những giới hạn thấp hơn, khoảng 0,3¸1ms trong một chu kỳ trao đổi dữ liệu. Chuẩn 6502 thường sử dụng tín hiệu đồng hồ hệ thống 1Mhz đặt vào f0. Nó phát trở lại một tín hiệu đồng hồ được làm trễ f1. Hình 4.17 chỉ ra cách thức hai tín hiệu này liên hệ tới chu trình trao đổi dữ liệu. Một chu trình trao đổi dữ liệu hoàn chỉnh đòi hỏi có một chu trình đồng hồ khép kín. Trong pha đầu tiên của một chu trình khép kín (pha địa chỉ f0 mức thấp), 6502 đưa ra bus địa chỉ mã của slave được chỉ định. Địa chỉ này cần tới 300ns để ổn định. Pha thứ hai của chu kỳ trao đổi (f0 mức cao) được gọi là pha dữ liệu. Nếu 6502 đang ghi lên bus dữ liệu thì nó sẽ có dữ liệu cố định 200ns trong pha này. Còn nếu nó đọc từ bus dữ liệu nó sẽ chốt dữ liệu 100ns trước khi pha này kết thúc. 6502 cung cấp một đường điều khiển đơn R/|W để chỉ rõ nó định đọc hay ghi từ/tới bus dữ liệu. 6502 không cung cấp tín hiệu định thời điểm đặt hay chốt dữ liệu vì vậy hệ thống mạch định thời phụ cần được thêm vào phần cứng máy tính. Những tín hiệu định thời điển hình được trình bày trên hình 4.17 (liên hệ tới hệ thống được trình bày trên hình 4.10). Nếu trễ truyền tín hiệu định thời trong 6502 và slave được quan tâm, nó có thể sử dụng sườn âm của tín hiệu f0 để chốt dữ liệu từ bus vào slave. Chu kỳ trao đổi dữ liệu trong 6502 không thể được thực hiện trong khoảng ít hơn một chu kỳ đồng hồ. Để cho phép quá trình hoạt động với những phần tử slave không thể đáp ứng trong khoảng thời gian này, hệ thống cung cấp thêm một đường điều khiển giao tiếp đơn giản được gọi là |READY Mức logic của đường |READY chỉ thay đổi khi f0 ở mức thấp hoặc tại thời điểm bắt đầu pha dữ liệu. Đường điều khiển |READY không có tác dụng khi 6502 đang trong chu trình ghi. (2) “I/O mapped I/O” và bộ vi xử lý Z80 Bộ vi xử lý Z80 cho phép hai không gian nhớ tách biệt được truy nhập bởi bus địa chỉ 16 bit của nó. Không gian sơ cấp được gọi là không gian bộ nhớ và sử dụng toàn bộ 16 bit, điều này cho phép thiết kế bộ nhớ 64K. Không gian thứ cấp được gọi là không gian I/O và chỉ sử dụng 8 bit thấp của bus địa chỉ (A0¸7); vì thế không gian này chỉ xác định 256 địa chỉ I/O tách biệt. Bộ vi xử lý chọn một trong hai không gian này bằng cách sử dụng một cặp trong số các đường bus điều khiển. Lớp nhớ của Z80 điển hình được trình bày trên hình 4.18. Z80 cung cấp đầy đủ các tín hiệu định thời cho việc đọc/ghi dữ liệu từ/tới bus dữ liệu. Z80 không đưa ra tín hiệu thong báo rõ ràng khi đọc hay ghi lên bus dữ liệu; thay vào đó nó sẽ cấp một tín hiệu định thời đầy đủ trên đường điều khiển khi đọc hay ghi ( |READ hay |WRITE). Hai đầu ra điều khiển IOREQ và |MEMREQ, được dung để thong báo khi bộ vi xử lý muốn thông tin với không gian I/O hoặc MEMORY một cách lần lượt. Việc định thời cho quá trình trao đổi của Z80 phức tạp hơn nhiều so với 6502. Tần số đồng hồ hệ thống cho chuẩn Z80 là 4MHz. Chu kỳ trao đổi được phân ra thành một số pha tương ứng với một số chu kỳ đồng hồ T1, T2, T3 Hình 4.19(a) trình bày chuỗi tín hiệu điều khiển việc đọc và ghi Z80 từ/tới không gian nhớ. Lưu ý rằng những tín hiệu này cung cấp đầy đủ cả vấn đề định thời và điều khiển. Việc truyền dữ liệu được thực hiện trong khoảng thời gian T3 cho phép sử dụng toàn bộ 2 chu kỳ T1 và T2 cho việc ổn định bus và các phần tử slave đáp ứng lại. Trong suốt quá trình làm việc với không gian I/O, việc định thời tương tự như với không gian nhớ, nhưng Z80 chỉ sử dụng 8 đường bus địa chỉ mức thấp hơn; nó báo hiệu cho các phần tử slave I/O bằng việc kéo đường |IOREQ xuống mức thấp thay vì đường |MEMREQ và nó cũng đưa thêm vào một pha nữa, Tw (pha WAIT), giữa 2 pha T2 và T3, điều này cho phép thêm 250ns thời gian đáp ứng cho các phần tử I/O. Hình 4.19(c) trình bày một giao tiếp đơn giản cho phép 1 slave chậm trễ 1 chu trình trao đổi dữ liệu. Z80 nhìn vào sườn âm của xung đồng hồ, nếu bất cứ phần tử slave nào đang giữ đường này ở mức thấp Z80 sẽ hoãn việc trao đổi bằng cách tạo những chu kỳ giả (những pha Tw), tham khảo đường |WAIT trên mỗi sườn âm xung đồng hồ cho đến khi đương |WAIT trở lại mức cao. Sau đó Z80 lại đưa pha T3 vào ứng với sườn xung đồng hồ tiếp theo. _____________________________________________________________ Việc cung cấp không gian địa chỉ I/O thứ 2 trong kiến trúc Z80 đã mở ra một con đường mới so với 6502. Bộ vi xử lý Z80 là sự phát triển từ những bộ vi xử lý đầu tiên (4004 đầu tiên được sản xuất bởi INTEL năm 1971). Trong khi đó 6502 được phát triển bởi Synertek như một bộ vi xử lý được sử dụng trong các máy tính. Kết chương Chương này khảo sát kiến trúc bus của một máy tính qui ước cho phép chuyển những đa bit nhị phân, hay những từ nhị phân giữa các phần tử khác nhau của một máy tính. Mô tả đầy đủ những giao thức trao đổi dữ liệu để có thể mang lại một hiểu biết cơ bản về hoạt động của hệ thống bus từ những máy vi tính 8-bit đơn giản cho đến những may minicomputer và mainframe computer. Những khái niệm về những phần tử master và slave. Bài tập 4.1_ Mô tả kiến trúc hệ thống bus trong một máy tính trao đổi từ đa bit. Sử dụng mô hình khối đơn giản ở hình 4.10, mô tả phương thức được sử dụng cho việc trao đổi dữ liệu; trình bày những khối định thời đơn giản để chỉ rõ những tín hiệu được đưa ra bởi bus-master khi nó điều khiển quá trình trao đổi. 4.2_ Thảo luận về ưu và nhược điểm của hệ thống bus trong bài 4.1, vì sao những sơ đồ bus trao đổi được sử dụng rộng rãi trong máy tính. 4.3_ Mô tả vì sao luôn phải có một master và một slave trong mọi quá trình trao đổi trong một hệ thống bus. Thảo luận về cách thức nhiều master có thể cùng làm việc trong một hệ thống bus. 4.4_ Xem xét sự mở rộng mối quan hệ master-slave được mô tả trong chương này với những vấn đề chung của việc trao đổi dữ liệu giữa những đệ thống dữ liệu tổng quát. Tài liệu tham khảo 1_Mini/Microcomputer Hardware Design, G.D.Kraft and W.N.Toy, Prentice-Hall, New Jersey (1979) 2_Z-80 User’s Manual, J.J.Carr, Reston-Prentice-Hall, Reston, VA (1982) 3_6502, Z80, 6809 etc. data and applications manuals (Synertek / Rockwell, Zilog and Motorola) 4_Motorola etc. ECL data manuals. 5 Chu trình xử lý lệnh Mở đầu Chương 4 đã mô tả cách thức hệ thống mạch logic đơn giản bên trong bộ xử lý cho phép nó điều khiển việc trao đổi dữ liệu qua hệ thống bus của máy tính. Chương này sẽ mô tả sâu hơn về hệ thống mạch logic truyền thẳng trong bộ xử lý cho phép nó trao đổi dữ liệu kết hợp nhiều bit với hoạt động logic đơn giản. Chúng ta sẽ mô tả cách thức bộ xử lý nhận về những từ mã từ bộ nhớ và sử dụng chúng để xác định công việc cần thực hiện. Việc thực thi chương trình sau đó sẽ cho thấy nó thực sự là gì mà không cần phải quan tâm tới sự phản ứng của máy tới những lệnh đơn giản được sắp xếp trong bộ nhớ như những xâu từ mã. Chương 6 sẽ mô tả và trình bày về giới hạn của tập các chuỗi (lệnh) mà một bộ vi xử lý có thể thực hiện và cũng trình bày cách thức tập giới hạn này có thể cung cấp hầu hết những tính năng không giới hạn của máy. Trong suốt quá trình phát triển từ trước đến nay, có thể nhận thấy rằng một số nội dung mới được bao hàm trong khía cạnh hoạt động của máy tính có thể được hiểu một cách sâu sắc nhất nếu đầu tiên nó được mô tả cho một bộ vi xử lý. Cũng có thể nhận thấy rằng, bộ vi xử lý 6502 đã được biết đến sớm nhất. Vì vậy hai chương 5 và 6 sẽ thảo luận về bộ vi xử lý này. Chương này tập trung vào chu kỳ lệnh của nó và chương sau chủ yếu mô tả tập lệnh. Để chỉ ra những đặc tính chung, những đặc tính không rõ ràng hay không được nói đến trong 6502, khi cần thiết sẽ phải tham chiếu đến Z80 (và một số loại khác). 5.1 Cấu trúc bên trong bộ vi xử lý Phần 4.5 đã phác thảo qua về cấu trúc của một bộ vi xử lý. Bây giờ chúng ta sẽ đi sâu tìm hiểu về kiến trúc bên trong bộ vi xử lý 6502 để hiểu được quá trình hoạt động ở những bit logic nhị phân. Bus dữ liệu 8-bit bên trong cho phép trao đổi dữ liệu giữa các thanh ghi trong hoặc giữa một thanh ghi trong với bus ngoài. Khối logic giải mã lệnh (IDL) chính là khối điều khiển của bộ vi xử lý. Nó nối với bus điều khiển ngoài, do đó nó chính là đơn vị điều khiển của toàn bộ máy tính. Khối này kết nối điều khiển trực tiếp và riêng biệt đến các thanh ghi trong. Điều khiển trực tiếp tránh được việc phải dung mỗi bus điều khiển trong để truy cập yêu cầu các thanh ghi trong và khiến việc trao đổi dữ liệu giữa các thanh ghi trong rất nhanh chóng. Ba cặp chốt 8-bit hoặc các thanh ghi được cung cấp với những cổng điều khiển bus dữ liệu 16 bit ngoài; chúng gồm thanh ghi địa chỉ, con trỏ ngăn xếp và bộ đếm chương trình. Toàn bộ 16 bit điạ chỉ có thể được tập hợp trong các thanh ghi này._.

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

  • docBK0046.DOC