US5193193A - Bus control system for arbitrating requests with predetermined on/off time limitations - Google Patents

Bus control system for arbitrating requests with predetermined on/off time limitations Download PDF

Info

Publication number
US5193193A
US5193193A US07/841,908 US84190892A US5193193A US 5193193 A US5193193 A US 5193193A US 84190892 A US84190892 A US 84190892A US 5193193 A US5193193 A US 5193193A
Authority
US
United States
Prior art keywords
bus
source
period
requests
granted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US07/841,908
Inventor
Sanjay Iyer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Graphics International Corp
Morgan Stanley and Co LLC
Original Assignee
Silicon Graphics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Silicon Graphics Inc filed Critical Silicon Graphics Inc
Priority to US07/841,908 priority Critical patent/US5193193A/en
Application granted granted Critical
Publication of US5193193A publication Critical patent/US5193193A/en
Assigned to FOOTHILL CAPITAL CORPORATION reassignment FOOTHILL CAPITAL CORPORATION SECURITY AGREEMENT Assignors: SILICON GRAPHICS, INC.
Assigned to U.S. BANK NATIONAL ASSOCIATION, AS TRUSTEE reassignment U.S. BANK NATIONAL ASSOCIATION, AS TRUSTEE SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SILICON GRAPHICS, INC.
Assigned to GENERAL ELECTRIC CAPITAL CORPORATION reassignment GENERAL ELECTRIC CAPITAL CORPORATION SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SILICON GRAPHICS, INC.
Assigned to MORGAN STANLEY & CO., INCORPORATED reassignment MORGAN STANLEY & CO., INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GENERAL ELECTRIC CAPITAL CORPORATION
Anticipated expiration legal-status Critical
Assigned to SILICON GRAPHICS INTERNATIONAL, CORP. reassignment SILICON GRAPHICS INTERNATIONAL, CORP. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SGI INTERNATIONAL, INC., SILICON GRAPHICS, INC. ET AL.
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/3625Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a time dependent access

Definitions

  • the present invention pertains to the field of control logic for a digital computer. More particularly, this invention relates to controlling the transfer of digital information over one or more computer buses and to and from memory.
  • Digital computers have employed control methods and systems for controlling the transfer of digital information between buses and memory and between buses and input/output interfaces.
  • DRAMs dynamic random access memories
  • DRAM controllers provide, for example, multiplexed addresses and address strobes, refresh logic, and refresh/access arbitration. DRAMs need to be refreshed to avoid loss of data stored in memory.
  • the Intel Model 8207 Dual-Port DRAM Controller for example, has a dual-port interface that allows two different buses to independently access memory, and also provides all signals necessary to control certain DRAMs.
  • the processors used in conjunction with the controller must be the same type (Fast or Slow Cycle) and they must have synchronized clocks. So to run both ports synchronously, the processors must have related timings (both phase and frequency). If these conditions cannot be met, then one port must run synchronous and the other asynchronous.
  • Prior art methods of controlling input/output operations for a single bus have also imposed performance limitations.
  • the central processing units can be slowed down if input/output devices have priority with respect to the use of bus. If the input/output devices do not have priority, then input/output devices can lose data. More networking between computers means more input/output information needs to be processed, which means that CPUs can be slowed down even more. Examples of input/output devices are Ethernet interfaces, disk controllers, and printer interfaces.
  • one of the objectives of the present invention is to provide an improved method and apparatus for supplying a memory with a first plurality of memory addresses from a first bus at a first rate and a second plurality of memory addresses from a second bus at a second rate in order to minimize synchronization penalties.
  • Another objective of the present invention is to provide an improved control method and apparatus for granting each of a plurality of requests to use a bus from a plurality of sources, including a first source, a second source, and a third source.
  • Another objective of this invention is to provide an improved control apparatus that includes a controller for a central processing unit and a controller for input/output circuitry that includes interface control circuitry, an Ethernet interface, a disk controller, a printer interface, and input/output circuitry for audio recording and playback.
  • Another objective of the present invention is to provide an improved control method and apparatus wherein when the CPU is accessing memory, the CPU's clock rate governs and when an input/output device is accessing memory, the input/output device's clock rate governs. It is therefore an objective of the present invention to provide a high input/output rate of accessing memory, and providing an increase in performance of the digital computer.
  • An additional objective of the present invention is to provide a control method and apparatus that facilitates the changing of a CPU without affecting the rest of the system and without decreasing system performance.
  • a further objective of the present invention is to provide a controller array chip that provides control of memory accesses as well as control over bus allocation times.
  • An objective of the present invention is to provide a controller array that manages different clocks and provides the least performance penalty.
  • An objective of the present invention is to provide a controller array that minimizes synchronization penalties.
  • a further objective of the present invention is to provide an improved control method and apparatus for providing a means for transferring huge amounts of memory data to a frame buffer.
  • a further objective of the present invention is to guarantee the CPU time on the bus after an input/output is finished.
  • An additional objective of the present invention is to allow such CPU guaranteed time to be preselected from a choice of variable settings.
  • An additional objective of the present invention is to guarantee the CPU a minimum rate of execution of the CPU's code in the presence of burst mode transfers, input/output transfers, or both.
  • a control apparatus for a computer that includes a memory, a first bus for transferring addresses at a first rate, and a second bus for transferring addresses at a second rate different from the first rate.
  • the control apparatus includes a first controller for supplying the memory with a first plurality of memory addresses from a first bus, the first controller being coupled between the first bus and a multiplexer.
  • the control apparatus also includes a second controller for supplying the memory with a second plurality of memory addresses from the second bus, the second controller being coupled between the second bus and the multiplexer.
  • the control apparatus also includes means for selecting the first controller for supplying the memory with the first plurality of memory addresses from the first bus at the first rate and for selecting the second controller for supplying the memory with the second plurality of memory addresses from the second bus at the second rate.
  • the first and second controllers are selected such that the first and second controllers do not supply the memory with more than one memory address at a time.
  • the first controller can be a controller for a central processing unit
  • the second controller can be a controller for input/output circuitry
  • the selecting means can be a arbiter circuit.
  • the above-mentioned objects and other objects of the invention are also provided for by a method for controlling, in a computer with a memory, the use of a first bus for transferring addresses at a first rate, and a second bus for transferring addresses at a second rate different from the first rate.
  • the method includes selecting a first controller for supplying the memory with a first plurality of memory addresses from the first bus, and selecting a second controller for supplying the memory with a second plurality of memory addresses from the second bus at the second rate.
  • the first and second controllers are selected such that the first and second controllers do not supply the memory with more than one memory address at a time.
  • the first controller can be a controller for a central processing unit
  • the second controller can be a controller for input/output circuitry
  • the selecting means can be an arbiter circuit.
  • a method of controlling the use of a computer bus wherein a plurality of requests to use a bus are received from a plurality of sources, including a first source, a second source, and a third source.
  • a length of a first period for use of the bus and a length of a second period for use of the bus are preselected such that the combined length of the first and second periods is less than a maximum length of time that the third source can tolerate being off the bus.
  • the first source can request a first period of use of the bus that would last for up to the length of the first period.
  • the second source can request a second period use of the bus that would last up to the length of the second period in the presence of requests by the first source and the third source.
  • the third source can request a use of the bus that would last as long as it would take for the third source to complete a third source operation.
  • Each of the plurality of the requests is granted.
  • the plurality of sources do not use the bus more than one at a time.
  • the first periods occur repetitively if the first source requests more than one first period use of the bus.
  • Second periods occur repetitively if the second source requests more than one second period use of the bus.
  • Periods available for the third source to use bus occur repetitively if the third source requests more than one use of the bus. No other source is granted use of the bus while the first source is using the bus during the first period.
  • the first source can be a graphics system.
  • the second source can be a central processing unit.
  • the third source can be input/output circuitry.
  • the first period can be a burst mode period.
  • the second period can be a delay period.
  • FIG. 1 is a block diagram of the architecture of a digital computer that includes a central processing unit (“CPU”), buses, memory, control circuitry, and input/output interfaces;
  • CPU central processing unit
  • FIG. 1 is a block diagram of the architecture of a digital computer that includes a central processing unit (“CPU”), buses, memory, control circuitry, and input/output interfaces;
  • CPU central processing unit
  • FIG. 2 is a block diagram of system control logic for the digital computer
  • FIG. 3 illustrates an arbiter circuitry with a bus timer
  • FIG. 4 illustrates bus timing without input/output signals
  • FIG. 5 illustrates bus timing in the presence of input/output signals
  • FIG. 6 is a block diagram showing the connections between CPU, the VME bus arbiter, the VME external master interface, and the I/O bus arbiter.
  • FIG. 1 illustrates in block diagram form circuitry 10 forming the architecture of a digital computer with enhanced graphics capabilities.
  • the computer has two independent buses: central processing unit (“CPU") local bus 20 and input/output ("I/O") bus 50.
  • Buses 20 and 50 are each time multiplexed buses, which means that each bus is a combined address and data bus.
  • CPU local bus 20 is buffered by address latches 22, 24, 26, and 28, data transceiver 30, and interface 32, which is a combination data latch and transceiver.
  • CPU 40 is an R2000 reduced instruction set computer ("RISC") microprocessor sold by MIPs Computers of Sunnyvale, Calif.
  • CPU 40 drives the CPU local bus 20, which provides an interconnection to instruction cache 41, data cache 43, floating-point coprocessor 45 (which is an R2010 floating-point coprocessor sold by MIPs Computers of Sunnyvale, Calif.), Dynamic Access Memory (“DRAM”) array 60, and local peripherals, which include programmable read only memories (“PROMs”) 70, Timer/Real Time Clock (“RTC”) circuit 270, Universal Asynchronous Receiver Transmitter (“UART”) 272, and interrupt controller 260.
  • RISC reduced instruction set computer
  • CPU 40 drives the CPU local bus 20, which provides an interconnection to instruction cache 41, data cache 43, floating-point coprocessor 45 (which is an R2010 floating-point coprocessor sold by MIPs Computers of Sunnyvale, Calif.), Dynamic Access Memory (“DRAM”) array 60, and local peripherals, which include programmable read only memories (“PROMs”) 70,
  • Controller array 90 contains the interface control logic for controlling the transfer of digital information between the devices and buses of circuitry 10. Controller array 90 thus contains the control logic for the CPU write buffers (such as address latches 22, 24, 26 and 28), the above referenced local peripherals, DRAM array 60, and I/O bus 50. In this sense, controller array 90 is the hub of the digital computer, tying together all the different devices and interfaces. In a preferred embodiment of the present invention, controller array 90 is implemented in a single gate array integrated circuit package.
  • Controller array 90 is coupled to memory driver 300 which in turn is coupled to DRAM array 60.
  • DRAM addresses are sent from controller array 90 over lines 315 to memory driver 300.
  • Memory driver 300 then sends the DRAMS addresses over lines 317 to DRAM array 360.
  • Row address strobe (“RAS”) signals and column address strobe (“CAS”) signals for the DRAMs in DRAM array 60 are sent from controller array 90 over lines 316 to memory driver 300.
  • RAS signals and CAS signals are then sent from memory driver 300 over lines 318 to DRAM array 360.
  • Memory address bus 230 is coupled between address latch 26 and transceiver 56. Memory addresses travel between memory address bus 230 and controller array 90 via controller address path 320.
  • Memory data bus 240 is coupled between register (data) transceiver 30 and register (data) transceiver 52, and is also coupled to DRAM array 60.
  • Memory data bus 240 is additionally coupled to parity checkers 241, 242, 243, and 244. Parity checkers 241, 242, 243, and 244 check the partiy of data being sent to the DRAM array 60 for storage, and thus provide error detection and correction.
  • Controller array 90 receives control signals from CPU 40 via CPU control line 280. Controller array 90 sends control signals to CPU 40 via CPU control lines 281.
  • Controller array 90 is coupled to graphics board 80 via direct memory access (“DMA”) control lines 92, also called graphics control lines 92.
  • DMA direct memory access
  • Direct Memory access control lines 92 permit DMA control signals to be sent between controller array 90 and graphics board 80.
  • Lines 385 couple instruction cache 41 to CPU local bus 20.
  • Lines 387 couple data cache 43 to CPU local bus 20.
  • CPU local bus 20 is a 12.5/16.67 Mhz bus optimized for high-bandwidth (100/128 Mbytes/second) interactions between CPU 40 and cache 41 and 43.
  • CPU local bus 20 is capable of performing two pipelined cache accesses per clock cycle. Accesses to slower devices (i.e., local memory and peripherals) result in stall states produced by the control logic in controller array 90.
  • An interface 32 accepts isolated writes at CPU speeds, but any other memory or peripheral accesses that are attempted before the buffered write completes are stalled until the write completes. This embodiment preserves the order of actual execution of reads and writes.
  • I/O bus 50 connects the I/O devices (including printer interface 347, disk drive controller 130, graphics board 80, and Ethernet controller 120) and a VME expansion board 210 to memory 60 through a second port of memory 60 via data transceiver 52, memory data bus 240, and lines 245. The second port also gives CPU 40 access to I/O bus-resident devices, such as printer interface 347, disk drive controller 130, and Ethernet controller 120.
  • I/O bus 50 is connected to data transceiver 52, graphics transceiver 53, VME data transceivers 54 and 55, address transceiver 56, address transceiver 58, and input/output control array 100.
  • I/O bus 50 is a 10 Mhz multiplexed synchronous bus. I/O bus 50 has a burst mode of operation providing a peak bandwidth of 40 Mbytes/second, especially targeted to supporting fast pixel moves to and from a frame buffer (not shown) in graphics board 80.
  • I/O control lines 311 and 312 allow I/O control signals to be sent between controller array 90 and I/O bus 50.
  • I/O control array 100 couples channel bus 110 to I/O bus 50.
  • Channel bus 110 has a 16 bit data path hooked to Ethernet controller 120, SCSI disk controller 130, printer interface 347, and audio input/output circuitry 180
  • Control lines 390 and 391 couple I/O control array 100 to Ethernet controller 120.
  • Control lines 392 and 393 couple I/O control array 100 to SCSI controller 130.
  • Control lines 341 and 343 couple I/O control array 100 to Centronics printer interface 347.
  • Ethernet controller 120 provides an interface for communication to and from other computers and peripherals that reside on a coaxial cable network with the present digital computer.
  • Ethernet controller is an AMD7990 controller, sold by Advanced Micro Devices of Sunnyvale, Calif.
  • Ethernet controller 120 includes an on-board first-in first-out (“FIFO") memory that is 48 bytes deep I/O clock 404 is coupled to Ethernet controller 120 so that Ethernet controller 120 will run synchronously with respect to I/O bus 50, in order to avoid performance penalties.
  • FIFO first-in first-out
  • Serial interface adapter (“SIA") 122 converts digital signals from Ethernet controller 120 to analog signals that can be transmitted over an Ethernet coaxial cable 123, and also converts analog signals from cable 123 to digital signals that are sent to Ethernet controller 120.
  • SIA 122 is an AMD7992 SIA sold by Advanced Micro Devices.
  • Channel bus 110 is also coupled to a SCSI disk controller 130.
  • disk controller 130 comprises a WD33C93 chip sold by Western Digital Corporation of Irvine, Calif.
  • Disk controller 130 is, in turn, connected to a external disk drive (not shown).
  • Channel bus 110 is coupled to Centronics printer interface 347.
  • Data path 141 is an output to Centronics printer interface 347, and data path 151 is an input from Centronics printer interface 347.
  • Centronics printer interface 347 is in turn coupled to a Centronics connector.
  • Channel bus 110 is also coupled to audio input/output circuitry 180 via lines 398. Audio input/output circuitry 180 is also coupled to I/O control array 100 via lines 335, 337 and 339. Audio circuitry 180 is capable of recording any sounds within a certain bandwidth. Audio circuitry 180 can also generate tones within a certain bandwidth. Audio signals going to speaker 175 from audio input/output circuitry 180 are in analog form. Audio signals going from microphone 176 to audio input/output circuitry 180 are also in analog form.
  • I/O controller array 100 is implemented in a single gate array chip.
  • the printer interrupt is generated by I/O control array 100.
  • the SCSI and Ethernet interrupts are generated directly by the corresponding controllers 120 and 131.
  • a single static random access memory (“RAM”) 396 coupled between lines 345 and I/O bus 50 provides the map for all channels of channel bus 110.
  • the Ethernet, SCSI, and audio channels are assigned 256 locations each.
  • VME expansion board 210 is coupled to VME bus 200.
  • VME expansion boards include a modem, a serial interface card that provides additional serial ports, a circuit board that supports an image scanner, a circuit board that supports a plotter, a circuit board that supports a printer, and a gateway board that provides another Ethernet interface.
  • circuitry 10 contains a single VME expansion slot 333 into which one of several types of VME expansion boards is plugged.
  • VME expansion slot 333 is coupled to VME bus 200.
  • VME bus 200 is a multiplexed bus capable of carrying VME control signals, VME data, VME addresses, and VME interrupt signals.
  • VME bus 200 is coupled to controller array 90 via VME control lines 212 and 214. VME bus 200 is also coupled to transceivers 54 and 55 via VME data lines 216, 217, and 218. VME bus 200 is also coupled to address transceiver 58 via VME address bus 220.
  • VME address bus 220 is coupled to VME decoder 250.
  • VME decoder 250 is coupled to memory address bus 230.
  • VME decoder 250 decodes the high order address lines of the memory address bus 230 in order to obtain address modifiers.
  • VME decoder 250 also decodes incoming VME address modifiers in order to decide whether or not to activate VME slave controller 422, described below in connection with FIG. 2.
  • Slave select lines 345 couple VME decoder 250 with VME slave controller 432, which is part of controller array 90 and shown in FIG. 2.
  • Decoders 290 receive addresses from CPU 40 via transceiver 28. Decoders 290 decide which device CPU 40 wishes to read from or write to. Decoders 290 then send decode signals on chip select lines 291 which serve to enable the device or devices selected by the CPU. Each device to be selected has its own chip select.
  • CPU peripheral control lines 295 provide control signals, such as read and write signals from CPU 40, for PROMs 70, timer RTC circuitry 270, UART circuitry 272, and interrupt controller 260.
  • control lines 295 provide control signals for peripheral devices including a keyboard (not shown) and a mouse (not shown) coupled to UART circuitry 272.
  • Interrupt controller 260 also receives interrupt requests from local input/output sources including the graphics board 80, input/output control array 100, Ethernet interface 120, SCSI disk controller 130, Centronics printer interface 347, UART 272, and timer/RTC 270. Interrupt controller 260 also receives interrupts from VME expansion board 210. Accordingly, VME bus 200 is coupled to interrupt controller 260 via VME interrupt lines 261. When interrupt controller 260 receives one or more interrupt requests, interrupt controller 260 sends a signal on line 331 to CPU 40 that indicates that an interrupt request has been received. Interrupt controller 260 also multiplexes the VME and local input/output interrupt signals that it receives and provides an interrupt output signal on lines 265 that indicates which devices have generated interrupts. CPU 40 checks lines 265 to see which devices have generated interrupts. In a preferred embodiment of the present invention, interrupt controller 260 is implemented in a gate array chip.
  • Lines 265 are a collection of (1) data lines from interface 32, (2) CPU peripheral control lines 295 for communicating read and write signals, and (3) chip select lines 291 from decoders 290. Within lines 265, the data lines from interface 32 run in parallel with CPU peripheral control lines 295 and are not multiplexed. Within lines 265, chip select lines 291 are individual lines connected to PROMs 70, timer/RTC 270, UART 272, and interrupt controller 260, respectively.
  • Lines 265 are coupled to PROMs 70, timer/RTC circuitry 270, and UART circuitry 272.
  • PROMs 70 are boot PROMs, and they provide the software for CPU 40 when CPU 40 boots up.
  • Timer/real time clock circuitry 260 provides the digital computer with a watchdog timer, a system timer, and a real time clock.
  • UART circuitry 272 provides circuitry for communicating via serial ports with a keyboard, a mouse, and other devices (not shown).
  • Address lines 398 are coupled between address latch 28 and PROMs 70, timer/RTC 270, UART circuitry 272, and interrupt controller 260.
  • FIG. 2 illustrates system controller circuitry 400 for the digital computer.
  • System controller circuitry 400 is part of controller array 90, shown in FIG. 1.
  • System controller 400 includes four distinct DRAM memory controllers--namely, CPU DRAM controller 410, I/O DRAM controller 420, VME DRAM controller 430, and DMA DRAM controller 440.
  • the present digital computer has a dual-clock architecture. There is a relatively fast CPU clock 402 and a relatively slow I/O clock 404. In a preferred embodiment of the present invention, the digital computer switches DRAM controllers, rather than switching clocks, in order to achieve system synchronization.
  • the system controller 400 also includes CPU peripheral controller 450, I/O master controller 500, and VME master controller 510.
  • CPU DRAM controller 410, I/O DRAM controller 420, VME DRAM controller 430, and the DMA DRAM controller 440 comprise the memory controller for system 400.
  • the memory controller avoids resynchronization delays for I/O bus accesses by running the DRAM clock (RAS, CAS) off I/O bus clock 404 for I/O bus accesses, and off CPU clock 402 for CPU accesses.
  • RAS DRAM clock
  • CAS CAS
  • CPU clock 402 is coupled to CPU DRAM controller 410, CPU peripheral controller 450, and VME master controller 510.
  • I/O clock 404 is coupled to I/O DRAM controller 420, VME DRAM controller 430, and DMA DRAM controller 440.
  • controllers 410, 420, 430, and 440 together with refresh circuitry 460 and arbiter circuitry 470, provide all the signals necessary to control the DRAMs in DRAM array 60 of FIG. 1.
  • controllers 410, 420, 430, and 440, refresh circuitry 460, and arbiter circuitry 470 provide multiplexed addresses and address strobes, refresh logic, and refresh/access arbitration.
  • CPU DRAM controller circuitry 410 allows CPU 40 to access either DRAM array 60, I/O bus 50, or both DRAM array 60 and I/O bus 50.
  • I/O DRAM controller 420 allows I/O devices to access both the I/O bus 50 and DRAM array 60 at the same time.
  • I/O devices include a printer (not shown) communicating through Centronics interface 347 of FIG. 1, a disk drive (not shown) communicating through SCSI interface 130 of FIG. 1, and other computers and peripherals (not shown) communicating through Ethernet interface 120 of FIG. 1.
  • VME DRAM controller 430 allows VME expansion board 210 of FIG. 1 to access both I/O bus 50 and DRAM memory array 60 at the same time.
  • DMA DRAM controller 440 allows DMA operations to occur between graphics board 80 and DRAM array 60. During such DMA operations, data passes over I/O bus 50 and is either stored in DRAM array 60 or retrieved from DRAM array 60.
  • CPU DRAM controller 410 receives DRAM addresses on line 401 from controller address path 320, which is coupled to memory address bus 230 shown in FIG. 1.
  • CPU DRAM controller 410 sends out DRAM addresses on line 403, which goes to address multiplexer 480.
  • Address multiplexer 480 in turn sends out DRAM addresses to DRAM array 60 on DRAM address lines 313, 315.
  • CPU DRAM controller 410 sends out memory and bus requests on lines 405, which connect CPU DRAM controller 410 with arbiter circuitry 470.
  • CPU DRAM controller 410 receives signals granting the CPU the memory, and the I/O bus requests on lines 407 which connect arbiter circuit 470 with CPU DRAM controller 410.
  • CPU DRAM controller 410 receives addresses from CPU local bus 20 via address latch 26, memory address bus 230, and controller address path 320.
  • CPU DRAM controller 410 also sends out RAS and CAS signals to DRAM array 60 via lines 409, RAS/CAS multiplexer 520, and RAS/CAS lines 316.
  • Arbiter circuit 470 provides memory and bus arbitration. Arbiter circuit 470 decides which of controllers 410, 420, 430, and 440 should be engaged. Arbiter circuitry 470 receives requests to access DRAM array 60 and I/O bus 50, and arbiter circuitry 470 decides which requests should be granted. Arbiter circuit 470 receives "request” signals and sends out "grant” signals. Arbiter circuitry 470 is comprised of flip flops, state machines, gate machines, and programmable logic arrays ("PLAs"). As discussed in more detail below, arbiter 470 enforces a priority and timing scheme for handling simultaneous requests to access DRAM array 60 and I/O bus 50.
  • PDAs programmable logic arrays
  • CPU DRAM controller 410 includes CPU interface ("I/F") circuitry 411 for generating interface control signals.
  • CPU interface controller 411 is an integral part of CPU DRAM controller 410, and is connected to CPU clock 402.
  • CPU interface controller 411 provides interface signals that help control the flow of data and addresses during bus transfers. For example, CPU interface controller 411 sends enable signals to address latch 26, interface 32, and transceiver 30 of FIG. 1.
  • CPU interface controller 411 sends out interface signals on lines 413, and thus the CPU interface signals first are applied to interface multiplexer 490. Interface multiplexer 490 then sends out interface control signals on interface control lines 491, 493, 495, 497, and 499.
  • CPU DRAM controller 410 also sends out and receives CPU control signals on lines 412.
  • CPU control signals control various bus transfers involving CPU 40. Examples of CPU control signals include read/write signals and stall signals, also known as wait signals.
  • Input/output master controller 500 can send control signals, such as address strobe and data strobe, on I/O control lines 311 to I/O bus 50.
  • I/O master controller 500 can receive control signals, such as acknowledge signals, an I/O control lines 312 from I/O bus 50.
  • I/O master controller 500 also generates interface signals that are sent to interface devices, such as transceivers, via lines 501, interface multiplexer 490, and interface control lines 491, 493, 495, 497, and 499.
  • interface devices such as transceivers
  • CPU peripheral controller 450 sends "start I/O" signals to I/O master 500 via lines 414, synchronizer 499, and lines 416.
  • I/O master 500 sends acknowledge signals to CPU peripheral control 450 via lines 414.
  • Synchronizer 499 provides an interface between the CPU clock and the I/O clock. There is a synchronization delay for each synchronization performed.
  • the CPU peripheral controller 450 generates stall signals on behalf of I/O master 500.
  • the stall signals are sent from CPU peripheral controller 450 to CPU 40 via lines 414 and 281.
  • CPU DRAM controller 410 can also send a signal to CPU peripheral controller 450 via lines 412 and 414 for CPU peripheral controller to send a stall signal to CPU 40.
  • the CPU peripheral control signals control the various CPU peripherals, including PROMs 70, timer/RTC 270, UART circuitry 272, and interrupt controller 260, all shown in FIG. 1.
  • CPU DRAM controller 410 also receives control signals from CPU peripheral controller 450 via lines 414 and 412.
  • I/O DRAM controller 420 is a memory controller for the various input/output devices. I/O DRAM controller 420 gets its DRAM addresses via I/O bus 50, transceiver 56, memory address bus 230, and controller address path 320.
  • I/O DRAM controller 420 sends out addresses on lines 423 to address multiplexer 480, which in turn sends out DRAM addresses on DRAM address lines 315.
  • I/O DRAM controller 420 sends out RAS and CAS signals to DRAM array 60 via lines 425 to RAS/CAS multiplexer 520.
  • RAS/CAS multiplexer 520 sends out RAS and CAS signals to DRAM array 60 via DRAM RAS/CAS lines 316.
  • I/O DRAM controller 420 sends I/O requests for the I/O bus 50 and DRAM controller 60 to arbiter 470 via lines 427.
  • Arbiter 470 sends signals granting the I/O request to use I/O bus 50 and DRAM array 60 via lines 429 to I/O DRAM controller 420.
  • I/O DRAM controller 420 also includes I/O slave interface controller 422.
  • I/O interface controller 422 provides interface signals for controlling the transfer of data to and from the buses. Examples of interface signals include signals that enable transceivers 52, 56, 58, 53, 54, and 55. The I/O interface signals are sent from I/O interface controller 422 to interface multiplexer 490 via lines 424.
  • I/O slave interface controller 422 receives I/O control signals on lines 312. Such I/O control signals can include address strobe and data strobe. I/O slave interface 422 sends I/O control signals, such as wait and acknowledge signals, on lines 311.
  • VME DRAM controller 430 receives an initial memory address from VME address bus 220 (see FIG. 1) via transceiver 58, lines 59 and 61 (see FIG. 1), memory address bus 230, controller address path 320, and lines 431. After VME DRAM controller 430 receives an initial address, it generates its own subsequent addresses internally, within controller 430. VME DRAM controller 430 sends out addresses on lines 433 to address multiplexer 480, to be then sent to DRAM array 60 via DRAM address lines 315. VME DRAM controller 430 sends RAS/CAS signals on lines 435 to RAS/CAS multiplexer 520, to be sent to DRAM array 60 via DRAM RAS/CAS lines 316.
  • VME DRAM controller 430 also sends VME request to access I/O bus 50 and DRAM array 60 to arbiter 470 via lines 437.
  • Arbiter 470 sends grant signals to the VME DRAM controller 430 via lines 439 for VME expansion board 210 (See FIG. 1) to access I/O bus 50 and DRAM array 60.
  • VME DRAM controller 430 also includes VME slave interface controller 432, which generates interface signals for controlling the transfer of data and addresses.
  • VME slave interface 432 is coupled to I/O bus clock 404.
  • VME slave interface signals include chip enable signals.
  • VME slave interface controller 432 sends VME interface signals to interface multiplexer 490 via lines 434.
  • VME slave controller 430 receives address and data strobe control signals on VME control lines 214. VME slave controller 430 sends a "Dtak" acknowledge control signal on VME control lines 212 as part of a handshaking scheme.
  • DMA DRAM controller 440 is initially loaded with an initial memory address via lines 245, memory data bus 240, transceiver 52, I/O bus 50, transceiver 56, memory address bus 230, controller address path 320, and lines 441.
  • DMA sequencer 448 which is part of DMA DRAM controller 440, controls the DMA operation. At that initial address in memory is data that indicates address, count, direction, and end of list information for the DMA operation. DMA sequencer 448 steps through the list in memory of address/count pairs. DMA sequencer 448 also understands when the end of the address/count pairs has been reached. DMA sequencer 448 is coupled to I/O clock 404.
  • DMA DRAM controller 440 sends addresses to DRAM array 60 via lines 443, which connect DMA DRAM controller 440 with address multiplexer 480. Address multiplexer 480 then sends DRAM addresses to DRAM array 60 via DRAM address lines 315.
  • DMA DRAM controller 440 sends DRAM RAS/CAS signals to RAS/CAS multiplexer 520 via lines 445.
  • RAS/CAS multiplexer 520 then supplies DRAM array 60 with RAS/CAS signals via DRAM RAS/CAS lines 316.
  • DMA DRAM controller 440 sends DMA requests to access I/O bus 50 and DRAM array 60 to arbiter 470 via request lines 447. Signals granting DMA request to access I/O bus 50 and DRAM array 60 are sent from arbiter 470 to DMA DRAM controller 440 via lines 449.
  • DMA DRAM controller also includes DMA master interface controller 442.
  • DMA master interface controller 442 is coupled to I/O clock 404.
  • DMA interface controller 442 generates interface signals for controlling the transfer of data and addresses over the buses of the digital computer.
  • DMA interface signals include chip enable signals for transceivers 52, 56, and 53.
  • DMA interface control signals are sent from DMA interface controller 442 to interface multiplexer 490 via lines 444.
  • Interface multiplexer 490 then supplies the interface control signals to the above referenced transceivers via interface control lines 491, 493, 495, 497, and 499.
  • DMA master interface controller 442 also generates DMA control signals for controlling I/O bus 50 transfers.
  • DMA master interface controller 442 sends and receives DMA control signals on DMA control lines 92.
  • DMA control lines 92 are in turn coupled to graphics board 80 (See FIG. 1).
  • DMA control signals sent by DMA interface controller 442 can include address strobe and data strobe signals for handshaking on the I/O bus 50.
  • Another example of a control signal is a delay signal which DMA DRAM controller 440 waits to receive from a slave device in a handshaking scheme. Control signals are part of the bus definition that controls the flow of data across the bus.
  • DMA controller 440 When a DMA operation begins and DMA controller 440 is engaged, data stored in DRAM array 60 is transferred to raster memory (not shown) in graphics board 80 via lines 245, memory data bus 240, transceiver 52, I/O bus 50, lines 62, transceiver 53, and lines 63, 64, and 65.
  • raster memory (not shown) is implemented as video random access memory (video "RAM").
  • the goal of the direct memory access operation is to transfer huge amount of memory to a frame buffer, which is part of the raster memory on the graphics board 80.
  • Graphics board 80 is part of a graphics system or subsystem of the digital computer. The graphics subsystem, including graphics board 80, handles the transforming, rendering, and displaying of graphical information. These operations are performed locally within the graphic subsystem through the use of a pipelined VLSI raster processor, raster memory, and a microprogrammable engine.
  • the DMA operation allows the automatic collection of portions of memory and the automatic transferring of that collected portion of memory to the graphics system.
  • CPU 40 first creates a pattern in DRAM array 60. During a DRAM operation, that data is transferred from DRAM array 60 to the raster memory of graphics board 80.
  • the peak sustained rate of transfer is 10 million pixels per second and one word can be transferred every 100 nanoseconds.
  • DMA DRAM controller 440 can also do a scatter-gather operation.
  • the graphics DMA operation is a memory to memory transfer operation, and therefore the DMA operation has no discipline. During a DMA operation, huge amounts of data are transferred. Therefore, a DMA operation can theoretically tie up the I/O bus for a long period of time, if it were not for arbiter circuitry 470.
  • Refresh circuitry 460 provides DRAM array 60 with refresh address signals via lines 461 connecting refresh circuitry 460 with address multiplexer 480. Address multiplexer 480 then applies DRAM address to DRAM array 60 via DRAM address lines 315. Refresh circuitry 460 also provides DRAM array 60 with RAS/CAS signals. Refresh circuitry 460 sends its signals to RAS/CAS multiplexer 520 via lines 463.
  • RAS/CAS multiplexer 520 in turn applies RAS/CAS signals to DRAM array 60 via DRAM RAS/CAS lines 316.
  • Refresh circuitry 460 sends a refresh request memory signal via lines 465 to arbiter circuitry 470.
  • Refresh circuitry 460 receives a refresh granted memory signal from arbiter circuitry 470 via lines 467.
  • the refresh cycle is implemented as a burst during which DRAM array 60 is accessed sequentially four times with the row address being incremented after each access. In a preferred embodiment of the present invention, the entire burst lasts 1.6 microseconds, with 64 microseconds between bursts.
  • FIG. 3 illustrates arbiter circuitry 470 in more detail.
  • Arbiter 470 has a two-level structure to parallel the dual-clock architecture of the digital computer.
  • Arbiter 470 includes I/O bus arbiter 600 which provides bus arbitration for I/O bus 50.
  • I/O bus arbiter 600 is comprised of flip-flops, state machines, logic gates, and PLAs.
  • I/O bus arbiter 600 receives I/O requests for memory and the I/O bus 50 on lines 427 from I/O DRAM controller 420.
  • I/O bus arbiter 600 receives VME external master request for the memory and the I/O bus on lines 437 from VME controller 430.
  • VME external master 700 is shown in FIG. 6.
  • VME external master 700 resides on VME expansion board 210 (see FIG. 1) and is described in more detail below.
  • I/O bus arbiter 600 receives VME request for memory and I/O bus 50 on lines 447 from DMA DRAM controller 440.
  • I/O bus arbiter 600 receives refresh requests from memory on lines 465 from refresh circuitry 460.
  • I/O bus arbiter 600 runs off I/O clock 404. I/O bus arbiter 600 generates a unified request that is sent to CPU arbiter 610. I/O bus arbiter 600 simply performs logical OR operations on the I/O request, the VME request, the DMA request, and the refresh request. The logical OR operations performed by I/O bus arbiter 600 are, of course, performed with logic gates implemented in circuitry.
  • I/O, VME, and DMA requests are requests for use of the I/O bus 50 and DRAM array 60 (i.e. memory) at the same time because during an I/O, VME, or DMA operation, data is transferred over I/O bus 50 to and from DRAM array 60.
  • refresh circuitry 460 simply requests memory (i.e., DRAM array 60) and not I/O bus 50. This is so because refresh circuitry 460 is simply refreshing the DRAMs in DRAM array 60, and is not transferring any data over I/O bus 50.
  • refresh circuitry When refresh circuitry is accessing memory (i.e., DRAM array 60), there cannot be a simultaneous access of memory by CPU 40, an I/O device, VME expansion board 210, or a DMA operation. In other words, a refresh operation is exclusive with respect to other memory access operations.
  • CPU 40 can access I/O bus 50, however, without accessing memory. In other words, CPU 40 can access other devices beside DRAM array 60 without accessing DRAM array 60 at the same time. For example, CPU 40 can access I/O devices, and the CPU peripherals, such as UART 272 and timer/RTC 270, without accessing DRAM array 60.
  • Refresh circuitry 460 only requests a memory access and not an I/O bus 50 access, and I/O, VME and DMA request both memory and I/O bus 50 concurrently. Therefore, I/O bus arbiter 600 splits the refresh request for memory from the I/O, VME, and DMA request for memory and I/O bus 50. Thus, I/O bus arbiter 600 sends a signal to CPU arbiter 610 on lines 601 that refresh wants to access memory (i.e., DRAM array 60). I/O bus arbiter 600 sends a signal to CPU arbiter 610 on lines 602 that either I/O, VME external master, or DMA wants to access both memory and I/O bus 50. Again, I/O bus arbiter 600 merely performs a logical OR operation on the various requests and provides outputs on lines 601 and lines 602.
  • CPU clock 402 drives CPU arbiter 610.
  • CPU arbiter 610 thus runs synchronously to CPU 40. This minimizes CPU latency.
  • CPU arbiter 610 In addition to receiving refresh requests on lines 601 and requests on lines 602 that I/O, VME, or DMA wants memory and I/O bus 50, CPU arbiter 610 also receives requests on line 405 from CPU 40 that CPU 40 requests access to memory (i.e., DRAM array 60). In addition, on lines 611, CPU arbiter 610 receives requests from CPU 40 that CPU 40 requests access to I/O bus 50.
  • CPU arbiter 610 is made up of flip-flops, state machines, logic gates, and programmable logic arrays ("PLAs"). CPU arbiter 610 performs priority arbitration.
  • CPU arbiter receives a request on lines 405 from CPU controller 410 (see FIG. 3) for CPU 40 to access memory (i.e. DRAM array 60).
  • CPU arbiter 610 also receives on lines 611 requests from CPU 40 to access I/O bus 50.
  • CPU arbiter 610 sends out a signal to CPU DRAM controller 410 that CPU 40 is granted access to memory (i.e. access to DRAM array 60). On lines 613, CPU arbiter 610 sends a signal to CPU 40 that indicates that CPU 40 has been granted access to I/O bus 50.
  • CPU arbiter 610 sends a signal to I/O bus arbiter 600 that indicates that refresh circuitry 460 has been granted access to memory (i.e. access to DRAM array 60).
  • CPU arbiter 610 sends a signal to I/O bus arbiter 600 that indicates that either that I/O, VME, or DMA has been granted access to memory array 60 and I/O bus 50.
  • CPU arbiter 610 allows sufficient time between turning off a grant to I/O bus arbiter 600 and turning on a CPU grant. This allows synchronization of the I/O grant de-assertion to the I/O bus clock 404.
  • CPU arbiter 610 can send out a CPU granted bus signal on lines 613 at the same time it sends a refresh granted memory signal out on lines 615.
  • CPU 40 can access I/O bus 50 without accessing memory array 60.
  • refresh circuitry 460 can access DRAM array 60 at the same time.
  • CPU arbiter 610 cannot send out a CPU granted memory signal on lines 407 at the same it sends out either a refresh granted memory signal on lines 615 or an I/O, VME, or DMA granted memory or bus signal on lines 617. This is because memory accesses cannot happen simultaneously.
  • CPU arbiter 610 cannot send out a refresh granted memory signal on lines 615 at the same time it sends out an I/O, VME, or DMA granted memory and bus signal on lines 617.
  • I/O bus arbiter 600 receives the refresh granted memory signal on lines 615 and the I/O, VME, or DMA granting memory and bus signal on lines 617 I/O bus arbiter 600 then provides one of the following outputs: either an I/O granted memory and I/O bus signal on lines 429, a VME external master granted memory and I/O bus signal on lines 439, a DMA granted memory and I/O bus signal on lines 449, or a refresh granted memory signal on lines 467.
  • the I/O granted memory and bus signal on lines 429 is sent to I/O DRAM controller 420 from I/O bus arbiter 600.
  • the VME external master granted memory and I/O bus signal on lines 439 is sent from I/O bus arbiter 600 to VME controller 430.
  • the DMA granted memory and bus on lines 449 is sent from I/O bus arbiter 600 to DMA controller 440.
  • the refresh granted memory signal on lines 467 is sent from I/O bus arbiter 610 to refresh circuitry 460.
  • I/O bus arbiter 600 and CPU arbiter 610 are governed by a priority and timing scheme, discussed below, with respect to the granting of memory or I/O bus requests by CPU 40, refresh, I/O, VME, or DMA. Priority rules determine which of such requests have priority.
  • Bus timer circuitry 630 which is part of arbiter 470, governs the timing of bus arbitration. Bus timer circuitry 630 is connected to CPU arbiter 610 via lines 631. Bus timer circuitry 630 is connected to I/O arbiter 600 via lines 633 and 635.
  • VME bus arbiter 650 is also included as part of arbiter 470.
  • VME bus arbiter 650 receives the CPU clock on lines 402.
  • VME bus arbiter 650 receives CPU requests for the VME bus 200 on lines 651.
  • VME bus arbiter 650 receives VME external master request to access VME bus 200 on lines 653.
  • VME bus arbiter 650 sends out signals granting the CPU 40 VME 200 on lines 652.
  • VME bus arbiter 650 sends out signals granting the VME external master the VME bus 200 on lines 654.
  • the VME bus arbiter is discussed in more detail below with respect to FIG. 6.
  • I/O bus arbiter 600 and CPU arbiter 610 orchestrate operation of CPU DRAM controller 410, I/O DRAM controller 420, VME DRAM controller 430, and DMA DRAM controller 440.
  • I/O bus arbiter 600 and CPU arbiter 610 enforce a discipline that prevents any one interface--i.e., CPU, I/O, VME, or DMA--from tying up the I/O bus 50 for more than a certain amount of time. Such discipline is necessary because Ethernet controller 120 (See FIG. 1) has only a small latency tolerance. "Latency" is the time that elapses between a request for memory access and a granting of a request for memory. Ethernet controller chip 120 contains only a 48 byte buffer memory.
  • Ethernet controller 120 is therefore a latency intolerant device, given that Ethernet controller 120 would lose data if there is too long of a delay between the time Ethernet controller 120 requests a memory access and the time such a request is granted.
  • the graphics DMA operation discussed above, has no discipline.
  • the graphics DMA operation is a memory to memory transfer that moves huge amounts of data. The graphics DMA operation therefore can tie up the I/O bus 50 for relatively long periods of time.
  • DMA transfers to graphics board 80 use the I/O bus burst mode.
  • the burst mode is an efficient way for transferring sequential address locations without having to send the address across for each word transferred.
  • CPU DRAM controller 410 uses a built-in DMA channel to transfer a burst of data to graphics board 80.
  • I/O bus 50 can support the burst mode of operation up to 40 megabytes per second in a preferred embodiment of the present invention.
  • the burst mode a single address is followed by a burst of data.
  • the rate of transfer is 10 million pixels per second and one data word is transferred every 100 nanoseconds.
  • the digital computer is configured to support transfers to and from VME expansion board 210 in the burst mode.
  • DMA DRAM controller 440 For DMA burst mode operations, DMA DRAM controller 440 is initially loaded with a starting address. DMA controller 440 then generates sequential addresses for the data to be transferred during the burst mode operation. Likewise, during VME burst mode operations, VME DRAM controller 430 is initially loaded with a beginning address, VME DRAM controller 430 then generates subsequent addresses for the data to be transferred during burst mode operation.
  • Bus timer 630 of FIG. 3 controls the burst length and the delay time.
  • the burst length can be set by software within a certain range of lengths.
  • the burst length sets an upper maximum on the amount of time that a DMA or VME burst mode operation can occur.
  • the delay time is the time that the CPU is guaranteed to own the I/O bus 50. During the delay time, CPU 40 is guaranteed to own I/O bus for the delay period of time, whether CPU 40 needs the bus or not. During the delay time, CPU 40 cannot be preempted by DMA, VME, or I/O operations.
  • Delay counter 632 of bus timer 630 sets a minimum bus grant period to CPU 40 in 100 nanoseconds increments. The delay counter thus sets the delay period.
  • the delay counter 632 can be set by software within a range.
  • Burst counter 634 sets a maximum burst length in 100 nanoseconds increments. At the end of the burst interval, DMA and VME bursts are terminated.
  • the burst counter can be set by software in order to set the maximum burst length.
  • Bus timer 630 is designed to allow dynamic switching of I/O bus 50 loading depending on whether or not CPU 40 needs quick real-time response.
  • the nominal setting will be 20.6 microsecond bursts and 2 microsecond delay.
  • the first task is to reload bus timer 630 to increase the time allocated to CPU 40 and to decrease the burst length. Thereafter, the routine can determine whether the interrupt to be serviced can tolerate less bus bandwidth or not, and either leave the bus timer 630 alone, or set it back accordingly.
  • the burst length can be set between 0 microseconds and 25.6 microseconds.
  • the delay length can be set between 0 microseconds and 25.6 microseconds.
  • the burst and delay lengths can be set in a manner analogous to the setting of 636 and 638 on a dial.
  • Bus arbitration by arbiter 470 is also governed by priority rules. Refresh operations have the highest priority. Input/output operations have the second highest priority. VME operations have the third highest priority. DMA operations have the fourth highest priority. Finally, CPU 40 operations have the fifth highest priority. Again, refresh operations can occur concurrently with CPU operations that only access I/O bus 50 and do not access memory 60. In the case of VME burst requests that are simultaneous with graphics DMA burst requests, the VME requests get priority by arbiter 470. This means that as long as there are any pending transfers on VME, the graphics DMA is held off the I/O bus.
  • bus timer 630 applies globally--that is, bus timer 630 ensures that the total totality of VME and graphics DMA channels get only a certain proportion of the I/O bus 50 bandwidth. This implies that the higher priority channels slow down the lower prior channels when the higher priority channels become active.
  • Ethernet request is granted first.
  • the DMA request is then granted.
  • the CPU request is granted.
  • the arbitration scheme allows refresh to occur during VME access from CPU 40. This has the benefit of ensuring the integrity of memory during boot operations.
  • bus timer 630 allows a VME or a DMA transfer for burst length period 660.
  • the burst period 660 ends at the earlier of: (1) the maximum burst length period stored in burst counter 634 of bus timer 630, or (2) whenever the DMA operation ends, if earlier than the maximum burst length period set in burst length counter 634.
  • arbiter 470 signals either the DMA DRAM controller 440 or the VME DRAM controller 430 whichever is controlling the transfer during burst period 660, to get off the I/O bus, I/O bus 50, or in other words to "backoff" the I/O bus 50.
  • Delay period 662 follows burst period 660. During delay 662, CPU 40 is permitted to access I/O bus 50. Again, CPU 40 is guaranteed to own I/O bus 50 for the delay period 662, whether CPU 40 needs the I/O bus 50 or not. Thus, delay period 662 is a minimum period that CPU 40 is guaranteed I/O bus 50. At the end of delay period 662, another DMA or VME burst mode operation can then occur for burst period 664, which could be the same length of burst period 660, depending the DMA or VME transfer ends before the burst length set in burst counter 634. Burst period 664 is then followed by another delay period, and so forth.
  • FIG. 5 illustrates bus arbitration in the presence of I/O requests to use the I/O bus.
  • DMA or VME burst mode operations can last the length of the burst period, as described with respect to FIG. 4. If, however, there is a request for an I/O operation from Ethernet controller 120, then arbiter 470 allows that I/O operation to occur immediately following burst period 670.
  • I/O period 672 is the period arbiter 470 allows the I/O operation to occur. I/O period 672 lasts for as long as it takes for the I/O operation to end. The I/O period 672 is thus of variable length.
  • the maximum length of time that Ethernet controller 120 can tolerate being off I/O bus 50 determines the maximum burst length and delay length periods.
  • I/O period 672 There is no maximum period for I/O period 672. The reason for this is that I/O devices generally will not stay on the bus for long periods of time.
  • I/O period 672 ends, then the CPU is guaranteed the I/O bus for the delay period 674. Again, CPU 40 is guaranteed access to the I/O bus 50 during delay period 674, whether or not CPU 40 wishes to access I/O bus 50 during said delay period 674.
  • VME or DMA burst period can occur following delay period 674. Following that DMA or VME burst period another I/O period can occur and another delay period can then occur and so forth.
  • FIG. 6 illustrates the circuitry governing VME bus arbitration.
  • CPU 40 wants to read or write to VME bus 200, CPU uses the VME external master interface 700.
  • VME bus 200 arbitration is governed by I/O bus arbiter 600, VME bus arbiter 720 and VME external master 700.
  • VME external master 700 is located on VME expansion board 210.
  • VME bus 200 arbitration is governed by the following rules.
  • CPU 40 has to be granted both I/O bus 50 and VME bus 200 for CPU 40 to get VME bus 200.
  • VME needs to get I/O bus and VME bus 200 in order to access memory 60.
  • CPU 40 always acquires VME bus 200 before acquiring I/O bus 50.
  • VME external master 700 always acquires VME bus 200 before acquiring I/O bus 50.
  • CPU 40 owns I/O bus 50 (which is the default condition) and VME external master 700 owns VME bus 200, then CPU 40 releases I/O bus 50 until CPU 40 gets VME bus 200.
  • VME external master 700 acquires I/O bus 50 and completes its memory access operation and then releases both I/O bus 50 and VME bus 200.

Abstract

A control apparatus for a computer is described that includes an arbiter circuit for selecting a first controller for supplying the memory of the computer with a first plurality of addresses from a first bus at a first rate and for selecting the second controller for supplying the memory of the computer with a second plurality of addresses from a second bus at a second rate. The first and second controllers are selected such that the first and second controllers do not supply the memory with more than one memory address at a time. A method for controlling the use of a computer bus is also described. A plurality of requests to use the bus are received. A length of a first period for use of the bus and a length of a second period for use of the bus are preselected. Each of the plurality of requests are granted.

Description

This is a continuation of application Ser. No. 07/716,779, filed Jun. 18, 1991, now abandoned, which is a divisional of application Ser. No. 07/244,755, filed Sep. 14, 1988, now abandoned.
FIELD OF THE INVENTION
The present invention pertains to the field of control logic for a digital computer. More particularly, this invention relates to controlling the transfer of digital information over one or more computer buses and to and from memory.
BACKGROUND OF THE INVENTION
Digital computers have employed control methods and systems for controlling the transfer of digital information between buses and memory and between buses and input/output interfaces.
Computers employing dynamic random access memories ("DRAMs") have used DRAM controllers to provide all the signals necessary to control dynamic memories. DRAM controllers provide, for example, multiplexed addresses and address strobes, refresh logic, and refresh/access arbitration. DRAMs need to be refreshed to avoid loss of data stored in memory.
Computers with two buses have used dual-port DRAM controllers. The Intel Model 8207 Dual-Port DRAM Controller, for example, has a dual-port interface that allows two different buses to independently access memory, and also provides all signals necessary to control certain DRAMs. For both ports of the Model 8207 controller to be operated synchronously the processors used in conjunction with the controller must be the same type (Fast or Slow Cycle) and they must have synchronized clocks. So to run both ports synchronously, the processors must have related timings (both phase and frequency). If these conditions cannot be met, then one port must run synchronous and the other asynchronous.
Operating a prior art DRAM controller asynchronously means that one part of the controller is running at one speed (for example, a slow speed) and the other part is running at a different speed (for example, a fast speed). Operating a prior art DRAM controller asynchronously imposes performance penalties, however. For every handshake involving the controller, the sum of central processing unit ("CPU") synchronizing time and input/output ("I/O") synchronizing time is lost. Said sum of synchronizing times is a relatively large number that is on the order of a memory access time. Thus, in prior art DRAM controllers, each memory access has associated with it a relatively large amount of time lost in order to achieve synchronization.
Prior art methods of controlling input/output operations for a single bus have also imposed performance limitations. In prior art digital computers, the central processing units ("CPUs") can be slowed down if input/output devices have priority with respect to the use of bus. If the input/output devices do not have priority, then input/output devices can lose data. More networking between computers means more input/output information needs to be processed, which means that CPUs can be slowed down even more. Examples of input/output devices are Ethernet interfaces, disk controllers, and printer interfaces.
SUMMARY AND OBJECTS OF THE INVENTION
In view of the limitations of known control methods and systems, one of the objectives of the present invention is to provide an improved method and apparatus for supplying a memory with a first plurality of memory addresses from a first bus at a first rate and a second plurality of memory addresses from a second bus at a second rate in order to minimize synchronization penalties.
Another objective of the present invention is to provide an improved control method and apparatus for granting each of a plurality of requests to use a bus from a plurality of sources, including a first source, a second source, and a third source.
Another objective of this invention is to provide an improved control apparatus that includes a controller for a central processing unit and a controller for input/output circuitry that includes interface control circuitry, an Ethernet interface, a disk controller, a printer interface, and input/output circuitry for audio recording and playback.
Another objective of the present invention is to provide an improved control method and apparatus wherein when the CPU is accessing memory, the CPU's clock rate governs and when an input/output device is accessing memory, the input/output device's clock rate governs. It is therefore an objective of the present invention to provide a high input/output rate of accessing memory, and providing an increase in performance of the digital computer.
An additional objective of the present invention is to provide a control method and apparatus that facilitates the changing of a CPU without affecting the rest of the system and without decreasing system performance.
It is an additional objective of the present invention to provide an improved control method and apparatus for a digital computer with two or more separate buses running synchronously at different speeds.
A further objective of the present invention is to provide a controller array chip that provides control of memory accesses as well as control over bus allocation times. An objective of the present invention is to provide a controller array that manages different clocks and provides the least performance penalty. An objective of the present invention is to provide a controller array that minimizes synchronization penalties.
A further objective of the present invention is to provide an improved control method and apparatus for providing a means for transferring huge amounts of memory data to a frame buffer.
A further objective of the present invention is to guarantee the CPU time on the bus after an input/output is finished. An additional objective of the present invention is to allow such CPU guaranteed time to be preselected from a choice of variable settings.
An additional objective of the present invention is to guarantee the CPU a minimum rate of execution of the CPU's code in the presence of burst mode transfers, input/output transfers, or both.
These and other objects of the invention are provided for by a control apparatus for a computer that includes a memory, a first bus for transferring addresses at a first rate, and a second bus for transferring addresses at a second rate different from the first rate. The control apparatus includes a first controller for supplying the memory with a first plurality of memory addresses from a first bus, the first controller being coupled between the first bus and a multiplexer. The control apparatus also includes a second controller for supplying the memory with a second plurality of memory addresses from the second bus, the second controller being coupled between the second bus and the multiplexer. The control apparatus also includes means for selecting the first controller for supplying the memory with the first plurality of memory addresses from the first bus at the first rate and for selecting the second controller for supplying the memory with the second plurality of memory addresses from the second bus at the second rate. The first and second controllers are selected such that the first and second controllers do not supply the memory with more than one memory address at a time. The first controller can be a controller for a central processing unit, the second controller can be a controller for input/output circuitry, and the selecting means can be a arbiter circuit.
The above-mentioned objects and other objects of the invention are also provided for by a method for controlling, in a computer with a memory, the use of a first bus for transferring addresses at a first rate, and a second bus for transferring addresses at a second rate different from the first rate. The method includes selecting a first controller for supplying the memory with a first plurality of memory addresses from the first bus, and selecting a second controller for supplying the memory with a second plurality of memory addresses from the second bus at the second rate. The first and second controllers are selected such that the first and second controllers do not supply the memory with more than one memory address at a time. Again, the first controller can be a controller for a central processing unit, the second controller can be a controller for input/output circuitry, and the selecting means can be an arbiter circuit.
The above objects and other objects of the invention are also provided for by a method of controlling the use of a computer bus, wherein a plurality of requests to use a bus are received from a plurality of sources, including a first source, a second source, and a third source. A length of a first period for use of the bus and a length of a second period for use of the bus are preselected such that the combined length of the first and second periods is less than a maximum length of time that the third source can tolerate being off the bus. The first source can request a first period of use of the bus that would last for up to the length of the first period. The second source can request a second period use of the bus that would last up to the length of the second period in the presence of requests by the first source and the third source. The third source can request a use of the bus that would last as long as it would take for the third source to complete a third source operation. Each of the plurality of the requests is granted. The plurality of sources do not use the bus more than one at a time. The first periods occur repetitively if the first source requests more than one first period use of the bus. Second periods occur repetitively if the second source requests more than one second period use of the bus. Periods available for the third source to use bus occur repetitively if the third source requests more than one use of the bus. No other source is granted use of the bus while the first source is using the bus during the first period. No other source is granted use of the bus while the second source is using the bus during the second period. No other source is granted use of the bus while the third source is using the bus. The first source can be a graphics system. The second source can be a central processing unit. The third source can be input/output circuitry. The first period can be a burst mode period. The second period can be a delay period.
The above objects and other objects of the invention are also provided for by an apparatus that provides means for performing the above-described method of controlling the use of a computer bus.
Other objects, features, and advantages of the present invention will be apparent from the accompanying drawings and from the detailed description which follows below.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements, and in which:
FIG. 1 is a block diagram of the architecture of a digital computer that includes a central processing unit ("CPU"), buses, memory, control circuitry, and input/output interfaces;
FIG. 2 is a block diagram of system control logic for the digital computer;
FIG. 3 illustrates an arbiter circuitry with a bus timer;
FIG. 4 illustrates bus timing without input/output signals;
FIG. 5 illustrates bus timing in the presence of input/output signals; and
FIG. 6 is a block diagram showing the connections between CPU, the VME bus arbiter, the VME external master interface, and the I/O bus arbiter.
DETAILED DESCRIPTION
With reference to the drawings, FIG. 1 illustrates in block diagram form circuitry 10 forming the architecture of a digital computer with enhanced graphics capabilities. The computer has two independent buses: central processing unit ("CPU") local bus 20 and input/output ("I/O") bus 50. Buses 20 and 50 are each time multiplexed buses, which means that each bus is a combined address and data bus. CPU local bus 20 is buffered by address latches 22, 24, 26, and 28, data transceiver 30, and interface 32, which is a combination data latch and transceiver.
In the preferred embodiment of the present invention, CPU 40 is an R2000 reduced instruction set computer ("RISC") microprocessor sold by MIPs Computers of Sunnyvale, Calif. CPU 40 drives the CPU local bus 20, which provides an interconnection to instruction cache 41, data cache 43, floating-point coprocessor 45 (which is an R2010 floating-point coprocessor sold by MIPs Computers of Sunnyvale, Calif.), Dynamic Access Memory ("DRAM") array 60, and local peripherals, which include programmable read only memories ("PROMs") 70, Timer/Real Time Clock ("RTC") circuit 270, Universal Asynchronous Receiver Transmitter ("UART") 272, and interrupt controller 260.
Controller array 90 contains the interface control logic for controlling the transfer of digital information between the devices and buses of circuitry 10. Controller array 90 thus contains the control logic for the CPU write buffers (such as address latches 22, 24, 26 and 28), the above referenced local peripherals, DRAM array 60, and I/O bus 50. In this sense, controller array 90 is the hub of the digital computer, tying together all the different devices and interfaces. In a preferred embodiment of the present invention, controller array 90 is implemented in a single gate array integrated circuit package.
Controller array 90 is coupled to memory driver 300 which in turn is coupled to DRAM array 60. DRAM addresses are sent from controller array 90 over lines 315 to memory driver 300. Memory driver 300 then sends the DRAMS addresses over lines 317 to DRAM array 360. Row address strobe ("RAS") signals and column address strobe ("CAS") signals for the DRAMs in DRAM array 60 are sent from controller array 90 over lines 316 to memory driver 300. RAS signals and CAS signals are then sent from memory driver 300 over lines 318 to DRAM array 360.
Memory address bus 230 is coupled between address latch 26 and transceiver 56. Memory addresses travel between memory address bus 230 and controller array 90 via controller address path 320.
Memory data bus 240 is coupled between register (data) transceiver 30 and register (data) transceiver 52, and is also coupled to DRAM array 60. Memory data bus 240 is additionally coupled to parity checkers 241, 242, 243, and 244. Parity checkers 241, 242, 243, and 244 check the partiy of data being sent to the DRAM array 60 for storage, and thus provide error detection and correction.
Controller array 90 receives control signals from CPU 40 via CPU control line 280. Controller array 90 sends control signals to CPU 40 via CPU control lines 281.
Controller array 90 is coupled to graphics board 80 via direct memory access ("DMA") control lines 92, also called graphics control lines 92. Direct Memory access control lines 92 permit DMA control signals to be sent between controller array 90 and graphics board 80.
Lines 385 couple instruction cache 41 to CPU local bus 20. Lines 387 couple data cache 43 to CPU local bus 20.
CPU local bus 20 is a 12.5/16.67 Mhz bus optimized for high-bandwidth (100/128 Mbytes/second) interactions between CPU 40 and cache 41 and 43. CPU local bus 20 is capable of performing two pipelined cache accesses per clock cycle. Accesses to slower devices (i.e., local memory and peripherals) result in stall states produced by the control logic in controller array 90. An interface 32 accepts isolated writes at CPU speeds, but any other memory or peripheral accesses that are attempted before the buffered write completes are stalled until the write completes. This embodiment preserves the order of actual execution of reads and writes.
I/O bus 50 connects the I/O devices (including printer interface 347, disk drive controller 130, graphics board 80, and Ethernet controller 120) and a VME expansion board 210 to memory 60 through a second port of memory 60 via data transceiver 52, memory data bus 240, and lines 245. The second port also gives CPU 40 access to I/O bus-resident devices, such as printer interface 347, disk drive controller 130, and Ethernet controller 120. I/O bus 50 is connected to data transceiver 52, graphics transceiver 53, VME data transceivers 54 and 55, address transceiver 56, address transceiver 58, and input/output control array 100. I/O bus 50 is a 10 Mhz multiplexed synchronous bus. I/O bus 50 has a burst mode of operation providing a peak bandwidth of 40 Mbytes/second, especially targeted to supporting fast pixel moves to and from a frame buffer (not shown) in graphics board 80.
I/ O control lines 311 and 312 allow I/O control signals to be sent between controller array 90 and I/O bus 50.
I/O control array 100 couples channel bus 110 to I/O bus 50. Channel bus 110 has a 16 bit data path hooked to Ethernet controller 120, SCSI disk controller 130, printer interface 347, and audio input/output circuitry 180 Control lines 390 and 391 couple I/O control array 100 to Ethernet controller 120. Control lines 392 and 393 couple I/O control array 100 to SCSI controller 130. Control lines 341 and 343 couple I/O control array 100 to Centronics printer interface 347.
Ethernet controller 120 provides an interface for communication to and from other computers and peripherals that reside on a coaxial cable network with the present digital computer. In a preferred embodiment of the preferred invention, Ethernet controller is an AMD7990 controller, sold by Advanced Micro Devices of Sunnyvale, Calif. Ethernet controller 120 includes an on-board first-in first-out ("FIFO") memory that is 48 bytes deep I/O clock 404 is coupled to Ethernet controller 120 so that Ethernet controller 120 will run synchronously with respect to I/O bus 50, in order to avoid performance penalties.
Serial interface adapter ("SIA") 122 converts digital signals from Ethernet controller 120 to analog signals that can be transmitted over an Ethernet coaxial cable 123, and also converts analog signals from cable 123 to digital signals that are sent to Ethernet controller 120. In a preferred embodiment of the present invention, SIA 122 is an AMD7992 SIA sold by Advanced Micro Devices.
Channel bus 110 is also coupled to a SCSI disk controller 130. In a preferred embodiment of the present invention, disk controller 130 comprises a WD33C93 chip sold by Western Digital Corporation of Irvine, Calif. Disk controller 130 is, in turn, connected to a external disk drive (not shown).
Channel bus 110 is coupled to Centronics printer interface 347. Data path 141 is an output to Centronics printer interface 347, and data path 151 is an input from Centronics printer interface 347. Centronics printer interface 347 is in turn coupled to a Centronics connector.
Channel bus 110 is also coupled to audio input/output circuitry 180 via lines 398. Audio input/output circuitry 180 is also coupled to I/O control array 100 via lines 335, 337 and 339. Audio circuitry 180 is capable of recording any sounds within a certain bandwidth. Audio circuitry 180 can also generate tones within a certain bandwidth. Audio signals going to speaker 175 from audio input/output circuitry 180 are in analog form. Audio signals going from microphone 176 to audio input/output circuitry 180 are also in analog form.
Chip-select signals, direct memory access ("DMA") handshake signals, and slave address lines are driven by the I/O controller array 100 with no additional glue logic required. In a preferred embodiment, I/O controller array 100 is implemented in a single gate array chip.
The printer interrupt is generated by I/O control array 100. The SCSI and Ethernet interrupts are generated directly by the corresponding controllers 120 and 131. A single static random access memory ("RAM") 396 coupled between lines 345 and I/O bus 50 provides the map for all channels of channel bus 110. The Ethernet, SCSI, and audio channels are assigned 256 locations each.
VME expansion board 210 is coupled to VME bus 200. Examples of VME expansion boards include a modem, a serial interface card that provides additional serial ports, a circuit board that supports an image scanner, a circuit board that supports a plotter, a circuit board that supports a printer, and a gateway board that provides another Ethernet interface. In a preferred embodiment of the present invention, circuitry 10 contains a single VME expansion slot 333 into which one of several types of VME expansion boards is plugged. VME expansion slot 333 is coupled to VME bus 200.
VME bus 200 is a multiplexed bus capable of carrying VME control signals, VME data, VME addresses, and VME interrupt signals.
VME bus 200 is coupled to controller array 90 via VME control lines 212 and 214. VME bus 200 is also coupled to transceivers 54 and 55 via VME data lines 216, 217, and 218. VME bus 200 is also coupled to address transceiver 58 via VME address bus 220.
VME address bus 220 is coupled to VME decoder 250. VME decoder 250 is coupled to memory address bus 230. VME decoder 250 decodes the high order address lines of the memory address bus 230 in order to obtain address modifiers. VME decoder 250 also decodes incoming VME address modifiers in order to decide whether or not to activate VME slave controller 422, described below in connection with FIG. 2. Slave select lines 345 couple VME decoder 250 with VME slave controller 432, which is part of controller array 90 and shown in FIG. 2.
Decoders 290 receive addresses from CPU 40 via transceiver 28. Decoders 290 decide which device CPU 40 wishes to read from or write to. Decoders 290 then send decode signals on chip select lines 291 which serve to enable the device or devices selected by the CPU. Each device to be selected has its own chip select.
CPU peripheral control lines 295 provide control signals, such as read and write signals from CPU 40, for PROMs 70, timer RTC circuitry 270, UART circuitry 272, and interrupt controller 260. Thus, control lines 295 provide control signals for peripheral devices including a keyboard (not shown) and a mouse (not shown) coupled to UART circuitry 272.
Interrupt controller 260 also receives interrupt requests from local input/output sources including the graphics board 80, input/output control array 100, Ethernet interface 120, SCSI disk controller 130, Centronics printer interface 347, UART 272, and timer/RTC 270. Interrupt controller 260 also receives interrupts from VME expansion board 210. Accordingly, VME bus 200 is coupled to interrupt controller 260 via VME interrupt lines 261. When interrupt controller 260 receives one or more interrupt requests, interrupt controller 260 sends a signal on line 331 to CPU 40 that indicates that an interrupt request has been received. Interrupt controller 260 also multiplexes the VME and local input/output interrupt signals that it receives and provides an interrupt output signal on lines 265 that indicates which devices have generated interrupts. CPU 40 checks lines 265 to see which devices have generated interrupts. In a preferred embodiment of the present invention, interrupt controller 260 is implemented in a gate array chip.
Lines 265 are a collection of (1) data lines from interface 32, (2) CPU peripheral control lines 295 for communicating read and write signals, and (3) chip select lines 291 from decoders 290. Within lines 265, the data lines from interface 32 run in parallel with CPU peripheral control lines 295 and are not multiplexed. Within lines 265, chip select lines 291 are individual lines connected to PROMs 70, timer/RTC 270, UART 272, and interrupt controller 260, respectively.
Lines 265 are coupled to PROMs 70, timer/RTC circuitry 270, and UART circuitry 272. PROMs 70 are boot PROMs, and they provide the software for CPU 40 when CPU 40 boots up. Timer/real time clock circuitry 260 provides the digital computer with a watchdog timer, a system timer, and a real time clock. UART circuitry 272 provides circuitry for communicating via serial ports with a keyboard, a mouse, and other devices (not shown). Address lines 398 are coupled between address latch 28 and PROMs 70, timer/RTC 270, UART circuitry 272, and interrupt controller 260.
FIG. 2 illustrates system controller circuitry 400 for the digital computer. System controller circuitry 400 is part of controller array 90, shown in FIG. 1. System controller 400 includes four distinct DRAM memory controllers--namely, CPU DRAM controller 410, I/O DRAM controller 420, VME DRAM controller 430, and DMA DRAM controller 440. The present digital computer has a dual-clock architecture. There is a relatively fast CPU clock 402 and a relatively slow I/O clock 404. In a preferred embodiment of the present invention, the digital computer switches DRAM controllers, rather than switching clocks, in order to achieve system synchronization.
The system controller 400 also includes CPU peripheral controller 450, I/O master controller 500, and VME master controller 510.
CPU DRAM controller 410, I/O DRAM controller 420, VME DRAM controller 430, and the DMA DRAM controller 440 comprise the memory controller for system 400. The memory controller avoids resynchronization delays for I/O bus accesses by running the DRAM clock (RAS, CAS) off I/O bus clock 404 for I/O bus accesses, and off CPU clock 402 for CPU accesses. There is a synchronization penalty when the DRAM memory changes hands from the CPU 40 master to an I/O master, but once the arbitration is complete, the memory accesses are synchronous, making high bandwidth transfers, such as a burst mode transfer, possible. In other words, there is a synchronization delay when there is a transition from a period in which CPU clock 402 governs memory accesses, such as during a delay period (discussed below) during which CPU 40 controls memory 60, to a period in which I/O clock 404 governs memory accesses, such as during a DMA burst mode period, a VME burst mode period, or an I/O period (all discussed below). There is not a synchronization delay, however, between successive memory accesses as long as those memory accesses are governed by the same clock.
CPU clock 402 is coupled to CPU DRAM controller 410, CPU peripheral controller 450, and VME master controller 510. I/O clock 404 is coupled to I/O DRAM controller 420, VME DRAM controller 430, and DMA DRAM controller 440.
Each of controllers 410, 420, 430, and 440, together with refresh circuitry 460 and arbiter circuitry 470, provide all the signals necessary to control the DRAMs in DRAM array 60 of FIG. 1. Thus, controllers 410, 420, 430, and 440, refresh circuitry 460, and arbiter circuitry 470 provide multiplexed addresses and address strobes, refresh logic, and refresh/access arbitration.
CPU DRAM controller circuitry 410 allows CPU 40 to access either DRAM array 60, I/O bus 50, or both DRAM array 60 and I/O bus 50.
I/O DRAM controller 420 allows I/O devices to access both the I/O bus 50 and DRAM array 60 at the same time. I/O devices include a printer (not shown) communicating through Centronics interface 347 of FIG. 1, a disk drive (not shown) communicating through SCSI interface 130 of FIG. 1, and other computers and peripherals (not shown) communicating through Ethernet interface 120 of FIG. 1.
VME DRAM controller 430 allows VME expansion board 210 of FIG. 1 to access both I/O bus 50 and DRAM memory array 60 at the same time.
DMA DRAM controller 440 allows DMA operations to occur between graphics board 80 and DRAM array 60. During such DMA operations, data passes over I/O bus 50 and is either stored in DRAM array 60 or retrieved from DRAM array 60.
CPU DRAM controller 410 receives DRAM addresses on line 401 from controller address path 320, which is coupled to memory address bus 230 shown in FIG. 1. CPU DRAM controller 410 sends out DRAM addresses on line 403, which goes to address multiplexer 480. Address multiplexer 480 in turn sends out DRAM addresses to DRAM array 60 on DRAM address lines 313, 315. CPU DRAM controller 410 sends out memory and bus requests on lines 405, which connect CPU DRAM controller 410 with arbiter circuitry 470. CPU DRAM controller 410 receives signals granting the CPU the memory, and the I/O bus requests on lines 407 which connect arbiter circuit 470 with CPU DRAM controller 410. CPU DRAM controller 410 receives addresses from CPU local bus 20 via address latch 26, memory address bus 230, and controller address path 320.
CPU DRAM controller 410 also sends out RAS and CAS signals to DRAM array 60 via lines 409, RAS/CAS multiplexer 520, and RAS/CAS lines 316.
Arbiter circuit 470 provides memory and bus arbitration. Arbiter circuit 470 decides which of controllers 410, 420, 430, and 440 should be engaged. Arbiter circuitry 470 receives requests to access DRAM array 60 and I/O bus 50, and arbiter circuitry 470 decides which requests should be granted. Arbiter circuit 470 receives "request" signals and sends out "grant" signals. Arbiter circuitry 470 is comprised of flip flops, state machines, gate machines, and programmable logic arrays ("PLAs"). As discussed in more detail below, arbiter 470 enforces a priority and timing scheme for handling simultaneous requests to access DRAM array 60 and I/O bus 50.
CPU DRAM controller 410 includes CPU interface ("I/F") circuitry 411 for generating interface control signals. CPU interface controller 411 is an integral part of CPU DRAM controller 410, and is connected to CPU clock 402. CPU interface controller 411 provides interface signals that help control the flow of data and addresses during bus transfers. For example, CPU interface controller 411 sends enable signals to address latch 26, interface 32, and transceiver 30 of FIG. 1. CPU interface controller 411 sends out interface signals on lines 413, and thus the CPU interface signals first are applied to interface multiplexer 490. Interface multiplexer 490 then sends out interface control signals on interface control lines 491, 493, 495, 497, and 499.
CPU DRAM controller 410 also sends out and receives CPU control signals on lines 412. CPU control signals control various bus transfers involving CPU 40. Examples of CPU control signals include read/write signals and stall signals, also known as wait signals.
Input/output master controller 500 can send control signals, such as address strobe and data strobe, on I/O control lines 311 to I/O bus 50. I/O master controller 500 can receive control signals, such as acknowledge signals, an I/O control lines 312 from I/O bus 50.
I/O master controller 500 also generates interface signals that are sent to interface devices, such as transceivers, via lines 501, interface multiplexer 490, and interface control lines 491, 493, 495, 497, and 499.
CPU peripheral controller 450 sends "start I/O" signals to I/O master 500 via lines 414, synchronizer 499, and lines 416. I/O master 500 sends acknowledge signals to CPU peripheral control 450 via lines 414. Synchronizer 499 provides an interface between the CPU clock and the I/O clock. There is a synchronization delay for each synchronization performed.
The CPU peripheral controller 450 generates stall signals on behalf of I/O master 500. The stall signals are sent from CPU peripheral controller 450 to CPU 40 via lines 414 and 281.
CPU DRAM controller 410 can also send a signal to CPU peripheral controller 450 via lines 412 and 414 for CPU peripheral controller to send a stall signal to CPU 40. The CPU peripheral control signals control the various CPU peripherals, including PROMs 70, timer/RTC 270, UART circuitry 272, and interrupt controller 260, all shown in FIG. 1. CPU DRAM controller 410 also receives control signals from CPU peripheral controller 450 via lines 414 and 412.
I/O DRAM controller 420 is a memory controller for the various input/output devices. I/O DRAM controller 420 gets its DRAM addresses via I/O bus 50, transceiver 56, memory address bus 230, and controller address path 320.
I/O DRAM controller 420 sends out addresses on lines 423 to address multiplexer 480, which in turn sends out DRAM addresses on DRAM address lines 315.
I/O DRAM controller 420 sends out RAS and CAS signals to DRAM array 60 via lines 425 to RAS/CAS multiplexer 520. RAS/CAS multiplexer 520 sends out RAS and CAS signals to DRAM array 60 via DRAM RAS/CAS lines 316. I/O DRAM controller 420 sends I/O requests for the I/O bus 50 and DRAM controller 60 to arbiter 470 via lines 427. Arbiter 470 sends signals granting the I/O request to use I/O bus 50 and DRAM array 60 via lines 429 to I/O DRAM controller 420.
I/O DRAM controller 420 also includes I/O slave interface controller 422. I/O interface controller 422 provides interface signals for controlling the transfer of data to and from the buses. Examples of interface signals include signals that enable transceivers 52, 56, 58, 53, 54, and 55. The I/O interface signals are sent from I/O interface controller 422 to interface multiplexer 490 via lines 424.
I/O slave interface controller 422 receives I/O control signals on lines 312. Such I/O control signals can include address strobe and data strobe. I/O slave interface 422 sends I/O control signals, such as wait and acknowledge signals, on lines 311.
VME DRAM controller 430 receives an initial memory address from VME address bus 220 (see FIG. 1) via transceiver 58, lines 59 and 61 (see FIG. 1), memory address bus 230, controller address path 320, and lines 431. After VME DRAM controller 430 receives an initial address, it generates its own subsequent addresses internally, within controller 430. VME DRAM controller 430 sends out addresses on lines 433 to address multiplexer 480, to be then sent to DRAM array 60 via DRAM address lines 315. VME DRAM controller 430 sends RAS/CAS signals on lines 435 to RAS/CAS multiplexer 520, to be sent to DRAM array 60 via DRAM RAS/CAS lines 316.
VME DRAM controller 430 also sends VME request to access I/O bus 50 and DRAM array 60 to arbiter 470 via lines 437. Arbiter 470 sends grant signals to the VME DRAM controller 430 via lines 439 for VME expansion board 210 (See FIG. 1) to access I/O bus 50 and DRAM array 60.
VME DRAM controller 430 also includes VME slave interface controller 432, which generates interface signals for controlling the transfer of data and addresses. VME slave interface 432 is coupled to I/O bus clock 404. VME slave interface signals include chip enable signals. VME slave interface controller 432 sends VME interface signals to interface multiplexer 490 via lines 434.
VME slave controller 430 receives address and data strobe control signals on VME control lines 214. VME slave controller 430 sends a "Dtak" acknowledge control signal on VME control lines 212 as part of a handshaking scheme.
DMA DRAM controller 440 is initially loaded with an initial memory address via lines 245, memory data bus 240, transceiver 52, I/O bus 50, transceiver 56, memory address bus 230, controller address path 320, and lines 441. DMA sequencer 448, which is part of DMA DRAM controller 440, controls the DMA operation. At that initial address in memory is data that indicates address, count, direction, and end of list information for the DMA operation. DMA sequencer 448 steps through the list in memory of address/count pairs. DMA sequencer 448 also understands when the end of the address/count pairs has been reached. DMA sequencer 448 is coupled to I/O clock 404.
DMA DRAM controller 440 sends addresses to DRAM array 60 via lines 443, which connect DMA DRAM controller 440 with address multiplexer 480. Address multiplexer 480 then sends DRAM addresses to DRAM array 60 via DRAM address lines 315.
DMA DRAM controller 440 sends DRAM RAS/CAS signals to RAS/CAS multiplexer 520 via lines 445. RAS/CAS multiplexer 520 then supplies DRAM array 60 with RAS/CAS signals via DRAM RAS/CAS lines 316.
DMA DRAM controller 440 sends DMA requests to access I/O bus 50 and DRAM array 60 to arbiter 470 via request lines 447. Signals granting DMA request to access I/O bus 50 and DRAM array 60 are sent from arbiter 470 to DMA DRAM controller 440 via lines 449.
DMA DRAM controller also includes DMA master interface controller 442. DMA master interface controller 442 is coupled to I/O clock 404. DMA interface controller 442 generates interface signals for controlling the transfer of data and addresses over the buses of the digital computer. DMA interface signals include chip enable signals for transceivers 52, 56, and 53. DMA interface control signals are sent from DMA interface controller 442 to interface multiplexer 490 via lines 444. Interface multiplexer 490 then supplies the interface control signals to the above referenced transceivers via interface control lines 491, 493, 495, 497, and 499.
DMA master interface controller 442 also generates DMA control signals for controlling I/O bus 50 transfers. DMA master interface controller 442 sends and receives DMA control signals on DMA control lines 92. DMA control lines 92 are in turn coupled to graphics board 80 (See FIG. 1). DMA control signals sent by DMA interface controller 442 can include address strobe and data strobe signals for handshaking on the I/O bus 50. Another example of a control signal is a delay signal which DMA DRAM controller 440 waits to receive from a slave device in a handshaking scheme. Control signals are part of the bus definition that controls the flow of data across the bus.
When a DMA operation begins and DMA controller 440 is engaged, data stored in DRAM array 60 is transferred to raster memory (not shown) in graphics board 80 via lines 245, memory data bus 240, transceiver 52, I/O bus 50, lines 62, transceiver 53, and lines 63, 64, and 65. On graphics board 80, raster memory (not shown) is implemented as video random access memory (video "RAM"). The goal of the direct memory access operation is to transfer huge amount of memory to a frame buffer, which is part of the raster memory on the graphics board 80. Graphics board 80 is part of a graphics system or subsystem of the digital computer. The graphics subsystem, including graphics board 80, handles the transforming, rendering, and displaying of graphical information. These operations are performed locally within the graphic subsystem through the use of a pipelined VLSI raster processor, raster memory, and a microprogrammable engine.
The DMA operation allows the automatic collection of portions of memory and the automatic transferring of that collected portion of memory to the graphics system. CPU 40 first creates a pattern in DRAM array 60. During a DRAM operation, that data is transferred from DRAM array 60 to the raster memory of graphics board 80. In a preferred embodiment of the present invention, the peak sustained rate of transfer is 10 million pixels per second and one word can be transferred every 100 nanoseconds.
DMA DRAM controller 440 can also do a scatter-gather operation.
The graphics DMA operation is a memory to memory transfer operation, and therefore the DMA operation has no discipline. During a DMA operation, huge amounts of data are transferred. Therefore, a DMA operation can theoretically tie up the I/O bus for a long period of time, if it were not for arbiter circuitry 470.
Refresh circuitry 460 provides DRAM array 60 with refresh address signals via lines 461 connecting refresh circuitry 460 with address multiplexer 480. Address multiplexer 480 then applies DRAM address to DRAM array 60 via DRAM address lines 315. Refresh circuitry 460 also provides DRAM array 60 with RAS/CAS signals. Refresh circuitry 460 sends its signals to RAS/CAS multiplexer 520 via lines 463.
RAS/CAS multiplexer 520 in turn applies RAS/CAS signals to DRAM array 60 via DRAM RAS/CAS lines 316. Refresh circuitry 460 sends a refresh request memory signal via lines 465 to arbiter circuitry 470. Refresh circuitry 460 receives a refresh granted memory signal from arbiter circuitry 470 via lines 467. To avoid losing data, the DRAMs in DRAM array 60 should be refreshed no less frequently than once every millisecond. The refresh cycle is implemented as a burst during which DRAM array 60 is accessed sequentially four times with the row address being incremented after each access. In a preferred embodiment of the present invention, the entire burst lasts 1.6 microseconds, with 64 microseconds between bursts.
FIG. 3 illustrates arbiter circuitry 470 in more detail. Arbiter 470 has a two-level structure to parallel the dual-clock architecture of the digital computer. Arbiter 470 includes I/O bus arbiter 600 which provides bus arbitration for I/O bus 50. I/O bus arbiter 600 is comprised of flip-flops, state machines, logic gates, and PLAs. I/O bus arbiter 600 receives I/O requests for memory and the I/O bus 50 on lines 427 from I/O DRAM controller 420. I/O bus arbiter 600 receives VME external master request for the memory and the I/O bus on lines 437 from VME controller 430. VME external master 700 is shown in FIG. 6. VME external master 700 resides on VME expansion board 210 (see FIG. 1) and is described in more detail below. I/O bus arbiter 600 receives VME request for memory and I/O bus 50 on lines 447 from DMA DRAM controller 440. I/O bus arbiter 600 receives refresh requests from memory on lines 465 from refresh circuitry 460.
The I/O request, the VME request, the DMA request, and the refresh request are passed through I/O bus arbiter 600. I/O bus arbiter 600 runs off I/O clock 404. I/O bus arbiter 600 generates a unified request that is sent to CPU arbiter 610. I/O bus arbiter 600 simply performs logical OR operations on the I/O request, the VME request, the DMA request, and the refresh request. The logical OR operations performed by I/O bus arbiter 600 are, of course, performed with logic gates implemented in circuitry.
It should be noted that the I/O, VME, and DMA requests are requests for use of the I/O bus 50 and DRAM array 60 (i.e. memory) at the same time because during an I/O, VME, or DMA operation, data is transferred over I/O bus 50 to and from DRAM array 60. In contrast, refresh circuitry 460 simply requests memory (i.e., DRAM array 60) and not I/O bus 50. This is so because refresh circuitry 460 is simply refreshing the DRAMs in DRAM array 60, and is not transferring any data over I/O bus 50.
When refresh circuitry is accessing memory (i.e., DRAM array 60), there cannot be a simultaneous access of memory by CPU 40, an I/O device, VME expansion board 210, or a DMA operation. In other words, a refresh operation is exclusive with respect to other memory access operations. CPU 40 can access I/O bus 50, however, without accessing memory. In other words, CPU 40 can access other devices beside DRAM array 60 without accessing DRAM array 60 at the same time. For example, CPU 40 can access I/O devices, and the CPU peripherals, such as UART 272 and timer/RTC 270, without accessing DRAM array 60.
Refresh circuitry 460 only requests a memory access and not an I/O bus 50 access, and I/O, VME and DMA request both memory and I/O bus 50 concurrently. Therefore, I/O bus arbiter 600 splits the refresh request for memory from the I/O, VME, and DMA request for memory and I/O bus 50. Thus, I/O bus arbiter 600 sends a signal to CPU arbiter 610 on lines 601 that refresh wants to access memory (i.e., DRAM array 60). I/O bus arbiter 600 sends a signal to CPU arbiter 610 on lines 602 that either I/O, VME external master, or DMA wants to access both memory and I/O bus 50. Again, I/O bus arbiter 600 merely performs a logical OR operation on the various requests and provides outputs on lines 601 and lines 602.
CPU clock 402 drives CPU arbiter 610. CPU arbiter 610 thus runs synchronously to CPU 40. This minimizes CPU latency.
In addition to receiving refresh requests on lines 601 and requests on lines 602 that I/O, VME, or DMA wants memory and I/O bus 50, CPU arbiter 610 also receives requests on line 405 from CPU 40 that CPU 40 requests access to memory (i.e., DRAM array 60). In addition, on lines 611, CPU arbiter 610 receives requests from CPU 40 that CPU 40 requests access to I/O bus 50.
CPU arbiter 610 is made up of flip-flops, state machines, logic gates, and programmable logic arrays ("PLAs"). CPU arbiter 610 performs priority arbitration.
CPU arbiter receives a request on lines 405 from CPU controller 410 (see FIG. 3) for CPU 40 to access memory (i.e. DRAM array 60). CPU arbiter 610 also receives on lines 611 requests from CPU 40 to access I/O bus 50.
On lines 407, CPU arbiter 610 sends out a signal to CPU DRAM controller 410 that CPU 40 is granted access to memory (i.e. access to DRAM array 60). On lines 613, CPU arbiter 610 sends a signal to CPU 40 that indicates that CPU 40 has been granted access to I/O bus 50.
On lines 615, CPU arbiter 610 sends a signal to I/O bus arbiter 600 that indicates that refresh circuitry 460 has been granted access to memory (i.e. access to DRAM array 60). On lines 617, CPU arbiter 610 sends a signal to I/O bus arbiter 600 that indicates that either that I/O, VME, or DMA has been granted access to memory array 60 and I/O bus 50.
CPU arbiter 610 allows sufficient time between turning off a grant to I/O bus arbiter 600 and turning on a CPU grant. This allows synchronization of the I/O grant de-assertion to the I/O bus clock 404.
As discussed above, CPU arbiter 610 can send out a CPU granted bus signal on lines 613 at the same time it sends a refresh granted memory signal out on lines 615. The reason for this is that CPU 40 can access I/O bus 50 without accessing memory array 60. Thus, refresh circuitry 460 can access DRAM array 60 at the same time. However, CPU arbiter 610 cannot send out a CPU granted memory signal on lines 407 at the same it sends out either a refresh granted memory signal on lines 615 or an I/O, VME, or DMA granted memory or bus signal on lines 617. This is because memory accesses cannot happen simultaneously. This also means that CPU arbiter 610 cannot send out a refresh granted memory signal on lines 615 at the same time it sends out an I/O, VME, or DMA granted memory and bus signal on lines 617.
I/O bus arbiter 600 receives the refresh granted memory signal on lines 615 and the I/O, VME, or DMA granting memory and bus signal on lines 617 I/O bus arbiter 600 then provides one of the following outputs: either an I/O granted memory and I/O bus signal on lines 429, a VME external master granted memory and I/O bus signal on lines 439, a DMA granted memory and I/O bus signal on lines 449, or a refresh granted memory signal on lines 467. The I/O granted memory and bus signal on lines 429 is sent to I/O DRAM controller 420 from I/O bus arbiter 600. The VME external master granted memory and I/O bus signal on lines 439 is sent from I/O bus arbiter 600 to VME controller 430. The DMA granted memory and bus on lines 449 is sent from I/O bus arbiter 600 to DMA controller 440. The refresh granted memory signal on lines 467 is sent from I/O bus arbiter 610 to refresh circuitry 460.
I/O bus arbiter 600 and CPU arbiter 610 are governed by a priority and timing scheme, discussed below, with respect to the granting of memory or I/O bus requests by CPU 40, refresh, I/O, VME, or DMA. Priority rules determine which of such requests have priority. Bus timer circuitry 630, which is part of arbiter 470, governs the timing of bus arbitration. Bus timer circuitry 630 is connected to CPU arbiter 610 via lines 631. Bus timer circuitry 630 is connected to I/O arbiter 600 via lines 633 and 635.
VME bus arbiter 650 is also included as part of arbiter 470. VME bus arbiter 650 receives the CPU clock on lines 402. VME bus arbiter 650 receives CPU requests for the VME bus 200 on lines 651. VME bus arbiter 650 receives VME external master request to access VME bus 200 on lines 653. VME bus arbiter 650 sends out signals granting the CPU 40 VME 200 on lines 652. VME bus arbiter 650 sends out signals granting the VME external master the VME bus 200 on lines 654. The VME bus arbiter is discussed in more detail below with respect to FIG. 6.
I/O bus arbiter 600 and CPU arbiter 610 orchestrate operation of CPU DRAM controller 410, I/O DRAM controller 420, VME DRAM controller 430, and DMA DRAM controller 440. I/O bus arbiter 600 and CPU arbiter 610 enforce a discipline that prevents any one interface--i.e., CPU, I/O, VME, or DMA--from tying up the I/O bus 50 for more than a certain amount of time. Such discipline is necessary because Ethernet controller 120 (See FIG. 1) has only a small latency tolerance. "Latency" is the time that elapses between a request for memory access and a granting of a request for memory. Ethernet controller chip 120 contains only a 48 byte buffer memory. That buffer memory fills up relatively quickly, due to its small size, when digital information is passing through Ethernet controller 120. Ethernet controller 120 is therefore a latency intolerant device, given that Ethernet controller 120 would lose data if there is too long of a delay between the time Ethernet controller 120 requests a memory access and the time such a request is granted. Moreover, the graphics DMA operation, discussed above, has no discipline. The graphics DMA operation is a memory to memory transfer that moves huge amounts of data. The graphics DMA operation therefore can tie up the I/O bus 50 for relatively long periods of time.
In the present digital computer, DMA transfers to graphics board 80 use the I/O bus burst mode. The burst mode is an efficient way for transferring sequential address locations without having to send the address across for each word transferred. In this mode, CPU DRAM controller 410 uses a built-in DMA channel to transfer a burst of data to graphics board 80. I/O bus 50 can support the burst mode of operation up to 40 megabytes per second in a preferred embodiment of the present invention. In the burst mode, a single address is followed by a burst of data. In a preferred embodiment of the present invention, during a DMA transfer to graphics board 80 in the burst mode, the rate of transfer is 10 million pixels per second and one data word is transferred every 100 nanoseconds.
In a preferred embodiment of the present invention, the digital computer is configured to support transfers to and from VME expansion board 210 in the burst mode.
For DMA burst mode operations, DMA DRAM controller 440 is initially loaded with a starting address. DMA controller 440 then generates sequential addresses for the data to be transferred during the burst mode operation. Likewise, during VME burst mode operations, VME DRAM controller 430 is initially loaded with a beginning address, VME DRAM controller 430 then generates subsequent addresses for the data to be transferred during burst mode operation.
Bus timer 630 of FIG. 3, together with I/O bus arbiter 600 and CPU arbiter 610, comprise a bus monitor mechanism that is used to guarantee a minimum bus bandwidth allocation or execution allocation to CPU 40 and I/O requests, such as those from Ethernet controller 120 and SCSI disk controller 130, in the presence of DMA or VME burst transfers. Any time a DMA or VME burst mode operation starts, the bus monitor mechanism keeps track of how long DMA or VME has the I/O bus and keeps the DMA or VME off the bus for certain amount of time to allow CPU 40 or I/O devices, such as Ethernet controller 120, to access I/O bus 50 and DRAM array 60.
Bus timer 630 of FIG. 3 controls the burst length and the delay time. The burst length can be set by software within a certain range of lengths. The burst length sets an upper maximum on the amount of time that a DMA or VME burst mode operation can occur. The delay time is the time that the CPU is guaranteed to own the I/O bus 50. During the delay time, CPU 40 is guaranteed to own I/O bus for the delay period of time, whether CPU 40 needs the bus or not. During the delay time, CPU 40 cannot be preempted by DMA, VME, or I/O operations. Delay counter 632 of bus timer 630 sets a minimum bus grant period to CPU 40 in 100 nanoseconds increments. The delay counter thus sets the delay period. The delay counter 632 can be set by software within a range.
Burst counter 634 sets a maximum burst length in 100 nanoseconds increments. At the end of the burst interval, DMA and VME bursts are terminated. The burst counter can be set by software in order to set the maximum burst length.
Bus timer 630 is designed to allow dynamic switching of I/O bus 50 loading depending on whether or not CPU 40 needs quick real-time response. The nominal setting will be 20.6 microsecond bursts and 2 microsecond delay. During an interrupt service routine, the first task is to reload bus timer 630 to increase the time allocated to CPU 40 and to decrease the burst length. Thereafter, the routine can determine whether the interrupt to be serviced can tolerate less bus bandwidth or not, and either leave the bus timer 630 alone, or set it back accordingly.
The burst length can be set between 0 microseconds and 25.6 microseconds. The delay length can be set between 0 microseconds and 25.6 microseconds. Thus, the burst and delay lengths can be set in a manner analogous to the setting of 636 and 638 on a dial.
Bus arbitration by arbiter 470 is also governed by priority rules. Refresh operations have the highest priority. Input/output operations have the second highest priority. VME operations have the third highest priority. DMA operations have the fourth highest priority. Finally, CPU 40 operations have the fifth highest priority. Again, refresh operations can occur concurrently with CPU operations that only access I/O bus 50 and do not access memory 60. In the case of VME burst requests that are simultaneous with graphics DMA burst requests, the VME requests get priority by arbiter 470. This means that as long as there are any pending transfers on VME, the graphics DMA is held off the I/O bus. The bus timer 630 applies globally--that is, bus timer 630 ensures that the total totality of VME and graphics DMA channels get only a certain proportion of the I/O bus 50 bandwidth. This implies that the higher priority channels slow down the lower prior channels when the higher priority channels become active.
If CPU, DMA, and Ethernet requests arrive at precisely the same time, the Ethernet request is granted first. The DMA request is then granted. Then the CPU request is granted.
In a preferred embodiment of the present invention, the arbitration scheme allows refresh to occur during VME access from CPU 40. This has the benefit of ensuring the integrity of memory during boot operations.
As shown in FIG. 4, bus timer 630 allows a VME or a DMA transfer for burst length period 660. The burst period 660 ends at the earlier of: (1) the maximum burst length period stored in burst counter 634 of bus timer 630, or (2) whenever the DMA operation ends, if earlier than the maximum burst length period set in burst length counter 634. At the end of burst period 660, arbiter 470 signals either the DMA DRAM controller 440 or the VME DRAM controller 430 whichever is controlling the transfer during burst period 660, to get off the I/O bus, I/O bus 50, or in other words to "backoff" the I/O bus 50. FIG. 4 illustrates bus arbitration without the presence of an I/O request for the I/O bus or memory. Delay period 662 follows burst period 660. During delay 662, CPU 40 is permitted to access I/O bus 50. Again, CPU 40 is guaranteed to own I/O bus 50 for the delay period 662, whether CPU 40 needs the I/O bus 50 or not. Thus, delay period 662 is a minimum period that CPU 40 is guaranteed I/O bus 50. At the end of delay period 662, another DMA or VME burst mode operation can then occur for burst period 664, which could be the same length of burst period 660, depending the DMA or VME transfer ends before the burst length set in burst counter 634. Burst period 664 is then followed by another delay period, and so forth.
FIG. 5 illustrates bus arbitration in the presence of I/O requests to use the I/O bus. Again, DMA or VME burst mode operations can last the length of the burst period, as described with respect to FIG. 4. If, however, there is a request for an I/O operation from Ethernet controller 120, then arbiter 470 allows that I/O operation to occur immediately following burst period 670. I/O period 672 is the period arbiter 470 allows the I/O operation to occur. I/O period 672 lasts for as long as it takes for the I/O operation to end. The I/O period 672 is thus of variable length.
The maximum length of time that Ethernet controller 120 can tolerate being off I/O bus 50 determines the maximum burst length and delay length periods.
There is no maximum period for I/O period 672. The reason for this is that I/O devices generally will not stay on the bus for long periods of time.
After I/O period 672 ends, then the CPU is guaranteed the I/O bus for the delay period 674. Again, CPU 40 is guaranteed access to the I/O bus 50 during delay period 674, whether or not CPU 40 wishes to access I/O bus 50 during said delay period 674.
Following delay period 674, another VME or DMA burst period can occur. Following that DMA or VME burst period another I/O period can occur and another delay period can then occur and so forth.
During the delay period, 674 I/O operation requests are suppressed by arbiter 470.
FIG. 6 illustrates the circuitry governing VME bus arbitration. When CPU 40 wants to read or write to VME bus 200, CPU uses the VME external master interface 700. VME bus 200 arbitration is governed by I/O bus arbiter 600, VME bus arbiter 720 and VME external master 700. VME external master 700 is located on VME expansion board 210.
VME bus 200 arbitration is governed by the following rules. CPU 40 has to be granted both I/O bus 50 and VME bus 200 for CPU 40 to get VME bus 200. VME, however, needs to get I/O bus and VME bus 200 in order to access memory 60. To avoid deadlocks, CPU 40 always acquires VME bus 200 before acquiring I/O bus 50. VME external master 700 always acquires VME bus 200 before acquiring I/O bus 50. In the case that CPU 40 owns I/O bus 50 (which is the default condition) and VME external master 700 owns VME bus 200, then CPU 40 releases I/O bus 50 until CPU 40 gets VME bus 200. During this time, presumably VME external master 700 acquires I/O bus 50 and completes its memory access operation and then releases both I/O bus 50 and VME bus 200.
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims (10)

What is claimed is:
1. A method of controlling the use of a computer bus, comprising the steps of:
receiving a plurality of requests to use the bus from a plurality of sources, including a first source, a second source, and a third source;
preselecting a length of a first period for use of the bus and a length of a second period for use of the bus such that a combined length of the first and second periods is less than a maximum length of time that the third source can tolerate being off the bus, wherein the first source can request a first period use of the bus that would last for up to the length of the first period, the second source can request a second period use of the bus that would last up to the length of the second period in the presence of requests by the first source and the third source, and the third source can request a use of the bus that would last as long as it would take for the third source to complete a third source operation; and
granting each of the plurality of requests such that:
the plurality of sources do not use the bus more than one at a time;
first periods occur repetitively if the first source requests more than one first period use of the bus;
second periods occur repetitively whether or not the second source requests a second period use of the bus;
periods available for the third source to use the bus occur repetitively if the third source requests more than one use of the bus;
if requests from the first, second, and third sources are received at the same time, then the third period use of the bus is granted first in time, the first period use of the bus is granted second in time, and the second period use of the bus is granted third in time;
following a first period use of the bus and after any pending third source request has been granted and the third source operation has been completed, the second source is granted use of the bus for the second period, whether or not the second source requests a second period use of the use;
no other source is granted use of the bus while the first source is using the bus during the first period;
no other source is granted use of the bus while the second source is using the bus during the second period; and
no other source is granted use of the bus while the third source is using the bus.
2. The control method of claim 1, wherein:
the first source is a graphics system;
the second source is a central processing unit;
the third source is input/output circuitry;
the first period is a burst mode period; and
the second period is a delay period.
3. A method of controlling the use of a computer bus, comprising the steps of:
receiving a plurality of requests to use the bus from a plurality of sources, including a first source, a second source, a third source, and a fourth source;
preselecting a length of a first period for use of the bus and a length of a second period for use of the bus such that a combined length of the first and second periods is less than a maximum length of time that the third source can tolerate being off the bus, wherein the first source can request a first period use of the bus that would last up to the length of the first period, the second source can request a second period use of the bus that would last up to the length of the second period in the presence of requests by the first source and the third source, the third source can request a use of the bus that would last as long as it would take for the third source to complete a third source operation, and the fourth source can request a first period use of the bus that would last up to the length of the second period;
granting each of the plurality of requests such that:
the plurality of sources do not use the bus more than one at a time;
first periods occur repetitively if one or both of the first and second sources requests more than one first period use of the bus;
second periods occur repetitively whether or not the second source requests a second period use of the bus;
periods available for the third source to use the bus occur repetitively if the third source requests more than one use of the bus;
if requests from the first, second, third and fourth sources are received at the same time, then the third period use of the bus is granted first in time, the first period use of the bus is granted second in time, and the second period use of the bus is granted third in time;
following a first period use of the bus and after any pending third source request has been granted and the third source operation has been completed, the second source is granted use of the bus for the second period, whether or not the second source requests a second period use of the bus;
a pending request by a fourth source for a first period use of the bus has priority over and is granted before a concurrently pending request by a first source for a first period use of the bus;
no other other source is granted use of the bus while the first source is using the bus during the first period;
no other source is granted use of the bus while the second source is using the bus during the second period; and
no other source is granted use of the bus while the third source is using the bus.
4. The control method of claim 3, wherein:
the first source is a graphics system requesting a direct memory access operation to a memory in the graphics system;
the second source is a central processing unit;
the third source is input/output circuitry;
the fourth source is an expansion board;
the first period is a burst mode period; and
the second period is a delay period.
5. An apparatus for controlling the use of a computer bus, comprising:
means for receiving a plurality of requests to use the bus from a plurality of sources, including a first source, a second source, and a third source;
means for preselecting a length of a first period for use of the bus and a length of a second period for use of the bus such that a combined length of the first and second periods is less than a maximum length of time that the third source can tolerate being off the bus, wherein the first source can request a first period use of the bus that would last for up to the length of the first period, the second source can request a second period use of the bus that would last up to the length of the second period in the presence of requests by the first source and the third source, and the third source can request a use of the bus that would last as long as it would take for the third source to complete a third source operation; and
means for granting each of the plurality of requests such that:
the plurality of sources do not use the bus more than one at a time;
first periods occur repetitively if the first source requests more than one first period use of the bus;
second periods occur repetitively whether or not the second source requests a second period use of the bus;
periods available for the third source to use the bus occur repetitively if the third source requests more than one use of the bus;
if requests from the first, second, and third sources are received at the same time, then the third period use of the bus is granted first in time, the first period use of the bus is granted second in time, and the second period use of the bus is granted third in time;
following a first period use of the bus and after any pending third source request as been granted and the third source operation has been completed, the second source is granted use of the bus for the second period, whether or not the second source requests a second period use of the bus;
no other source is granted use of the bus while the first source is using the bus during the first period;
no other source is granted use of the bus while the second source is using the bus during the second period; and
no other source is granted use of the bus while the third source is using the bus.
6. The control apparatus of claim 5, wherein:
the first source is a graphics system;
the second source is a central processing unit;
the third source is input/output circuitry;
the first period is a burst mode period; and
the second period is a delay period.
7. The control apparatus of claim 5, wherein:
the means for receiving a plurality of requests comprises the input circuitry of an arbiter circuit;
the means for preselecting comprises a bus timer circuit; and
the means for granting each of the plurality of requests comprises combinational logic of the arbiter circuit and output circuitry of the cubiter circuit.
8. An apparatus for controlling the use of a computer bus, comprising:
means for receiving a plurality of requests to use the bus from a plurality of sources, including a first source, a second source, a third source, and a fourth source;
means for preselecting a length of a first period for use of the bus and a length of a second period for use of the bus such that a combined length of the first and second periods is less than a maximum length of time that the third source can tolerate being off the bus, wherein the first source can request a first period use of the bus that would last up to the length of the first period, the second source can request a second period use of the bus that would last up to the length of the second period in the presence of requests by the first source and the third source, the third source can request a use of the that would last as long as it would take for the third source to complete a third source operation, and the fourth source can request a first period use of the bus that would last up to the length of the second period;
means for granting each of the plurality of requests such that:
the plurality of sources do not use the bus more than one at a time;
first periods occur repetitively if one or both of the first and second sources requests more than one first period use of the bus;
second periods occur repetitively whether or not the second source requests a second period use of the bus;
periods available for the third source to use the bus occur repetitively if the third source requests more than one use of the bus;
if requests from the first, second, third, and fourth sources are received at the same time, then the third period use of the bus is granted first in time, the first period use of the bus is granted second in time, and the second period use of the bus is granted third in time;
following a first period use of the bus and after any pending third source request has been granted and the third source operation has been completed, the second source is granted use of the bus for the second period, whether or not the second source requests a second period use of the bus;
a pending request by a fourth source for a first period use of the bus has priority over and is granted before a concurrently pending request by a first source for a first period use of the bus;
no other source is granted use of the bus while the first source is using the bus during the first period;
no other source is granted use of the bus while the second source is using the bus during the second period; and
no other source is granted use of the bus while the third source is using the bus.
9. The control apparatus of claim 8, wherein:
the first source is a graphics system requesting a direct memory access operation to a memory in the graphics system;
the second source is a central processing unit;
the third source is input/output circuitry;
the fourth source is an expansion board;
the first period is a burst mode period; and
the second period is a delay period.
10. The control apparatus of claim 8 wherein:
the means for receiving a plurality of requests comprises the input circuitry of an arbiter circuit;
the means for preselecting comprises a bus timer circuit; and
the means for granting each of the plurality of requests comprises combinational logic of the arbiter circuit and output circuitry of the arbiter circuit.
US07/841,908 1988-09-14 1992-02-24 Bus control system for arbitrating requests with predetermined on/off time limitations Expired - Lifetime US5193193A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US07/841,908 US5193193A (en) 1988-09-14 1992-02-24 Bus control system for arbitrating requests with predetermined on/off time limitations

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US24475588A 1988-09-14 1988-09-14
US71677991A 1991-06-18 1991-06-18
US07/841,908 US5193193A (en) 1988-09-14 1992-02-24 Bus control system for arbitrating requests with predetermined on/off time limitations

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US71677991A Continuation 1988-09-14 1991-06-18

Publications (1)

Publication Number Publication Date
US5193193A true US5193193A (en) 1993-03-09

Family

ID=27399798

Family Applications (1)

Application Number Title Priority Date Filing Date
US07/841,908 Expired - Lifetime US5193193A (en) 1988-09-14 1992-02-24 Bus control system for arbitrating requests with predetermined on/off time limitations

Country Status (1)

Country Link
US (1) US5193193A (en)

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5280628A (en) * 1992-01-15 1994-01-18 Nitsuko Corporation Interruption controlling system using timer circuits
US5301332A (en) * 1992-12-23 1994-04-05 Ncr Corporation Method and apparatus for a dynamic, timed-loop arbitration
US5345577A (en) * 1989-10-13 1994-09-06 Chips & Technologies, Inc. Dram refresh controller with improved bus arbitration scheme
US5388208A (en) * 1992-12-04 1995-02-07 Honeywell Inc. Gerbil wheel memory
US5416916A (en) * 1990-07-06 1995-05-16 Nec Electronics Incorporated Structure for enabling direct memory-to-memory transfer with a fly-by DMA unit
US5440698A (en) * 1990-11-30 1995-08-08 Xerox Corporation Arbitration of packet switched busses, including busses for shared memory multiprocessors
US5467454A (en) * 1992-09-29 1995-11-14 Mitsubishi Denki Kabushiki Kaisha Bus use request adjusting apparatus allowing changing priority levels
US5506968A (en) * 1992-12-28 1996-04-09 At&T Global Information Solutions Company Terminating access of an agent to a shared resource when a timer, started after a low latency agent requests access, reaches a predetermined value
US5517325A (en) * 1994-03-10 1996-05-14 Mita Industrial Co., Ltd. Direct memory access (DMA) controller with programmable bus release period for timing DMA transfers
US5517671A (en) * 1993-07-30 1996-05-14 Dell Usa, L.P. System for designating a plurality of I/O devices to a plurality of I/O channels and connecting and buffering the plurality of I/O channels to a single system bus
US5524270A (en) * 1992-06-13 1996-06-04 International Business Machines Corporation System for transferring data between asynchronous data buses with a data buffer interposed in between the buses for synchronization of devices timed by different clocks
US5544332A (en) * 1991-09-27 1996-08-06 Sun Microsystems, Inc. Method for preventing deadlock in a multi-bus computer system
US5557783A (en) * 1994-11-04 1996-09-17 Canon Information Systems, Inc. Arbitration device for arbitrating access requests from first and second processors having different first and second clocks
US5557755A (en) * 1994-02-24 1996-09-17 Apple Computer, Inc. Method and system for improving bus utilization efficiency
US5577236A (en) * 1994-12-30 1996-11-19 International Business Machines Corporation Memory controller for reading data from synchronous RAM
US5579530A (en) * 1992-06-11 1996-11-26 Intel Corporation Method and apparatus for dynamically allocating access time to a resource shared between a peripheral bus and a host bus by dynamically controlling the size of burst data transfers on the peripheral bus
US5579492A (en) * 1993-11-01 1996-11-26 Motorola, Inc. Data processing system and a method for dynamically ignoring bus transfer termination control signals for a predetermined amount of time
US5590372A (en) * 1992-07-14 1996-12-31 International Business Machines Corporation VME bus transferring system broadcasting modifiers to multiple devices and the multiple devices simultaneously receiving data synchronously to the modifiers without acknowledging the modifiers
US5596749A (en) * 1992-09-21 1997-01-21 Texas Instruments Incorporated Arbitration request sequencer
US5608897A (en) * 1994-04-05 1997-03-04 International Business Machines Corporation Programmable linear feedback shift register timeout mechanism
US5611053A (en) * 1994-01-21 1997-03-11 Advanced Micro Devices, Inc. Apparatus and method for integrating bus master ownership of local bus load by plural data transceivers
US5619687A (en) * 1994-02-22 1997-04-08 Motorola Inc. Queue system having a time-out feature and method therefor
US5630096A (en) * 1995-05-10 1997-05-13 Microunity Systems Engineering, Inc. Controller for a synchronous DRAM that maximizes throughput by allowing memory requests and commands to be issued out of order
US5682498A (en) * 1993-11-12 1997-10-28 Intel Corporation Computer system with dual ported memory controller and concurrent memory refresh
US5682555A (en) * 1993-05-14 1997-10-28 Sony Corp Bus control apparatus
US5752267A (en) * 1995-09-27 1998-05-12 Motorola Inc. Data processing system for accessing an external device during a burst mode of operation and method therefor
US5761533A (en) * 1992-01-02 1998-06-02 International Business Machines Corporation Computer system with varied data transfer speeds between system components and memory
US5771397A (en) * 1993-12-09 1998-06-23 Quantum Corporation SCSI disk drive disconnection/reconnection timing method for reducing bus utilization
US5832304A (en) * 1995-03-15 1998-11-03 Unisys Corporation Memory queue with adjustable priority and conflict detection
US5860129A (en) * 1995-09-27 1999-01-12 Motorola, Inc. Data processing system for writing an external device and method therefor
US5890196A (en) * 1996-03-28 1999-03-30 Motorola, Inc. Method and apparatus for performing page mode accesses
US5948094A (en) * 1995-09-29 1999-09-07 Intel Corporation Method and apparatus for executing multiple transactions within a single arbitration cycle
US5973993A (en) * 1998-02-27 1999-10-26 Micron Technology, Inc. Semiconductor memory burst length count determination detector
US5978875A (en) * 1996-03-18 1999-11-02 Kabushiki Kaisha Toshiba Apparatus and method for scheduling use of bus
US6016531A (en) * 1995-05-26 2000-01-18 International Business Machines Corporation Apparatus for performing real time caching utilizing an execution quantization timer and an interrupt controller
US6304937B1 (en) 1990-04-18 2001-10-16 Rambus Inc. Method of operation of a memory controller
US6324120B2 (en) 1990-04-18 2001-11-27 Rambus Inc. Memory device having a variable data output length
US6473821B1 (en) 1999-12-21 2002-10-29 Visteon Global Technologies, Inc. Multiple processor interface, synchronization, and arbitration scheme using time multiplexed shared memory for real time systems
US6684285B2 (en) 1990-04-18 2004-01-27 Rambus Inc. Synchronous integrated circuit device
US6784890B1 (en) * 1998-03-02 2004-08-31 Intel Corporation Accelerated graphics port expedite cycle throttling control mechanism
US7107365B1 (en) * 2002-06-25 2006-09-12 Cypress Semiconductor Corp. Early detection and grant, an arbitration scheme for single transfers on AMBA advanced high-performance bus
US20070245051A1 (en) * 2006-04-17 2007-10-18 Realtek Semiconductor Corp. System and method for bandwidth sharing in busses
US20070245052A1 (en) * 2006-04-17 2007-10-18 Realtek Semiconductor Corp. System and method for bandwidth sharing in busses

Citations (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3750107A (en) * 1971-10-27 1973-07-31 Sci Tek Inc Method and system for processing characters on a real time basis
US4016541A (en) * 1972-10-10 1977-04-05 Digital Equipment Corporation Memory unit for connection to central processor unit and interconnecting bus
US4050096A (en) * 1974-10-30 1977-09-20 Motorola, Inc. Pulse expanding system for microprocessor systems with slow memory
US4095267A (en) * 1975-11-29 1978-06-13 Tokyo Electric Co., Ltd. Clock pulse control system for microcomputer systems
US4100601A (en) * 1975-12-24 1978-07-11 Computer Automation, Inc. Multiplexer for a distributed input/out controller system
US4130864A (en) * 1976-10-29 1978-12-19 Westinghouse Electric Corp. Priority selection circuit for multiported central functional unit with automatic priority reduction on excessive port request
US4164787A (en) * 1977-11-09 1979-08-14 Bell Telephone Laboratories, Incorporated Multiple microprocessor intercommunication arrangement
US4183058A (en) * 1976-02-19 1980-01-08 Micro Consultants, Limited Video store
US4249247A (en) * 1979-01-08 1981-02-03 Ncr Corporation Refresh system for dynamic RAM memory
US4339804A (en) * 1979-07-05 1982-07-13 Ncr Corporation Memory system wherein individual bits may be updated
US4405983A (en) * 1980-12-17 1983-09-20 Bell Telephone Laboratories, Incorporated Auxiliary memory for microprocessor stack overflow
US4473880A (en) * 1982-01-26 1984-09-25 Intel Corporation Arbitration means for controlling access to a bus shared by a number of modules
US4523274A (en) * 1980-04-04 1985-06-11 Hitachi, Ltd. Data processing system with processors having different processing speeds sharing a common bus
US4575826A (en) * 1984-02-27 1986-03-11 International Business Machines Corp. Refresh generator system for a dynamic memory
US4581721A (en) * 1981-11-18 1986-04-08 Texas Instruments Incorporated Memory apparatus with random and sequential addressing
US4583167A (en) * 1981-06-24 1986-04-15 Elevator Gmbh Procedure and apparatus for conveying external and output data to a processor system
US4649511A (en) * 1983-07-25 1987-03-10 General Electric Company Dynamic memory controller for single-chip microprocessor
US4654804A (en) * 1984-07-23 1987-03-31 Texas Instruments Incorporated Video system with XY addressing capabilities
US4701843A (en) * 1985-04-01 1987-10-20 Ncr Corporation Refresh system for a page addressable memory
US4787064A (en) * 1982-12-23 1988-11-22 Siemens Aktiengesellschaft Circuit module with interface circuits for connecting to plurality of busses operating in different operating modes
US4788640A (en) * 1986-01-17 1988-11-29 Intel Corporation Priority logic system
US4807121A (en) * 1984-06-21 1989-02-21 Cray Research, Inc. Peripheral interface system
US4858173A (en) * 1986-01-29 1989-08-15 Digital Equipment Corporation Apparatus and method for responding to an aborted signal exchange between subsystems in a data processing system
US4881195A (en) * 1986-11-26 1989-11-14 Rockwell International Corp. Multi-requester arbitration circuit
US4928234A (en) * 1984-12-24 1990-05-22 Sony Corporation Data processor system and method
US4958304A (en) * 1987-03-02 1990-09-18 Apple Computer, Inc. Computer with interface for fast and slow memory circuits
US4987529A (en) * 1988-08-11 1991-01-22 Ast Research, Inc. Shared memory bus system for arbitrating access control among contending memory refresh circuits, peripheral controllers, and bus masters
US5021951A (en) * 1984-11-26 1991-06-04 Hitachi, Ltd. Data Processor
US5097468A (en) * 1988-05-03 1992-03-17 Digital Equipment Corporation Testing asynchronous processes

Patent Citations (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3750107A (en) * 1971-10-27 1973-07-31 Sci Tek Inc Method and system for processing characters on a real time basis
US4016541A (en) * 1972-10-10 1977-04-05 Digital Equipment Corporation Memory unit for connection to central processor unit and interconnecting bus
US4050096A (en) * 1974-10-30 1977-09-20 Motorola, Inc. Pulse expanding system for microprocessor systems with slow memory
US4095267A (en) * 1975-11-29 1978-06-13 Tokyo Electric Co., Ltd. Clock pulse control system for microcomputer systems
US4100601A (en) * 1975-12-24 1978-07-11 Computer Automation, Inc. Multiplexer for a distributed input/out controller system
US4183058A (en) * 1976-02-19 1980-01-08 Micro Consultants, Limited Video store
US4130864A (en) * 1976-10-29 1978-12-19 Westinghouse Electric Corp. Priority selection circuit for multiported central functional unit with automatic priority reduction on excessive port request
US4164787A (en) * 1977-11-09 1979-08-14 Bell Telephone Laboratories, Incorporated Multiple microprocessor intercommunication arrangement
US4249247A (en) * 1979-01-08 1981-02-03 Ncr Corporation Refresh system for dynamic RAM memory
US4339804A (en) * 1979-07-05 1982-07-13 Ncr Corporation Memory system wherein individual bits may be updated
US4523274A (en) * 1980-04-04 1985-06-11 Hitachi, Ltd. Data processing system with processors having different processing speeds sharing a common bus
US4405983A (en) * 1980-12-17 1983-09-20 Bell Telephone Laboratories, Incorporated Auxiliary memory for microprocessor stack overflow
US4583167A (en) * 1981-06-24 1986-04-15 Elevator Gmbh Procedure and apparatus for conveying external and output data to a processor system
US4581721A (en) * 1981-11-18 1986-04-08 Texas Instruments Incorporated Memory apparatus with random and sequential addressing
US4581721B1 (en) * 1981-11-18 1998-06-09 Texas Instruments Inc Memory apparatus with random and sequential addressing
US4473880A (en) * 1982-01-26 1984-09-25 Intel Corporation Arbitration means for controlling access to a bus shared by a number of modules
US4787064A (en) * 1982-12-23 1988-11-22 Siemens Aktiengesellschaft Circuit module with interface circuits for connecting to plurality of busses operating in different operating modes
US4649511A (en) * 1983-07-25 1987-03-10 General Electric Company Dynamic memory controller for single-chip microprocessor
US4575826A (en) * 1984-02-27 1986-03-11 International Business Machines Corp. Refresh generator system for a dynamic memory
US4575826B1 (en) * 1984-02-27 1990-02-06 Ibm
US4807121A (en) * 1984-06-21 1989-02-21 Cray Research, Inc. Peripheral interface system
US4654804A (en) * 1984-07-23 1987-03-31 Texas Instruments Incorporated Video system with XY addressing capabilities
US5021951A (en) * 1984-11-26 1991-06-04 Hitachi, Ltd. Data Processor
US4928234A (en) * 1984-12-24 1990-05-22 Sony Corporation Data processor system and method
US4701843A (en) * 1985-04-01 1987-10-20 Ncr Corporation Refresh system for a page addressable memory
US4788640A (en) * 1986-01-17 1988-11-29 Intel Corporation Priority logic system
US4858173A (en) * 1986-01-29 1989-08-15 Digital Equipment Corporation Apparatus and method for responding to an aborted signal exchange between subsystems in a data processing system
US4881195A (en) * 1986-11-26 1989-11-14 Rockwell International Corp. Multi-requester arbitration circuit
US4958304A (en) * 1987-03-02 1990-09-18 Apple Computer, Inc. Computer with interface for fast and slow memory circuits
US5097468A (en) * 1988-05-03 1992-03-17 Digital Equipment Corporation Testing asynchronous processes
US4987529A (en) * 1988-08-11 1991-01-22 Ast Research, Inc. Shared memory bus system for arbitrating access control among contending memory refresh circuits, peripheral controllers, and bus masters

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Intel 8207 Dual Port Dynamic RAM Controller, Intel Microprocessor and Peripheral Handbook, vol. II (Peripheral), pp. 1 39 to 1 85 (Sep. 1987). *
Intel 8207 Dual-Port Dynamic RAM Controller, Intel Microprocessor and Peripheral Handbook, vol. II (Peripheral), pp. 1-39 to 1-85 (Sep. 1987).

Cited By (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5345577A (en) * 1989-10-13 1994-09-06 Chips & Technologies, Inc. Dram refresh controller with improved bus arbitration scheme
US6807598B2 (en) 1990-04-18 2004-10-19 Rambus Inc. Integrated circuit device having double data rate capability
US6684285B2 (en) 1990-04-18 2004-01-27 Rambus Inc. Synchronous integrated circuit device
US6452863B2 (en) 1990-04-18 2002-09-17 Rambus Inc. Method of operating a memory device having a variable data input length
US6324120B2 (en) 1990-04-18 2001-11-27 Rambus Inc. Memory device having a variable data output length
US6426916B2 (en) 1990-04-18 2002-07-30 Rambus Inc. Memory device having a variable data output length and a programmable register
US6304937B1 (en) 1990-04-18 2001-10-16 Rambus Inc. Method of operation of a memory controller
US6546446B2 (en) 1990-04-18 2003-04-08 Rambus Inc. Synchronous memory device having automatic precharge
US20060039213A1 (en) * 1990-04-18 2006-02-23 Rambus Inc. Integrated circuit I/O using a high performance bus interface
US6564281B2 (en) 1990-04-18 2003-05-13 Rambus Inc. Synchronous memory device having automatic precharge
US6378020B2 (en) 1990-04-18 2002-04-23 Rambus Inc. System having double data transfer rate and intergrated circuit therefor
US6715020B2 (en) 1990-04-18 2004-03-30 Rambus Inc. Synchronous integrated circuit device
US6728819B2 (en) 1990-04-18 2004-04-27 Rambus Inc. Synchronous memory device
US6751696B2 (en) 1990-04-18 2004-06-15 Rambus Inc. Memory device having a programmable register
US5416916A (en) * 1990-07-06 1995-05-16 Nec Electronics Incorporated Structure for enabling direct memory-to-memory transfer with a fly-by DMA unit
US5440698A (en) * 1990-11-30 1995-08-08 Xerox Corporation Arbitration of packet switched busses, including busses for shared memory multiprocessors
US5544332A (en) * 1991-09-27 1996-08-06 Sun Microsystems, Inc. Method for preventing deadlock in a multi-bus computer system
US5761533A (en) * 1992-01-02 1998-06-02 International Business Machines Corporation Computer system with varied data transfer speeds between system components and memory
US5280628A (en) * 1992-01-15 1994-01-18 Nitsuko Corporation Interruption controlling system using timer circuits
US5579530A (en) * 1992-06-11 1996-11-26 Intel Corporation Method and apparatus for dynamically allocating access time to a resource shared between a peripheral bus and a host bus by dynamically controlling the size of burst data transfers on the peripheral bus
US5524270A (en) * 1992-06-13 1996-06-04 International Business Machines Corporation System for transferring data between asynchronous data buses with a data buffer interposed in between the buses for synchronization of devices timed by different clocks
US5590372A (en) * 1992-07-14 1996-12-31 International Business Machines Corporation VME bus transferring system broadcasting modifiers to multiple devices and the multiple devices simultaneously receiving data synchronously to the modifiers without acknowledging the modifiers
US5596749A (en) * 1992-09-21 1997-01-21 Texas Instruments Incorporated Arbitration request sequencer
US5467454A (en) * 1992-09-29 1995-11-14 Mitsubishi Denki Kabushiki Kaisha Bus use request adjusting apparatus allowing changing priority levels
US5388208A (en) * 1992-12-04 1995-02-07 Honeywell Inc. Gerbil wheel memory
US5301332A (en) * 1992-12-23 1994-04-05 Ncr Corporation Method and apparatus for a dynamic, timed-loop arbitration
US5506968A (en) * 1992-12-28 1996-04-09 At&T Global Information Solutions Company Terminating access of an agent to a shared resource when a timer, started after a low latency agent requests access, reaches a predetermined value
US5682555A (en) * 1993-05-14 1997-10-28 Sony Corp Bus control apparatus
US5935428A (en) * 1993-05-14 1999-08-10 Sony Corporation Apparatus and method for performing efficient read and write operations in a multiple bus system
US5517671A (en) * 1993-07-30 1996-05-14 Dell Usa, L.P. System for designating a plurality of I/O devices to a plurality of I/O channels and connecting and buffering the plurality of I/O channels to a single system bus
US5579492A (en) * 1993-11-01 1996-11-26 Motorola, Inc. Data processing system and a method for dynamically ignoring bus transfer termination control signals for a predetermined amount of time
US5682498A (en) * 1993-11-12 1997-10-28 Intel Corporation Computer system with dual ported memory controller and concurrent memory refresh
US5771397A (en) * 1993-12-09 1998-06-23 Quantum Corporation SCSI disk drive disconnection/reconnection timing method for reducing bus utilization
US5611053A (en) * 1994-01-21 1997-03-11 Advanced Micro Devices, Inc. Apparatus and method for integrating bus master ownership of local bus load by plural data transceivers
US5619687A (en) * 1994-02-22 1997-04-08 Motorola Inc. Queue system having a time-out feature and method therefor
US5557755A (en) * 1994-02-24 1996-09-17 Apple Computer, Inc. Method and system for improving bus utilization efficiency
US5517325A (en) * 1994-03-10 1996-05-14 Mita Industrial Co., Ltd. Direct memory access (DMA) controller with programmable bus release period for timing DMA transfers
US5608897A (en) * 1994-04-05 1997-03-04 International Business Machines Corporation Programmable linear feedback shift register timeout mechanism
US5557783A (en) * 1994-11-04 1996-09-17 Canon Information Systems, Inc. Arbitration device for arbitrating access requests from first and second processors having different first and second clocks
US5577236A (en) * 1994-12-30 1996-11-19 International Business Machines Corporation Memory controller for reading data from synchronous RAM
US5832304A (en) * 1995-03-15 1998-11-03 Unisys Corporation Memory queue with adjustable priority and conflict detection
US5630096A (en) * 1995-05-10 1997-05-13 Microunity Systems Engineering, Inc. Controller for a synchronous DRAM that maximizes throughput by allowing memory requests and commands to be issued out of order
US6016531A (en) * 1995-05-26 2000-01-18 International Business Machines Corporation Apparatus for performing real time caching utilizing an execution quantization timer and an interrupt controller
US5752267A (en) * 1995-09-27 1998-05-12 Motorola Inc. Data processing system for accessing an external device during a burst mode of operation and method therefor
US5860129A (en) * 1995-09-27 1999-01-12 Motorola, Inc. Data processing system for writing an external device and method therefor
US5948094A (en) * 1995-09-29 1999-09-07 Intel Corporation Method and apparatus for executing multiple transactions within a single arbitration cycle
US5978875A (en) * 1996-03-18 1999-11-02 Kabushiki Kaisha Toshiba Apparatus and method for scheduling use of bus
US5890196A (en) * 1996-03-28 1999-03-30 Motorola, Inc. Method and apparatus for performing page mode accesses
US6229759B1 (en) 1998-02-27 2001-05-08 Micron Technology, Inc. Semiconductor memory burst length count determination method
US6067273A (en) * 1998-02-27 2000-05-23 Micron Technology, Inc. Semiconductor memory burst length count determination detector
US5973993A (en) * 1998-02-27 1999-10-26 Micron Technology, Inc. Semiconductor memory burst length count determination detector
US6784890B1 (en) * 1998-03-02 2004-08-31 Intel Corporation Accelerated graphics port expedite cycle throttling control mechanism
US6473821B1 (en) 1999-12-21 2002-10-29 Visteon Global Technologies, Inc. Multiple processor interface, synchronization, and arbitration scheme using time multiplexed shared memory for real time systems
US7107365B1 (en) * 2002-06-25 2006-09-12 Cypress Semiconductor Corp. Early detection and grant, an arbitration scheme for single transfers on AMBA advanced high-performance bus
US20060288143A1 (en) * 2002-06-25 2006-12-21 Cypress Semiconductor Corp. Early detection and grant, an arbitration scheme for single transfers on amba advanced high-performance bus
US7275119B2 (en) * 2002-06-25 2007-09-25 Cypress Semiconductor Corp. Early detection and grant, an arbitration scheme for single transfers on AMBA advanced high-performance bus
US20070245051A1 (en) * 2006-04-17 2007-10-18 Realtek Semiconductor Corp. System and method for bandwidth sharing in busses
US20070245052A1 (en) * 2006-04-17 2007-10-18 Realtek Semiconductor Corp. System and method for bandwidth sharing in busses

Similar Documents

Publication Publication Date Title
US5193193A (en) Bus control system for arbitrating requests with predetermined on/off time limitations
US5179667A (en) Synchronized DRAM control apparatus using two different clock rates
US5978866A (en) Distributed pre-fetch buffer for multiple DMA channel device
EP0692764B1 (en) Memory throttle for PCI master
US6026464A (en) Memory control system and method utilizing distributed memory controllers for multibank memory
US5619720A (en) Digital signal processor having link ports for point-to-point communication
AU652707B2 (en) Bus interface logic for computer system having dual bus architecture
US5991833A (en) Computer system with bridge logic that reduces interference to CPU cycles during secondary bus transactions
US5968153A (en) Mechanism for high bandwidth DMA transfers in a PCI environment
US6148357A (en) Integrated CPU and memory controller utilizing a communication link having isochronous and asynchronous priority modes
US6636927B1 (en) Bridge device for transferring data using master-specific prefetch sizes
US5634076A (en) DMA controller responsive to transition of a request signal between first state and second state and maintaining of second state for controlling data transfer
JPH03208153A (en) Cpu bus controller
US5611075A (en) Bus architecture for digital signal processor allowing time multiplexed access to memory banks
JP2002532779A (en) Queue-based memory controller
EP0508634B1 (en) Memory access for data transfer within an I/O device
US5333293A (en) Multiple input frequency memory controller
US6292201B1 (en) Integrated circuit device having a core controller, a bus bridge, a graphical controller and a unified memory control unit built therein for use in a computer system
JPH02289017A (en) Method of data transfer in computer system
US5884052A (en) Smart retry mechanism to program the retry latency of a PCI initiator agent
JPH09160866A (en) Bus interface logic system and synchronization method
KR20030029030A (en) Memory control method, memory control circuit using the control method, and integrated circuit device with the memory control circuit
US7006521B2 (en) External bus arbitration technique for multicore DSP device
US5802597A (en) SDRAM memory controller while in burst four mode supporting single data accesses
US6323866B1 (en) Integrated circuit device having a core controller, a bus bridge, a graphical controller and a unified memory control unit built therein for use in a computer system

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: FOOTHILL CAPITAL CORPORATION, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:SILICON GRAPHICS, INC.;REEL/FRAME:012428/0236

Effective date: 20011109

AS Assignment

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS TRUSTEE, CALIFO

Free format text: SECURITY INTEREST;ASSIGNOR:SILICON GRAPHICS, INC.;REEL/FRAME:014805/0855

Effective date: 20031223

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: GENERAL ELECTRIC CAPITAL CORPORATION,CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:SILICON GRAPHICS, INC.;REEL/FRAME:018545/0777

Effective date: 20061017

Owner name: GENERAL ELECTRIC CAPITAL CORPORATION, CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:SILICON GRAPHICS, INC.;REEL/FRAME:018545/0777

Effective date: 20061017

AS Assignment

Owner name: MORGAN STANLEY & CO., INCORPORATED, NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GENERAL ELECTRIC CAPITAL CORPORATION;REEL/FRAME:019995/0895

Effective date: 20070926

Owner name: MORGAN STANLEY & CO., INCORPORATED,NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GENERAL ELECTRIC CAPITAL CORPORATION;REEL/FRAME:019995/0895

Effective date: 20070926

AS Assignment

Owner name: SILICON GRAPHICS INTERNATIONAL, CORP., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SILICON GRAPHICS, INC. ET AL.;SGI INTERNATIONAL, INC.;SIGNING DATES FROM 20090508 TO 20120208;REEL/FRAME:027681/0802