Does anyone have any experience working with processors that are specialised for IO? The only one I'm really familiar with is the Intel 8089, but there must be other designs out there, and I'd like to get a feel for what other people have done in this field (as I'm currently planning designing something similar myself).
In case you're not familiar with it, the Intel 8089 is an IO Coprocessor designed to work with an 8086 or 8088 (it uses the same connection system as the 8087 maths coprocessor, so you can give it instructions embedded in the stream of instructions for the main processor) that allows you to set up two "channels" that can send and receive data between IO devices and main memory through simple programs that can transform the data and send instructions to manage the IO devices. It's basically a DMA controller on steroids.
As I see it, the limitations of the 8089 are:
- Only allows two channels, which is very limiting
- Closely tied to the 8086 architecture, so can't easily be used with other processors.
- Relies on main memory for bulk storage, so if you want a queue of data, you're going to have to (1) contend with the main processor to get it and (2) wait for what's probably fairly slow DRAM timings.
I'm thinking of a design that's:
- 8 bit rather than the 16 bits of the 8089, but:
- handles many channels (e.g. 16)
- has a small, fast SRAM for use in buffering, storing instructions, and so on, so that it can work more efficiently
Does anyone have any experience with similar systems, or thoughts about features that should be including in such a design? Instruction set design?
I'm designing this as part of a project that is designed to explore what would have been possible to achieve in 1982 or thereabouts, with only the benefit of hindsight. Therefore available components in 1982 are going to influence my design. Noticeably, the major decision of how many channels to support is being influenced by the existence of the
74AS870 (which is alas obsolete and *very* hard to find, so I'll be regretfully implementing this (at least partially) in a CPLD rather than with period-correct chips, but I'll be *designing and simulating* it with those chips before converting it over).