Title:
Memory hub and method for providing memory sequencing hints
Document Type and Number:
United States Patent 7418526

Abstract:
A memory module includes a memory hub coupled to several memory devices. The memory hub is also coupled to receive a memory packet from a system controller containing a memory hint indicative of the subsequent operation of the memory devices. The memory module uses the hint to adjust the operation of the memory module, such as the number of pages to remain open or cache lines to be fetched.

Inventors:
Jeddeloh, Joseph M. (Shoreview, MN, US)
      Plaque It!

Sponsored by:
Flash of Genius
Application Number:
11/408285
Publication Date:
08/26/2008
Filing Date:
04/19/2006
View Patent Images:
Images are available in PDF form when logged in. To view PDFs, Login  or  Create Account (Free!)
Assignee:
Micron Technology, Inc. (Boise, ID, US)
Primary Class:
Other Classes:
711/137, 710/33, 711/144, 711/154, 710/39, 710/5, 712/237
International Classes:
G06F3/00; G06G12/00
Field of Search:
711/169, 710/36-39, 711/137, 710/29, 710/74, 710/15-19, 710/5-7, 711/144-146, 711/154-160, 712/233-240
US Patent References:
3742253THREE STATE LOGIC DEVICE WITH APPLICATIONSJune, 1973Kronies307/247
4045781Memory module with selectable byte addressing for digital data processing systemAugust, 1977Levy et al.364/200
4240143Hierarchical multi-processor network for memory sharingDecember, 1980Besemer et al.364/200
4245306Selection of addressed processor in a multi-processor networkJanuary, 1981Besemer et al.364/200
4253144Multi-processor communication networkFebruary, 1981Bellamy et al.364/200
4253146Module for coupling computer-processorsFebruary, 1981Bellamy et al.364/200
4608702Method for digital clock recovery from Manchester-encoded signalsAugust, 1986Hirzel et al.375/110
4707823Fiber optic multiplexed data acquisition systemNovember, 1987Holdren et al.370/1
4724520Modular multiport data hubFebruary, 1988Athanas et al.364/200
4831520Bus interface circuit for digital data processorMay, 1989Rubinfeld et al.364/200
4891808Self-synchronizing multiplexerJanuary, 1990Williams370/112
4930128Method for restart of online computer system and apparatus for carrying out the sameMay, 1990Suzuki et al.371/12
4953930CPU socket supporting socket-to-socket optical communicationsSeptember, 1990Ramsey et al.350/96.11
5133059Computer with multiple processors having varying priorities for access to a multi-element memoryJuly, 1992Ziegler et al.711/140
5241506Semiconductor memory circuit apparatusAugust, 1993Motegi et al.365/210
5243703Apparatus for synchronously generating clock signals in a data processing systemSeptember, 1993Farmwald et al.395/325
5251303System for DMA block data transfer based on linked control blocksOctober, 1993Fogg, Jr. et al.395/275
5269022Method and apparatus for booting a computer system by restoring the main memory from a backup memoryDecember, 1993Shinjo et al.395/700
5313590System having fixedly priorized and grouped by positions I/O lines for interconnecting router elements in plurality of stages within parrallel computerMay, 1994Taylor395/325
5317752Fault-tolerant computer system with auto-restart after power-fallMay, 1994Jewett et al.395/750
5319755Integrated circuit I/O using high performance bus interfaceJune, 1994Farmwald et al.395/325
5327553Fault-tolerant computer system with /CONFIG filesystemJuly, 1994Jewett et al.395/575
5355391High speed bus systemOctober, 1994Horowitz et al.375/36
5432823Method and circuitry for minimizing clock-data skew in a bus systemJuly, 1995Gasbarro et al.375/356
5432907Network hub with integrated bridgeJuly, 1995Picazo, Jr. et al.395/200
5442770Triple port cache memoryAugust, 1995Barratt395/403
5461627Access protocol for a common channel wireless networkOctober, 1995Rypinski370/95.2
5465229Single in-line memory moduleNovember, 1995Bechtolsheim et al.345/477
5479370Semiconductor memory with bypass circuitDecember, 1995Furuyama et al.365/189.12
5497476Scatter-gather in data processing systemMarch, 1996Oldfield et al.395/439
5502621Mirrored pin assignment for two sided multi-chip layoutMarch, 1996Schumacher et al.361/760
5544319Fiber optic memory coupling system with converter transmitting and receiving bus data in parallel fashion and diagnostic data in serial fashionAugust, 1996Acton et al.395/200.07
5566325Method and apparatus for adaptive memory accessOctober, 1996Bruce, II et al.395/494
5577220Method for saving and restoring the state of a CPU executing code in protected mode including estimating the value of the page table base registerNovember, 1996Combs et al.395/416
5581767Bus structure for multiprocessor system having separated processor section and control/memory sectionDecember, 1996Katsuki et al.395/800
5606717Memory circuitry having bus interface for receiving information in packets and access time registersFebruary, 1997Farmwald et al.395/856
5638334Integrated circuit I/O using a high performance bus interfaceJune, 1997Farmwald et al.365/230.03
5638534Memory controller which executes read and write commands out of orderJune, 1997Mote, Jr.395/485
5659798Method and system for initiating and loading DMA controller registers by using user-level programsAugust, 1997Blumrich et al.395/846
5687325Application specific field programmable gate arrayNovember, 1997Chang395/284
5706224Content addressable memory and random access memory partition circuitJanuary, 1998Srinivasan et al.365/49
5710733Processor-inclusive memory moduleJanuary, 1998Chengson et al.365/52
5715456Method and apparatus for booting a computer system without pre-installing an operating systemFebruary, 1998Bennett et al.395/652
5729709Memory controller with burst addressing circuitMarch, 1998Harness395/405
5748616Data link module for time division multiplexing control systemsMay, 1998Riley370/242
5796413Graphics controller utilizing video memory to provide macro command capability and enhanched command bufferingAugust, 1998Shipp et al.345/522
5818844Address generation and data path arbitration to and from SRAM to accommodate multiple transmitted packetsOctober, 1998Singh et al.370/463
5819304Random access memory assemblyOctober, 1998Nilsen et al.711/5
5822255Semiconductor integrated circuit for supplying a control signal to a plurality of object circuitsOctober, 1998Uchida365/194
5832250Multi set cache structure having parity RAMs holding parity bits for tag data and for status data utilizing prediction circuitry that predicts and generates the needed parity bitsNovember, 1998Whittaker395/471
5875352Method and apparatus for multiple channel direct memory access controlFebruary, 1999Gentry et al.395/843
5875454Compressed data cache storage systemFebruary, 1999Craft et al.711/113
5887159Dynamically determining instruction hint fieldsMarch, 1999Burrows395/567
5928343Memory module having memory devices containing internal device ID registers and method of initializing sameJuly, 1999Farmwald et al.710/104
5966724Synchronous memory device with dual page and burst mode operationsOctober, 1999Ryan711/105
5973935Interdigitated leads-over-chip lead frame for supporting an integrated circuit dieOctober, 1999Schoenfeld et al.361/813
5973951Single in-line memory moduleOctober, 1999Bechtolsheim et al.365/52
5978567System for distribution of interactive multimedia and linear programs by enabling program webs which include control scripts to define presentation by client transceiverNovember, 1999Rebane et al.395/200.49
5987196Semiconductor structure having an optical signal path in a substrate and method for forming the sameNovember, 1999Noble385/14
6011741Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systemsJanuary, 2000Wallace et al.365/221
6023726User configurable prefetch control system for enabling client to prefetch documents from a network serverFebruary, 2000Saksena709/219
6029250Method and apparatus for adaptively adjusting the timing offset between a clock signal and digital signals transmitted coincident with that clock signal, and memory device and system using sameFebruary, 2000Keeth713/400
6031241Capillary discharge extreme ultraviolet lamp source for EUV microlithography and other related applicationsFebruary, 2000Silfvast et al.250/504R
6033951Process for fabricating a storage capacitor for semiconductor memory devicesMarch, 2000Chao438/253
6038630Shared access control device for integrated system with multiple functional units accessing external structures over multiple data busesMarch, 2000Foster et al.710/132
6061263Small outline rambus in-line memory moduleMay, 2000Boaz et al.365/51
6061296Multiple data clock activation with programmable delay for use in multiple CAS latency memory devicesMay, 2000Ternullo, Jr. et al.365/233
6067262Redundancy analysis for embedded memories with built-in self test and built-in self repairMay, 2000Irrinki et al.365/201
6067649Method and apparatus for a low power self test of a memory subsystemMay, 2000Goodwin714/718
6073190System for dynamic buffer allocation comprising control logic for controlling a first address buffer and a first data buffer as a matched pairJune, 2000Rooney710/56
6076139Multimedia computer architecture with multi-channel concurrent memory accessJune, 2000Welker et al.711/104
6079008Multiple thread multiple data predictive coded parallel processing system and methodJune, 2000Clery, III712/11
6092158Method and apparatus for arbitrating between command streamsJuly, 2000Harriman et al.711/151
6098158Software-enabled fast bootAugust, 2000Lay et al.711/162
6105075Scatter gather memory system for a hardware accelerated command interpreter engineAugust, 2000Ghaffari710/5
6125431Single-chip microcomputer using adjustable timing to fetch data from an external memorySeptember, 2000Kobayashi711/154
6128703Method and apparatus for memory prefetch operation of volatile non-coherent dataOctober, 2000Bourekas et al.711/138
6128706Apparatus and method for a load bias--load with intent to semaphoreOctober, 2000Bryg et al.711/141
6131149Apparatus and method for reading data from synchronous memory with skewed clock pulsesOctober, 2000Lu et al.711/167
6134624High bandwidth cache systemOctober, 2000Burns et al.710/131
6137709Small outline memory moduleOctober, 2000Boaz et al.365/51
6144587Semiconductor memory deviceNovember, 2000Yoshida365/189.05
6145033Management of display FIFO requests for DRAM access wherein low priority requests are initiated when FIFO level is below/equal to high threshold valueNovember, 2000Chee710/57
6157743Method for retrieving compressed texture data from a memory systemDecember, 2000Goris et al.382/233
6157962Multipath I/O storage systems with multiipath I/O request mechanismsDecember, 2000Hodges et al.710/1
6167465System for managing multiple DMA connections between a peripheral device and a memory and performing real-time operations on data carried by a selected DMA connectionDecember, 2000Parvin et al.710/22
6167486Parallel access virtual channel memory system with cacheable channelsDecember, 2000Lee et al.711/120
6175571Distributed memory switching hubJanuary, 2001Haddock et al.370/423
6185352Optical fiber ribbon fan-out cablesFebruary, 2001Hurley385/114
6185676Method and apparatus for performing early branch prediction in a microprocessorFebruary, 2001Poplingher et al.712/239
6186400Bar code reader with an integrated scanning component module mountable on printed circuit boardFebruary, 2001Dvorkis et al.235/462.45
6191663Echo reduction on bit-serial, multi-drop busFebruary, 2001Hannah333/17.3
6201724Semiconductor memory having improved register array access speedMarch, 2001Ishizaki et al.365/49
6208180Core clock correction in a 2/N mode clocking schemeMarch, 2001Fisch et al.327/141
6212590Computer system having integrated bus bridge design with delayed transaction arbitration mechanism employed within laptop computer docked to expansion baseApril, 2001Melo et al.710/119
6219725Method and apparatus for performing direct memory access transfers involving non-sequentially-addressable memory locationsApril, 2001Diehl et al.710/26
6223301Fault tolerant memoryApril, 2001Santeler et al.714/6
6233376Embedded fiber optic circuit boards and integrated circuitsMay, 2001Updegrove385/14
6243769Dynamic buffer allocation for a computer systemJune, 2001Rooney710/56
6243831Computer system with power loss protection mechanismJune, 2001Mustafa et al.714/24
6246618Semiconductor integrated circuit capable of testing and substituting defective memories and method thereofJune, 2001Yamamoto et al.365/200
6247107Chipset configured to perform data-directed prefetchingJune, 2001Christie711/216
6249802Method, system, and computer program product for allocating physical memory in a distributed shared memory networkJune, 2001Richardson et al.709/200
6252821Method and apparatus for memory address decode in memory subsystems supporting a large number of memory devicesJune, 2001Nizar et al.365/238.6
6256692CardBus interface circuit, and a CardBus PC having the sameJuly, 2001Yoda et al.710/104
6272609Pipelined memory controllerAugust, 2001Jeddeloh711/169
6285349Correcting non-uniformity in displaysSeptember, 2001Smith345/147
6286083Computer system with adaptive memory arbitration schemeSeptember, 2001Chin et al.711/151
6294937Method and apparatus for self correcting parallel I/O circuitrySeptember, 2001Crafts et al.327/158
6301637High performance data pathsOctober, 2001Krull et al.711/112
6327642Parallel access virtual channel memory systemDecember, 2001Lee et al.711/120
6330205Virtual channel synchronous dynamic random access memoryDecember, 2001Shimizu et al.365/230.06
6347055Line buffer type semiconductor memory device capable of direct prefetch and restore operationsFebruary, 2002Motomura365/189.05
6349363Multi-section cache with different attributes for each sectionFebruary, 2002Cai et al.711/129
6356573Vertical cavity surface emitting laserMarch, 2002Jonsson et al.372/46
6367074Operation of a systemApril, 2002Bates et al.717/11
6370068Semiconductor memory devices and methods for sampling data therefrom based on a relative position of a memory cell array section containing the dataApril, 2002Rhee365/196
6370611Raid XOR operations to synchronous DRAM using a read buffer and pipelining of synchronous DRAM burst read dataApril, 2002Callison et al.711/105
6373777Semiconductor memoryApril, 2002Suzuki365/230.03
6381190Semiconductor memory device in which use of cache can be selectedApril, 2002Shinkai365/230.03
6389514Method and computer system for speculatively closing pages in memoryMay, 2002Rokicki711/136
6392653Device for processing acquisition data, in particular image dataMay, 2002Malandain et al.345/501
6401213Timing circuit for high speed memoryJune, 2002Jeddeloh713/401
6405280Packet-oriented synchronous DRAM interface supporting a plurality of orderings for data block transfers within a burst sequenceJune, 2002Ryan711/105
6421744Direct memory access controller and method thereforJuly, 2002Morrison et al.710/22
6430696Method and apparatus for high speed data capture utilizing bit-to-bit timing correction, and memory device using sameAugust, 2002Keeth713/503
6433785Method and apparatus for improving processor to graphics device throughputAugust, 2002Garcia et al.345/531
6434639System for combining requests associated with one or more memory locations that are collectively associated with a single cache line to furnish a single memory operationAugust, 2002Haghighi710/39
6434696Method for quickly booting a computer systemAugust, 2002Kang713/2
6434736Location based timing scheme in memory designAugust, 2002Schaecher et al.716/17
6438622Multiprocessor system including a docking systemAugust, 2002Haghighi et al.710/1
6438668Method and apparatus for reducing power consumption in a digital processing systemAugust, 2002Esfahani et al.711/165
6449308High-speed digital distribution systemSeptember, 2002Knight, Jr. et al.375/212
6453393Method and apparatus for interfacing to a computer memorySeptember, 2002Holman et al.711/154
6460108Low cost data streaming mechanismOctober, 2002McCoskey et al.710/310
6460114Storing a flushed cache line in a memory buffer of a controllerOctober, 2002Jeddeloh711/120
6462978Method of designing semiconductor integrated circuit device and semiconductor integrated circuit deviceOctober, 2002Shibata et al.365/63
6463059Direct memory access execution engine with indirect addressing of circular queues in addition to direct memory addressingOctober, 2002Movshovich et al.370/389
6467013Memory transceiver to couple an additional memory channel to an existing memory channelOctober, 2002Nizar711/1
6470422Buffer memory management in a system having multiple execution entitiesOctober, 2002Cai et al.711/129
6473828Virtual channel synchronous dynamic random access memoryOctober, 2002Matsui711/104
6477592System for I/O interfacing for semiconductor chip utilizing addition of reference element to each data element in first data stream and interpret to recover data elements of second data streamNovember, 2002Chen et al.710/52
6477614Method for implementing multiple memory buses on a memory moduleNovember, 2002Leddige et al.711/5
6477621Parallel access virtual channel memory systemNovember, 2002Lee et al.711/120
6479322Semiconductor device with two stacked chips in one resin body and method of producingNovember, 2002Kawata et al.438/109
6487556Method and system for providing an associative datastore within a data processing systemNovember, 2002Downs et al.707/101
6487628Peripheral component interface with multiple data channels and reduced latency over a system area networkNovember, 2002Duong et al.710/313
6490188Semiconductor devices having mirrored terminal arrangements, devices including same, and methods of testing such semiconductor devicesDecember, 2002Nuxoll et al.365/63
6493803Direct memory access controller with channel width configurability supportDecember, 2002Pham et al.711/147
6496193Method and apparatus for fast loading of texture data into a tiled memoryDecember, 2002Surti et al.345/552
6496909Method for managing concurrent access to virtual memory data structuresDecember, 2002Schimmel711/163
6501471Volume renderingDecember, 2002Venkataraman et al.345/424
6502161Memory system including a point-to-point linked memory subsystemDecember, 2002Perego et al.711/5
6505287Virtual channel memory access controlling circuitJanuary, 2003Uematsu711/170
6523092Cache line replacement policy enhancement to avoid memory page thrashingFebruary, 2003Fanning711/134
6523093Prefetch buffer allocation and filtering systemFebruary, 2003Bogin et al.711/137
6526483Page open hint in transactionsFebruary, 2003Cho et al.711/154
6539490Clock distribution without clock delay or skewMarch, 2003Forbes et al.713/401
6552564Technique to reduce reflections and ringing on CMOS interconnectionsApril, 2003Forbes et al.326/30
6564329System and method for dynamic clock generationMay, 2003Cheung et al.713/322
6587912Method and apparatus for implementing multiple memory buses on a memory moduleJuly, 2003Leddige et al.711/5
6590816Integrated memory and method for testing and repairing the integrated memoryJuly, 2003Perner365/200
6594713Hub interface unit and application unit interfaces for expanded direct memory access processorJuly, 2003Fuoco et al.710/31
6594722Mechanism for managing multiple out-of-order packet streams in a PCI host bridgeJuly, 2003Willke, II et al.710/313
6598154Precoding branch instructions to reduce branch-penalty in pipelined processorsJuly, 2003Vaid et al.712/237
6615325Method for switching between modes of operationSeptember, 2003Mailloux et al.711/154
6622227Method and apparatus for utilizing write buffers in memory control/interfaceSeptember, 2003Zumkehr et al.711/167
6628294Prefetching of virtual-to-physical address translation for display dataSeptember, 2003Sadowsky et al.345/568
6629220Method and apparatus for dynamic arbitration between a first queue and a second queue based on a high priority transaction typeSeptember, 2003Dyer711/158
6631440Method and apparatus for scheduling memory calibrations based on transactionsOctober, 2003Jenne et al.711/105
6633959Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared dataOctober, 2003Arimilli et al.711/141
6636110Internal clock generating circuit for clock synchronous semiconductor memory deviceOctober, 2003Ooishi et al.327/565
6646929Methods and structure for read data synchronization with minimal latencyNovember, 2003Moss et al.365/194
6647470Memory device having posted write per commandNovember, 2003Janzen711/154
6658509Multi-tier point-to-point ring memory interfaceDecember, 2003Bonella et al.710/100
6662304Method and apparatus for bit-to-bit timing correction of a high speed memory busDecember, 2003Keeth et al.713/400
6665202Content addressable memory (CAM) devices that can identify highest priority matches in non-sectored CAM arrays and methods of operating sameDecember, 2003Lindahl et al.365/49
6667895Integrated circuit device and module with integrated circuitsDecember, 2003Jang et al.365/63
6681292Distributed read and write caching implementation for optimized input/output applicationsJanuary, 2004Creta et al.711/119
6681302Page open hint in transactionsJanuary, 2004Cho et al.711/154
6697926Method and apparatus for determining actual write latency and accurately aligning the start of data capture with the arrival of data at a memory deviceFebruary, 2004Johnson et al.711/167
6704817Computer architecture and system for efficient management of bi-directional busMarch, 2004Steinman et al.710/100
6715018Computer including installable and removable cards, optical interconnection between cards, and method of assembling a computerMarch, 2004Farnworth et al.710/300
6718440Memory access latency hiding with hint bufferApril, 2004Maiyuran et al.711/137
6721195Reversed memory module socket and motherboard incorporating sameApril, 2004Brunelle et al.365/63
6724685Configuration for data transmission in a semiconductor memory system, and relevant data transmission methodApril, 2004Braun et al.365/233
6728800Efficient performance based scheduling mechanism for handling multiple TLB operationsApril, 2004Lee et al.710/54
6735679Apparatus and method for optimizing access to memoryMay, 2004Herbst et al.711/167
6735682Apparatus and method for address calculationMay, 2004Segelken et al.711/220
6745275Feedback system for accomodating different memory module loadingJune, 2004Chang710/305
6751703Data storage systems and methods which utilize an on-board cacheJune, 2004Chilton711/113
6754812Hardware predication for conditional instruction path branchingJune, 2004Abdallah et al.712/234
6756661Semiconductor device, a semiconductor module loaded with said semiconductor device and a method of manufacturing said semiconductor deviceJune, 2004Tsuneda et al.257/673
6760833Split embedded DRAM processorJuly, 2004Dowling712/34
6771538Semiconductor integrated circuit and nonvolatile memory elementAugust, 2004Shukuri et al.365/185.05
6772295System and method for managing data in an I/O cacheAugust, 2004Spencer et al.711/137
6775747System and method for performing page table walks on speculative software prefetch operationsAugust, 2004Venkatraman711/137
6782466Arrangement and method for accessing data in a virtual memory arrangementAugust, 2004Steele et al.711/209
6785780Distributed processor memory module and methodAugust, 2004Klein et al.711/148
6788104Field programmable logic device with efficient memory utilizationSeptember, 2004Singh et al.326/39
6789173Node controller for performing cache coherence control and memory-shared multiprocessor systemSeptember, 2004Tanaka et al.711/147
6792059Early/on-time/late gate bit synchronizerSeptember, 2004Yuan et al.375/354
6792496Prefetching data for peripheral component interconnect devicesSeptember, 2004Aboulenein et al.710/306
6795899Memory system with burst length shorter than prefetch lengthSeptember, 2004Dodd et al.711/137
6799246Memory interface for reading/writing data from/to a memorySeptember, 2004Wise et al.711/117
6799268Branch ordering bufferSeptember, 2004Boggs et al.712/228
6804760Method for determining a type of memory present in a systemOctober, 2004Wiliams711/170
6804764Write clock and data window tuning based on rank selectOctober, 2004LaBerge et al.711/170
6807630Method for fast reinitialization wherein a saved system image of an operating system is transferred into a primary memory from a secondary memoryOctober, 2004Lay et al.713/2
6811320System for connecting a fiber optic cable to an electronic deviceNovember, 2004Abbott385/58
6816947System and method for memory arbitrationNovember, 2004Huffman711/151
6820181Method and system for controlling memory accesses to memory modules having a memory hub architectureNovember, 2004Jeddeloh et al.711/169
6821029High speed serial I/O technology using an optical linkNovember, 2004Grung et al.385/92
6823023Serial bus communication systemNovember, 2004Hannah375/296
6829705System information display method and apparatusDecember, 2004Smith713/1
6845409Data exchange methods for a switch which selectively forms a communication channel between a processing unit and multiple devicesJanuary, 2005Talagala et al.710/20
6889304Memory device supporting a dynamically configurable core organizationMay, 2005Perego et al.711/170
6910109Tracking memory page stateJune, 2005Holman et al.711/156
7318130System and method for thermal throttling of memory modulesJanuary, 2008Morrow et al.711/154
20010039612Apparatus and method for fast bootingNovember, 2001Lee713/2
20020112119Dual-port buffer-to-memory interfaceAugust, 2002Halbert et al.711/115
20020116588Software management systems and methods for automotive computing devicesAugust, 2002Beckert et al.711/161
20020120709Shared-memory controller for use in a multimedia processor systemAugust, 2002Chow et al.709/213
20020144064Controlling cache memory in external chipset using processorOctober, 2002Fanning711/144
20020178319Optical bus arrangement for computer systemNovember, 2002Sanhez-Olea710/305
20030005223System boot time reduction methodJanuary, 2003Coulson et al.711/118
20030014578Routability for memeory devicesJanuary, 2003Pax710/100
20030043158Method and apparatus for reducing inefficiencies in shared memory devicesMarch, 2003Wasserman et al.345/545
20030043426Optical interconnect in high-speed memory systemsMarch, 2003Baker et al.359/109
20030093630Techniques for processing out-of -order requests in a processor-based systemMay, 2003Richard et al.711/154
20030149809Method and apparatus for timing and event processing in wireless systemsAugust, 2003Jensen et al.710/22
20030156639Frame rate control system and methodAugust, 2003Liang375/240.01
20030163649Shared bypass bus structureAugust, 2003Kapur et al.711/146
20030177320Memory read/write reorderingSeptember, 2003Sah et al.711/158
20030193927Random access memory architecture and serial interface with continuous packet handling capabilityOctober, 2003Hronik370/351
20030217223Combined command setNovember, 2003Nino, Jr. et al.711/105
20030223295Field programmable gate array with a variably wide word width memoryDecember, 2003Ozguz et al.365/201
20030227798REDUCED POWER REGISTERED MEMORY MODULE AND METHODDecember, 2003Pax365/189.12
20030229762Apparatus, method, and system for synchronizing information prefetch between processors and memory controllersDecember, 2003Maiyuran et al.711/137
20030229770Memory hub with internal cache and/or memory access predictionDecember, 2003Jeddeloh711/213
20040019728Multiple hardware partitions under one input/output hubJanuary, 2004Sharma710/306
20040022094Cache usage for concurrent multiple streamsFebruary, 2004Radhakrishnan et al.365/200
20040024978Memory hub and access method having internal row cachingFebruary, 2004Jeddeloh711/154
20040044833System and method for optimizing interconnections of memory devices in a multichip moduleMarch, 2004Ryan711/5
20040044857Method and system for controlling memory accesses to memory modules having a memory hub architectureMarch, 2004Jeddeloh et al.711/154
20040049649Computer system and method with memory copy commandMarch, 2004Durrant711/165
20040064602Claiming cycles on a processor bus in a system having a PCI to PCI bridge north of a memory controllerApril, 2004George710/22
20040122988System for controlling data transfer protocol with a host bus interfaceJune, 2004Han et al.710/5
20040126115System having multiple agents on optical and electrical busJuly, 2004Levy et al.398/116
20040144994Apparatus and methods for optically-coupled memory systemsJuly, 2004Lee et al.257/200
20040158677Buffered writes and memory page controlAugust, 2004Dodd711/118
20040236885Arrangement and method for system of locally deployed module units, and contact unit for connection of such a module unitNovember, 2004Fredriksson et al.710/100
20040260864Reconfigurable memory module and methodDecember, 2004Lee et al.711/101
20040260891Posted write buffers and methods of posting write requests in memory modulesDecember, 2004Jeddeloh et al.711/154
20040260909Memory hub and access method having internal prefetch buffersDecember, 2004Lee et al.711/213
20040268061Mechanism for handling explicit writeback in a cache coherent multi-node architectureDecember, 2004Khare et al.711/151
20050044304Method and system for capturing and bypassing memory transactions in a hub-based memory systemFebruary, 2005James711/105
20050044327Asynchronous, independent and multiple process shared memory system in an adaptive computing architectureFebruary, 2005Howard et al.711/147
20050066137Method and system for controlling memory accesses to memory modules having a memory hub architectureMarch, 2005Jeddeloh et al.711/154
20050071542Prefetch mechanism for use in a system including a host connected to a plurality of memory modules via a serial memory interconnectMarch, 2005Weber et al.711/105
20050078506POSTED PRECHARGE AND MULTIPLE OPEN-PAGE RAM ARCHITECTUREApril, 2005Rao et al.365/154
20050105350Memory channel test fixture and methodMay, 2005Zimmerman365/201
20050149774System and method for read synchronization of memory modulesJuly, 2005Jeddeloh et al.713/500
20050172084Buffer control system and method for a memory system having memory request buffersAugust, 2005Jeddeloh711/154
20050216648System and method for memory hub-based expansion busSeptember, 2005Jeddeloh710/311
20050223161Memory hub and access method having internal row cachingOctober, 2005Jeddeloh711/105
20050228939System and method for optimizing interconnections of components in a multichip memory moduleOctober, 2005Janzen711/105
20050246558Power management using a pre-determined thermal characteristic of a memory moduleNovember, 2005Ku713/300
20050257005Memory hub and method for memory sequencingNovember, 2005Jeddeloh711/115
20050286506System and method for an asynchronous data buffer having buffer write and read pointersDecember, 2005LaBerge370/363
20060085616Method and system for dynamically adjusting DRAM refresh rateApril, 2006Zeighami et al.711/167
20060200642System and method for an asynchronous data buffer having buffer write and read pointersSeptember, 2006Laberge711/167
20060206679System and method for read synchronization of memory modulesSeptember, 2006Jeddeloh et al.711/167
20060212655Posted write buffers and method of posting write requests in memory modulesSeptember, 2006Jeddeloh711/154
Foreign References:
EP0849685June, 1998Communication bus system between processors and memory modules
JP2001265539September, 2001ARRAY TYPE STORAGE DEVICE AND INFORMATION PROCESSING SYSTEM
WO/1993/019422September, 1993FIBER OPTIC MEMORY COUPLING SYSTEM
WO/2002/027499April, 2002SHARED TRANSLATION ADDRESS CACHING
Other References:
“Free On-Line Dictionary of Computing” entry Flash Erasable Programmable Read-Only Memory, online May 17, 2004 [http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?flash+memory].
Intel, “Flash Memory PCI Add-In Card for Embedded Systems”, Application Note AP-758, Sep. 1997, pp. i-13.
Intel, “Intel 840 Chipset: 82840 Memory Controller Hub (MCH)”, Datasheet, www.intel.com/design/chipsets/datashts/298020.htm, Oct. 1999, pp. 1-178.
Micron Technology, Inc., “Synchronous DRAM Module 512MB/1GB (×72, ECC) 168-PIN Registered FBGA SDRAM DIMM”, Micron Technology, Inc., 2002, pp. 1-23.
Shanley, T. et al., “PCI System Architecture”, Third Edition, Mindshare, Inc., 1995, pp. 24-25.
Primary Examiner:
Shin, Christopher
Attorney, Agent or Firm:
Dorsey & Whitney, LLP
Parent Case Data:

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of pending U.S. patent application Ser. No. 10/812,950, filed Mar. 29, 2004.

Claims:
The invention claimed is:

1. A memory module, comprising: a plurality of memory devices; and a memory hub coupled to the memory devices, the memory hub comprising: a link interface receiving memory requests for access to memory cells in at least one of the memory devices, at least some of the memory requests including respective memory hints providing information about the subsequent operation of the memory devices; a memory device interface coupled to the memory devices and to the link interface, the memory device interface being operable to couple memory requests to the memory devices for access to memory cells in at least one of the memory devices and to receive read data responsive to at least some of the memory requests; and a memory sequencer coupled to the link interface and the memory device interface, the memory sequencer being operable to couple memory requests to the memory device interface responsive to memory requests received from the link interface, the memory sequencer further being operable to dynamically adjust operability of the memory devices responsive to the memory hints.

2. The memory module of claim 1 wherein the memory devices are disposed on a substrate.

3. The memory module of claim 2 wherein the memory hub is disposed on the substrate.

4. The memory module of claim 1 wherein the link interface comprises an optical input/output port.

5. The memory module of claim 1 wherein at least one of the hints comprises signals placing the memory devices in a page mode.

6. The memory module of claim 5 wherein at least one of the hints comprises a number of pages to remain open.

7. The memory module of claim 1 wherein at least one of the hints comprises a prefetching hint.

8. The memory module of claim 1 wherein at least one of the hints comprises a number of cache lines that will be sent.

9. The memory module of claim 1 wherein at least one of the hints comprises a stride indicative of a sequence of addresses from which data are to be fetched.

10. The memory module of claim 1 wherein at least one of the hints comprises a number of cache lines to skip.

11. The memory module of claim 1 wherein the memory devices comprise dynamic random access memory devices.

12. The memory module of claim 1, further comprising a request decoder coupled to the link interface and the memory sequencer, the request decoder being operable to decode the hint in the memory requests.

13. A memory hub, comprising: a link interface receiving memory requests for access to memory cells in at least one of the memory devices, at least some of the memory requests including respective memory hints providing information about the subsequent operation of the memory devices; a memory device interface coupled to the memory devices, the memory device interface being operable to couple memory requests to the memory devices for access to memory cells in at least one of the memory devices and to receive read data responsive to at least some of the memory requests; and a memory sequencer coupled to the link interface and the memory device interface, the memory sequencer being operable to couple memory requests to the memory device interface responsive to memory requests received from the link interface, the memory sequencer further being operable to dynamically adjust operability of the memory devices responsive to the memory hints.

14. The memory hub of claim 13 wherein the link interface comprises an optical input/output port.

15. The memory hub of claim 13 wherein at least one of the hints comprises signals placing the memory devices in a page mode.

16. The memory hub of claim 15 wherein at least one of the hints comprises a number of pages to remain open.

17. The memory hub of claim 13 wherein at least one of the hints comprises a prefetching hint.

18. The memory hub of claim 13 wherein at least one of the hints comprises a number of cache lines that will be sent.

19. The memory hub of claim 13 wherein at least one of the hints comprises a stride indicative of a sequence of addresses from which data are to be fetched.

20. The memory hub of claim 13 wherein at least one of the hints comprises a number of cache lines to skip.

21. The memory hub of claim 13 wherein the memory devices comprise dynamic random access memory devices.

22. The memory hub of claim 13 further comprising a request decoder coupled to the link interface and the memory sequencer, the request decoder being operable to decode the hint.

23. A method of adjusting memory sequencing in a memory module containing a plurality of memory devices, comprising: generating memory requests for access to a memory device mounted on the memory module, at least some of the memory request including a memory hint, the memory hint being other than a page hint indication; providing information about the subsequent operation of the memory devices; receiving the memory requests at the memory module; adjusting operability of the memory module based on the memory hint; and coupling the memory request to the memory device responsive to the received memory request.

24. The method of claim 23 wherein the act of adjusting operability of the memory module based on the memory hint comprises adjusting operability of the memory sequencer based on the memory hint.

25. The method of claim 23 wherein the act of adjusting operability of the memory module based on the memory hint comprises adjusting operability of the memory devices based on the memory hint.

26. The method of claim 23 wherein the act of coupling the memory request to the memory device comprises coupling the memory request over a link interface comprising an optical input/output port.

27. The method of claim 23 wherein the act of adjusting operability of the memory module comprises placing the memory devices in page mode.

28. The method of claim 23 wherein act of adjusting operability of the memory module comprises leaving a number of pages open.

29. The method of claim 23 wherein the hint generated by the system controller comprises a prefetching hint.

30. The method of claim 23 wherein the hint generated by the system controller comprises a number of cache lines that will be sent.

31. The method of claim 23, wherein the hint generated by the system controller comprises a stride indicative of a sequence of addresses from which data are to be fetched.

32. The method of claim 23 wherein the hint comprises a number of cache lines to skip.

33. The method of claim 23 wherein the memory devices comprise dynamic random access memory devices.

34. The method of claim 23 further comprising decoding the hint with a request decoder.

Description:

TECHNICAL FIELD

This invention relates to computer systems, and, more particularly, to a computer system having a memory hub coupling several memory devices to a processor or other memory access device.

BACKGROUND OF THE INVENTION

Computer systems use memory devices, such as dynamic random access memory (“DRAM”) devices, to store data that are accessed by a processor. These memory devices are normally used as system memory in a computer system. In a typical computer system, the processor communicates with the system memory through a processor bus and a memory controller. The processor issues a memory request, which includes a memory command, such as a read command, and an address designating the location from which data or instructions are to be read. The memory controller uses the command and address to generate appropriate command signals as well as row and column addresses, which are applied to the system memory. In response to the commands and addresses, data are transferred between the system memory and the processor. The memory controller is often part of a system controller, which also includes bus bridge circuitry for coupling the processor bus to an expansion bus, such as a PCI bus.

Although the operating speed of memory devices has continuously increased, this increase in operating speed has not kept pace with increases in the operating speed of processors. Even slower has been the increase in operating speed of memory controllers coupling processors to memory devices. The relatively slow speed of memory controllers and memory devices limits the data bandwidth between the processor and the memory devices.

In addition to the limited bandwidth between processors and memory devices, the performance of computer systems is also limited by latency problems that increase the time required to read data from system memory devices. More specifically, when a memory device read command is coupled to a system memory device, such as a synchronous DRAM (“SDRAM”) device, the read data are output from the SDRAM device only after a delay of several clock periods. Therefore, although SDRAM devices can synchronously output burst data at a high data rate; the delay in initially providing the data can significantly slow the operating speed of a computer system using such SDRAM devices.

One approach to alleviating the memory latency problem is to use multiple memory devices coupled to the processor through a memory hub. In a memory hub architecture, a system controller or memory controller is coupled to several memory modules, each of which includes a memory hub coupled to several memory devices. The memory hub efficiently routes memory requests and responses between the controller and the memory devices. Computer systems employing this architecture can have a higher bandwidth because a processor can access one memory device while another memory device is responding to a prior memory access. For example, the processor can output write data to one of the memory devices in the system while another memory device in the system is preparing to provide read data to the processor.

Although computer systems using memory hubs may provide superior performance, they nevertheless often fail to operate at optimum speed for several reasons. For example, even though memory hubs can provide computer systems with a greater memory bandwidth, they still suffer from latency problems of the type described above. More specifically, although the processor may communicate with one memory device while another memory device is preparing to transfer data, it is sometimes necessary to receive data from one memory device before the data from another memory device can be used. In the event data must be received from one memory device before data received from another memory device can be used, the latency problem continues to slow the operating speed of such computer systems.

One technique that has been used to reduce latency in memory devices is to prefetch data, i.e., read data from system memory before a program being executed requests the data. Generally the data that are to be prefetched are selected based on a pattern of previously fetched data. The pattern may be as simple as a sequence of addresses from which data are fetched so that data can be fetched from subsequent addresses in the sequence before the data are needed by the program being executed. The pattern, which is known as a “stride,” may, of course, be more complex.

Further, even though memory hubs can provide computer systems with a greater memory bandwidth, they still suffer from throughput problems. For example, before data can be read from a particular row of memory cells, digit lines in the array are typically precharged by equilibrating the digit lines in the array. The particular row is then opened by coupling the memory cells in the row to a digit line in respective columns. A respective sense amplifier coupled between the digit lines in each column then responds to a change in voltage corresponding to the data stored in respective memory cell. Once the row has been opened, data can be coupled from each column of the open row by coupling the digit lines to a data read path. Opening a row, also referred to as a page, therefore consumes a finite amount of time and places a limit on the memory throughput.

Finally, the optimal decision of whether or not to prefetch data (and which data to prefetch), as well as whether or not to precharge or open a row, and whether or not to cache accessed data, may change over time and vary as a function of an application being executed by a processor that is coupled to the memory hub.

There is therefore a need for a computer architecture that provides the advantages of a memory hub architecture and also minimizes the latency and/or throughput problems common in such systems, thereby providing memory devices with high bandwidth, high throughput, and low latency. Such a system would also desirably allow the operation of the memory hub to change over time.

SUMMARY OF THE INVENTION

According to one aspect of the invention, a memory module and method is provided including a plurality of memory devices and a memory hub. The memory hub contains a link interface, such as an optical input/output port, that receives memory requests for access to memory cells in at least one of the memory devices. The memory hub further contains a memory device interface coupled to the, memory devices, the memory device interface being operable to couple memory requests to the memory devices for access to memory cells in at least one of the memory devices and to receive read data responsive to at least some of the memory requests. The memory hub further is coupled to a system controller, the system controller operable to generate a memory hint. The memory hub further contains a memory sequencer coupled to the link interface and the memory device interface. The memory sequencer is operable to couple memory requests to the memory device interface responsive to memory requests received from the link interface. The memory sequencer is further operable to dynamically adjust operability responsive to the memory hint.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a computer system according to one example of the invention in which a memory hub is included in each of a plurality of memory modules.

FIG. 2 is a block diagram of a memory hub used in the computer system of FIG. 1 according to an example of the invention.

FIG. 3 is a schematic outline of a write command packet according to one example of the invention.

FIG. 4 is a schematic outline of a read command packet according to one example of the invention.

FIG. 5 is a block diagram of a memory hub used in the computer system of FIG. 1 according to an example of the invention.

DETAILED DESCRIPTION OF THE INVENTION

A computer system 100 according to one example of the invention is shown in FIG. 1. The computer system 100 includes a processor 104 for performing various computing functions, such as executing specific software to perform specific calculations or tasks. The processor 104 includes a processor bus 106 that normally includes an address bus, a control bus, and a data bus. The processor bus 106 is typically coupled to cache memory 108 , which, as previously mentioned, is usually static random access memory (“SRAM”). Finally, the processor bus 106 is coupled to a system controller 110 , which is also sometimes referred to as a “North Bridge” or “memory controller.”

The system controller 110 serves as a communications path to the processor 104 for a variety of other components. More specifically, the system controller 110 includes a graphics port that is typically coupled to a graphics controller 112 , which is, in turn, coupled to a video terminal 114 . The system controller 110 is also coupled to one or more input devices 118 , such as a keyboard or a mouse, to allow an operator to interface with the computer system 100 . Typically, the computer system 100 also includes one or more output devices 120 , such as a printer, coupled to the processor 104 through the system controller 110 . One or more data storage devices 124 are also typically coupled to the processor 104 through the system controller 110 to allow the processor 104 to store data or retrieve data from internal or external storage media (not shown). Examples of typical storage devices 124 include hard and floppy disks, tape cassettes, and compact disk read-only memories (CD-ROMs).

The system controller 110 is coupled to several memory modules 130 a,b . . . n , which serve as system memory for the computer system 100 . The memory modules 130 are preferably coupled to the system controller 110 through a high-speed link 134 , which may be an optical or electrical communication path or some other type of communications path. The high-speed link 134 may be either a bi-directional link, or it may include two separate bi-directional links, one of which couples signals from the system controller 110 lo the memory modules 130 and the other of which couples signals from the memory modules 130 to the system controller 110 . In the event the high-speed link 134 is implemented as an optical communication path, the optical communication path may be in the form of one or more optical fibers, for example. In such case, the system controller 110 and the memory modules will include an optical input/output port or separate input and output ports coupled to the optical communication path. The memory modules 130 are shown coupled to the system controller 110 in a point-to-point coupling arrangement in which a separate segment of the high-speed link 134 is used to couple each of the memory modules 130 to either each other or to the system controller 110 . However, it will be understood that other topologies may also be used, such as a multi-drop arrangement in which the single high-speed link (not shown) is coupled to all of the memory modules 130 . A switching topology may also be used in which the system controller 110 is selectively coupled to each of the memory modules 130 through a switch (not shown). Other topologies that may be used will be apparent to one skilled in the art.

The high-speed link 134 serves as the path for communicating command, address and data signals between the system controller 110 and the memory modules. The command, address and data signals can assume a variety of formats. However, in the embodiment shown in FIG. 1, the command, address and write data signals are all embedded in memory packets that are transmitted from the system controller 100 to the memory modules 130 . Memory packets containing read data signals are embedded in packets coupled from the memory modules 130 to the system controller 110 .

Each of the memory modules 130 includes a memory hub 140 for controlling access to 32 memory devices 148 , which, in the example illustrated in FIG. 1, are synchronous dynamic random access memory (“SDRAM”) devices. However, a fewer or greater number of memory devices 148 may be used, and memory devices other than SDRAM devices may, of course, also be used. In the example illustrated in FIG. 1, the memory hubs 140 communicate over 4 independent memory channels 149 over the high-speed link 134 . In this example, although not shown in FIG. 1, 4 memory hub controllers 128 are provided, each to receive data from one memory channel 149 . A fewer or greater number of memory channels 149 may be used, however. The memory hub 140 is coupled to each of the system memory devices 148 through a bus system 150 , which normally includes a control bus, an address bus and a data bus.

A memory hub 200 according to an embodiment of the present invention is shown in FIG. 2. The memory hub 200 can be substituted for the memory hub 140 of FIG. 1. The memory hub 200 is shown in FIG. 2 as being coupled to four memory devices 240 a - d , which, in the present example are conventional SDRAM devices. In an alternative embodiment, the memory hub 200 is coupled to four different banks of memory devices, rather than merely four different memory devices 240 a - d , with each bank typically having a plurality of memory devices. However, for the purpose of providing an example, the present description will be with reference to the memory hub 200 coupled to the four memory devices 240 a - d . It will be appreciated that the necessary modifications to the memory hub 200 to accommodate multiple banks of memory is within the knowledge of those ordinarily skilled in the art.

Further included in the memory hub 200 are link interfaces 210 a - d and 212 a - d for coupling the memory module on which the memory hub 200 is located to a first high speed data link 220 and a second high speed data link 222 , respectively. As previously discussed with respect to FIG. 1, the high speed data links 220 , 222 can be implemented using an optical or electrical communication path or some other type of communication path. The link interfaces 210 a - d , 212 a - d are conventional, and include circuitry used for transferring data, command, and address information to and from the high speed data links 220 , 222 . As well known, such circuitry includes transmitter and receiver logic known in the art. It will be appreciated that those ordinarily skilled in the art have sufficient understanding to modify the link interfaces 210 a - d , 212 a - d to be used with specific types of communication paths, and that such modifications to the link interfaces 210 a - d , 212 a - d can be made without departing from the scope of the present invention. For example, in the event the high-speed data link 220 , 222 is implemented using an optical communications path, the link interfaces 210 a - d , 212 a - d will include an optical input/output port that can convert optical signals coupled through the optical communications path into electrical signals.

The link interfaces 210 a - d , 212 a - d are coupled to a switch 260 through a plurality of bus and signal lines, represented by busses 214 . The busses 214 are conventional, and include a write data bus and a read data bus, although a single bi-directional data bus may alternatively be provided to couple data in both directions through the link interfaces 210 a - d , 212 a - d . It will be appreciated by those ordinarily skilled in the art that the busses 214 are provided by way of example, and that the busses 214 may include fewer or greater signal lines, such as further including a request line and a snoop line, which can be used for maintaining cache coherency.

The link interfaces 210 a - d , 212 a - d include circuitry that allow the memory hub 200 to be connected in the system memory in a variety of configurations. For example, the point-to-point arrangement, as shown in FIG. 1, can be implemented by coupling each memory module 130 to either another memory module 130 or to the memory hub controller 128 through either the link interfaces 210 a - d or 212 a - d . This type of interconnection provides better signal coupling between the processor 104 and the memory hub 200 for several reasons, including relatively low capacitance, relatively few line discontinuities to reflect signals and relatively short signal paths. Alternatively, a multi-drop or daisy chain configuration can be implemented by coupling the memory modules in series. For example, the link interfaces 210 a - d can be used to couple a first memory module and the link interfaces 212 a - d can be used to couple a second memory module. The memory module coupled to a processor, or system controller, will be coupled thereto through one set of the link interfaces and further coupled to another memory module through the other set of link interfaces. In one embodiment of the present invention, the memory hub 200 of a memory module is coupled to the processor in a multi-drop arrangement.

The switch 260 is further coupled to four memory interfaces 270 a - d which are, in turn, coupled to the system memory devices 240 a - d , respectively. By providing a separate and independent memory interface 270 a - d for each system memory device 240 a - d , respectively, the memory hub 200 avoids bus or memory bank conflicts that typically occur with single channel memory architectures. The switch 260 is coupled to each memory interface through a plurality of bus and signal lines, represented by busses 274 . The busses 274 include a write data bus, a read data bus, and a request line. However, it will be understood that a single bi-directional data bus may alternatively be used instead of a separate write data bus and read data bus. Moreover, the busses 274 can include a greater or lesser number of signal lines than those previously described.

In an embodiment of the present invention, each memory interface 270 a - d is specially adapted to the system memory devices 240 a - d to which it is coupled. More specifically, each memory interface 270 a - d is specially adapted to provide and receive the specific signals received and generated, respectively, by the system memory device 240 a - d to which it is coupled. Also, the memory interfaces 270 a - d are capable of operating with system memory devices 240 a - d operating at different clock frequencies. As a result, the memory interfaces 270 a - d isolate the processor 104 from changes that may occur at the interface between the memory hub 230 and memory devices 240 a - d coupled to the memory hub 200 , and it provides a more controlled environment to which the memory devices 240 a - d may interface.

The switch 260 coupling the link interfaces 210 a - d , 212 a - d and the memory interfaces 270 a - d can be any of a variety of conventional or hereinafter developed switches. For example, the switch 260 may be a cross-bar switch that can simultaneously couple link interfaces 210 a - d , 212 a - d and the memory interfaces 270 a - d to each other in a variety of arrangements. The switch 260 can also be a set of multiplexers that do not provide the same level of connectivity as a cross-bar switch but nevertheless can couple the some or all of the link interfaces 210 a - d , 212 a - d to each of the memory interfaces 270 a - d . The switch 260 may also includes arbitration logic (not shown) to determine which memory accesses should receive priority over other memory accesses. Bus arbitration performing this function is well known to one skilled in the art.

With further reference to FIG. 2, each of the memory interfaces 270 a - d includes a respective memory controller 280 , a respective write buffer 282 , and a respective cache memory unit 284 . The memory controller 280 performs the same functions as a conventional memory controller by providing control, address and data signals to the system memory device 240 a - d to which it is coupled and receiving data signals from the system memory device 240 a - d to which it is coupled. The write buffer 282 and the cache memory unit 284 include the normal components of a buffer and cache memory, including a tag memory, a data memory, a comparator, and the like, as is well known in the art. The memory devices used in the write buffer 282 and the cache memory unit 284 may be either DRAM devices, static random access memory (“SRAM”) devices, other types of memory devices, or a combination of all three. Furthermore, any or all of these memory devices as well as the other components used in the cache memory unit 284 may be either embedded or stand-alone devices.

The write buffer 282 in each memory interface 270 a - d is used to store write requests while a read request is being serviced. In such a system, the processor 104 can issue a write request to a system memory device 240 a - d even if the memory device to which the write request is directed is busy servicing a prior write or read request. Using this approach, memory requests can be serviced out of order since an earlier write request can be stored in the write buffer 282 while a subsequent read request is being serviced. The ability to buffer write requests to allow a read request to be serviced can greatly reduce memory read latency since read requests can be given first priority regardless of their chronological order. For example, a series of write requests interspersed with read requests can be stored in the write buffer 282 to allow the read requests to be serviced in a pipelined manner followed by servicing the stored write requests in a pipelined manner. As a result, lengthy settling times between coupling write request to the memory devices 270 a - d and subsequently coupling read request to the memory devices 270 a - d for alternating write and read requests can be avoided.

The use of the cache memory unit 284 in each memory interface 270 a - d allows the processor 104 to receive data responsive to a read command directed to a respective system memory device 240 a - d without waiting for the memory device 240 a - d to provide such data ill the event that the data was recently read from or written to that memory device 240 a - d . The cache memory unit 284 thus reduces the read latency of the system memory devices 240 a - d to maximize the memory bandwidth of the computer system. Similarly, the processor 104 can store write data in the cache memory unit 284 and then perform other functions while the memory controller 280 in the same memory interface 270 a - d transfers the write data from the cache memory unit 284 to the system memory device 240 a - d to which it is coupled.

Further included in the memory hub 200 is a built in self-test (BIST) and diagnostic engine 290 coupled to the switch 260 through a diagnostic bus 292 . The diagnostic engine 290 is further coupled to a maintenance bus 296 , such as a System Management Bus (SMBus) or a maintenance bus according to the Joint -Test Action Group (JTAG) and IEEE 1149.1 standards. Both the SMBus and JTAG standards are well known by those ordinarily skilled in the art. Generally, the maintenance bus 296 provides a user access to the diagnostic engine 290 in order to perform memory channel and link diagnostics. For example, the user can couple a separate PC host via the maintenance bus 296 to conduct diagnostic testing or monitor memory system operation. By using the maintenance bus 296 to access diagnostic test results, issues related to the use of test probes, as previously discussed, can be avoided. It will be appreciated that the maintenance bus 296 can be modified from conventional bus standards without departing from the scope of the present invention. It will be further appreciated that the diagnostic engine 290 should accommodate the standards of the maintenance bus 296 , where such a standard maintenance bus is employed. For example, the diagnostic engine should have a maintenance bus interface compliant with the JTAG bus standard where such a maintenance bus is used.

Further included in the memory hub 200 is a DMA engine 286 coupled to the switch 260 through a bus 288 . The DMA engine 286 enables the memory hub 200 to move blocks of data from one location in the system memory to another location in the system memory without intervention from the processor 104 . The bus 288 includes a plurality of conventional bus lines and signal lines, such as address, control, data busses, and the like, for handling data transfers in the system memory. The DMA engine 286 can implement conventional DMA operations well known by those ordinarily skilled in the art. The DMA engine 286 is able to read a link list in the system memory to execute the DMA memory operations without processor intervention, thus, freeing the processor 104 and the bandwidth limited system bus from executing the memory operations. The DMA engine 286 can also include circuitry to accommodate DMA operations on multiple channels, for example, for each of the system memory devices 240 a - d . Such multiple channel DMA engines are well known in the art and can be implemented using conventional technologies.

The diagnostic engine 290 and the DMA engine 286 are preferably embedded circuits in the memory hub 200 . However, including separate a diagnostic engine and a separate DMA device coupled to the memory hub 200 is also within the scope of the present invention.

As mentioned above, the command, address and data signals are preferably coupled between the memory hub controller 128 and the memory modules 130 in the form of memory packets. In accordance with one embodiment of the present invention, a “hint,” which are bits indicative of the expected future performance of the memory modules 130 , is embedded in the memory packets and coupled to one or more of the memory hubs 140 in the memory modules 130 . The hint, or hints, modifies the behavior of one or more memory hubs 140 , as explained in greater detail below. In particular, the hint modifies the memory sequencing based on information known to or estimated by the controller 128 . For example, the controller 128 may have access to addressing information such as the memory requestor or address stride.

In one example of an addressing hint, the controller 128 communicates a command placing the hub 140 in page mode and identifying a number of pages to keep open. In another example, the controller 128 provides a hint related to prefetching—such as 1, 2, or 4 cache lines that will follow. In another example, the controller 128 communicates a stride to the hub 140 —such as skip the next 1, 2, or 4 cache lines. In another example of a hint, the controller 128 may indicate whether or not to place a particular cache line in a hub cache. Of course, other hints may be used, or other specific information provided with the hints described.

FIG. 3 depicts a write command packet 300 including a hint 301 . The write command packet 300 is generated by the controller 128 and communicated to the hub 140 . The packet 300 includes the hint 301 and a command code 302 . The write command packet 300 further includes write data 310 , write address information 305 , and may include other information such as a tag 311 , a stride 312 , a reservation 313 , a length 314 , and error check information 315 .

FIG. 4 depicts a read command packet 350 including a hint 351 . The read command packet 350 is generated by the controller 128 and communicated to the hub 140 . The packet 350 includes the hint 351 and a command code 352 . The read command packet 350 further includes read address information 355 , and may include other information such as a tag 361 , a stride 362 , a reservation 363 , a length 364 , and error check information 365 .

Read and write command packets, such as the packets 300 and 350 , are sent to the hub 140 . One implementation of the hub 140 for receiving the packets 300 and/or 350 is shown in FIG. 5. A read or write packet is received from a link in 400 . A request decoder 405 receives the packet and decodes the request and any hint or hints, which are provided to request queue 410 . The request decoder 405 further decodes a read address, and provides the read address to a comparator 415 . A write buffer queue 420 further receives packets from the link in 400 and provides a write address to the comparator 415 . The comparator 415 compares the read and write addresses, and notifies the request queue 410 of any write conflicts. If the request queue 410 identifies a read buffer hit, it accesses a prefetch buffer 425 to fulfill the request. Requests and hints are provided to a memory sequencer 430 connected to a memory interface 435 . The memory sequencer 430 acts on any hint information, and sends request over the memory interface 435 . Memory read data are coupled into the prefetch buffer 425 for storage, if appropriate.

From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications ma)y be made without deviating from the spirit and scope of the invention. Accordingly, the invention is not limited except as by the appended claims.





<- Previous Patent (Shared simultaneousl...)   |   Next Patent (Method and device fo...) ->