EP2801912A1 - Message-based memory access device and access method thereof - Google Patents
Message-based memory access device and access method thereof Download PDFInfo
- Publication number
- EP2801912A1 EP2801912A1 EP13738795.7A EP13738795A EP2801912A1 EP 2801912 A1 EP2801912 A1 EP 2801912A1 EP 13738795 A EP13738795 A EP 13738795A EP 2801912 A1 EP2801912 A1 EP 2801912A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- request
- message
- data
- memory access
- read
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000004044 response Effects 0.000 claims abstract description 220
- 230000008569 process Effects 0.000 claims abstract description 37
- 238000012545 processing Methods 0.000 claims description 29
- 238000012423 maintenance Methods 0.000 claims description 16
- 230000001360 synchronised effect Effects 0.000 claims description 16
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 230000003993 interaction Effects 0.000 claims description 4
- 238000012858 packaging process Methods 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims 4
- 238000002372 labelling Methods 0.000 claims 1
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
- G06F13/4239—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol
Definitions
- the present invention relates to the field of computer system design, and in particular, to a message-based memory access apparatus and an access method thereof.
- the memory system of a computer is one of the important elements that have an impact on the system structure and software performance.
- the memory system has been the bottleneck that restricts system performance.
- the access bandwidth problem of memory systems becomes more severe, which restricts the further development of the scope of multi-core processors.
- the existing synchronous memory systems are mainly designed for ensuring that the delay of a single memory access is fixed and low.
- the memory access delay actually includes two parts, waiting time in the memory access queue of a processor and a delay on a memory access channel.
- a low delay on a memory access channel cannot ensure good overall memory access performance.
- the data granularity of conventional memory access is fixed and has a tendency of increase. This is for ensuring that more data is transmitted in one transmission period and the data read each time is basically of the length of the CPU Cache line.
- the actual granularity for each data access varies.
- the fixed large data granularity for each access inevitably causes a waste; when a large amount of data needs to be read and written for some applications, the data access needs to be divided into a plurality of memory transactions, thereby increasing protocol overhead. These all cause a waste of a memory access bandwidth.
- this document provides a message-based memory access apparatus and an access method thereof.
- the present invention discloses a message-based memory access apparatus, including:
- the message-based command bus is further configured to specify a memory access length of a request, and the memory access length is greater than or less than the length of a register;
- the message-based memory controller further includes:
- the message-based memory controller further includes:
- an item number of the read request state table corresponds to a sequence number of a request in the request state table; the item number is used in a message packet of the message-based memory controller and the buffer scheduler to uniquely specify a request for processing; a request address is the base address of the memory to be accessed; a timed delay specifies the time for returning the request to the CPU and is mainly set through the controller configuration interface; a returning granularity consists of the length of data returned by the message-based memory controller to the CPU each time; a data state specifies required data that has been obtained from the storage module and required data that are not obtained; a data location specifies a location of obtained request data in the read data buffer.
- the request response controller is further configured to query for a state of a request in the read/write request reservation station, send a request response to the CPU after a CPU request is processed by the buffer scheduler and the storage module, and if a read request is processed, send corresponding data of the request in the read data buffer.
- each such message packet includes information about one or more memory access requests or responses; a request in the message packet has no synchronous timing sequence restriction but information about a maximum delay of returning the request.
- the message-based memory controller configuration interface unit provides special command address space for the massage-mode memory controller, allows configuration of attributes of the controller, allows settings of attributes of a memory access request, and issues a corresponding memory access command.
- the message-based memory access controller is further configured for the message-based memory access controller and command address space to support, by using a corresponding memory access command, that the memory access system periodically pushes data to the register or the addressable high-speed buffer, and that a simple arithmetic and logic operation and a move operation are performed in the memory system, where memory access atomicity is set, or the operations is performed in batches;
- the read/write request reservation station provides a read request state table and a write request state table, where each request to be processed has a corresponding table entry in the read or write request state table, each table entry includes not only the address and length of the request but also the timed return delay, returning granularity, data state, and data location, and in a message packet, each request is determined by the unique item number in corresponding request state table;
- the message-based memory controller not only allows a plurality of requests to be included in one message packet, but also allows each request to be divided and included in one or more message packets to be sent to the storage module; the message
- the message-based memory controller is further used in the following situation: if message packets of a plurality of storage modules are used to respond to one read request, the data state in the corresponding read request state table of the request identifies the returned data and the unreturned data; and data that is not completely returned is saved in the addressable buffer or the unaddressable buffer, where if the data is temporarily saved in the unaddressable buffer, the read request of the CPU is responded to and the requested data are sent to the CPU only after the requested data are completely returned; and if the data is temporarily saved in the addressable buffer, the CPU reads the returned data part.
- the message packets include: a memory access read/write request packet, a special command request packet, a memory state query packet, and/or a response packet.
- the buffer scheduler in the storage module includes:
- the buffer scheduler in the storage module further includes:
- the request scheduler is further configured to complete operations for memory access requests in a high-priority queue according to request situations; the request scheduler labels a plurality of requests with combination marks; when all returned data of the requests is saved into the data buffer, the data is forwarded to the message packetizer for being packaged into one response packet; and for a request with a large memory access data amount in a low-priority queue, the request scheduler divides the request processing into several steps and forward the processing result of each step to the message packetizer for being packaged into one response packet and then returned back.
- the storage module is further used in the following situations: for a memory access request from the message-based memory controller, the storage module processes the request with a plurality of steps and returns a plurality of response packets; for a plurality of memory access requests from the message-based memory controller, the storage module processes all the requests and uses one response packet to respond all requests; and the storage module schedules a sequence for executing memory access requests from the message-based memory controller according to priorities of requests, semantic information of requests, and a state of a memory chip on the storage module.
- a memory unit of the storage module is a synchronous memory chip and/or a memory chip based on an asynchronous network connection.
- Special message-based memory access instructions supported by the buffer scheduler include: a timing push instruction, a simple arithmetic and logic operation in the memory system and a move instruction, and compression storage.
- the message channel is configured to transmit messages in message packets with a parallel bus, a point to point serial bus, or networks with other topological structures used.
- the present invention further discloses a message-based memory access method, including the following steps:
- Step 1001 A CPU issues a memory access request.
- the CPU specifies an access data length, a priority, and semantic information of the request.
- the request is any other complex memory access request besides a read/write request.
- Step 1002 Determine whether the request includes information about configuration of a message-based memory controller. If yes, go to step 1003; and if not, go to step 1004.
- Step 1003 If the request includes information about the configuration of the message-based memory controller, the message-based memory controller performs a proper adjustment according to the configuration information and then schedules and processes the request.
- Step 1004 The message-based memory controller packages the memory access request from the CPU into a message packet, which includes a plurality of requests, sends the message packet through a message channel to a buffer scheduler of a corresponding storage module, and makes a record in a read/write request reservation station according to requirements.
- Step 1005 A buffer scheduler in the storage module parses the sent message packet, and performs an operation on the memory access request of the CPU.
- Step 1006 After the memory access request of the CPU is processed, if there is a record about the request in the read/write request reservation station of the message-based memory controller, clear the record.
- step 1006 the following steps are further included:
- Step 1007 If the memory access request of the CPU is a read request, package the read data into a response packet and send the packet to the message-based memory controller through the message channel.
- the response packet packaging process based on requirements, returned data of one request is packaged into a plurality of response packets, and returned data of a plurality of requests are packaged into one response packet.
- Step 1008 The message-based memory controller receives and parses the response packet and saves the data in the response packet into a cache or an internal addressable buffer of the message-based memory controller according to requirements.
- Step 1009 The message-based memory controller determines whether response packets for the CPU are all returned. If yes, go to step 1006; and if not, go to step 1008.
- step 1005 the following steps are further included:
- Step 1010 The buffer scheduler receives and parses the message packet sent by the message-based memory controller, and fills the memory access request of the CPU into a proper request queue.
- Step 1011 The request scheduler in the buffer scheduler schedules a plurality of requests in the request queue and arranges a request execution sequence according to the memory access request of the CPU priority and semantic information.
- Step 1012 Convert the scheduled CPU request into a series of commands that conform to a memory granularity standard, and send the commands to a memory interface.
- Step 1013 Determine whether the memory access request of the CPU is a complex memory access request. If yes, go to step 1014; and if not, go to step 1016.
- Step 1014 If the memory access request of the CPU is a complex memory access request, a processing logic in the buffer scheduler simply processes the data returned by the memory.
- Step 1015 After the complex memory access instruction is processed, according to the type of the request, determine whether to write the processed data back into the memory and whether to return the process data to the CPU. If the processed data needs to be written back into the memory, use a series of commands that conform to the memory granularity standard to write the data into the memory; if the processed data needs to be returned to the CPU, package the data into a response packet and send the packet to the message-based memory controller.
- Step 1016 If the memory access request of the CPU is not a complex memory access request, determine whether the request is a write request. If yes, go to step 1006; and if not, go to step 1007.
- Step 1004 further includes the following steps:
- Step 1101 The message-based memory controller receives a read/write request sent by the CPU through a memory access request interface.
- Step 1102 A read/write request distributor determines whether the request is a read request. If yes, go to step 1104; and if not, go to step 1103.
- Step 1103 If the received request is a write request, determine whether there is an empty item in a write request state table. If yes, go to step 1105; and if not, go to step 1102.
- Step 1104 If the received request is a read request, determine whether there is an empty item in a read request state table. If yes, go to step 1106; and if not, go to step 1102.
- Step 1105 If the received request is a write request and there is an empty item in the write request state table, distribute a table entry for the request and save the data in the write request into a write data buffer; otherwise, go to step 1102.
- Step 1106 If the received request is a read request and there is an empty item in the read request state table, distribute a table entry for the request; otherwise, go to step 1102.
- Step 1107 Stop receiving the request and continue to process requests received through a memory access request interface.
- the scheduling and processing a request by the message-based memory controller includes the following steps:
- Step 1201 A request generating and scheduling component scans the table entries in the read/write request state table.
- Step 1202 A request generating and scheduling component queries whether there is any request that is unprocessed and needs to be processed in the read/write request state table. If yes, go to step 1203; and if not, go to step 1201.
- Step 1203 If there is an unprocessed request, the request generating and scheduling component divides a big request into a plurality of small requests according to the request attributes in the corresponding request state table, and selects the next request to be processed according to the scheduling algorithm.
- Step 1204 Determine whether the request to be processed is a read request. If yes, go to step 1206; and if not, go to step 1205.
- Step 1205 If the request to be processed is a write request, obtain the corresponding data of the request from a write data buffer; otherwise, go to step 1206.
- Step 1206 A message packetizer packages one or more requests into a message packet.
- Step 1207 Send the packaged message to a message channel interface between the message-based memory controller and a buffer scheduler, and then go to step 1201 for the next processing round.
- Step 1013 further includes the following steps:
- Step 1301 Parse header information of the response packet sent from the buffer scheduler to the message-based memory controller so as to obtain the number of responses in the header and the length of each response for parsing the responses one by one in the following.
- Step 1302 Determine whether there is a next response that needs to be parsed. If yes, go to step 1303 to parse the next response; and if not, the response packet parsing ends.
- Step 1303 Parse the type and the request identifier of the next response. Responses are processed in different ways according to the request types in the following steps.
- Step 1304 Determine whether the response is a memory access read request response. If yes, go to step 135 for further parsing; and if not, the response is a memory state query request response or a memory access write request response, and then go to step 1306 to obtain the corresponding state information.
- Step 1305 Address the response according to the response length specified by the header and obtain the returned data from the memory access read request response.
- Step 1306 Address the response according to the response length specified by the header. If the response is a state query request response, obtain the returned state value from the response; if the response is a memory access write request response, update the request attributes in the write request state table. Then the response parsing ends. Go back to step 1302.
- Step 1307 Determine, according to whether the packet includes sub-responses, whether the memory access data of the read request is returned after being divided into a plurality of responses by the buffer scheduler. If the data is not divided into a plurality of responses, go to step 1309 to process the memory access read request; and if the data is divided, parse the packet to obtain the number of obtained sub-responses and the identifier of the current sub-response, and then go to step 1308.
- Step 1308 Determine whether the current response is the last sub-response of the memory access read request according to whether the identifier of the current sub-response is equal to the number of sub-responses. If yes, go to step 1309 to process the current memory access read request; and if not, the current memory access read request is not processed yet, write the returned data of the current sub-response into the corresponding data buffer, the update data state, data location, and other information in the read request state table, and then go back to step 1302.
- Step 1309 Process the current memory access read request, prepare to transmit the data from the message-based memory controller back to the CPU, and then go back to step 1302.
- Step 1006 further includes the following steps:
- Step 1401 A request response controller scans the read and write request state tables.
- Step 1402 Query whether there is any processed request in the write request state table. If yes, go to step 1404; and if not, go to step 1403.
- Step 1403 If there is no processed request item in the write request state table, query whether there is any processed request item in the read request state table. If yes, go to step 1404; and if not, go to step 1402.
- Step 1404 If there is a processed request in the write request state table or the read request state table, determine whether the processed request meets requirements of request attributes. If yes, go to step 1405; and if not, go to step 1402.
- Step 1405 Send a response of the request that meet the requirements of all attributes.
- the data content of the response also needs to match the returning granularity and other attributes of the request.
- Step 1011 further includes the following steps:
- Step 1501 A timer triggers, according to a set condition, the request scheduler to prepare to start a new request scheduling process.
- Step 1502 Check whether the triggering condition is that chip state maintenance is requested. If yes, go to step 1503; and if not, go to step 1504.
- Step 1503 The triggering condition of the timer is that chip state maintenance is required. Issue a chip state maintenance command, and go to step 1509.
- Step 1504 Check whether the triggering condition is that a special request queue needs to be processed. If yes, go to step 1505; and if not, go to step 1506.
- Step 1505 The triggering condition is that a special request queue needs to be processed. Read the request in the special request queue and convert the request into a series of read/write operations. Modify the request state in the queue or clear the request state after the request is processed. Go to step 1509.
- Step 1506 Check whether the triggering condition is that the read/write request queue with the highest priority needs to be processed. If yes, go to step 1507; and if not, go to step 1508.
- Step 1507 The triggering condition is that the read/write request queue with the highest priority needs to be processed. Clear all requests in the queue and label all read requests with combination marks. Go to step 1509.
- Step 1508 The triggering condition is that a read/write request queue that does not have the highest priority needs to be processed. Access the request in the request queue with the corresponding priority and generate the required read/write operation according to the current state of the read/write request. Modify the request state in the queue or clear the request state after the request is processed. Go to step 1509.
- Step 1509 The request scheduling process ends. Wait for the triggering of the next scheduling process by the timer.
- the beneficial effect in the present invention is: the conventional synchronous bus transaction is replaced by asynchronous request messages and response messages by changing the original synchronous memory access structure; this improves the concurrency and flexibility of a memory access structure and an application memory access interface, thereby improving the utilization rate of a CPU memory channel.
- the purpose of the present invention is to improve the effective utilization rate of CPU memory channels and provides a message-based memory access apparatus.
- the starting point of the present invention is that a valid bandwidth may be increased by improving a utilization rate even though a physical bandwidth is restricted.
- a conventional memory system uses a passive synchronous sequence memory access structure with a fixed delay and fixed granularity, which restricts the application of possible effective technical approaches.
- the present invention studies a new structure that is based on "message" (message) based.
- the conventional synchronous bus transaction is replaced by asynchronous and concurrent request messages and response messages by changing the original synchronous memory access structure. This improves the flexibility of a memory access structure and an application memory access interface, thereby improving the utilization rate of a CPU memory channel.
- the present invention provides a message-based memory access apparatus, including:
- the message-based command bus may specify a memory access length of a request, and the memory access length may be greater than or less than the length of a register.
- the requested data may be returned to a cache, an addressable buffer of the CPU, or a register or register group without passing by a cache.
- a request may be attached with information about a data access priority for instructing scheduling of a memory access command in the message-based memory controller and the buffer scheduler, so as to provide a scheduling basis for the memory system.
- Each message packet is allowed to include the information or data of one or more memory access requests; a request in a message packet has no synchronous timing sequence restriction, but the request may include the maximum delay of returning the request and other information.
- the controller configuration interface unit provides special command address space for the message-based memory controller, allows configuration of attributes of the controller and setting of attributes of a memory access request, such as the setting of timed return delay and granularity of a memory access request, and allows a special memory access command to be issued.
- the message-based memory access controller and command address space may support that the memory access system periodically pushes data to the register or the addressable high-speed buffer, and that a simple arithmetic and logic operation and a move operation are performed in the memory system, where memory access atomicity may be set, or the operations may be performed in batches.
- the read/write request reservation station provides a read request state table and a write request state table.
- Each request to be processed has a corresponding table entry in the read request state table or write request state table.
- Each table entry includes not only the address and length of the request but also the timed return delay, returning granularity, data state, and data location, and other additive attributes of the request.
- each request is determined by the unique item number in corresponding request state table.
- the message-based memory controller not only allows a plurality of requests to be included in one message packet, but also allows each request to be divided and included in one or more message packets to be sent to the storage module; the message-based memory controller also allows the storage module to use one or more response information packets to process one request.
- a plurality of response message packets of a plurality of requests or one request may be returned out of order.
- the data state in the corresponding read request state table of the request identifies the returned data and the unreturned data.
- Data that is not completely returned may be saved in the addressable buffer or the unaddressable buffer. If the data is temporarily saved in the unaddressable buffer, the read request of the CPU is responded to and the requested data are sent to the CPU only after the requested data are completely returned; and if the data is temporarily saved in the addressable buffer, the CPU can read the returned data without waiting all data to be returned.
- the message packet may include memory access semantic information, including but not limited to thread information, object information, and priority information.
- data is transmitted in message packets with a parallel bus, a point to point serial bus, or networks with other topological structures used.
- a memory access request sent by a message-based memory controller may be processed with a plurality of steps, and the request may be responded to with a plurality of message packets.
- memory access requests sent by a plurality of message-based memory controllers may be responded to with only one message packet after the requests are processed.
- the storage module including a buffer scheduler may schedule the execution sequence of memory access requests sent by the message-based memory controller, based on priorities of requests, semantic information of requests, and a state of a memory chip on the storage module.
- the buffer scheduler supports special message-based memory access instructions except load/store, including but not limited to a timing push instruction, a simple arithmetic and logic operation in the memory system and a move instruction (supporting an atomic operation and batch processing), and compression storage.
- a memory unit in the storage module may be either a synchronous memory chip or a memory chip based on an asynchronous network connection.
- the message-based memory access apparatus includes a message-based command bus 110, a message-based memory controller 120, a message channel 130, and a storage module 140 including a buffer scheduler; these functional units perform memory access of a CPU by using a message packet; a controllable delay and a variable granularity are achieved, and message-based memory access of semantic information is supported.
- a memory access instruction or an access to the special command address space for a CPU is converted into a message-based memory access request on the message-based command bus 110.
- the message-based memory access apparatus allows the CPU to specify the size and speed of a memory access data granularity, data returning timing and manner, and other semantic information.
- the message-based memory controller 120 schedules received memory access requests, converts the requests into request packets, places the packets on the message channel 130, and maintains the states of all memory access requests that are being processed. When parsing response packets returned on the message channel 130, the message-based memory controller 120 unpacks the response packets to obtain the returned data of the memory access requests.
- the storage module 140 receives and processes request packets on the message channel 130 through the buffer scheduler, parses the requests, and accesses the specific memory ship, packages data that needs to be returned into response packets, and sends the response packets to the message-based memory controller 120.
- the message-based command bus 110 mainly supports the following three types of message-based memory access instructions:
- a message-based memory load and store instruction which is obtained by adding granularity and priority parameters for a common memory load and store instruction.
- the CPU first sets the memory access data size and access priority at the specified location in the special command address space, and then executes a message-based memory load and store instruction. That is, data of the specified length may be taken out from the memory and saved in the cache based on the required priority.
- a timed return instruction allowing the memory system to return data of an array specified by the instruction to a specified register at a regular interval in a subsequent period of time.
- the CPU first sets the time interval and the return times of memory access at the specified location in the special command address space, and then executes a timed return instruction.
- the message-based memory controller or the buffer scheduler generates a required read command periodically, and inserts the command into the command queue or the request queue. Data returned by the memory system is directly sent into the register without passing by the cache. Compared with prefetching, timed return reduces buffer occupation.
- a simple arithmetic logic operation and a copy instruction in the memory system supporting atomicity and batch processing.
- the memory system may perform some simple arithmetic logic operations (addition, subtraction, AND, OR, XOR, and others, where operation results written into a memory unit) and some copying operations on the memory unit without using the CPU.
- This instruction supports batch processing. It is needed to set parameters of the instruction, such as the type of the operation that the memory system will execute, whether it is an atomic operation, and operation times of batch processing, at the specified location in the special command address space, and then, execute the instruction MOP R1, R2, R3.
- R1 and R2 store the source operand address
- R3 stores the destination operand address.
- the buffer scheduler or the message-based memory controller executes the operations and copying, ensures the atomicity of the operations, and controls the operation times. Simple operations do not require data to be moved to the CPU, thereby reducing a total memory access amount.
- the message-based memory controller 120 and the storage module 140 communicate with each other by using message packets.
- the supported types of message packets include a memory access read/write request packet, a special command request packet, a memory state query packet, and a response packet.
- a message packet 200 includes one header 202, and one or more memory access requests or responses 204, 206, and 208.
- the header 202 specifies metadata of the message packet, such as a packet type, the number of requests, a length of each request, a length of the packet, fault-tolerant information, and others.
- a memory access read/write request packet sent from the message-based memory controller to the storage module may include one or more memory access read/write requests.
- Each memory access request including 202, 204, or 206 includes a request identifier, a memory access address, a memory access granularity, and a memory access operation, and may further include some semantic information; besides, a write request further includes data.
- a response packet sent from storage module to the message-based memory controller may include one or more responses, and each response packet includes a request identifier, returned data, and others.
- header information includes: a packet type 302, a source module identifier 304, a target module identifier 306, the number 308 of included requests/responses, a length 310, 312, or 314 of each request/response, a packet length 316, and fault-tolerant information 318 of the entire packet.
- the packet type 302 specifies types of packets on a bus.
- the supported packet types include a memory access read/write request packet, a special command request packet, a memory state query packet, and a response packet.
- the source module identifier 304 specifies a number of a module (the message-based memory controller or storage module) that sends the message packet.
- the source module identifier 304 may specify the identifier of the message-based memory controller that sends a memory access read/write request.
- the target module identifier 306 specifies a number of a module (the message-based memory controller or storage module) that receives and processes the message packet.
- the number 308 of included requests/responses specifies the number of requests or responses included in the message packet. It should be noted that the included requests must match the packet type. For example, if the packet type is a memory access read request packet, the requests in the message packet must all be memory access read requests.
- the length 310, 312, or 314 of each request/response specifies the size of each request or response, helping address the location (offset) of each request or response in the message packet.
- the packet length 316 specifies the length of the entire message packet.
- the fault-tolerant information 318 of the entire packet specifies whether an error occurs in the transmission process of the message packet on the bus, including but not limited to using parity check (Parity), checksum (Checksum), error-correcting code (ECC), and other fault-tolerant technologies.
- a memory access read/write request packet is used by the message-based memory controller to send one or more memory access read/write requests 400 to the storage module.
- each memory access read/write request 400 includes a request identifier 402, an operation code 404, a memory access address 406, and a memory access granularity 408, and may further include semantic information 410; besides, a memory access write request further includes data 412.
- the request identifier 402 is the unique identifier distributed by the message-based memory controller for each request.
- the operation code 404 specifies a memory request operation, such as a read request or a write request.
- the memory access address 406 specifies the base physical address of a memory access request.
- the memory access granularity 408 specifies the granularity (or length) of data of a memory access request, such as the small granularity 8 B or larger granularity 4 KB.
- the semantic information 410 specifies program-running information that the CPU sends to the storage module through the message-based memory controller and is used to instruct the scheduling of the buffer scheduler in the storage module, such as the priority of a memory access request, the timeout (Timeout) of processing a memory access request, core identifier (Core ID) of the CPU sending the memory access request, and others.
- the data 412 which is further included in a memory access write request, specifies the data that will be written into the specified physical address.
- a special command request packet is used for the message-based memory controller to send special processed commands to the storage module, such as a simple arithmetic and logic operation, move, atomic operation, compression, and the like.
- a memory state query packet is used for the message-based memory controller to query for various types of state information on the storage module.
- Each memory state query packet includes only one query request. Therefore, the number of requests in the request header is always set to 1.
- each state query request 500 includes a state query type 502 and a state query identifier 504.
- the state query type 502 specifies the type of the queried storage module state, such as whether the read/write request queue is full, whether the special request queue is full, whether the memory chip is in low power consumption state, and the like.
- the state query identifier 504 is the state query request identifier distributed by the message-based memory controller and is used to address the state query request after the message-based memory controller receives a response from the storage module.
- each response 600 includes a response type 602 and a request identifier 604, and may further include the number 606 of sub-responses, a sub-response identifier 608, data 610, or a state value 612.
- the response type 602 specifies corresponding responses returned for different types of requests, such as a memory access read request response, a state query request response, and others.
- the request identifier 604 is a corresponding request identifier of a response, such as a memory access read request identifier or a state query request identifier.
- the storage module may divide data of one single request into a plurality of sub-responses when returning a response, and the sub-responses may be packaged into one response packet for return or be packaged into a plurality of response packets and returned separately.
- the number 606 of sub-responses specifies the number of sub-responses
- the sub-response identifier 608 specifies the identifier of the currently returned sub-response.
- the message-based memory controller includes a memory access request interface 700, a read/write request distributor unit 701, a write data buffer unit 702, a read data buffer unit 703, a read/write request reservation station 704, a request generating and scheduling component 705, a message packetizer 706, a message unpacker 707, a request state update unit 708, a request response controller 709, a controller configuration interface 710, and a message channel interface 711.
- the message-based memory controller implemented by the units uses message packets to perform interaction with the buffer scheduler and the storage module unit to complete the processing of requests; the message-based memory controller supports the processing of memory access requests with a variable granularity and restricted returning timing.
- the message-based memory controller allows data of one read request to be returned in a plurality of message packets in an out-of-order manner. This may improve the utilization rate of a memory bandwidth.
- the memory access request interface 700 is the request exchange interface between the CPU and the message-based memory controller; this interface is used for the CPU to send a memory access request to the message-based memory controller and is also used for the message-based memory controller to send a memory access request response to the CPU; besides, this interface may also transmit a command for configuring a message-based memory controller.
- the read/write request distributor unit 701 controls whether a memory access request received from the memory access request interface may be inserted in the read request state table or the write request state table, as shown in FIG. 8 . If a write request is received, data to be written into the memory needs to be temporarily saved in the write data buffer unit 702.
- the write data buffer unit 702 is configured to temporarily save data of the write request. When the write request is scheduled, data corresponding to this request needs to be filled into a message packet and sent to the buffer scheduler.
- the read data buffer unit 703 is configured to temporarily save data of the read request. Because the message-based memory controller allows data of one request to be returned in a plurality of message packets, data in the read data buffer may be just part of the required data of the request and may be out of order.
- the read request state table records returned data blocks of each request and the corresponding data location in the read data buffer.
- the message-based memory controller has the function of timed returning of a request; therefore, even if all data of a request is temporarily saved in the read data buffer, the request may not be immediately returned.
- the read/write request reservation station unit 704 is the key unit for controlling and managing requests; the read/write request reservation station unit 704 consists of a read request state table and a write request state table.
- the request state table distributes a table entry for each newly received request. When a request is responded to by the buffer scheduler or the message-based memory controller sends a request respond to the CPU, the corresponding table entry in the request state table needs to be updated or deleted.
- An item number corresponds to a sequence number of a request in the request state table.
- the item number is used in the message packet of the message-based memory controller and the buffer scheduler to uniquely specify a request for processing.
- a request address is the base address of the memory to be accessed. Different from the fixed memory access request length of a conventional message-based memory controller, the message-based memory controller processes a lengthened request to improve the effectiveness of the memory bandwidth.
- a timed delay specifies the time for returning the request to the CPU and is mainly set through the controller configuration interface.
- a returning granularity specifies the length of data returned by the message-based memory controller to the CPU each time.
- a data state specifies required request data that has been obtained from the storage module and required request data that are not obtained.
- the data location specifies the location of obtained request data in the read data buffer.
- the request generating and scheduling component 705 is configured to generate a plurality of small requests according to request attributes in the request state table, such as the request length and the timed delay; and on the other hand, is configured to schedule requests, select the request to be processed among unprocessed requests in the read request state table and the write request state table, and send the selected request to the message packetizer 706.
- the message packetizer 706 is configured to package one or more requests into the message packet and send the message packet through the message channel interface to the buffer scheduler.
- the message unpacker 707 is configured to extract one or more requests from a message packet and parse the corresponding data content of each request.
- the request state update unit 708 is configured to update the state table of a request in the read/write request reservation station 704 and temporarily save the data in the read data buffer according to the request and the corresponding data obtained by parsing of by the message unpacker 707.
- the request response controller 709 is configured to send a request response to the CPU.
- the request response controller 709 mainly queries for the state of a request in the read/write request reservation station 704. After a request sent by the CPU is processed by the buffer scheduler and the storage module, the request response controller 709 sends a request response to the CPU. If a read request is processed, the request response controller 709 needs to send the corresponding data of the request in the read data buffer 703.
- the controller configuration interface 710 is configured to configure a parameter of the message-based memory controller or specified request attributes, such as a timed delay and the like. For configuration of a request or a memory access address, the corresponding value is updated in the attributes of the read/write request state table.
- the message channel interface 711 is configured to transmit message packets with the buffer scheduler. Based on a different physical implementation of the message channel, the message channel interface 711 has a corresponding interface type, such as a shared parallel bus interface or a point to point serial bus interface.
- FIG. 9 is a schematic structural diagram of the buffer scheduler in the storage module.
- the buffer scheduler includes a message channel interface 901, a message unpacker 902, a request distributor 903, read/write request queues 904, a special request queue 905, a timer 906, a state maintenance unit 907, a request scheduler 908, a command generating unit 909, a message packetizer 910, a data buffer 911, and a memory chip interface 912.
- the buffer scheduler may be an independent integrated circuit chip on the storage module, connected to the memory chip in the storage module.
- the buffer scheduler may also be a chip on the system main board, connected to a general storage module.
- the use of the buffer scheduler may be implemented in various hardware manners, such as an application-specific integrated circuit chip, a programmable logical device, and a field programmable gate array. Though the buffer scheduler described in the following is based on FIG. 9 , examples implemented in other manners may also be applicable, such as adding an additional module or combining certain functional units of the buffer scheduler.
- the message channel interface 901 is configured to transmit message packets with the message-based memory controller. Based on the physical implementation of the message channel, the message channel interface 901 has a corresponding interface type, such as a shared parallel bus interface or a point to point serial bus interface.
- the message unpacker 902 is configured to obtain various information from a received message packet, including a request serial number, a request type, request semantic information, an address, data, and the like. Different request types correspond to different message packet formats. After determining the request type, the message unpacker 902 performs the unpacking operation according to the corresponding rules.
- the request distributor 903 distributes memory access requests parsed by the message unpacker 902 into different request queues.
- the scheduling is based on the semantic information, required returning time, and an access data granularity, and other information of each request.
- the read/write request queues 904 are configured to save unprocessed read/write requests and include a plurality of queues with different priorities.
- a high-priority queue saves read/write requests whose access data is of a small granularity and required returning time is short or read/write requests marked with a high priority;
- a low-priority queue saves read/write requests whose access data is of a larger granularity and required returning time is long or read/write requests marked with a low priority.
- the special request queue 905 is configured to save unprocessed non-read/write requests, such as a logic operation, compression, move, and other operations on data.
- the timer 906 may output pulses at different time intervals as required and enables clock triggering for the request scheduler 908 and state maintenance unit 907 as required.
- the state maintenance unit 907 is configured to maintain the state of each memory chip connected to the buffer scheduler and issue a power-charging command, a refreshing command, and other commands when required.
- the request scheduler 908 obtains a memory access request from a request queue and forwards the request to the command generating unit 909; and obtains returned memory access data from the data buffer and forwards the data to the message packetizer 910. Besides forwarding requests and returned data, the request scheduler 908 performs a series of special operations as required. For example, memory access requests in a high-priority queue generally have a small memory access granularity, and, accordingly, the request scheduler 908 may label a plurality of requests with combination marks. As a result, when all returned data of the requests is saved into the data buffer, the data is forwarded to the message packetizer 910 for being packaged into one response packet. For a request with a large memory access data amount in a low-priority queue, the request scheduler 908 may divide the request processing into several steps and forward the processing result of each step to the message packetizer 910 for being packaged into one response packet and then returned back.
- the command generating unit 909 obtains a memory access request that needs to be immediately executed after being scheduled and converts the request into a specific command for accessing a memory chip. To maintain the state of a memory chip, the request scheduler 908 may require the command generating unit 909 to issue a command for maintaining the state of the memory chip.
- the message packetizer 910 obtains returned data and the corresponding request serial number from the request scheduler 908, generates a response packet, and sends the packet back to the message-based memory controller. According to the marks for the returned data made by the request scheduler 908, the message packetizer 910 allows a plurality of requests to be packaged into one response packet and sent to the message-based memory controller.
- the data buffer 911 saves the returned data about accessing a memory chip.
- the request scheduler 908 selects the required data and sends the data to the message packetizer 910.
- the memory chip interface 912 obtains a command for accessing a memory chip from the command generating unit 909, sends the command to the memory chip on the storage module, and after receiving returned data, saves the data in the data buffer 911.
- a message-based memory access method includes the following steps:
- Step 1001 A CPU issues a memory access request.
- the CPU may specify an access data length, a priority, and semantic information of the request.
- the request may be any other complex memory access request besides a read/write request, such as timing access, a simple arithmetic and logic operation, move, an atomic operation, compression, and the like.
- Step 1002 Determine whether the request includes information about the configuration of a message-based memory controller. If yes, go to step 1003; and if not, go to step 1004.
- Step 1003 If the request includes information about the configuration of the message-based memory controller, the message-based memory controller performs a proper adjustment according to the configuration information.
- Step 1004 The message-based memory controller packages the memory access request from the CPU into a message packet based on a certain format, which may include a plurality of requests based on certain rules, sends the message packet through a message channel to a buffer scheduler of a corresponding storage module, and makes a record in a read/write request reservation station based on requirements.
- a certain format which may include a plurality of requests based on certain rules
- Step 1005 The buffer scheduler receives and parses the message packet sent by the message-based memory controller, and fills the memory access request of the CPU into a proper request queue.
- Step 1006 The request scheduler in the buffer scheduler schedules a plurality of requests in the request queue according to the memory access request of the CPU priority and semantic information and arranges a sequence of request execution.
- Step 1007 Convert the scheduled CPU request The memory access request of the CPU into a series of commands that conform to a memory granularity standard (such as a DDR standard), and send the commands to a memory interface.
- a memory granularity standard such as a DDR standard
- Step 1008 Determine whether the memory access request of the CPU is a complex memory access request. If yes, go to step 1009; and if not, go to step 1011.
- Step 1009 If the memory access request of the CPU is a complex memory access request, a processing logic in the buffer scheduler simply processes the data returned by the memory (such as a simple arithmetic and logic operation, move, and the like).
- Step 1010 After the complex memory access instruction is processed, according to the type of the request, determine whether to write the processed data back into the memory and whether to return the process data to the CPU. If the processed data needs to be written back into the memory, use a series of commands that conform to the memory granularity standard (such as the DDR standard) to write the data into the memory; if the processed data needs to be returned to the CPU, package the data into a response packet and send the packet to the message-based memory controller.
- the memory granularity standard such as the DDR standard
- Step 1011 If the memory access request of the CPU is not a complex memory access request, determine whether the request is a write request. If yes, go to step 1015; and if not, go to step 1012.
- Step 1012 If the request from the CPU is a read request, package the read data into a response packet and send the packet to the message-based memory controller through the message channel.
- returned data of one request may be packaged into a plurality of response packets, and returned data of a plurality of requests may be packaged into one response packet.
- Step 1013 The message-based memory controller receives and parses the response packet and saves the data in the response packet into a cache or an internal addressable buffer of the message-based memory controller according to requirements.
- Step 1014 The message-based memory controller determines whether the response packet of the memory access request of the CPU is entirely returned. If yes, go to step 1015; and if not, go to step 1013.
- Step 1015 After the memory access request of the CPU is processed, if there is a record about the request in the read/write request reservation station of the message-based memory controller, clear the record.
- the processing procedure for a message-based memory controller to receive a memory access request is as follows:
- Step 1101 The message-based memory controller receives a read/write request sent by a CPU through a memory access request interface.
- Step 1102 A read/write request distributor 701 determines whether the request is a read request. If yes, go to step 1104; and if not, go to step 1103.
- Step 1103 If the received request is a write request, determine whether there is an empty item in a write request state table. If yes, go to step 1105; and if not, go to step 1102.
- Step 1104 If the received request is a read request, determine whether there is an empty item in a read request state table. If yes, go to step 1106; and if not, go to step 1102.
- Step 1105 If the received request is a write request and there is an empty item in the write request state table, distribute a table entry for the request and save the data in the write request into a write data buffer; otherwise, go to step 1102.
- Step 1106 If the received request is a read request and there is an empty item in the read request state table, distribute a table entry for the request; otherwise, go to step 1102.
- Step 1107 Stop receiving the request and continue to process requests received through a memory access request interface.
- the scheduling and processing a request by the message-based memory controller includes the following steps:
- Step 1201 A request generating and scheduling component 705 scans the table entries in a read/write request state table.
- Step 1202 The request generating and scheduling component 705 queries whether there is any request that is unprocessed and needs to be processed in the read/write request state table. If yes, go to step 1203; and if not, go to step 1201.
- Step 1203 If there is an unprocessed request, the request generating and scheduling component divides a big request into a plurality of small requests according to the request attributes in the corresponding request state table, and selects the next request to be processed according to the scheduling algorithm.
- Step 1204 Determine whether the request to be processed is a read request. If yes, go to step 1206; and if not, go to step 1205.
- Step 1205 If the request to be processed is a write request, obtain the corresponding data of the request from a write data buffer; otherwise, go to step 1206.
- Step 1206 The message packetizer 706 packages one or more requests into a message packet.
- Step 1207 Send the packaged message to a message channel interface between the message-based memory controller and a buffer scheduler, and then go to step 1201 for the next processing round.
- Step 1302 Parse header information of the response packet sent from the buffer scheduler to the message-based memory controller so as to obtain the number of responses in the header and the length of each response for parsing the responses one by one.
- Step 1304 Determine whether there is a next response that needs to be parsed. If yes, go to step 1306 to parse the next response; and if not, the response packet parsing ends.
- Step 1306 Parse the type and the request identifier of the next response. Responses are processed in different ways according to the request types in the following steps.
- Step 1308 Determine whether the response is a memory access read request response. If yes, go to step 1310 for further parsing; and if not, the response is a memory state query request response or a memory access write request response, and go to step 1312 to obtain the corresponding state information.
- Step 1310 Address the response according to the response length specified by the header and obtain the returned data from the memory access read request response.
- Step 1312 Address the response according to the response length specified by the header. If the response is a state query request response, obtain the returned state value from the response; if the response is a memory access write request response, update the request attributes in the write request state table. Then the response parsing ends. Go back to step 1304.
- Step 1314 Determine, according to whether the packet includes sub-responses, whether the memory access data of the read request is returned after being divided into a plurality of responses by the buffer scheduler. If the data is not divided into a plurality of responses, the memory access read request is processed, and go to step 1318; if the data is divided, parse the packet to obtain the number of the obtained sub-responses and identifier of the current sub-response, and then go to step 1316.
- Step 1316 Determine whether the current response is the last sub-response of the memory access read request according to whether the identifier of the current sub-response is equal to the number of sub-responses. If yes, the current memory access read request is processed, and go to step 1318; and if not, the current memory access read request is not processed yet, write the returned data of the current sub-response into the corresponding data buffer, the update data state, data location, and other information in the read request state table, and then go back to step 1304.
- Step 1318 After the current memory access read request is processed, prepare to transmit the data from the message-based memory controller back to the CPU, and then go back to step 1304.
- steps for sending a request response to a CPU by a message-based memory controller are as follows:
- Step 1401 The request response controller 709 scans the read/write request state table.
- Step 1402 Query whether there is any processed request in the write request state table. If yes, go to step 1404; and if not, go to step 1403.
- Step 1403 If there is no processed request item in the write request state table, query whether there is any processed request item in the read request state table. If yes, go to step 1404; and if not, go to step 1402.
- Step 1404 If there is a processed request in the write request state table or the read request state table, determine whether the processed request meets the requirements of the request attributes, such as a requirement of a timed delay. If yes, go to step 1405; and if not, go to step 1402.
- Step 1405 Send a response of the request that meet the requirements of all attributes.
- the data content of the response also needs to match the returning granularity and other attributes of the request.
- steps for scheduling a memory access request by the request scheduler 908 are as follows:
- Step 1510 The timer 906, according to a set condition, triggers the request scheduler 908 to prepare to start a new request scheduling process.
- Step 1520 Check whether the triggering condition is that chip state maintenance is requested. If yes, go to step 1530; and if not, go to step 1540.
- Step 1530 If the trigger condition is that chip state maintenance is required, issue the chip state maintenance command and go to step 1590.
- Step 1540 Check whether the triggering condition is that a special request queue needs to be processed. If yes, go to step 1550; and if not, go to step 1560.
- Step 1550 If the triggering condition is that a special request queue needs to be processed, read the request in the special request queue and convert into a series of read/write operations. Modify the request state in the queue or clear the request state after the request is processed. Go to step 1590.
- Step 1560 Check whether the triggering condition is that the read/write request queue with the highest priority needs to be processed. If yes, go to step 1570; and if not, go to step 1580.
- Step 1570 If the triggering condition is that the read/write request queue with the highest priority needs to be processed, clear all requests in the queue and label all read requests with combination marks. Go to step 1590.
- Step 1580 The triggering condition is that a read/write request queue that does not have the highest priority needs to be processed. Access the request in the request queue with the corresponding priority and generate the required read/write operation according to the current state of the read/write request. Modify the request state in the queue or clear the request state after the request is processed. Go to step 1590.
- Step 1590 The request scheduling process ends. Wait for the triggering of the next scheduling process by the timer.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
- This application claims priority to Chinese Patent Application No.
201210016351.2 - The present invention relates to the field of computer system design, and in particular, to a message-based memory access apparatus and an access method thereof.
- The memory system of a computer is one of the important elements that have an impact on the system structure and software performance. In the past decades, as the gap between processor performance and memory performance has become larger and larger, the memory system has been the bottleneck that restricts system performance. In recent years, along with the evolution of processors to multi-core and many-core structures, the access bandwidth problem of memory systems becomes more severe, which restricts the further development of the scope of multi-core processors.
- In the past years, the main approaches for improving an effective access bandwidth are to improve a bus frequency and to increase the number of data channels, that is, to increase a physical bandwidth. However, a synchronous-bus-based memory access structure has no big change in these years. An SDRAM (Synchronous Dynamic Random Access Memory, synchronous dynamic random access memory) appeared in the mid-1990s, then it was developed to SDR, DDR, DDR2, and DDR3, and now DDR4 is going to be issued. The SDRAM uses synchronous interfaces, and all requests need to wait for a fixed clock period to obtain responses. Since the SDRAM has been issued, the memory bus structure hardly has had any essential change. Basically, the SDRAM is developed based on the improvement of the bandwidth through consistent enhancement of an interface frequency.
- At present, attempts to change the memory structure have been made in an international scale. For example, in the RDRAM and XDR technologies of Rambus, a packet-based request/response protocol is used, and a serial memory bus that is relatively narrow but has a high data rate is used to transmit data packets. An advanced memory buffer (AWB, Advanced Memory Buffer) is added on the memory module (DIMM) of FB-DIMM of Intel to may be connected to memory controllers or AMBs on neighboring DIMMs through a high-speed serial channel. Similar all-data buffer is used in LRDIMM, DDR4, and other technologies to improve the quality of high frequency signals. However, these attempts just partially change the memory structure. To be specific, data transmission is converted from the parallel bus format to the packet format, but a synchronous access protocol is still required in terms of timing sequence.
- On one hand, the existing synchronous memory systems are mainly designed for ensuring that the delay of a single memory access is fixed and low. However, when a multi-core structure is used, the memory access delay actually includes two parts, waiting time in the memory access queue of a processor and a delay on a memory access channel. Apparently, a low delay on a memory access channel cannot ensure good overall memory access performance.
- On the other hand, the data granularity of conventional memory access is fixed and has a tendency of increase. This is for ensuring that more data is transmitted in one transmission period and the data read each time is basically of the length of the CPU Cache line. However, in an actual program, the actual granularity for each data access varies. For some application data accesses that are irregular with a low granularity, the fixed large data granularity for each access inevitably causes a waste; when a large amount of data needs to be read and written for some applications, the data access needs to be divided into a plurality of memory transactions, thereby increasing protocol overhead. These all cause a waste of a memory access bandwidth.
- To resolve the foregoing problem, this document provides a message-based memory access apparatus and an access method thereof.
- The purpose of the present invention is to improve the effective utilization rate of CPU memory channels and provides a message-based memory access apparatus and an access method thereof
- The present invention discloses a message-based memory access apparatus, including:
- a message-based command bus, configured to transmit a message-based memory access instruction generated by a CPU to instruct a memory system to perform a corresponding operation;
- a message-based memory controller, configured to package a CPU request into a message packet and send the packet to a storage module, and parse a message packet returned by the storage module and return data to the CPU;
- a message channel, configured to transmit a request message packet and a response message packet; and
- the storage module, including a buffer scheduler, and configured to receive a request packet from the message-based memory controller and process the corresponding request.
- The message-based command bus is further configured to specify a memory access length of a request, and the memory access length is greater than or less than the length of a register;
- requested data is returned to a cache, a CPU addressable buffer, or a register or register group without passing by a cache; and
- a request is attached with information about a data access priority for instructing scheduling of a memory access command in the message-based memory controller and the buffer scheduler, so as to provide a scheduling basis for a memory system.
- The message-based memory controller further includes:
- a memory access request interface, configured for request exchange between the CPU and the message-based memory controller;
- a read/write request reservation station, including a request state table, where the request state table consisting of two parts: a read request state table and a write request state table, configured to assign a table entry for each newly received request, wherein a corresponding table entry in the request state table needs to be updated or deleted when the buffer scheduler responds to a request or the message-based controller sends a request response to the CPU;
- a read/write request distributor, configured to control, according to a state of a read/write request reservation station, whether a memory access request received from the memory access request interface is inserted into the read request state table or the write request state table, where, if a write request is received, data to be written in a memory needs to be temporarily saved in a write data buffer; and
- the write data buffer, configured to temporarily save data of the write request;
- a read data buffer, configured to temporarily save data of the read request.
- The message-based memory controller further includes:
- a request generating and scheduling component, on one hand, configured to generate a plurality of small requests according to request attributes in the request state table, such as a request length and a timed delay; and on the other hand, configured to schedule requests, select a next request to be processed among unprocessed requests in the read request state table and the write request state table, and send the selected request to a message packetizer;
- the message packetizer, configured to package one or more requests into a message packet on the message channel and send the message packet through the message channel interface to the buffer scheduler;
- a message unpacker, configured to extract one or more requests from a message packet and parse corresponding data content of each request;
- a request state update unit, configured to update a state table of a request in the read/write request reservation station and temporarily save the data in the read data buffer according to the request and the corresponding data obtained by parsing of by the message unpacker;
- a request response controller, configured to send a request response to the CPU;
- a controller configuration interface, configured to configure a parameter of the message-based memory controller or specify attributes of a request, where corresponding values in the attributes in the read and write request state tables are updated after configuration of a request or a memory access address; and
- a message channel interface, configured to transmit message packets with the buffer scheduler, where based on a different physical implementation of a message channel, the message channel interface has a corresponding interface type.
- In the read/write request reservation station, an item number of the read request state table corresponds to a sequence number of a request in the request state table; the item number is used in a message packet of the message-based memory controller and the buffer scheduler to uniquely specify a request for processing; a request address is the base address of the memory to be accessed; a timed delay specifies the time for returning the request to the CPU and is mainly set through the controller configuration interface; a returning granularity consists of the length of data returned by the message-based memory controller to the CPU each time; a data state specifies required data that has been obtained from the storage module and required data that are not obtained; a data location specifies a location of obtained request data in the read data buffer.
- The request response controller is further configured to query for a state of a request in the read/write request reservation station, send a request response to the CPU after a CPU request is processed by the buffer scheduler and the storage module, and if a read request is processed, send corresponding data of the request in the read data buffer.
- Interaction between the message-based memory controller and the storage module is completed based on a message packet; each such message packet includes information about one or more memory access requests or responses; a request in the message packet has no synchronous timing sequence restriction but information about a maximum delay of returning the request.
- The message-based memory controller configuration interface unit provides special command address space for the massage-mode memory controller, allows configuration of attributes of the controller, allows settings of attributes of a memory access request, and issues a corresponding memory access command.
- The message-based memory access controller is further configured for the message-based memory access controller and command address space to support, by using a corresponding memory access command, that the memory access system periodically pushes data to the register or the addressable high-speed buffer, and that a simple arithmetic and logic operation and a move operation are performed in the memory system, where memory access atomicity is set, or the operations is performed in batches;
the read/write request reservation station provides a read request state table and a write request state table, where each request to be processed has a corresponding table entry in the read or write request state table, each table entry includes not only the address and length of the request but also the timed return delay, returning granularity, data state, and data location, and in a message packet, each request is determined by the unique item number in corresponding request state table;
the message-based memory controller not only allows a plurality of requests to be included in one message packet, but also allows each request to be divided and included in one or more message packets to be sent to the storage module; the message-based memory controller also allows the storage module to use one or more message packets to process one request; and
for the message-based memory controller, a plurality of message packets of a plurality of requests or one request is returned out of order. - The message-based memory controller is further used in the following situation: if message packets of a plurality of storage modules are used to respond to one read request, the data state in the corresponding read request state table of the request identifies the returned data and the unreturned data; and
data that is not completely returned is saved in the addressable buffer or the unaddressable buffer, where if the data is temporarily saved in the unaddressable buffer, the read request of the CPU is responded to and the requested data are sent to the CPU only after the requested data are completely returned; and if the data is temporarily saved in the addressable buffer, the CPU reads the returned data part. - The message packets include: a memory access read/write request packet, a special command request packet, a memory state query packet, and/or a response packet.
- The buffer scheduler in the storage module includes:
- a message channel interface, configured to transmit message packets with the message-based memory controller;
- a message unpacker, configured to obtain formation about a memory access request from a received message packet, where the information includes a request serial number, a request type, request semantic information, an address, and data, and the message unpacker performs the unpacking operation according to the corresponding rules after determining the request type;
- a request distributor, configured to distribute a memory access request parsed by the message unpacker into a request queue, where the scheduling depends on semantic information, required returning time, and granularity information of access data of each request;
- read/write request queues, configured to save unprocessed read/write requests and consists of queues with different priorities, where a high-priority queue saves read/write requests whose access data is of a small granularity and required returning time is short or read/write requests marked with a high priority; and a low-priority queue saves read/write requests whose access data is of a larger granularity and required returning time is long or read/write requests marked with a low priority;
- a special request queue, configured to save unprocessed non-read/write requests;
- a request scheduler, configured to obtain a memory access request from a request queue and forward the request to a command generating unit; and obtain returned memory access data from the data buffer and forward the data to a message packetizer;
- a command generating unit, configured to obtain a memory access request that needs to be immediately executed after being scheduled, and convert the request into a specific command for accessing a memory chip, and issue a command for maintaining the state of the memory chip as required by the request scheduler;
- a message packetizer, configured to obtain returned data and the corresponding request serial number from the request scheduler, generate a response packet, and send the packet back to the message-based memory controller, where, according to marks for the returned data made by the request scheduler, the message packetizer allows a plurality of requests to be packaged into one response packet and sent to the message-based memory controller;
- a data buffer, configured to save returned data about accessing a memory chip, from which the request scheduler selects the required data and sends the data to the message packetizer; and
- a memory chip interface, configured to receive a command for accessing a memory chip from the command generating unit, send the command to the memory chip on the storage module, and, after receiving returned data, save the data in the data buffer.
- The buffer scheduler in the storage module further includes:
- a timer, configured to output pulses at different time intervals as required and enable clock triggering for the request scheduler and a state maintenance unit as required; and
- the state maintenance unit, configured to maintain the state of each memory chip connected to the buffer scheduler and issue a power-charging command and/or a refreshing command.
- The request scheduler is further configured to complete operations for memory access requests in a high-priority queue according to request situations; the request scheduler labels a plurality of requests with combination marks; when all returned data of the requests is saved into the data buffer, the data is forwarded to the message packetizer for being packaged into one response packet; and for a request with a large memory access data amount in a low-priority queue, the request scheduler divides the request processing into several steps and forward the processing result of each step to the message packetizer for being packaged into one response packet and then returned back.
- The storage module is further used in the following situations: for a memory access request from the message-based memory controller, the storage module processes the request with a plurality of steps and returns a plurality of response packets; for a plurality of memory access requests from the message-based memory controller, the storage module processes all the requests and uses one response packet to respond all requests; and the storage module schedules a sequence for executing memory access requests from the message-based memory controller according to priorities of requests, semantic information of requests, and a state of a memory chip on the storage module.
- A memory unit of the storage module is a synchronous memory chip and/or a memory chip based on an asynchronous network connection.
- Special message-based memory access instructions supported by the buffer scheduler include: a timing push instruction, a simple arithmetic and logic operation in the memory system and a move instruction, and compression storage.
- The message channel is configured to transmit messages in message packets with a parallel bus, a point to point serial bus, or networks with other topological structures used.
- The present invention further discloses a message-based memory access method, including the following steps:
- Step 1001: A CPU issues a memory access request. The CPU specifies an access data length, a priority, and semantic information of the request. The request is any other complex memory access request besides a read/write request.
- Step 1002: Determine whether the request includes information about configuration of a message-based memory controller. If yes, go to
step 1003; and if not, go tostep 1004. - Step 1003: If the request includes information about the configuration of the message-based memory controller, the message-based memory controller performs a proper adjustment according to the configuration information and then schedules and processes the request.
- Step 1004: The message-based memory controller packages the memory access request from the CPU into a message packet, which includes a plurality of requests, sends the message packet through a message channel to a buffer scheduler of a corresponding storage module, and makes a record in a read/write request reservation station according to requirements.
- Step 1005: A buffer scheduler in the storage module parses the sent message packet, and performs an operation on the memory access request of the CPU.
- Step 1006: After the memory access request of the CPU is processed, if there is a record about the request in the read/write request reservation station of the message-based memory controller, clear the record.
- Before
step 1006, the following steps are further included: - Step 1007: If the memory access request of the CPU is a read request, package the read data into a response packet and send the packet to the message-based memory controller through the message channel. During the response packet packaging process, based on requirements, returned data of one request is packaged into a plurality of response packets, and returned data of a plurality of requests are packaged into one response packet.
- Step 1008: The message-based memory controller receives and parses the response packet and saves the data in the response packet into a cache or an internal addressable buffer of the message-based memory controller according to requirements.
- Step 1009: The message-based memory controller determines whether response packets for the CPU are all returned. If yes, go to
step 1006; and if not, go tostep 1008. - After
step 1005, the following steps are further included: - Step 1010: The buffer scheduler receives and parses the message packet sent by the message-based memory controller, and fills the memory access request of the CPU into a proper request queue.
- Step 1011: The request scheduler in the buffer scheduler schedules a plurality of requests in the request queue and arranges a request execution sequence according to the memory access request of the CPU priority and semantic information.
- Step 1012: Convert the scheduled CPU request into a series of commands that conform to a memory granularity standard, and send the commands to a memory interface.
- Step 1013: Determine whether the memory access request of the CPU is a complex memory access request. If yes, go to
step 1014; and if not, go to step 1016. - Step 1014: If the memory access request of the CPU is a complex memory access request, a processing logic in the buffer scheduler simply processes the data returned by the memory.
- Step 1015: After the complex memory access instruction is processed, according to the type of the request, determine whether to write the processed data back into the memory and whether to return the process data to the CPU. If the processed data needs to be written back into the memory, use a series of commands that conform to the memory granularity standard to write the data into the memory; if the processed data needs to be returned to the CPU, package the data into a response packet and send the packet to the message-based memory controller.
- Step 1016: If the memory access request of the CPU is not a complex memory access request, determine whether the request is a write request. If yes, go to
step 1006; and if not, go tostep 1007. -
Step 1004 further includes the following steps: - Step 1101: The message-based memory controller receives a read/write request sent by the CPU through a memory access request interface.
- Step 1102: A read/write request distributor determines whether the request is a read request. If yes, go to
step 1104; and if not, go tostep 1103. - Step 1103: If the received request is a write request, determine whether there is an empty item in a write request state table. If yes, go to
step 1105; and if not, go tostep 1102. - Step 1104: If the received request is a read request, determine whether there is an empty item in a read request state table. If yes, go to
step 1106; and if not, go tostep 1102. - Step 1105: If the received request is a write request and there is an empty item in the write request state table, distribute a table entry for the request and save the data in the write request into a write data buffer; otherwise, go to
step 1102. - Step 1106: If the received request is a read request and there is an empty item in the read request state table, distribute a table entry for the request; otherwise, go to
step 1102. - Step 1107: Stop receiving the request and continue to process requests received through a memory access request interface.
- The scheduling and processing a request by the message-based memory controller includes the following steps:
- Step 1201: A request generating and scheduling component scans the table entries in the read/write request state table.
- Step 1202: A request generating and scheduling component queries whether there is any request that is unprocessed and needs to be processed in the read/write request state table. If yes, go to
step 1203; and if not, go tostep 1201. - Step 1203: If there is an unprocessed request, the request generating and scheduling component divides a big request into a plurality of small requests according to the request attributes in the corresponding request state table, and selects the next request to be processed according to the scheduling algorithm.
- Step 1204: Determine whether the request to be processed is a read request. If yes, go to
step 1206; and if not, go tostep 1205. - Step 1205: If the request to be processed is a write request, obtain the corresponding data of the request from a write data buffer; otherwise, go to
step 1206. - Step 1206: A message packetizer packages one or more requests into a message packet.
- Step 1207: Send the packaged message to a message channel interface between the message-based memory controller and a buffer scheduler, and then go to step 1201 for the next processing round.
-
Step 1013 further includes the following steps: - Step 1301: Parse header information of the response packet sent from the buffer scheduler to the message-based memory controller so as to obtain the number of responses in the header and the length of each response for parsing the responses one by one in the following.
- Step 1302: Determine whether there is a next response that needs to be parsed. If yes, go to step 1303 to parse the next response; and if not, the response packet parsing ends.
- Step 1303: Parse the type and the request identifier of the next response. Responses are processed in different ways according to the request types in the following steps.
- Step 1304: Determine whether the response is a memory access read request response. If yes, go to step 135 for further parsing; and if not, the response is a memory state query request response or a memory access write request response, and then go to step 1306 to obtain the corresponding state information.
- Step 1305: Address the response according to the response length specified by the header and obtain the returned data from the memory access read request response.
- Step 1306: Address the response according to the response length specified by the header. If the response is a state query request response, obtain the returned state value from the response; if the response is a memory access write request response, update the request attributes in the write request state table. Then the response parsing ends. Go back to
step 1302. - Step 1307: Determine, according to whether the packet includes sub-responses, whether the memory access data of the read request is returned after being divided into a plurality of responses by the buffer scheduler. If the data is not divided into a plurality of responses, go to step 1309 to process the memory access read request; and if the data is divided, parse the packet to obtain the number of obtained sub-responses and the identifier of the current sub-response, and then go to
step 1308. - Step 1308: Determine whether the current response is the last sub-response of the memory access read request according to whether the identifier of the current sub-response is equal to the number of sub-responses. If yes, go to step 1309 to process the current memory access read request; and if not, the current memory access read request is not processed yet, write the returned data of the current sub-response into the corresponding data buffer, the update data state, data location, and other information in the read request state table, and then go back to
step 1302. - Step 1309: Process the current memory access read request, prepare to transmit the data from the message-based memory controller back to the CPU, and then go back to
step 1302. -
Step 1006 further includes the following steps: - Step 1401: A request response controller scans the read and write request state tables.
- Step 1402: Query whether there is any processed request in the write request state table. If yes, go to
step 1404; and if not, go tostep 1403. - Step 1403: If there is no processed request item in the write request state table, query whether there is any processed request item in the read request state table. If yes, go to
step 1404; and if not, go tostep 1402. - Step 1404: If there is a processed request in the write request state table or the read request state table, determine whether the processed request meets requirements of request attributes. If yes, go to
step 1405; and if not, go tostep 1402. - Step 1405: Send a response of the request that meet the requirements of all attributes. The data content of the response also needs to match the returning granularity and other attributes of the request.
-
Step 1011 further includes the following steps: - Step 1501: A timer triggers, according to a set condition, the request scheduler to prepare to start a new request scheduling process.
- Step 1502: Check whether the triggering condition is that chip state maintenance is requested. If yes, go to step 1503; and if not, go to step 1504.
- Step 1503: The triggering condition of the timer is that chip state maintenance is required. Issue a chip state maintenance command, and go to step 1509.
- Step 1504: Check whether the triggering condition is that a special request queue needs to be processed. If yes, go to step 1505; and if not, go to step 1506.
- Step 1505: The triggering condition is that a special request queue needs to be processed. Read the request in the special request queue and convert the request into a series of read/write operations. Modify the request state in the queue or clear the request state after the request is processed. Go to step 1509.
- Step 1506: Check whether the triggering condition is that the read/write request queue with the highest priority needs to be processed. If yes, go to step 1507; and if not, go to step 1508.
- Step 1507: The triggering condition is that the read/write request queue with the highest priority needs to be processed. Clear all requests in the queue and label all read requests with combination marks. Go to step 1509.
- Step 1508: The triggering condition is that a read/write request queue that does not have the highest priority needs to be processed. Access the request in the request queue with the corresponding priority and generate the required read/write operation according to the current state of the read/write request. Modify the request state in the queue or clear the request state after the request is processed. Go to step 1509.
- Step 1509: The request scheduling process ends. Wait for the triggering of the next scheduling process by the timer.
- The beneficial effect in the present invention is: the conventional synchronous bus transaction is replaced by asynchronous request messages and response messages by changing the original synchronous memory access structure; this improves the concurrency and flexibility of a memory access structure and an application memory access interface, thereby improving the utilization rate of a CPU memory channel.
-
-
FIG. 1 is an overall structural diagram of a message-based memory access apparatus according to the present invention; -
FIG. 2 is a format chart of a message packet transmitted between a message-based memory controller and a storage module according to the present invention; -
FIG. 3 is a format chart of a header of a message packet according to the present invention; -
FIG. 4 is a format chart of a memory access read/write request packet according to the present invention; -
FIG. 5 is a format chart of a state query request packet according to the present invention; -
FIG. 6 is a format chart of a response packet according to the present invention; -
FIG. 7 is a schematic structural diagram of a message-based memory controller according to the present invention; -
FIG. 8 is a format chart of table entries in a read request state table of a message-based memory controller according to the present invention; -
FIG. 9 is a schematic structural diagram of a buffer scheduler in a storage module according to the present invention; -
FIG. 10 is a flowchart of a message-based memory access method according to the present invention; -
FIG. 11 is a flowchart of receiving a memory access request by a message-based memory controller according to the present invention; -
FIG. 12 is a flowchart of scheduling and processing a memory access request by a message-based memory controller according to the present invention; -
FIG. 13 is a flowchart of receiving and processing a response packet by a message-based memory controller according to the present invention; -
FIG. 14 is a flowchart of responding a request to the CPU by a message-based memory controller according to the present invention; and -
FIG. 15 is a flowchart of scheduling a memory access request by a buffer scheduler according to the present invention. - The specific implementation manners of the present invention are hereinafter described in detail with reference to the accompanying drawings.
- The purpose of the present invention is to improve the effective utilization rate of CPU memory channels and provides a message-based memory access apparatus.
- The starting point of the present invention is that a valid bandwidth may be increased by improving a utilization rate even though a physical bandwidth is restricted. However, a conventional memory system uses a passive synchronous sequence memory access structure with a fixed delay and fixed granularity, which restricts the application of possible effective technical approaches.
- The present invention studies a new structure that is based on "message" (message) based. The conventional synchronous bus transaction is replaced by asynchronous and concurrent request messages and response messages by changing the original synchronous memory access structure. This improves the flexibility of a memory access structure and an application memory access interface, thereby improving the utilization rate of a CPU memory channel.
- The present invention provides a message-based memory access apparatus, including:
- a message-based command bus, configured to transmit a message-based memory access instruction generated by a CPU to instruct a memory system to perform a corresponding operation;
- a message-based memory controller, configured to package a CPU request into a message packet and send the packet to a storage module, and parse a message packet returned by the storage module and return data to the CPU;
- a message channel, configured to transmit a request message packet and a response message packet; and
- the storage module, including a buffer scheduler, and configured to receive a request packet from the message-based memory controller and process the corresponding request.
- The message-based command bus may specify a memory access length of a request, and the memory access length may be greater than or less than the length of a register.
- For the message-based command bus, the requested data may be returned to a cache, an addressable buffer of the CPU, or a register or register group without passing by a cache.
- For the message-based command bus, a request may be attached with information about a data access priority for instructing scheduling of a memory access command in the message-based memory controller and the buffer scheduler, so as to provide a scheduling basis for the memory system.
- Interaction between the message-based memory controller and the storage module is completed based on a message packet. Each message packet is allowed to include the information or data of one or more memory access requests; a request in a message packet has no synchronous timing sequence restriction, but the request may include the maximum delay of returning the request and other information.
- For the message-based memory controller, the controller configuration interface unit provides special command address space for the message-based memory controller, allows configuration of attributes of the controller and setting of attributes of a memory access request, such as the setting of timed return delay and granularity of a memory access request, and allows a special memory access command to be issued.
- The message-based memory access controller and command address space, by using a special command, may support that the memory access system periodically pushes data to the register or the addressable high-speed buffer, and that a simple arithmetic and logic operation and a move operation are performed in the memory system, where memory access atomicity may be set, or the operations may be performed in batches.
- For the message-based memory controller, the read/write request reservation station provides a read request state table and a write request state table. Each request to be processed has a corresponding table entry in the read request state table or write request state table. Each table entry includes not only the address and length of the request but also the timed return delay, returning granularity, data state, and data location, and other additive attributes of the request. In a message packet, each request is determined by the unique item number in corresponding request state table.
- For the message-based memory controller, the message-based memory controller not only allows a plurality of requests to be included in one message packet, but also allows each request to be divided and included in one or more message packets to be sent to the storage module; the message-based memory controller also allows the storage module to use one or more response information packets to process one request.
- For the message-based memory controller, a plurality of response message packets of a plurality of requests or one request may be returned out of order.
- For the message-based memory controller, if message packets of a plurality of storage modules are used to respond to one read request, the data state in the corresponding read request state table of the request identifies the returned data and the unreturned data. Data that is not completely returned may be saved in the addressable buffer or the unaddressable buffer. If the data is temporarily saved in the unaddressable buffer, the read request of the CPU is responded to and the requested data are sent to the CPU only after the requested data are completely returned; and if the data is temporarily saved in the addressable buffer, the CPU can read the returned data without waiting all data to be returned.
- The message packet may include memory access semantic information, including but not limited to thread information, object information, and priority information.
- For the message channel, data is transmitted in message packets with a parallel bus, a point to point serial bus, or networks with other topological structures used.
- For the storage module including a buffer scheduler, a memory access request sent by a message-based memory controller may be processed with a plurality of steps, and the request may be responded to with a plurality of message packets.
- For the storage module including a buffer scheduler, memory access requests sent by a plurality of message-based memory controllers may be responded to with only one message packet after the requests are processed.
- The storage module including a buffer scheduler may schedule the execution sequence of memory access requests sent by the message-based memory controller, based on priorities of requests, semantic information of requests, and a state of a memory chip on the storage module.
- For the storage module including a buffer scheduler, the buffer scheduler supports special message-based memory access instructions except load/store, including but not limited to a timing push instruction, a simple arithmetic and logic operation in the memory system and a move instruction (supporting an atomic operation and batch processing), and compression storage.
- For the storage module including a buffer scheduler, a memory unit in the storage module may be either a synchronous memory chip or a memory chip based on an asynchronous network connection.
- To make the objectives, technical solutions, and advantages of the present invention more clearly, the following further describes the message-based memory access apparatus and the message-based memory access method of the present invention with reference to the accompanying drawings and the embodiments of the present invention. It should be understood that the specific embodiments herein are merely intended for describing the present invention rather than limiting the present invention.
- As shown in
FIG. 1 , the message-based memory access apparatus includes a message-basedcommand bus 110, a message-basedmemory controller 120, amessage channel 130, and astorage module 140 including a buffer scheduler; these functional units perform memory access of a CPU by using a message packet; a controllable delay and a variable granularity are achieved, and message-based memory access of semantic information is supported. - A memory access instruction or an access to the special command address space for a CPU is converted into a message-based memory access request on the message-based
command bus 110. Compared with conventional Load and Store memory access instructions, the message-based memory access apparatus allows the CPU to specify the size and speed of a memory access data granularity, data returning timing and manner, and other semantic information. - The message-based
memory controller 120 schedules received memory access requests, converts the requests into request packets, places the packets on themessage channel 130, and maintains the states of all memory access requests that are being processed. When parsing response packets returned on themessage channel 130, the message-basedmemory controller 120 unpacks the response packets to obtain the returned data of the memory access requests. - The
storage module 140 receives and processes request packets on themessage channel 130 through the buffer scheduler, parses the requests, and accesses the specific memory ship, packages data that needs to be returned into response packets, and sends the response packets to the message-basedmemory controller 120. - The message-based
command bus 110 mainly supports the following three types of message-based memory access instructions: - 1. A message-based memory load and store instruction, which is obtained by adding granularity and priority parameters for a common memory load and store instruction. The CPU first sets the memory access data size and access priority at the specified location in the special command address space, and then executes a message-based memory load and store instruction. That is, data of the specified length may be taken out from the memory and saved in the cache based on the required priority.
- 2. A timed return instruction, allowing the memory system to return data of an array specified by the instruction to a specified register at a regular interval in a subsequent period of time. The CPU first sets the time interval and the return times of memory access at the specified location in the special command address space, and then executes a timed return instruction. During the execution of the instruction, the message-based memory controller or the buffer scheduler generates a required read command periodically, and inserts the command into the command queue or the request queue. Data returned by the memory system is directly sent into the register without passing by the cache. Compared with prefetching, timed return reduces buffer occupation.
- 3. A simple arithmetic logic operation and a copy instruction in the memory system, supporting atomicity and batch processing. With this instruction, the memory system may perform some simple arithmetic logic operations (addition, subtraction, AND, OR, XOR, and others, where operation results written into a memory unit) and some copying operations on the memory unit without using the CPU. This instruction supports batch processing. It is needed to set parameters of the instruction, such as the type of the operation that the memory system will execute, whether it is an atomic operation, and operation times of batch processing, at the specified location in the special command address space, and then, execute the instruction MOP R1, R2, R3. In the instruction, R1 and R2 store the source operand address, and R3 stores the destination operand address. During the execution of this instruction, the buffer scheduler or the message-based memory controller executes the operations and copying, ensures the atomicity of the operations, and controls the operation times. Simple operations do not require data to be moved to the CPU, thereby reducing a total memory access amount.
- The message-based
memory controller 120 and thestorage module 140 communicate with each other by using message packets. The supported types of message packets include a memory access read/write request packet, a special command request packet, a memory state query packet, and a response packet. As shown inFIG. 2 , amessage packet 200 includes oneheader 202, and one or more memory access requests orresponses header 202 specifies metadata of the message packet, such as a packet type, the number of requests, a length of each request, a length of the packet, fault-tolerant information, and others. A memory access read/write request packet sent from the message-based memory controller to the storage module may include one or more memory access read/write requests. Each memory access request including 202, 204, or 206 includes a request identifier, a memory access address, a memory access granularity, and a memory access operation, and may further include some semantic information; besides, a write request further includes data. A response packet sent from storage module to the message-based memory controller may include one or more responses, and each response packet includes a request identifier, returned data, and others. - Each message packet must include a
header 300. As shown inFIG. 3 , header information includes: apacket type 302, asource module identifier 304, atarget module identifier 306, thenumber 308 of included requests/responses, alength packet length 316, and fault-tolerant information 318 of the entire packet. Thepacket type 302 specifies types of packets on a bus. The supported packet types include a memory access read/write request packet, a special command request packet, a memory state query packet, and a response packet. Thesource module identifier 304 specifies a number of a module (the message-based memory controller or storage module) that sends the message packet. For example, for a system that includes a plurality of message-based memory controller, thesource module identifier 304 may specify the identifier of the message-based memory controller that sends a memory access read/write request. Thetarget module identifier 306 specifies a number of a module (the message-based memory controller or storage module) that receives and processes the message packet. Thenumber 308 of included requests/responses specifies the number of requests or responses included in the message packet. It should be noted that the included requests must match the packet type. For example, if the packet type is a memory access read request packet, the requests in the message packet must all be memory access read requests. Thelength packet length 316 specifies the length of the entire message packet. The fault-tolerant information 318 of the entire packet specifies whether an error occurs in the transmission process of the message packet on the bus, including but not limited to using parity check (Parity), checksum (Checksum), error-correcting code (ECC), and other fault-tolerant technologies. - A memory access read/write request packet is used by the message-based memory controller to send one or more memory access read/
write requests 400 to the storage module. Besides a header, as shown inFIG. 4 , each memory access read/write request 400 includes arequest identifier 402, anoperation code 404, amemory access address 406, and amemory access granularity 408, and may further includesemantic information 410; besides, a memory access write request further includesdata 412. Therequest identifier 402 is the unique identifier distributed by the message-based memory controller for each request. Theoperation code 404 specifies a memory request operation, such as a read request or a write request. Thememory access address 406 specifies the base physical address of a memory access request. Thememory access granularity 408 specifies the granularity (or length) of data of a memory access request, such as the small granularity 8 B or larger granularity 4 KB. Thesemantic information 410 specifies program-running information that the CPU sends to the storage module through the message-based memory controller and is used to instruct the scheduling of the buffer scheduler in the storage module, such as the priority of a memory access request, the timeout (Timeout) of processing a memory access request, core identifier (Core ID) of the CPU sending the memory access request, and others. Thedata 412, which is further included in a memory access write request, specifies the data that will be written into the specified physical address. - A special command request packet is used for the message-based memory controller to send special processed commands to the storage module, such as a simple arithmetic and logic operation, move, atomic operation, compression, and the like.
- A memory state query packet is used for the message-based memory controller to query for various types of state information on the storage module. Each memory state query packet includes only one query request. Therefore, the number of requests in the request header is always set to 1. As shown in
FIG. 5 , eachstate query request 500 includes astate query type 502 and astate query identifier 504. Thestate query type 502 specifies the type of the queried storage module state, such as whether the read/write request queue is full, whether the special request queue is full, whether the memory chip is in low power consumption state, and the like. Thestate query identifier 504 is the state query request identifier distributed by the message-based memory controller and is used to address the state query request after the message-based memory controller receives a response from the storage module. - A response packet is used for the storage module to send one or more returned responses to the message-based memory controller. Besides a header, as shown in
FIG. 6 , eachresponse 600 includes aresponse type 602 and arequest identifier 604, and may further include thenumber 606 of sub-responses, asub-response identifier 608,data 610, or astate value 612. Theresponse type 602 specifies corresponding responses returned for different types of requests, such as a memory access read request response, a state query request response, and others. Therequest identifier 604 is a corresponding request identifier of a response, such as a memory access read request identifier or a state query request identifier. For a memory access read request response, if data of a larger granularity is requested, the storage module may divide data of one single request into a plurality of sub-responses when returning a response, and the sub-responses may be packaged into one response packet for return or be packaged into a plurality of response packets and returned separately. In this case, thenumber 606 of sub-responses specifies the number of sub-responses, and thesub-response identifier 608 specifies the identifier of the currently returned sub-response. After the message-based memory controller obtains a specified number of sub-responses from one or more response packets, the memory access read request is processed. A memory access read request response further includesdata 610 read from the storage module into the message-based memory controller. A state query request response further includes a returnedstate value 612 corresponding to the memory, such as that a read/write request queue is full. - As shown in
FIG. 7 , the message-based memory controller includes a memoryaccess request interface 700, a read/writerequest distributor unit 701, a writedata buffer unit 702, a readdata buffer unit 703, a read/writerequest reservation station 704, a request generating andscheduling component 705, amessage packetizer 706, amessage unpacker 707, a requeststate update unit 708, arequest response controller 709, acontroller configuration interface 710, and amessage channel interface 711. The message-based memory controller implemented by the units uses message packets to perform interaction with the buffer scheduler and the storage module unit to complete the processing of requests; the message-based memory controller supports the processing of memory access requests with a variable granularity and restricted returning timing. In addition, the message-based memory controller allows data of one read request to be returned in a plurality of message packets in an out-of-order manner. This may improve the utilization rate of a memory bandwidth. - The memory
access request interface 700 is the request exchange interface between the CPU and the message-based memory controller; this interface is used for the CPU to send a memory access request to the message-based memory controller and is also used for the message-based memory controller to send a memory access request response to the CPU; besides, this interface may also transmit a command for configuring a message-based memory controller. - The read/write
request distributor unit 701, according to a state of the read/write request reservation station, such as the number of memory access requests that the remaining space of the message-based memory controller can contain, controls whether a memory access request received from the memory access request interface may be inserted in the read request state table or the write request state table, as shown inFIG. 8 . If a write request is received, data to be written into the memory needs to be temporarily saved in the writedata buffer unit 702. - The write
data buffer unit 702 is configured to temporarily save data of the write request. When the write request is scheduled, data corresponding to this request needs to be filled into a message packet and sent to the buffer scheduler. - The read
data buffer unit 703 is configured to temporarily save data of the read request. Because the message-based memory controller allows data of one request to be returned in a plurality of message packets, data in the read data buffer may be just part of the required data of the request and may be out of order. The read request state table records returned data blocks of each request and the corresponding data location in the read data buffer. In addition, the message-based memory controller has the function of timed returning of a request; therefore, even if all data of a request is temporarily saved in the read data buffer, the request may not be immediately returned. - The read/write request
reservation station unit 704 is the key unit for controlling and managing requests; the read/write requestreservation station unit 704 consists of a read request state table and a write request state table. The request state table distributes a table entry for each newly received request. When a request is responded to by the buffer scheduler or the message-based memory controller sends a request respond to the CPU, the corresponding table entry in the request state table needs to be updated or deleted. - Table entries in the read request state table are shown in
FIG. 8 . An item number corresponds to a sequence number of a request in the request state table. The item number is used in the message packet of the message-based memory controller and the buffer scheduler to uniquely specify a request for processing. A request address is the base address of the memory to be accessed. Different from the fixed memory access request length of a conventional message-based memory controller, the message-based memory controller processes a lengthened request to improve the effectiveness of the memory bandwidth. A timed delay specifies the time for returning the request to the CPU and is mainly set through the controller configuration interface. A returning granularity specifies the length of data returned by the message-based memory controller to the CPU each time. A data state specifies required request data that has been obtained from the storage module and required request data that are not obtained. The data location specifies the location of obtained request data in the read data buffer. - The request generating and
scheduling component 705, on one hand, is configured to generate a plurality of small requests according to request attributes in the request state table, such as the request length and the timed delay; and on the other hand, is configured to schedule requests, select the request to be processed among unprocessed requests in the read request state table and the write request state table, and send the selected request to themessage packetizer 706. - The message packetizer 706 is configured to package one or more requests into the message packet and send the message packet through the message channel interface to the buffer scheduler.
- The message unpacker 707 is configured to extract one or more requests from a message packet and parse the corresponding data content of each request.
- The request
state update unit 708 is configured to update the state table of a request in the read/writerequest reservation station 704 and temporarily save the data in the read data buffer according to the request and the corresponding data obtained by parsing of by themessage unpacker 707. - The
request response controller 709 is configured to send a request response to the CPU. Therequest response controller 709 mainly queries for the state of a request in the read/writerequest reservation station 704. After a request sent by the CPU is processed by the buffer scheduler and the storage module, therequest response controller 709 sends a request response to the CPU. If a read request is processed, therequest response controller 709 needs to send the corresponding data of the request in the readdata buffer 703. - The
controller configuration interface 710 is configured to configure a parameter of the message-based memory controller or specified request attributes, such as a timed delay and the like. For configuration of a request or a memory access address, the corresponding value is updated in the attributes of the read/write request state table. - The
message channel interface 711 is configured to transmit message packets with the buffer scheduler. Based on a different physical implementation of the message channel, themessage channel interface 711 has a corresponding interface type, such as a shared parallel bus interface or a point to point serial bus interface. -
FIG. 9 is a schematic structural diagram of the buffer scheduler in the storage module. As shown inFIG. 9 , the buffer scheduler includes amessage channel interface 901, amessage unpacker 902, arequest distributor 903, read/writerequest queues 904, aspecial request queue 905, atimer 906, astate maintenance unit 907, arequest scheduler 908, acommand generating unit 909, amessage packetizer 910, adata buffer 911, and amemory chip interface 912. - The buffer scheduler may be an independent integrated circuit chip on the storage module, connected to the memory chip in the storage module. The buffer scheduler may also be a chip on the system main board, connected to a general storage module. The use of the buffer scheduler may be implemented in various hardware manners, such as an application-specific integrated circuit chip, a programmable logical device, and a field programmable gate array. Though the buffer scheduler described in the following is based on
FIG. 9 , examples implemented in other manners may also be applicable, such as adding an additional module or combining certain functional units of the buffer scheduler. - The
message channel interface 901 is configured to transmit message packets with the message-based memory controller. Based on the physical implementation of the message channel, themessage channel interface 901 has a corresponding interface type, such as a shared parallel bus interface or a point to point serial bus interface. - The message unpacker 902 is configured to obtain various information from a received message packet, including a request serial number, a request type, request semantic information, an address, data, and the like. Different request types correspond to different message packet formats. After determining the request type, the
message unpacker 902 performs the unpacking operation according to the corresponding rules. - The
request distributor 903 distributes memory access requests parsed by themessage unpacker 902 into different request queues. The scheduling is based on the semantic information, required returning time, and an access data granularity, and other information of each request. - The read/
write request queues 904 are configured to save unprocessed read/write requests and include a plurality of queues with different priorities. A high-priority queue saves read/write requests whose access data is of a small granularity and required returning time is short or read/write requests marked with a high priority; a low-priority queue saves read/write requests whose access data is of a larger granularity and required returning time is long or read/write requests marked with a low priority. - The
special request queue 905 is configured to save unprocessed non-read/write requests, such as a logic operation, compression, move, and other operations on data. - The
timer 906 may output pulses at different time intervals as required and enables clock triggering for therequest scheduler 908 andstate maintenance unit 907 as required. - The
state maintenance unit 907 is configured to maintain the state of each memory chip connected to the buffer scheduler and issue a power-charging command, a refreshing command, and other commands when required. - The
request scheduler 908 obtains a memory access request from a request queue and forwards the request to thecommand generating unit 909; and obtains returned memory access data from the data buffer and forwards the data to themessage packetizer 910. Besides forwarding requests and returned data, therequest scheduler 908 performs a series of special operations as required. For example, memory access requests in a high-priority queue generally have a small memory access granularity, and, accordingly, therequest scheduler 908 may label a plurality of requests with combination marks. As a result, when all returned data of the requests is saved into the data buffer, the data is forwarded to themessage packetizer 910 for being packaged into one response packet. For a request with a large memory access data amount in a low-priority queue, therequest scheduler 908 may divide the request processing into several steps and forward the processing result of each step to themessage packetizer 910 for being packaged into one response packet and then returned back. - The
command generating unit 909 obtains a memory access request that needs to be immediately executed after being scheduled and converts the request into a specific command for accessing a memory chip. To maintain the state of a memory chip, therequest scheduler 908 may require thecommand generating unit 909 to issue a command for maintaining the state of the memory chip. - The message packetizer 910 obtains returned data and the corresponding request serial number from the
request scheduler 908, generates a response packet, and sends the packet back to the message-based memory controller. According to the marks for the returned data made by therequest scheduler 908, themessage packetizer 910 allows a plurality of requests to be packaged into one response packet and sent to the message-based memory controller. - The
data buffer 911 saves the returned data about accessing a memory chip. Therequest scheduler 908 selects the required data and sends the data to themessage packetizer 910. - The
memory chip interface 912 obtains a command for accessing a memory chip from thecommand generating unit 909, sends the command to the memory chip on the storage module, and after receiving returned data, saves the data in thedata buffer 911. - As shown in
FIG. 10 , a message-based memory access method includes the following steps: - Step 1001: A CPU issues a memory access request. The CPU may specify an access data length, a priority, and semantic information of the request. The request may be any other complex memory access request besides a read/write request, such as timing access, a simple arithmetic and logic operation, move, an atomic operation, compression, and the like.
- Step 1002: Determine whether the request includes information about the configuration of a message-based memory controller. If yes, go to
step 1003; and if not, go tostep 1004. - Step 1003: If the request includes information about the configuration of the message-based memory controller, the message-based memory controller performs a proper adjustment according to the configuration information.
- Step 1004: The message-based memory controller packages the memory access request from the CPU into a message packet based on a certain format, which may include a plurality of requests based on certain rules, sends the message packet through a message channel to a buffer scheduler of a corresponding storage module, and makes a record in a read/write request reservation station based on requirements.
- Step 1005: The buffer scheduler receives and parses the message packet sent by the message-based memory controller, and fills the memory access request of the CPU into a proper request queue.
- Step 1006: The request scheduler in the buffer scheduler schedules a plurality of requests in the request queue according to the memory access request of the CPU priority and semantic information and arranges a sequence of request execution.
- Step 1007: Convert the scheduled CPU request The memory access request of the CPU into a series of commands that conform to a memory granularity standard (such as a DDR standard), and send the commands to a memory interface.
- Step 1008: Determine whether the memory access request of the CPU is a complex memory access request. If yes, go to
step 1009; and if not, go tostep 1011. - Step 1009: If the memory access request of the CPU is a complex memory access request, a processing logic in the buffer scheduler simply processes the data returned by the memory (such as a simple arithmetic and logic operation, move, and the like).
- Step 1010: After the complex memory access instruction is processed, according to the type of the request, determine whether to write the processed data back into the memory and whether to return the process data to the CPU. If the processed data needs to be written back into the memory, use a series of commands that conform to the memory granularity standard (such as the DDR standard) to write the data into the memory; if the processed data needs to be returned to the CPU, package the data into a response packet and send the packet to the message-based memory controller.
- Step 1011: If the memory access request of the CPU is not a complex memory access request, determine whether the request is a write request. If yes, go to
step 1015; and if not, go tostep 1012. - Step 1012: If the request from the CPU is a read request, package the read data into a response packet and send the packet to the message-based memory controller through the message channel. During the response packet packaging process, based on requirements, returned data of one request may be packaged into a plurality of response packets, and returned data of a plurality of requests may be packaged into one response packet.
- Step 1013: The message-based memory controller receives and parses the response packet and saves the data in the response packet into a cache or an internal addressable buffer of the message-based memory controller according to requirements.
- Step 1014: The message-based memory controller determines whether the response packet of the memory access request of the CPU is entirely returned. If yes, go to
step 1015; and if not, go tostep 1013. - Step 1015: After the memory access request of the CPU is processed, if there is a record about the request in the read/write request reservation station of the message-based memory controller, clear the record.
- As shown in
FIG. 11 , the processing procedure for a message-based memory controller to receive a memory access request is as follows: - Step 1101: The message-based memory controller receives a read/write request sent by a CPU through a memory access request interface.
- Step 1102: A read/
write request distributor 701 determines whether the request is a read request. If yes, go tostep 1104; and if not, go tostep 1103. - Step 1103: If the received request is a write request, determine whether there is an empty item in a write request state table. If yes, go to
step 1105; and if not, go tostep 1102. - Step 1104: If the received request is a read request, determine whether there is an empty item in a read request state table. If yes, go to
step 1106; and if not, go tostep 1102. - Step 1105: If the received request is a write request and there is an empty item in the write request state table, distribute a table entry for the request and save the data in the write request into a write data buffer; otherwise, go to
step 1102. - Step 1106: If the received request is a read request and there is an empty item in the read request state table, distribute a table entry for the request; otherwise, go to
step 1102. - Step 1107: Stop receiving the request and continue to process requests received through a memory access request interface.
- As shown in
FIG. 12 , the scheduling and processing a request by the message-based memory controller includes the following steps: - Step 1201: A request generating and
scheduling component 705 scans the table entries in a read/write request state table. - Step 1202: The request generating and
scheduling component 705 queries whether there is any request that is unprocessed and needs to be processed in the read/write request state table. If yes, go tostep 1203; and if not, go tostep 1201. - Step 1203: If there is an unprocessed request, the request generating and scheduling component divides a big request into a plurality of small requests according to the request attributes in the corresponding request state table, and selects the next request to be processed according to the scheduling algorithm.
- Step 1204: Determine whether the request to be processed is a read request. If yes, go to
step 1206; and if not, go tostep 1205. - Step 1205: If the request to be processed is a write request, obtain the corresponding data of the request from a write data buffer; otherwise, go to
step 1206. - Step 1206: The message packetizer 706 packages one or more requests into a message packet.
- Step 1207: Send the packaged message to a message channel interface between the message-based memory controller and a buffer scheduler, and then go to step 1201 for the next processing round.
- As shown in
FIG. 13 , after the message-based memory controller receives the message packet from the buffer scheduler, the following steps are performed: - Step 1302: Parse header information of the response packet sent from the buffer scheduler to the message-based memory controller so as to obtain the number of responses in the header and the length of each response for parsing the responses one by one.
- Step 1304: Determine whether there is a next response that needs to be parsed. If yes, go to step 1306 to parse the next response; and if not, the response packet parsing ends.
- Step 1306: Parse the type and the request identifier of the next response. Responses are processed in different ways according to the request types in the following steps.
- Step 1308: Determine whether the response is a memory access read request response. If yes, go to step 1310 for further parsing; and if not, the response is a memory state query request response or a memory access write request response, and go to step 1312 to obtain the corresponding state information.
- Step 1310: Address the response according to the response length specified by the header and obtain the returned data from the memory access read request response.
- Step 1312: Address the response according to the response length specified by the header. If the response is a state query request response, obtain the returned state value from the response; if the response is a memory access write request response, update the request attributes in the write request state table. Then the response parsing ends. Go back to
step 1304. - Step 1314: Determine, according to whether the packet includes sub-responses, whether the memory access data of the read request is returned after being divided into a plurality of responses by the buffer scheduler. If the data is not divided into a plurality of responses, the memory access read request is processed, and go to step 1318; if the data is divided, parse the packet to obtain the number of the obtained sub-responses and identifier of the current sub-response, and then go to
step 1316. - Step 1316: Determine whether the current response is the last sub-response of the memory access read request according to whether the identifier of the current sub-response is equal to the number of sub-responses. If yes, the current memory access read request is processed, and go to step 1318; and if not, the current memory access read request is not processed yet, write the returned data of the current sub-response into the corresponding data buffer, the update data state, data location, and other information in the read request state table, and then go back to
step 1304. - Step 1318: After the current memory access read request is processed, prepare to transmit the data from the message-based memory controller back to the CPU, and then go back to
step 1304. - As shown in
FIG. 14 , steps for sending a request response to a CPU by a message-based memory controller are as follows: - Step 1401: The
request response controller 709 scans the read/write request state table. - Step 1402: Query whether there is any processed request in the write request state table. If yes, go to
step 1404; and if not, go tostep 1403. - Step 1403: If there is no processed request item in the write request state table, query whether there is any processed request item in the read request state table. If yes, go to
step 1404; and if not, go tostep 1402. - Step 1404: If there is a processed request in the write request state table or the read request state table, determine whether the processed request meets the requirements of the request attributes, such as a requirement of a timed delay. If yes, go to
step 1405; and if not, go tostep 1402. - Step 1405: Send a response of the request that meet the requirements of all attributes. The data content of the response also needs to match the returning granularity and other attributes of the request.
- As shown in
FIG. 15 , steps for scheduling a memory access request by therequest scheduler 908 are as follows: - Step 1510: The
timer 906, according to a set condition, triggers therequest scheduler 908 to prepare to start a new request scheduling process. - Step 1520: Check whether the triggering condition is that chip state maintenance is requested. If yes, go to
step 1530; and if not, go tostep 1540. - Step 1530: If the trigger condition is that chip state maintenance is required, issue the chip state maintenance command and go to
step 1590. - Step 1540: Check whether the triggering condition is that a special request queue needs to be processed. If yes, go to
step 1550; and if not, go tostep 1560. - Step 1550: If the triggering condition is that a special request queue needs to be processed, read the request in the special request queue and convert into a series of read/write operations. Modify the request state in the queue or clear the request state after the request is processed. Go to step 1590.
- Step 1560: Check whether the triggering condition is that the read/write request queue with the highest priority needs to be processed. If yes, go to
step 1570; and if not, go tostep 1580. - Step 1570: If the triggering condition is that the read/write request queue with the highest priority needs to be processed, clear all requests in the queue and label all read requests with combination marks. Go to step 1590.
- Step 1580: The triggering condition is that a read/write request queue that does not have the highest priority needs to be processed. Access the request in the request queue with the corresponding priority and generate the required read/write operation according to the current state of the read/write request. Modify the request state in the queue or clear the request state after the request is processed. Go to step 1590.
- Step 1590: The request scheduling process ends. Wait for the triggering of the next scheduling process by the timer.
- The descriptions are merely basic descriptions of technical conceptions of the present invention. Any equivalent variation based on the technical solutions in the present invention shall fall within the protection scope of the present invention, such as any new memory technology for a nonvolatile memory and the like.
- Persons skilled in the art may make modifications to the foregoing content without departing from the spirit and scope of the present invention specified in claims. Therefore, the protection scope of the prevent invention is not limited to the descriptions but is determined according to the scope specified in claims.
Claims (25)
- A message-based memory access apparatus, comprising:a message-based command bus, configured to transmit a message-based memory access request instruction generated by a CPU to instruct a storage module to perform a memory access operation;a message-based memory controller, configured to package a CPU request into a request packet and send the packet to a storage module, and parse a response packet returned by the storage module and return data after the parsing process to the CPU;a message channel, configured to transmit a request packet and a response packet; andthe storage module, comprising a buffer scheduler, and configured to receive the request packet from the message-based memory controller, process the corresponding request, produce a response packet, and send the response packet to the message-based memory controller.
- The message-based memory access apparatus according to claim 1, wherein the message-based command bus is further configured to specify a memory access length of a memory request instruction, and the memory access length is greater than or less than a length of a register;
requested data after the parsing process is returned to a cache, a CPU addressable buffer, or a register or register group without passing by a cache; and
the memory access request instruction is attached with information about a data access priority for instructing scheduling of a memory access command in the message-based memory controller and the buffer scheduler, so as to provide a scheduling basis for a memory system. - The message-based memory access apparatus according to claim 1, wherein the message-based memory controller further comprises:a memory access request interface, configured for request exchange between the CPU and the message-based memory controller;a read/write request distributor, configured to control, according to a state of the read/write request reservation station, whether a memory access request received from the memory access request interface is inserted into the read request state table or the write request state table, wherein, if a write request is received, data to be written in a memory needs to be temporarily saved in a write data buffer;the write data buffer, configured to temporarily save data of the write request; anda read data buffer, configured to temporarily save data of the read request;a read/write request reservation station, comprising a request state table, wherein the request state table consisting of two parts: a read request state table and a write request state table, configured to assign a table entry for each newly received request, wherein a corresponding table entry in the request state table needs to be updated or deleted when the buffer scheduler responds to a request or the message-based controller sends a request response to the CPU.
- The message-based memory access apparatus according to claim 3, wherein the message-based memory controller further comprises:a request generating and scheduling component, on one hand, configured to generate a plurality of small requests according to request attributes in the request state table, such as a request length and a timed delay; and on the other hand, configured to schedule requests, select a next request to be processed among unprocessed requests in the read request state table and the write request state table, and send the selected request to a message packetizer;the message packetizer, configured to package one or more requests into a message packet on the message channel and send the message packet through the message channel interface to the buffer scheduler;a message unpacker, configured to extract one or more requests from a message packet and parse corresponding data content of each request;a request state update unit, configured to update a state table of a request in the read/write request reservation station and temporarily save the data in the read data buffer, according to the request and the corresponding data obtained by parsing of the message unpacker;a request response controller, configured to send a request response to the CPU;a controller configuration interface, configured to configure a parameter of the message-based memory controller or specify attributes of a request, wherein corresponding values in the attributes in the read and write request state tables are updated after configuration of a request or a memory access address; anda message channel interface, configured to transmit message packets with the buffer scheduler, wherein, based on a different physical implementation of a message channel, the message channel interface has a corresponding interface type.
- The message-based memory access apparatus according to claim 3, wherein, in the read/write request reservation station, an item number of the read request state table corresponds to a sequence number of a request in the request state table; the item number is used in a message packet of the message-based memory controller and the buffer scheduler to uniquely specify a request for processing; a request address is the base address of the memory to be accessed; a timed delay specifies the time for returning the request to the CPU, and is mainly set through the controller configuration interface; a returning granularity consists of a length of data returned by the message-based memory controller to the CPU each time; a data state specifies required data that has been obtained from the storage module and required data that are not obtained; a data location specifies a location of obtained request data in the read data buffer.
- The message-based memory access apparatus according to claim 4, wherein the request response controller is further configured to query for a state of a request in the read/write request reservation station, send a request response to the CPU after a CPU request is processed by the buffer scheduler and the storage module, and if a read request is processed, send corresponding data of the request in the read data buffer.
- The message-based memory access apparatus according to claim 1, wherein interaction between the message-based memory controller and the storage module is completed based on a message packet; each such message packet comprises information about one or more memory access requests or responses; a request in the message packet has no synchronous timing sequence restriction but information about a maximum delay of returning the request; and
the controller configuration interface provides special command address space for the massage-mode memory controller, allows configuration of attributes of the controller, allows settings of attributes of a memory access request, and issues a corresponding memory access command. - The message-based memory access apparatus according to claim 7, wherein the message-based memory access controller is further configured for the message-based memory access controller and command address space to support, by using a corresponding memory access command, that the memory access system periodically pushes data to the register or the addressable high-speed buffer, and that a simple arithmetic and logic operation and a move operation are performed in the memory system, wherein memory access atomicity is set, or the operations is performed in batches;
the read/write request reservation station provides a read request state table and a write request state table, wherein each request to be processed has a corresponding table entry in the read or write request state table, each table entry comprises not only the address and length of the request but also the timed return delay, returning granularity, data state, and data location, and in a message packet, each request is determined by the unique item number in the corresponding request state table;
the message-based memory controller not only allows a plurality of requests to be comprised in one message packet, but also allows each request to be divided and comprised in one or more message packets to be sent to the storage module; the message-based memory controller also allows the storage module to use one or more message packets to process one request; and
for the message-based memory controller, a plurality of message packets of a plurality of requests or one request is returned out of order. - The message-based memory access apparatus according to claim 7, wherein the message-based memory controller is further used in the following situation: if message packets of a plurality of storage modules are used to respond to one read request, the data state in the corresponding read request state table of the request identifies the returned data and the unreturned data; and
data that is not completely returned is saved in the addressable buffer or the unaddressable buffer, wherein, if the data is temporarily saved in the unaddressable buffer, the read request of the CPU is responded to and the requested data are sent to the CPU only after the requested data are completely returned; and if the data is temporarily saved in the addressable buffer, the CPU reads the returned data part. - The message-based memory access apparatus according to any one of claims 7 to 9, wherein the message packet types comprise: a memory access read/write request packet, a special command request packet, a memory state query packet, and/or a response packet.
- The message-based memory access apparatus according to claim 1, wherein the buffer scheduler in the storage module comprises:a message channel interface, configured to transmit message packets with the message-based memory controller;a message unpacker, configured to obtain information about a memory access request from a received message packet, wherein the information comprises a request serial number, a request type, request semantic information, an address, and data and the message unpacker performs the unpacking operation according to the corresponding rules after determining the request type based on the information about the memory access request;a request distributor, configured to distribute a memory access request parsed by the message unpacker into a request queue, wherein the scheduling depends on semantic information, required returning time, and granularity information of access data of each request;read/write request queues, configured to save unprocessed read/write requests, and the unprocessed read/write request consists of queues with different priorities, wherein a high-priority queue saves read/write requests whose access data is of a small granularity and required returning time is short or read/write requests marked with a high priority; and a low-priority queue saves read/write requests whose access data is of a larger granularity and required returning time is long or read/write requests marked with a low priority;a special request queue, configured to save unprocessed non-read/write requests;a request scheduler, configured to obtain a memory access request from a request queue and forward the request to a command generating unit; and obtain returned memory access data from the data buffer and forward the data to a message packetizer;a command generating unit, configured to obtain a memory access request that needs to be immediately executed after being scheduled, and convert the memory access request into a specific command for accessing a memory chip, and issue a command for maintaining the state of the memory chip as required by the request scheduler;a message packetizer, configured to obtain returned data and the corresponding request serial number from the request scheduler, generate a response packet, and send the packet back to the message-based memory controller, wherein, according to marks for the returned data made by the request scheduler, the message packetizer allows a plurality of requests to be packaged into one response packet and sent to the message-based memory controller;a data buffer, configured to save returned data about accessing a memory chip, from which the request scheduler selects the required data and sends the data to the message packetizer; anda memory chip interface, configured to receive a command for accessing a memory chip from the command generating unit, send the command to the memory chip on the storage module, and, after receiving returned data, save the data in the data buffer.
- The message-based memory access apparatus according to claim 11, wherein the buffer scheduler in the storage module further comprises:a timer, configured to output pulses at different time intervals as required and enable clock triggering for the request scheduler and a state maintenance unit as required; andthe state maintenance unit, configured to maintain the state of each memory chip connected to the buffer scheduler and issue a power-charging command and/or a refreshing command.
- The message-based memory access apparatus according to claim 11, wherein the request scheduler is further configured to complete operations for memory access requests in a high-priority queue according to request situations; the request scheduler labels a plurality of requests with combination marks; when all returned data of the requests is saved into the data buffer, the data is forwarded to the message packetizer for being packaged into one response packet; and for a request with a large memory access data amount in a low-priority queue, the request scheduler divides the request processing into several steps and forward the processing result of each step to the message packetizer for being packaged into one response packet and then returned back.
- The message-based memory access apparatus according to claim 1, wherein the storage module is further used in the following situations: for a memory access request from the message-based memory controller, the storage module processes the request with a plurality of steps and returns a plurality of response packets; for a plurality of memory access requests from the message-based memory controller, the storage module processes all the requests and uses one response packet to respond all requests; and the storage module schedules a sequence for executing memory access requests from the message-based memory controller according to priorities of requests, semantic information of requests, and a state of a memory chip on the storage module.
- The message-based memory access apparatus according to claim 1, wherein the memory unit of the storage module is a synchronous memory chip and/or a memory chip based on an asynchronous network connection.
- The message-based memory access apparatus according to any one of claims 1, 11, 12, wherein special message-based memory access instructions supported by the buffer scheduler comprise: a timing push instruction, a simple arithmetic and logic operation in the memory system and a move instruction, and compression storage.
- The message-based memory access apparatus according to any one of claim1, wherein the message channel is configured to transmit messages in message packets with a parallel bus, a point to point serial bus, or networks with other topological structures used.
- A message-based memory access method, comprising the following steps:step 1001: issuing, by a CPU, a memory access request, wherein the CPU specifies an access data length, a priority, and semantic information of the request, and the request is any other complex memory access request besides a read/write request;step 1002: determining whether the request comprises information about configuration of a message-based memory controller; if yes, going to step 1003; and if not, going to step 1004;step 1003: if the request comprises the information about the configuration of the message-based memory controller, performing, by the message-based memory controller, a proper adjustment according to the configuration information, and then scheduling and processing the request;step 1004: packaging, by the message-based memory controller, the memory access request from the CPU into a message packet, which comprises a plurality of requests, sending the message packet through a message channel to a buffer scheduler of a corresponding storage module, and making a record in a read/write request reservation station according to requirements;step 1005: parsing, by a buffer scheduler in the storage module, the sent message packet, and performing an operation on the memory access request of the CPU; andstep 1006: after the memory access request of the CPU is processed, clearing a record if there is the record about the request in the read/write request reservation station of the message-based memory controller.
- The message-based memory access method according to claim 18, wherein before step 1006, the method further comprises:step 1007: if the memory access request of the CPU is a read request, packaging the read data into a response packet and sending the packet to the message-based memory controller through the message channel, wherein, during the response packet packaging process, based on requirements, returned data of one request is packaged into a plurality of response packets and returned data of a plurality of requests are packaged into one response packet;step 1008: receiving and parsing, by the message-based memory controller, the response packet and saving the data in the response packet into a cache or an internal addressable buffer of the message-based memory controller according to requirements; andstep 1009: determining, by the message-based memory controller, whether response packets for the CPU are all returned; if yes, going to step 1006; and if not, going to step 1008.
- The message-based memory access method according to claim 18, wherein, after step 1005, the method further comprises:step 1010: receiving and parsing, by the buffer scheduler, the message packet sent by the message-based memory controller and filling the memory access request of the CPU into a request queue;step 1011: scheduling, by the request scheduler in the buffer scheduler, a plurality of requests in the request queue and arranging a request execution sequence according to the memory access request of the CPU priority and semantic information;step 1012: converting the scheduled CPU request into a series of commands that conform to a memory granularity standard, and sending the commands to a memory interface;step 1013: determining whether the memory access request of the CPU is a complex memory access request; if yes, going to step 1014; and if not, going to step 1016;step 1014: if the memory access request of the CPU is a complex memory access request, processing, by a processing logic in the buffer scheduler, the data returned by the memory;step 1015: after the complex memory access instruction is processed, according to the type of the request, determining whether to write the processed data back into the memory and whether to return the processed data to the CPU; if the processed data needs to be written back into the memory, using a series of commands that conform to the memory granularity standard to write the data into the memory; if the processed data needs to be returned to the CPU, packaging the data into a response packet and sending the packet to the message-based memory controller; andstep 1016: if the memory access request of the CPU is not a complex memory access request, determining whether the request is a write request; if yes, going to step 1006; and if not, going to step 1007.
- The message-based memory access method according to claim 18, wherein step 1004 further comprises the following steps:step 1101: receiving, by the message-based memory controller, a read/write request sent by the CPU through a memory access request interface;step 1102: determining, by a read/write request distributor, whether the request is a read request; if yes, going to step 1104; and if not, going to step 1103;step 1103: if the received request is a write request, determining whether there is an empty item in a write request state table; if yes, going to step 1105; and if not, going to step 1102;step 1104: if the received request is a read request, determining whether there is an empty item in a read request state table; if yes, going to step 1106; and if not, going to step 1102;step 1105: if the received request is a write request and there is an empty item in the write request state table, distributing a table entry for the request and saving the data in the write request into a write data buffer; otherwise, going to step 1102;step 1106: if the received request is a read request and there is an empty item in the read request state table, distributing a table entry for the request; otherwise, going to step 1102; andstep 1107: stopping receiving the request and continuing to process requests received through a memory access request interface.
- The message-mode memory access method according to claim 18, wherein the message-mode memory controller dispatches and process a request by performing the following steps:step 1201: scanning, by a request generating and dispatching component, the table items in the read/write request state table;step 1202: querying, by the request generating and dispatching component, whether there is any request that is unprocessed and needs to be processed in the read/write request state table; if yes, going to step 1203; if not, going to step 1201;step 1203: if there is an unprocessed request, dividing, by the request generating and dispatching component, a big request into a plurality of small requests according to the request attributes in the corresponding request state table, and choosing the next request to be processed according to the dispatching algorithm;step 1204: determining whether the request to be processed is a read request; if yes, going to step 1206; if not, going to step 1205;step 1205: if the request to be processed is a write request, obtaining the corresponding data of the request from a write data buffer; otherwise, going to step 1206;step 1206: packaging, by a message packetizer, one or more requests into a message packet; andstep 1207: sending the packaged message to a message channel interface between the message-mode memory controller and a buffer dispatcher, and then going to step 1201 for the next processing round.
- The message-mode memory access method according to claim 20, wherein step 1013 also comprises:step 1301: resolving the header information of the response packet sent from the buffer dispatcher to the message-mode memory controller so as to obtain the number of responses in the header and the length of each response for resolving the responses one by one;step 1302: determining whether there is another response that needs to be resolved; if yes, going to step 1303 to resolve the next response; if not, the response packet resolution ending;step 1303: resolving the type and the request identifier of the next response, wherein responses are processed in different ways according to the request types in the following steps;step 1304: determining whether the response is a memory access read request response; if yes, going to step 135 for further resolution; if not, with a memory state query request response or a memory access write request response received, going to step 1306 to obtain the corresponding state information;step 1305: addressing the response according to the response length specified by the header and obtaining the returned data from the memory access read request response;step 1306: addressing the response according to the response length specified by the header; if the response is a state query request response, obtaining the returned state value from the response; if the response is a memory access write request response, updating the request attributes in the write request state table; the response resolution ending; going back to step 1302;step 1307: determining whether the memory access read request data is returned after being divided into a plurality of responses by the buffer dispatcher according to whether the packet contains sub-responses; if the data is not divided into a plurality of responses, with the memory access read request processed, going to step 1309; if the data is divided into a plurality of responses, resolving the number of obtained sub-responses and identifier of the current sub-response, and then going to step 1308;step 1308: determining whether the current response is the last sub-response of the memory access read request according to whether the identifier of the current sub-response is equal to the number of sub-responses; if yes, with the current memory access read request processed, going to step 1309; if not, with the current memory access read request not processed yet, writing the returned data of the current sub-response into the corresponding data buffer, updating data state, data location, and other information in the read request state table, and then going back to step 1302;step 1309: after the current memory access read request is processed, preparing to transmit the data from the message-mode memory controller back to the CPU, and then going back to step 1302.
- The message-mode memory access method according to claim 18, wherein step 1006 also comprises:step 1401: scanning, by a request response controller, the read and write request state tables;step 1402: querying whether there is any processed request in the write request state table; if yes, going to step 1404; if not, going to step 1403;step 1403: if there is not any processed request item in the write request state table, querying whether there is any processed request item in the read request state table; if yes, going to step 1404; if not, going to step 1402;step 1404: if there is a processed request in the write request state table or the read request state table, determining whether the processed request meets requirements of request attributes; if yes, going to step 1405; if not, going to step 1402; andstep 1405: sending responses of the request that meet the requirements of all attributes, wherein the data content of the response should match the returning granularity and other attributes of the request.
- The message-mode memory access method according to claim 20, wherein step 1011 also comprises:step 1501: triggering, by a timer, the request dispatcher to prepare to start a new request dispatching process according to the set condition;step 1502: checking whether the triggering condition is that chip state maintenance is requested; if yes, going to step 1503; if not, going to step 1504;step 1503: with the triggering condition of the timer being that chip state maintenance is required, issuing the chip state maintenance command and going to step 1509;step 1504: checking whether the triggering condition is that a special request queue needs to be processed; if yes, going to step 1505; if not, going to step 1506;step 1505: with the triggering condition being that a special request queue needs to be processed, reading the request in the special request queue and converting the request into a series of read/write operations; modifying the request state in the queue or clearing the request state after the request is processed; going to step 1509;step 1506: checking whether the triggering condition is that the read/write request queue with the highest priority needs to be processed; if yes, going to step 1507; if not, going to step 1508;step 1507: with the triggering condition being that the read/write request queue with the highest priority needs to be processed, clearing all requests in the queue and labeling all read requests with combination marks; going to step 1509;step 1508: with the triggering condition being that a read/write request queue that does not have the highest priority needs to be processed, accessing the request in the request queue with the corresponding priority and generating the required read/write operation according to the current state of the read/write request; modifying the request state in the queue or clearing the request state after the request is processed; going to step 1509; andstep 1509: ending, by the request dispatching process; waiting for the triggering of the next dispatching process by the timer.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP19162415.4A EP3588317B1 (en) | 2012-01-18 | 2013-01-18 | Message-based memory access apparatus and access method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210016351.2A CN102609378B (en) | 2012-01-18 | 2012-01-18 | A kind of message type internal storage access device and access method thereof |
PCT/CN2013/070710 WO2013107393A1 (en) | 2012-01-18 | 2013-01-18 | Message-based memory access device and access method thereof |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP19162415.4A Division EP3588317B1 (en) | 2012-01-18 | 2013-01-18 | Message-based memory access apparatus and access method thereof |
Publications (3)
Publication Number | Publication Date |
---|---|
EP2801912A1 true EP2801912A1 (en) | 2014-11-12 |
EP2801912A4 EP2801912A4 (en) | 2014-12-03 |
EP2801912B1 EP2801912B1 (en) | 2019-04-10 |
Family
ID=46526766
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP19162415.4A Active EP3588317B1 (en) | 2012-01-18 | 2013-01-18 | Message-based memory access apparatus and access method thereof |
EP13738795.7A Active EP2801912B1 (en) | 2012-01-18 | 2013-01-18 | Message-based memory access device and access method thereof |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP19162415.4A Active EP3588317B1 (en) | 2012-01-18 | 2013-01-18 | Message-based memory access apparatus and access method thereof |
Country Status (6)
Country | Link |
---|---|
US (1) | US9870327B2 (en) |
EP (2) | EP3588317B1 (en) |
JP (1) | JP5930439B2 (en) |
KR (1) | KR101563837B1 (en) |
CN (1) | CN102609378B (en) |
WO (1) | WO2013107393A1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3007070A4 (en) * | 2013-05-31 | 2016-05-18 | Huawei Tech Co Ltd | Memory system, memory access request processing method and computer system |
EP3121731A1 (en) * | 2014-05-06 | 2017-01-25 | Huawei Technologies Co., Ltd. | Memory management method and device |
CN107992329A (en) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | A kind of computational methods and Related product |
EP3480702A4 (en) * | 2017-06-23 | 2019-09-04 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
EP3674877A1 (en) * | 2015-04-23 | 2020-07-01 | Huawei Technologies Co., Ltd. | Method for accessing extended memory, device, and system |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
CN102609378B (en) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | A kind of message type internal storage access device and access method thereof |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
CN103679040B (en) * | 2012-09-06 | 2016-09-14 | 中天安泰(北京)信息技术有限公司 | Data safe reading method and device |
CN103679041B (en) * | 2012-09-06 | 2016-11-23 | 中天安泰(北京)信息技术有限公司 | Data safe reading method and device |
CN103729315B (en) | 2012-10-15 | 2016-12-21 | 华为技术有限公司 | A kind of address compression, the method for decompression, compressor and decompressor |
EP2915045B1 (en) * | 2012-11-02 | 2019-01-02 | Hewlett-Packard Enterprise Development LP | Selective error correcting code and memory access granularity switching |
KR20140122941A (en) * | 2013-04-11 | 2014-10-21 | 삼성전자주식회사 | Method and apparatus for transmitting and receiving a scheduling request in wireless communication system |
CN104123234B (en) * | 2013-04-27 | 2017-04-05 | 华为技术有限公司 | Memory pool access method and memory system |
CN104125461B (en) * | 2013-04-27 | 2017-06-23 | 深圳市振华微电子有限公司 | A kind of large-sized image compression processing system and method |
CN104252422A (en) * | 2013-06-26 | 2014-12-31 | 华为技术有限公司 | Memory access method and memory controller |
US9811453B1 (en) * | 2013-07-31 | 2017-11-07 | Juniper Networks, Inc. | Methods and apparatus for a scheduler for memory access |
CN104346234B (en) * | 2013-08-09 | 2017-09-26 | 华为技术有限公司 | A kind of method of internal storage access, equipment and system |
CN104424102B (en) * | 2013-08-20 | 2017-10-10 | 华为技术有限公司 | A kind of data copying method, equipment and system |
CN104424105B (en) * | 2013-08-26 | 2017-08-25 | 华为技术有限公司 | The read-write processing method and device of a kind of internal storage data |
JP6127872B2 (en) * | 2013-09-27 | 2017-05-17 | 富士通株式会社 | Arithmetic processing device and control method of arithmetic processing device |
CN104516823B (en) * | 2013-09-30 | 2018-04-27 | 华为技术有限公司 | A kind of date storage method and device |
CN103647807B (en) * | 2013-11-27 | 2017-12-15 | 华为技术有限公司 | A kind of method for caching information, device and communication equipment |
CN104699638B (en) * | 2013-12-05 | 2017-11-17 | 华为技术有限公司 | Memory pool access method and internal storage access device |
WO2015089488A1 (en) | 2013-12-12 | 2015-06-18 | Memory Technologies Llc | Channel optimized storage modules |
CN104851454A (en) * | 2014-02-13 | 2015-08-19 | 华为技术有限公司 | Method and device for processing control signal and variable memory |
CN105095146B (en) * | 2014-05-09 | 2018-07-31 | 华为技术有限公司 | Bandwidth allocation methods based on Memory Controller Hub and device |
CN105573920B (en) * | 2014-10-09 | 2019-02-01 | 华为技术有限公司 | Memory space management and device |
KR102515924B1 (en) * | 2016-04-19 | 2023-03-30 | 에스케이하이닉스 주식회사 | Media controller and data storage apparatus including the media controller |
US11755255B2 (en) | 2014-10-28 | 2023-09-12 | SK Hynix Inc. | Memory device comprising a plurality of memories sharing a resistance for impedance matching |
US10067903B2 (en) | 2015-07-30 | 2018-09-04 | SK Hynix Inc. | Semiconductor device |
CN104932942B (en) * | 2015-05-29 | 2018-11-13 | 华为技术有限公司 | The distribution method and device of buffer resource |
CN106484549B (en) * | 2015-08-31 | 2019-05-10 | 华为技术有限公司 | A kind of exchange method, NVMe equipment, HOST and physical machine system |
CN105471630B (en) * | 2015-11-18 | 2019-04-19 | 武汉众邦领创技术有限公司 | North orientation system message dissemination system and method under large capacity packet delivery system |
JP6160717B1 (en) * | 2016-01-15 | 2017-07-12 | 日本電気株式会社 | Processor and data transfer method |
CN108595371B (en) * | 2016-01-20 | 2019-11-19 | 北京中科寒武纪科技有限公司 | For the reading data of vector operation, write-in and read-write scheduler and reservation station |
CN105912270B (en) * | 2016-04-12 | 2019-01-18 | 上海交通大学 | A kind of access request resolver and method towards PM |
DE102017106713A1 (en) | 2016-04-20 | 2017-10-26 | Samsung Electronics Co., Ltd. | Computing system, nonvolatile memory module, and method of operating a memory device |
US10034407B2 (en) * | 2016-07-22 | 2018-07-24 | Intel Corporation | Storage sled for a data center |
CN106201766B (en) * | 2016-07-25 | 2018-03-20 | 深圳市中博科创信息技术有限公司 | Data storage control method and data server |
CN107783727B (en) * | 2016-08-31 | 2022-01-14 | 华为技术有限公司 | Access method, device and system of memory device |
CN108337286A (en) * | 2017-01-20 | 2018-07-27 | 深圳市中兴微电子技术有限公司 | One kind cutting packet method and device |
CN106993241B (en) * | 2017-03-31 | 2020-08-07 | 新华三技术有限公司 | Main control board, fan frame and network equipment |
CN109299117B (en) * | 2017-07-25 | 2022-07-29 | 北京国双科技有限公司 | Data request processing method and device, storage medium and processor |
KR102395190B1 (en) * | 2017-07-31 | 2022-05-06 | 삼성전자주식회사 | Storage Device performing interface with host and Operating Method of Host and Storage Device |
CN107743101B (en) * | 2017-09-26 | 2020-10-09 | 杭州迪普科技股份有限公司 | Data forwarding method and device |
CN107844435A (en) * | 2017-11-08 | 2018-03-27 | 北京锐安科技有限公司 | A kind of caching system, method and device |
CN108153485B (en) * | 2017-11-20 | 2021-06-22 | 天津津航技术物理研究所 | Method and system for multi-device cooperative access to SRAM |
US10395698B2 (en) | 2017-11-29 | 2019-08-27 | International Business Machines Corporation | Address/command chip controlled data chip address sequencing for a distributed memory buffer system |
US10747442B2 (en) | 2017-11-29 | 2020-08-18 | International Business Machines Corporation | Host controlled data chip address sequencing for a distributed memory buffer system |
US10534555B2 (en) | 2017-11-29 | 2020-01-14 | International Business Machines Corporation | Host synchronized autonomous data chip address sequencer for a distributed buffer memory system |
US10489069B2 (en) | 2017-11-29 | 2019-11-26 | International Business Machines Corporation | Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system |
US10884916B2 (en) * | 2018-03-29 | 2021-01-05 | Intel Corporation | Non-volatile file update media |
US10817176B2 (en) * | 2018-06-18 | 2020-10-27 | Intel Corporation | Compute offload in block storage using virtual objects |
CN110888591B (en) * | 2018-09-07 | 2023-05-30 | 慧荣科技股份有限公司 | Data storage device and non-volatile memory control method |
US10467175B1 (en) * | 2018-11-29 | 2019-11-05 | Qualcomm Incorporated | Secure digital (SD) direct command for improving throughput with a reduced memory footprint |
CN111352657B (en) * | 2018-12-21 | 2023-04-25 | 上海都森电子科技有限公司 | Method for reading x86 data by FPGA (field programmable gate array) in high-speed and high-efficiency pipelining manner |
CN109828934A (en) * | 2018-12-31 | 2019-05-31 | 武汉芯动科技有限公司 | Internal storage access chip and device |
CN109753248B (en) * | 2019-01-22 | 2022-05-13 | 上海微小卫星工程中心 | Memory access controller and method for accessing memory |
US10901734B2 (en) * | 2019-03-01 | 2021-01-26 | Micron Technology, Inc. | Memory mapping using commands to transfer data and/or perform logic operations |
CN109992413B (en) * | 2019-03-01 | 2021-09-24 | 中国科学院计算技术研究所 | Breadth-first search algorithm-oriented accelerating device, method and storage medium |
CN110008154B (en) * | 2019-04-16 | 2020-08-21 | 北京智芯微电子科技有限公司 | Method for improving time sequence of processor and access bus and memory attribute predictor |
US20190324802A1 (en) * | 2019-06-28 | 2019-10-24 | Intel Corporation | Technologies for providing efficient message polling |
CN112306918B (en) * | 2019-07-31 | 2024-06-14 | 北京百度网讯科技有限公司 | Data access method, device, electronic equipment and computer storage medium |
CN110781120B (en) * | 2019-10-23 | 2023-02-28 | 山东华芯半导体有限公司 | Method for realizing cross-4 KB transmission of AXI bus host equipment |
CN114064302B (en) * | 2020-07-30 | 2024-05-14 | 华为技术有限公司 | Inter-process communication method and device |
CN112416353B (en) * | 2020-08-10 | 2024-07-23 | 上海幻电信息科技有限公司 | Channel package packing method and device and computer equipment |
CN116113934A (en) * | 2020-09-04 | 2023-05-12 | 华为技术有限公司 | Apparatus and method for remote direct memory access |
TWI764311B (en) * | 2020-10-08 | 2022-05-11 | 大陸商星宸科技股份有限公司 | Memory access method and intelligent processing apparatus |
CN112463365B (en) * | 2020-11-13 | 2023-01-10 | 苏州浪潮智能科技有限公司 | Method and device for improving message processing efficiency of Flash channel controller |
CN112559401B (en) * | 2020-12-07 | 2023-12-22 | 杭州慧芯达科技有限公司 | PIM technology-based sparse matrix chain access system |
US11853610B2 (en) * | 2021-02-16 | 2023-12-26 | iodyne, LLC | Pass-through command queues for unmodified storage drivers |
CN113032307A (en) * | 2021-03-26 | 2021-06-25 | 山东英信计算机技术有限公司 | Integrated device access request processing method and related assembly |
CN113157425B (en) * | 2021-05-20 | 2024-05-03 | 深圳马六甲网络科技有限公司 | Service access processing method, device, equipment and storage medium |
CN113535083A (en) * | 2021-06-08 | 2021-10-22 | 平头哥(上海)半导体技术有限公司 | Computer system and computer-implemented method for packaging storage access requests |
CN113254384B (en) * | 2021-06-23 | 2021-11-26 | 中科院微电子研究所南京智能技术研究院 | Data transmission method and system for many-core system |
CN113934653B (en) * | 2021-09-15 | 2023-08-18 | 合肥大唐存储科技有限公司 | Cache implementation method and device of embedded system |
CN114328345B (en) * | 2021-12-10 | 2024-05-03 | 北京泽石科技有限公司 | Control information processing method, device and computer readable storage medium |
US20220114098A1 (en) * | 2021-12-22 | 2022-04-14 | Intel Corporation | System, apparatus and methods for performing shared memory operations |
US20230297520A1 (en) * | 2022-03-21 | 2023-09-21 | Micron Technology, Inc. | Compute express link memory and storage module |
US20240078017A1 (en) * | 2022-09-01 | 2024-03-07 | Advanced Micro Devices, Inc. | Memory controller and near-memory support for sparse accesses |
CN116594758B (en) * | 2023-07-18 | 2023-09-26 | 山东三未信安信息科技有限公司 | Password module call optimization system and optimization method |
CN117632820B (en) * | 2024-01-22 | 2024-05-14 | 北京开源芯片研究院 | Request processing method, device, bus bridge, electronic equipment and readable storage medium |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999030240A1 (en) * | 1997-12-05 | 1999-06-17 | Intel Corporation | Memory system including a memory module having a memory module controller |
US20010009531A1 (en) * | 1990-04-18 | 2001-07-26 | Michael Farmwald | Memory device having a variable data output length |
US6505276B1 (en) * | 1998-06-26 | 2003-01-07 | Nec Corporation | Processing-function-provided packet-type memory system and method for controlling the same |
US20060095646A1 (en) * | 2004-10-29 | 2006-05-04 | International Business Machines Corporation | System, method and storage medium for a memory subsystem command interface |
US20070271424A1 (en) * | 2006-05-16 | 2007-11-22 | Samsung Electronics Co., Ltd. | Memory module, a memory system including a memory controller and a memory module and methods thereof |
US20100153611A1 (en) * | 2008-12-16 | 2010-06-17 | Dialogic Corporation | System and method for high performance synchronous dram memory controller |
Family Cites Families (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4667286A (en) * | 1984-12-20 | 1987-05-19 | Advanced Micro Devices, Inc. | Method and apparatus for transferring data between a disk and a central processing unit |
JP3178909B2 (en) * | 1992-01-10 | 2001-06-25 | 株式会社東芝 | Semiconductor memory device |
US5444718A (en) * | 1993-11-30 | 1995-08-22 | At&T Corp. | Retransmission protocol for wireless communications |
US5924126A (en) * | 1995-05-15 | 1999-07-13 | Nvidia | Method and apparatus for providing address translations for input/output operations in a computer system |
US5881264A (en) * | 1996-01-31 | 1999-03-09 | Kabushiki Kaisha Toshiba | Memory controller and memory control system |
EP0845738A3 (en) * | 1996-11-28 | 2006-09-20 | Hitachi, Ltd. | Storage system which transfers a command and data corresponding to said command subsequent to said command |
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US7237036B2 (en) * | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
FR2778258A1 (en) * | 1998-04-29 | 1999-11-05 | Texas Instruments France | Memory traffic access controller |
US6621829B1 (en) * | 1998-05-20 | 2003-09-16 | Nortel Networks Limited | Method and apparatus for the prioritization of control plane traffic in a router |
US6510474B1 (en) * | 1998-11-16 | 2003-01-21 | Infineon Technologies Ag | Methods and apparatus for re-reordering command and data packets in order to restore an original order of out-of-order memory requests |
US6526484B1 (en) * | 1998-11-16 | 2003-02-25 | Infineon Technologies Ag | Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus |
US6266723B1 (en) * | 1999-03-29 | 2001-07-24 | Lsi Logic Corporation | Method and system for optimizing of peripheral component interconnect PCI bus transfers |
US6539467B1 (en) * | 1999-11-15 | 2003-03-25 | Texas Instruments Incorporated | Microprocessor with non-aligned memory access |
US6381658B1 (en) * | 1999-12-29 | 2002-04-30 | Intel Corporation | Apparatus and method to precisely position packets for a queue based memory controller |
US6745319B1 (en) * | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
US6754682B1 (en) * | 2000-07-10 | 2004-06-22 | Emc Corporation | Method and apparatus for enabling consistent ancillary disk array storage device operations with respect to a main application |
US20020107939A1 (en) * | 2001-02-07 | 2002-08-08 | Ford Daniel E. | System and method for accessing software components in a distributed network environment |
US6832279B1 (en) * | 2001-05-17 | 2004-12-14 | Cisco Systems, Inc. | Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node |
KR100428714B1 (en) | 2001-08-21 | 2004-04-30 | 한국전자통신연구원 | IP packet transmission apparatus and method for using DPRAM |
US6799231B2 (en) * | 2002-10-22 | 2004-09-28 | Asix Electronics Corp. | Virtual I/O device coupled to memory controller |
US7069399B2 (en) * | 2003-01-15 | 2006-06-27 | Via Technologies Inc. | Method and related apparatus for reordering access requests used to access main memory of a data processing system |
KR100559025B1 (en) * | 2003-05-30 | 2006-03-10 | 엘지전자 주식회사 | Home network management system |
US8407433B2 (en) * | 2007-06-25 | 2013-03-26 | Sonics, Inc. | Interconnect implementing internal controls |
US20050210185A1 (en) | 2004-03-18 | 2005-09-22 | Kirsten Renick | System and method for organizing data transfers with memory hub memory modules |
US7296143B2 (en) * | 2004-06-22 | 2007-11-13 | Lenovo (Singapore) Pte. Ltd. | Method and system for loading processor boot code from serial flash memory |
US20060036817A1 (en) * | 2004-08-10 | 2006-02-16 | Oza Alpesh B | Method and system for supporting memory unaligned writes in a memory controller |
US8478907B1 (en) * | 2004-10-19 | 2013-07-02 | Broadcom Corporation | Network interface device serving multiple host operating systems |
JPWO2006043345A1 (en) * | 2004-10-19 | 2008-05-22 | 松下電器産業株式会社 | Processor |
US7688838B1 (en) * | 2004-10-19 | 2010-03-30 | Broadcom Corporation | Efficient handling of work requests in a network interface device |
US7826470B1 (en) * | 2004-10-19 | 2010-11-02 | Broadcom Corp. | Network interface device with flow-oriented bus interface |
US7835380B1 (en) * | 2004-10-19 | 2010-11-16 | Broadcom Corporation | Multi-port network interface device with shared processing resources |
US7392353B2 (en) * | 2004-12-03 | 2008-06-24 | International Business Machines Corporation | Prioritization of out-of-order data transfers on shared data bus |
US8010682B2 (en) * | 2004-12-28 | 2011-08-30 | International Business Machines Corporation | Early coherency indication for return data in shared memory architecture |
US20070016698A1 (en) | 2005-06-22 | 2007-01-18 | Vogt Pete D | Memory channel response scheduling |
CN100437522C (en) * | 2005-09-09 | 2008-11-26 | 中国科学院计算技术研究所 | Long-distance inner server and its implementing method |
US7536514B2 (en) * | 2005-09-13 | 2009-05-19 | International Business Machines Corporation | Early return indication for read exclusive requests in shared memory architecture |
US8230153B2 (en) * | 2006-01-20 | 2012-07-24 | Broadcom Corporation | Method and system for HBA assisted storage virtualization |
CN100517294C (en) * | 2006-07-14 | 2009-07-22 | 中兴通讯股份有限公司 | Double CPU communication method based on shared memory |
US7552285B2 (en) * | 2006-08-30 | 2009-06-23 | Arm Limited | Line fill techniques |
TWI318348B (en) * | 2006-09-22 | 2009-12-11 | Realtek Semiconductor Corp | Memory management method |
JP5034551B2 (en) * | 2007-02-26 | 2012-09-26 | 富士通セミコンダクター株式会社 | Memory controller, semiconductor memory access control method and system |
JP4715801B2 (en) * | 2007-04-26 | 2011-07-06 | 日本電気株式会社 | Memory access control device |
US7685374B2 (en) * | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
JP5103663B2 (en) * | 2007-09-27 | 2012-12-19 | ルネサスエレクトロニクス株式会社 | Memory control device |
TWI344085B (en) * | 2007-11-15 | 2011-06-21 | Genesys Logic Inc | Storage system for improving efficiency in accessing flash memory and method for the same |
US8417920B2 (en) * | 2007-12-21 | 2013-04-09 | Arm Limited | Management of speculative transactions |
US7925824B2 (en) * | 2008-01-24 | 2011-04-12 | International Business Machines Corporation | System to reduce latency by running a memory channel frequency fully asynchronous from a memory device frequency |
US7770077B2 (en) * | 2008-01-24 | 2010-08-03 | International Business Machines Corporation | Using cache that is embedded in a memory hub to replace failed memory cells in a memory subsystem |
US20090271532A1 (en) * | 2008-04-24 | 2009-10-29 | Allison Brian D | Early header CRC in data response packets with variable gap count |
US9111645B2 (en) * | 2008-08-08 | 2015-08-18 | Rambus Inc. | Request-command encoding for reduced-data-rate testing |
JP5217786B2 (en) * | 2008-08-27 | 2013-06-19 | セイコーエプソン株式会社 | Request arbitration apparatus and request arbitration method |
US8359444B2 (en) * | 2008-09-24 | 2013-01-22 | Hitachi, Ltd. | System and method for controlling automated page-based tier management in storage systems |
US8225052B2 (en) * | 2009-06-03 | 2012-07-17 | Micron Technology, Inc. | Methods for controlling host memory access with memory devices and systems |
US8090892B2 (en) * | 2009-06-12 | 2012-01-03 | Freescale Semiconductor, Inc. | Ordered queue and methods therefor |
JP2011034214A (en) * | 2009-07-30 | 2011-02-17 | Canon Inc | Memory controller |
US8195909B2 (en) * | 2009-10-05 | 2012-06-05 | Seagate Technology Llc | Data management in a data storage system |
US20120191943A1 (en) * | 2009-10-13 | 2012-07-26 | Rambus Inc. | Dynamic protocol for communicating command and address information |
CN101853238A (en) * | 2010-06-01 | 2010-10-06 | 华为技术有限公司 | Message communication method and system between communication processors |
CN101860819A (en) * | 2010-06-07 | 2010-10-13 | 广州从兴电子开发有限公司 | User information pushing method, presentation method, system, server and client |
US20120226827A1 (en) * | 2011-03-02 | 2012-09-06 | Qualcomm Incorporated | Mechanism for Performing SDIO Aggregation and Conveying SDIO Device Status to the Host Software |
KR101527308B1 (en) * | 2011-03-14 | 2015-06-09 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | Memory interface |
CN102541779B (en) * | 2011-11-28 | 2015-07-08 | 曙光信息产业(北京)有限公司 | System and method for improving direct memory access (DMA) efficiency of multi-data buffer |
US20130136033A1 (en) * | 2011-11-28 | 2013-05-30 | Abhishek Patil | One-click connect/disconnect feature for wireless devices forming a mesh network |
CN102609378B (en) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | A kind of message type internal storage access device and access method thereof |
US9244824B2 (en) * | 2012-07-05 | 2016-01-26 | Samsung Electronics Co., Ltd. | Memory sub-system and computing system including the same |
US9424045B2 (en) * | 2013-01-29 | 2016-08-23 | Arm Limited | Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit |
US9240975B2 (en) * | 2013-01-30 | 2016-01-19 | Palo Alto Networks, Inc. | Security device implementing network flow prediction |
US9142280B1 (en) * | 2014-08-06 | 2015-09-22 | Freescale Semiconducotr, Inc. | Circuit for configuring external memory |
-
2012
- 2012-01-18 CN CN201210016351.2A patent/CN102609378B/en active Active
-
2013
- 2013-01-18 EP EP19162415.4A patent/EP3588317B1/en active Active
- 2013-01-18 WO PCT/CN2013/070710 patent/WO2013107393A1/en active Application Filing
- 2013-01-18 EP EP13738795.7A patent/EP2801912B1/en active Active
- 2013-01-18 KR KR1020147022905A patent/KR101563837B1/en active IP Right Grant
- 2013-01-18 JP JP2014552501A patent/JP5930439B2/en active Active
-
2014
- 2014-07-18 US US14/335,029 patent/US9870327B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010009531A1 (en) * | 1990-04-18 | 2001-07-26 | Michael Farmwald | Memory device having a variable data output length |
WO1999030240A1 (en) * | 1997-12-05 | 1999-06-17 | Intel Corporation | Memory system including a memory module having a memory module controller |
US6505276B1 (en) * | 1998-06-26 | 2003-01-07 | Nec Corporation | Processing-function-provided packet-type memory system and method for controlling the same |
US20060095646A1 (en) * | 2004-10-29 | 2006-05-04 | International Business Machines Corporation | System, method and storage medium for a memory subsystem command interface |
US20070271424A1 (en) * | 2006-05-16 | 2007-11-22 | Samsung Electronics Co., Ltd. | Memory module, a memory system including a memory controller and a memory module and methods thereof |
US20100153611A1 (en) * | 2008-12-16 | 2010-06-17 | Dialogic Corporation | System and method for high performance synchronous dram memory controller |
Non-Patent Citations (1)
Title |
---|
See also references of WO2013107393A1 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3007070A4 (en) * | 2013-05-31 | 2016-05-18 | Huawei Tech Co Ltd | Memory system, memory access request processing method and computer system |
EP3121731A1 (en) * | 2014-05-06 | 2017-01-25 | Huawei Technologies Co., Ltd. | Memory management method and device |
EP3121731A4 (en) * | 2014-05-06 | 2017-04-26 | Huawei Technologies Co. Ltd. | Memory management method and device |
EP3674877A1 (en) * | 2015-04-23 | 2020-07-01 | Huawei Technologies Co., Ltd. | Method for accessing extended memory, device, and system |
EP3822798A3 (en) * | 2017-06-23 | 2021-06-09 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
KR20200019706A (en) * | 2017-06-23 | 2020-02-24 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Memory Access Technology and Computer Systems |
EP3480702A4 (en) * | 2017-06-23 | 2019-09-04 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
US10732876B2 (en) | 2017-06-23 | 2020-08-04 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
KR20210150611A (en) * | 2017-06-23 | 2021-12-10 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Memory access technology and computer system |
US11231864B2 (en) | 2017-06-23 | 2022-01-25 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
EP4152166A3 (en) * | 2017-06-23 | 2023-04-26 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
US11681452B2 (en) | 2017-06-23 | 2023-06-20 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
CN107992329B (en) * | 2017-07-20 | 2021-05-11 | 上海寒武纪信息科技有限公司 | Calculation method and related product |
CN107992329A (en) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | A kind of computational methods and Related product |
US11481215B2 (en) | 2017-07-20 | 2022-10-25 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Calculation method and related product |
Also Published As
Publication number | Publication date |
---|---|
US20150006841A1 (en) | 2015-01-01 |
JP5930439B2 (en) | 2016-06-08 |
CN102609378B (en) | 2016-03-30 |
KR101563837B1 (en) | 2015-10-27 |
JP2015508546A (en) | 2015-03-19 |
US9870327B2 (en) | 2018-01-16 |
KR20140124781A (en) | 2014-10-27 |
EP2801912B1 (en) | 2019-04-10 |
EP2801912A4 (en) | 2014-12-03 |
WO2013107393A1 (en) | 2013-07-25 |
EP3588317A1 (en) | 2020-01-01 |
CN102609378A (en) | 2012-07-25 |
EP3588317B1 (en) | 2021-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9870327B2 (en) | Message-based memory access apparatus and access method thereof | |
US20190354317A1 (en) | Operation instruction scheduling method and apparatus for nand flash memory device | |
CN105320608B (en) | Memory controller and method for controlling a memory device to process access requests | |
CN109478168B (en) | Memory access technology and computer system | |
US20110161540A1 (en) | Hardware supported high performance lock schema | |
CN103778013A (en) | Multi-channel Nand Flash controller and control method for same | |
US20090204771A1 (en) | Device for controlling access from a plurality of masters to shared memory composed of a plurality of banks each having a plurality of pages | |
CN103543954A (en) | Data storage management method and device | |
US8086766B2 (en) | Support for non-locking parallel reception of packets belonging to a single memory reception FIFO | |
US10877891B2 (en) | Cache stashing in a data processing system | |
US9330025B2 (en) | Information processing apparatus, memory control apparatus, and control method thereof | |
WO2006124348A2 (en) | Dma reordering for dca | |
WO2016189294A1 (en) | Single-chip multi-processor communication | |
KR20020009823A (en) | Bus system and bus arbitration method thereof | |
KR20020008955A (en) | Bus system and execution scheduling method for access commands thereof | |
US6751704B2 (en) | Dual-L2 processor subsystem architecture for networking system | |
JP3444154B2 (en) | Memory access control circuit | |
JP5911548B1 (en) | Apparatus, method, and computer program for scheduling access request to shared memory | |
US9811453B1 (en) | Methods and apparatus for a scheduler for memory access | |
CN116089049B (en) | Asynchronous parallel I/O request-based process synchronous scheduling method, device and equipment | |
JP7493311B2 (en) | BUS SYSTEM AND CONTROL METHOD THEREOF | |
CN102420749A (en) | Device and method for realizing network card issuing function | |
JP2004310394A (en) | Sdram access control device | |
US7441138B2 (en) | Systems and methods capable of controlling multiple data access using built-in-timing generators | |
WO2019120274A1 (en) | Circular buffer method and apparatus of data for socfpga, storage medium and terminal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20140725 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
A4 | Supplementary search report drawn up and despatched |
Effective date: 20141104 |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06F 12/08 20060101ALI20141029BHEP Ipc: G06F 13/16 20060101ALI20141029BHEP Ipc: G06F 13/42 20060101AFI20141029BHEP |
|
DAX | Request for extension of the european patent (deleted) | ||
17Q | First examination report despatched |
Effective date: 20160727 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: GRANT OF PATENT IS INTENDED |
|
INTG | Intention to grant announced |
Effective date: 20181024 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE PATENT HAS BEEN GRANTED |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP Ref country code: AT Ref legal event code: REF Ref document number: 1119637 Country of ref document: AT Kind code of ref document: T Effective date: 20190415 |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602013053673 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: MP Effective date: 20190410 |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG4D |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 1119637 Country of ref document: AT Kind code of ref document: T Effective date: 20190410 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: AL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190710 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190910 Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: RS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190711 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190710 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190810 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602013053673 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SM Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
26N | No opposition filed |
Effective date: 20200113 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
REG | Reference to a national code |
Ref country code: BE Ref legal event code: MM Effective date: 20200131 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20200118 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20200131 Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20200131 Ref country code: BE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20200131 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190410 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20231130 Year of fee payment: 12 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: IE Payment date: 20231211 Year of fee payment: 12 Ref country code: FR Payment date: 20231212 Year of fee payment: 12 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: DE Payment date: 20231205 Year of fee payment: 12 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: IT Payment date: 20231212 Year of fee payment: 12 |