Method of managing requests for access to memories and data storage system
09583158 ยท 2017-02-28
Assignee
Inventors
Cpc classification
G06F9/3836
PHYSICS
G06F12/06
PHYSICS
G06F12/0844
PHYSICS
International classification
G11C7/10
PHYSICS
G06F12/06
PHYSICS
Abstract
The method includes, at a first clock cycle:obtaining (202) new requests by the processing stage;supplying (210) by the processing stage at least one of the new requests;placing on standby (212) by the processing stage at least one further new request, hereinafter referred to as a standby request. The method further includes, at a second clock cycle following the first clock cycle:obtaining (202) at least one new request by the processing stage;selecting (208) by the processing stage, from the standby request(s) and the new request(s), at least one request;la supplying (210) the selected request(s) by the processing stage.
Claims
1. A method for handling requests received by a storage system (100) that has a memory stage (114) containing memories (102.sub.n), a clock input (CLK) configured to receive a clock signal defining successive clock cycles, a request input (108) for receiving requests, each of said requests requesting access to a location of one of the memories (102.sub.n), and a processing stage (112), the method comprising: determining (214), by the processing stage (112), an existence or not of an old standby request, said old standby request being defined as a request that, at every one of L consecutive clock cycles immediately preceding a first clock cycle, i) has not been supplied to the memory stage (114), and ii) has been placed on standby in the processing stage, L being a predefined number greater than or equal to two; and at the first clock cycle: in the event that no old standby request is determined, the following steps are performed: obtaining (202), by the processing stage (112), one or more new requests from the request input (108), and selecting (208), by the processing stage (112), at least one request from the new request(s) and one or more standby requests if any, said standby requests being requests that have not been supplied to the memory stage (114) and have been placed on standby in the processing stage (112) during a previous clock cycle immediately preceding the first cycle; in the event that at least one old standby request is determined, the following steps are performed: suspending (206), by the processing stage (112), new requests from being obtained from the request input (108) for the first clock cycle, and selecting (208), by the processing stage (112), one or more of the standby request(s) not supplied to the memory stage (114) and placed on standby in the processing stage (112) during the previous clock cycle; supplying (210), by the processing stage (112), the selected request(s) to the memory stage (114); and not supplying to the memory stage (114), and placing on standby (212), all non-selected request(s) by the processing stage (112).
2. The method according to claim 1, wherein the selection (208) by the processing stage (112) of at least one request comprises the selection of a standby request.
3. The method according to claim 1, wherein the selection (208) by the processing stage (112) of at least one request comprises the selection of a new request.
4. The method according to claim 1, wherein, for at least one of the memories (102.sub.n), the selection of at least one request to be supplied to said at least one of the memories is carried out so as to select the greatest possible number of requests that the memory can receive at the next clock cycle.
5. The method according to claim 1, wherein, for at least one of the memories (102.sub.n), the selection of at least one request to be supplied to said at least one of the memories is carried out by giving priority to the requests placed on standby for the greatest number of clock cycles.
6. A data storage system (100), comprising: a memory stage (114) containing memories (102.sub.n); a clock input (CLK) that receives a clock signal defining successive clock cycles; and a request input (108) that receives requests, each of said requests requesting access to a location of one of the memories (102.sub.n); a processing stage (112), configured by way of programming encoded in a programming memory such that, during operation, said processing stage (112): determines (214) the existence or not of an old standby request, said old standby request being defined as a request that, at every one of L consecutive clock cycles immediately preceding a first clock cycle, i) has not been supplied to the memory stage (114), and ii) has been placed on standby in the processing stage, L being a predefined number greater than or equal to two; and, at the first clock cycle: in the event that no old standby request is determined, the processing stage (112): obtains one or more new requests from the request input (108), and selects (208) at least one request from the new request(s) and one or more standby request(s) if any, said standby requests being requests that have not been supplied to the memory stage (114) and have been placed on standby in the processing stage (112) during a previous clock cycle immediately preceding the first cycle; in the event that at least one old standby request is determined, the processing stage (112): suspends (206) new requests from being obtained from the request input (108) for the first clock cycle, and selects (208) one or more of the standby request(s), supplies the selected request(s) to the memory stage (114) not supplied to the memory stage (114) and placed on standby in the processing stage (112) during the previous clock cycle, wherein the processing stage (112) supplies the selected request(s) to the memory stage (114), and wherein the processing stage (112) places all the non-selected request(s) on standby.
7. The method according to claim 1, wherein the selection (208) by the processing stage (112) of at least one request comprises the selection of a standby request.
8. The method according to claim 1, wherein the selection (208) by the processing stage (112) of at least one request comprises the selection of a new request.
9. The method according to claim 1, wherein the request input comprises input ports (108) that each receive, at each clock cycle, not more than one request, and wherein, when a request received from one of the input ports (108) is placed on standby during the first clock cycle, a new request is received by said input port (108) at a following clock cycle immediately following the first clock cycle.
10. The data storage system according to claim 6, wherein the request input comprises input ports (108) that each receive, at each clock cycle, not more than one request, and wherein, when a request received from one of the input ports (108) is placed on standby during the first clock cycle, a new request is received by said input port (108) at a following clock cycle immediately following the first clock cycle.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Examples of embodiments of the invention will now be described with reference to the following figures:
(2)
(3)
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
(4) With reference to
(5) The storage system 100 firstly comprises a clock signal input CLK intended to receive a clock signal for timing the storage system 100. The clock signal defines successive clock cycles.
(6) The storage system 100 further comprises memories 102.sub.n (n=1 . . . N).
(7) Each memory 102.sub.n comprises one or a plurality of input ports globally designated by the reference 104.sub.n and one or a plurality of output ports globally designated by the reference 106.sub.n.
(8) Each input port 104.sub.n of each memory 102.sub.n is intended to receive, at each clock cycle, not more than one request for access to the memory 102.sub.n. This request is in the form of a local request indicating in particular an address of the memory 102.sub.n where the access is intended to be carried out. Each input port 104.sub.n is intended to receive read and write access requests, or specialised so as only to receive read access requests or write access requests.
(9) Each output port 106.sub.n of each memory 102.sub.n is associated with a single input port 104.sub.n and is intend to submit, at each clock cycle, not more than one response to a request obtained from the associated input port 104.sub.n. In the example described, only read requests are intended to give rise to a response, but not write requests. In this way, an output port 106.sub.n is associated with each input port 104.sub.n intended to receive at least read access requests, but there is no output port associated with the input ports 104.sub.n specialised for write mode.
(10) Each memory 102.sub.n is thus intended, at each clock cycle, to obtain requests from the input ports 104.sub.n thereof, to complete the requests, and to supply the output ports 106.sub.n thereof with any responses. As the input ports 104.sub.n are limited in number, each memory 102.sub.n is only suitable for obtaining a limited number of requests at each clock cycle, hereinafter referred to as the memory capacity.
(11) Alternatively, the completion of the requests takes a plurality of clock cycles.
(12) The storage system 100 further comprises at least two input ports globally designated by the reference 108 and one or a plurality of output ports globally designated by the reference 110.
(13) Each input port 108 is intended to receive, at each clock cycle, not more than one request to access one of the memories 102.sub.n. This request is in the form of a global request particularly indicating a global address structured as if the storage system 100 was a single memory. Each input port 108 is intended to receive read and write access requests, or specialised so as only to receive read access requests or write access requests.
(14) Each output port 110 is associated with a single input port 108 and is intended to submit, at each clock cycle, not more than one response to a request obtained from the associated input port 108. In the example described, only read requests are intended to give rise to a response, but not write requests. In this way, an output port 110 is associated with each input port 108 intended to receive at least read access requests, but there is no output port associated with the input ports 108 specialised for write mode.
(15) The storage system 100 further comprises one or a plurality of processing stages intended to successively process the requests obtained from the input ports 108, to complete the requests, and to supply a response if any. The processing stage(s) are intended to be successively traversed so as to form a processing pipeline. Preferably, each processing stage is intended to process the data received in one clock cycle. In this way, it is intended to receive, at each clock cycle, input data and to supply output data corresponding to the input data before the next clock cycle.
(16) In the example described, the storage system 100 comprises three processing stages: a request processing input stage 112, an intermediate stage 114 containing the memories 102.sub.n and output stage 116 for processing responses.
(17) The input stage 112 is intended, at each clock cycle, to carry out the steps to be detailed with reference to
(18) The output stage 116 is intended, at each clock cycle, to carry out the steps to be detailed with reference to
(19) Preferably, the storage system 100 is only produced with hardware components, and not with software components such as processors executing instructions saved on a storage medium.
(20) With reference to
(21) At each clock cycle, the following steps are carried out in the input stage 112.
(22) During a step 202, in the event of no priority request at the previous clock cycle, the input stage 112 obtains new requests from the input ports 108. As explained hereinafter, a priority request is a request placed on standby at each of the last L clock cycles from the previous clock cycle, L being a predefined number greater than or equal to two.
(23) During a step 204, for each new request obtained, the input stage 112 determines, by means of the addressing function F, the memory 102.sub.n and the local address in this memory targeted by the new request.
(24) During a step 206, in the event of one or a plurality of priority requests at the previous clock cycle, the input stage 112 refrains from obtaining new requests.
(25) During a step 208, the input stage 112 selects, from any standby request(s) and any new request(s), at least one request intended to be supplied at the intermediate stage 114. Preferably, the selection of at least one request is carried out according to the capacity of each memory 102.sub.n to obtain requests. In particular, each memory 102.sub.n, a number of requests less than or equal to the number of input port 104.sub.n of the memory 102.sub.n is selected. Preferably, the selection is carried out so as to select the greatest possible number of requests that the memory will be capable of receiving at the next clock cycle. Preferably, the selection of at least one request is carried out by giving priority to the oldest standby requests, i.e. the requests placed on standby for the greatest number of clock cycles.
(26) In the event of no standby request, the input stage 112 thus selects at least one new request.
(27) In the event of priority requests at the previous clock cycle, the input stage 112 thus selects at least one standby request and no new request (since no new request was received at the current clock cycle).
(28) During a step 210, the input stage 112 supplies each request selected to an input port 104.sub.n of the memory 102.sub.n targeted by this request. The request is supplied in the form of a local request particularly indicating the targeted local address.
(29) During a step 212, the input stage 112 places the non-selected request(s) on standby.
(30) In particular, if a new request has not been selected, this new request is placed on standby.
(31) During a step 214, the input stage 112 determines the existence or not of at least one request placed on standby for at least L clock cycles, including the current clock cycle, i.e. placed on standby at each of the last L clock cycles, including the current clock cycle. L is a predefined number less than or equal to two. Such a request is described as priority. The storage system 100 is then found in a so-called conflict situation. In this case, the input stage 112 suspends obtaining new requests for the next clock cycle. Preferably, the input stage 112 further notifies the data processing device (not shown) supplying the requests to the storage system 100 of this conflict situation, so that the latter, for example, suspends the dispatch of requests to the storage system 100 for the next clock cycle.
(32) In parallel, the following steps are carried out in the intermediate stage 114.
(33) During a step 216, each memory 102.sub.n obtains on the input ports 104.sub.n thereof the requests supplied thereto at the previous cycle in the form of local requests by the input stage 112.
(34) During a step 218, each memory 102.sub.n processes the requests obtained thereby. In particular, in the event of a write access request indicating data to be written, the memory 102.sub.n writes this data at the local address. In the case of a read request, the memory 102.sub.n reads the data located at the local address.
(35) During a step 220, each memory 102.sub.n supplies any responses on the output ports 106.sub.n thereof. In particular, in the event of a read access request, the memory 102.sub.n supplies the data read on the output port 106.sub.n thereof associated with the input port 104.sub.n whereon the request was obtained.
(36) In parallel, the following steps are carried out in the output stage 116.
(37) During a step 222, the output stage 116 obtains, from the output ports 106.sub.n of the memories 102.sub.n, any responses supplied by the memories 102.sub.n.
(38) During a step 224, the output stage 116 determines, for each possible response, the output port 110 whereon the response is intended to be supplied.
(39) During a step 226, the output stage 116 supplies each response on the output port 110 associated with the input port 108 whereon the request corresponding to this response was received.
(40) An example of operation of the storage system 100 implementing the handling method 200 will be described hereinafter.
(41) In this example, the storage system 100 comprises three input ports 108 (intended to receive read and write access requests).
(42) The storage system 100 further comprises three single-port memories 102.sub.n (N=3), i.e. each having a single input port 104.sub.n and a single associated output port 106.sub.n.
(43) Furthermore, the predefined number L equals two, such that a request placed on standby two clock cycles in succession takes priority and gives rise to a stop in new requests being obtained.
(44) To describe this example, a summary table will be given for each clock cycle.
(45) The left cell of the first row of the table indicates the new requests obtained on the input ports 108 at the current clock cycle.
(46) The right cell of the first row of the table indicates the requests remaining on standby, i.e. placed on standby at the clock cycle preceding the current clock cycle.
(47) The right cell of the second row of the table indicates the requests selected at the current clock cycle to be supplied at the intermediate stage 114.
(48) The left cell of the second row of the table indicates the requests placed on standby at the current clock cycle. A request determined to be priority at the end of the current clock cycle is indicated by underlining.
(49) The requests are annotated in the following format: Xy(n) where X is a letter corresponding to the input port (A for the first port, B for the second and C for the third), y is the number of the request and n is the index of the reference of the memory 102.sub.n targeted by the request.
(50) TABLE-US-00001 First clock cycle A1(1), B1(1), C1(2) A1(1), C1(2) B1(1)
(51) In this way, at the first clock cycle, the input stage 112 obtains new requests, supplies two new requests at the intermediate stage and places a new request on standby.
(52) TABLE-US-00002 Second clock cycle A2(1), B2(1), C2(3) B1(1) B1(1), C2(3) A2(1), B2(1)
(53) In this way, at the second clock cycle, the input stage 112 obtains new requests, supplies two requests from the new requests and the standby request and supplies these new requests. One of the two requests selected is a new request obtained at the second clock cycle.
(54) TABLE-US-00003 Third clock cycle A3(2), B3(3), C3(3) A2(1), B2(1) A2(1), A3(2), B3(3) B2(1), C3(3)
(55) In this way, at the third clock cycle, the input stage 112 determines the existence of a priority request.
(56) TABLE-US-00004 Fourth clock cycle B2(1), C3(3) B2(1), C3(3)
(57) In this way, at the fourth clock cycle, the input stage suspends obtaining new requests, and supplies the priority request along with a non-priority request.
(58) TABLE-US-00005 Fifth clock cycle A5(3), B5(2), C5(3) B5(2), A5(3) C5(3)
(59) To illustrate the results that can be obtained using the storage system 100 and the handling method 200 further, the ratio between the number of clock cycles wherein no new request is obtained due to the presence of at least one priority request at the previous clock cycle and the number of clock cycles wherein new requests are obtained due to the absence of priority requests at the previous clock cycle. The ratio was calculated for a plurality of values of the predefined number L, in the event of requests targeting the memories 106.sub.n at random and the storage system 100 comprising thirty-two input ports 108 and forty-eight single-port memories 102.sub.n (N=48).
(60) The results obtained are summarised in the table below.
(61) TABLE-US-00006 L ratio 1 1.78 2 1.14 3 0.62 4 0.3 5 0.14
(62) The invention is not limited to the examples of embodiment described above, but on the contrary defined by the claims hereinafter.
(63) It will indeed be obvious to those skilled in the art that various modifications may be made to the examples of embodiments described above, in the light of the teaching disclosed herein.
(64) Furthermore, in the claims hereinafter, the terms used should not be interpreted as limiting the claims to the features of the examples of embodiments described above, but should be interpreted to include any equivalent that can be envisaged by those skilled in the art by applying their general knowledge.