dây chuyền, hệ thống hiện nay có thể hỗ trợ cả hai năm 1024 và 1024 vị trí bộ nhớ địa chỉ I / O. Bởi vì không gian địa chỉ cho I / O được phân lập từ đó cho bộ nhớ, điều này được gọi là cô lập I / O. Hình 7.5 tương phản hai lập trình tôi kỹ thuật / O. Hình 7.5a cho thấy giao diện cho một thiết bị đầu vào đơn giản như một bàn phím thiết bị đầu cuối có thể xuất hiện với một lập trình viên sử dụng bộ nhớ ánh xạ I / O. Giả sử một địa chỉ 10-bit, với một bộ nhớ 512- bit (địa điểm 0-511) và lên đến 512 I / O địa chỉ (địa điểm 512-1023). Hai địa chỉ được dành riêng cho đầu vào bàn phím từ một khu vực cụ thể. Địa chỉ 516 đề cập đến đăng ký dữ liệu và giải quyết 517 đề cập đến tình trạng đăng ký, trong đó cũng có chức năng như một đăng ký kiểm soát để tiếp nhận các lệnh xử lý. Các chương trình được hiển thị sẽ đọc 1 byte dữ liệu từ bàn phím vào một đăng ký cho ác trong bộ xử lý. Lưu ý rằng các bộ vi xử lý vòng cho đến khi byte dữ liệu có sẵn. 765 516 dữ liệu Bàn phím đầu vào đăng ký 43.210 765 517 (a) I / O trạng Bàn phím đầu vào bộ nhớ ánh xạ và kiểm soát đăng ký 1 đã sẵn sàng 0 bận rộn 43.210 Set 1 để bắt đầu đọc ĐỊA CHỈ toán hạng BÌNH 200 tải AC "1" Store tải ắc AC 517 Tiến hành bàn phím đọc 202 tải AC 517 Nhận Chi nhánh trạng byte nếu Đăng 0 202 vòng cho đến khi sẵn sàng tải AC 516 tải dữ liệu byte (b) Isolated I / O ĐỊA CHỈ toán hạng BÌNH 200 tải I / O 5 khởi bàn phím đọc 201 Kiểm tra I / O 5 Kiểm tra hoàn thành Chi nhánh không sẵn sàng 201 vòng cho đến khi hoàn tất Trong 5 tải dữ liệu byte Hình 7.5 Bộ nhớ-Mapped và Isolated I / O 232 CHƯƠNG 7 / INPUT / OUTPUT với cô lập I / O (Hình 7.5b), các cổng I / O có thể truy cập chỉ bằng lệnh I / O đặc biệt, trong đó kích hoạt các dòng lệnh I / O trên xe buýt. Đối với hầu hết các loại vi xử lý, có một tập hợp tương đối lớn các hướng dẫn khác nhau để tham khảo bộ nhớ. Nếu bị cô lập I / O được sử dụng, chỉ có một vài hướng dẫn I / O. Do đó, một lợi thế của bộ nhớ ánh xạ I / O là tiết mục lớn lệnh này có thể được sử dụng, cho phép lập trình hiệu quả hơn. Một bất lợi là có giá trị không gian địa chỉ bộ nhớ được sử dụng hết. Cả hai bộ nhớ ánh xạ và cô lập I / O được sử dụng phổ biến. 7.4 gián đoạn LÁI I / O Các vấn đề với lập trình I / O là bộ vi xử lý đã phải chờ đợi một thời gian dài cho các I / O module quan tâm để sẵn sàng cho một trong hai tiếp hoặc truyền tải dữ liệu. Các bộ vi xử lý, trong khi chờ đợi, liên tục phải thẩm vấn những trạng thái của module I / O. Kết quả là, mức độ hiệu suất của toàn bộ hệ thống là suy thoái nghiêm trọng. Một cách khác là cho các bộ xử lý để ban hành một lệnh I / O cho một module và sau đó đi vào để làm một số công việc hữu ích khác. Các I / O module sau đó sẽ làm gián đoạn xử lý để yêu cầu dịch vụ khi nó đã sẵn sàng để trao đổi dữ liệu với các bộ vi xử lý. Bộ xử lý sau đó thực hiện việc chuyển giao dữ liệu, như trước đây, và sau đó tiếp tục xử lý trước đây của nó. Chúng ta hãy xem xét cách làm việc này, đầu tiên từ quan điểm của các module I / O. Đối với đầu vào, các I / O module nhận một lệnh READ từ bộ xử lý. Các I / O module sau đó tiến hành đọc dữ liệu từ một thiết bị ngoại vi liên quan. Một khi dữ liệu được đăng ký trong dữ liệu của module, module báo hiệu một ngắt đến bộ xử lý trên một dòng điều khiển. Các mô-đun sau đó chờ đợi cho đến khi dữ liệu của nó được yêu cầu của các bộ xử lý. Khi yêu cầu được thực hiện, các mô-đun đặt dữ liệu lên bus dữ liệu và sau đó sẵn sàng cho một I / O hoạt động. Từ quan điểm của bộ vi xử lý của xem, các hành động cho đầu vào là như sau. Bộ vi xử lý vấn đề một lệnh READ. sau đó nó đi ra và làm điều gì đó khác (ví dụ, bộ vi xử lý có thể làm việc trên các chương trình khác nhau tại cùng một thời điểm). Vào cuối mỗi chu kỳ hướng dẫn, kiểm tra xử lý đối với các ngắt (Hình 3.9). Khi gián đoạn từ các module I / O diễn ra, bộ vi xử lý tiết kiệm bối cảnh (ví dụ, truy cập chương trình và đăng ký xử lý) của chương trình hiện hành và xử lý ngắt. Trong trường hợp này, bộ xử lý đọc từ dữ liệu từ các I / O module và lưu trữ nó trong bộ nhớ. Sau đó nó sẽ khôi phục lại bối cảnh của chương trình đó đã được làm việc trên (hoặc một số chương trình khác) và tiếp tục thực hiện. Hình 7.4b cho thấy việc sử dụng các ngắt I / O để đọc trong một khối dữ liệu. So sánh điều này với hình 7.4a. Gián đoạn I / O là hiệu quả hơn so với lập trình I / O vì nó giúp loại bỏ không cần chờ đợi. Tuy nhiên, làm gián đoạn I / O vẫn tiêu tốn rất nhiều thời gian xử lý, bởi vì
đang được dịch, vui lòng đợi..
![](//viimg.ilovetranslation.com/pic/loading_3.gif?v=b9814dd30c1d7c59_8619)