A data processing system having a central processor (CP), an Input/Output Controller (IOC), a memory, a first address bus coupled to said CP having signal lines for conveying memory addresses that are generated by said CP, a second address bus coupled to said IOC having signal lines for conveying memory addresses that are generated by said IOC, a first data bus coupled to said CP for transferring data to and from said CP for memory read and memory write operations, respectively, and a second data bus coupled to said IOC for transferring data to and from said IOC for memory read and memory write operations, respectively, said system further comprising:
- first address buffer means connected within said first address bus between said CP and said memory for receiving and buffering memory addresses that are generated by said CP, said first address buffer means comprising,
- a first plurality of distinct address registers, each of said first plurality of distinct address registers having a width sufficient for storing a first portion of a memory address received from said CP during a CP write to memory operation, said first plurality of distinct address registers including a first CP address register for storing a first portion of a first memory address received from said CP during a CP write to memory operation, and a second CP address register for storing a duplicate copy of said first portion of said first memory address received from said CP during a CP write to memory operation, said stored first portion of said first memory address being a content of said second CP address register;
- first comparator means having a first input that is coupled to an output of said second CP address register and a second input that is coupled to said first address bus, for comparing said first portion of a second memory address that is received from said CP to said content of said second CP address register, said comparator means having an output for indicating, when in a first state, that (a) said first portion of said second memory address that is received from said CP is equal to said content of said second CP address register, and that (b) a write to memory operation for which said second memory address is generated by said CP can be combined with an as yet unexecuted write to memory operation for which said first memory address was generated by said CP;
- second address buffer means connected within said second address bus between said IOC and said memory for buffering a plurality of memory addresses that are generated by said IOC, said second address buffer means comprising,
- a second plurality of distinct address registers, each of said second plurality of distinct address registers having a width sufficient for storing a first portion of a memory address received from said IOC during an IOC write to memory operation, said second plurality of distinct address registers including a first IOC address register for storing a first portion of a first memory address received from said IOC during an IOC write to memory operation, and a second IOC address register for storing a duplicate copy of said first portion of said first memory address received from said IOC during an IOC write to memory operation, said stored first portion of said first memory address being a content of said second IOC address register;
- and
- second comparator means having a first input that is coupled to an output of said second IOC address register and a second input that is coupled to said second address bus, for comparing said first portion of a second memory address that is received from said IOC to said content of said second IOC address register, said comparator means having an output for indicating, when in a first state, that (a) said first portion of said second memory address that is received from said IOC is equal to said content of said second IOC address register, and that (b) a write to memory operation for which said second memory address is generated by said IOC can be combined with an as yet unexecuted write to memory operation for which said first memory address was generated by said IOC.