WO2015027754A1 - Multi-channel first-in first-out cache queue controller and access method - Google Patents

Multi-channel first-in first-out cache queue controller and access method Download PDF

Info

Publication number
WO2015027754A1
WO2015027754A1 PCT/CN2014/081719 CN2014081719W WO2015027754A1 WO 2015027754 A1 WO2015027754 A1 WO 2015027754A1 CN 2014081719 W CN2014081719 W CN 2014081719W WO 2015027754 A1 WO2015027754 A1 WO 2015027754A1
Authority
WO
WIPO (PCT)
Prior art keywords
accessed
block
address
service
data
Prior art date
Application number
PCT/CN2014/081719
Other languages
French (fr)
Chinese (zh)
Inventor
郑述乾
李天林
区树雄
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Publication of WO2015027754A1 publication Critical patent/WO2015027754A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays

Definitions

  • the present invention relates to the field of data transmission technologies, and in particular, to a multi-channel FIFO buffer queue
  • FPGA Field Programmable Gate Array
  • the low-bandwidth service is transformed into a time-division signal with a uniform bit width (such as 640 bits).
  • the bandwidth corresponding to multiple services may change over time.
  • a FIFO queue is needed to cache the data of the service.
  • the resources of the FIFO queue may be very consumed. Specifically, the random access memory (RAM) resource corresponding to the FIFO queue, the Look Up Table (LUT) resource, and the routing resource may be consumed.
  • RAM random access memory
  • LUT Look Up Table
  • Option 1 An existing solution (referred to as scenario 1) is shown in Figure 1.
  • Option 1 encapsulates multiple large-bit wide FIFO entities together as a multi-service channel FIFO entity.
  • the incoming data stream is distributed to the corresponding FIFO entity according to the channel number of the service;
  • data is read from different FIFO entities according to the channel number of the service.
  • the RAM buffer and the control circuit corresponding to different service channels in the multi-service channel FIFO queue cannot be shared, and the size of the RAM used by the multi-service channel FIFO queue must be designed according to the size of the largest service bandwidth particle, when the service channel
  • the RAM resource consumption is quite large, for example, a 640-bit width, 80 service channels, and a maximum of 128 units of multi-service channel FIFO per service channel, requiring nearly 400 RAMs on the FPGA.
  • the total RAM resources on a larger FPGA are more than 2,000.
  • FIG. 2 Another solution (Scheme 2 is briefly described below) is shown in FIG. 2.
  • all service channels share a large cache, and each service channel allocates space according to the size of the service particle, and the space of each service channel passes.
  • a circular linked list is organized.
  • Each service channel has its own linked list pointer, and each service channel performs cache read and write operations through the current read and write pointers.
  • the space of all the service channels in the scheme 2 is organized in the form of a circular linked list.
  • the embodiment of the invention provides a multi-channel FIFO cache queue controller and a multi-channel FIFO cache queue access method, which helps to reduce the problem of FIFO queue resource occupation when processing multiple services. .
  • a multi-channel FIFO queue controller including: an address determining circuit and a control circuit;
  • the address determining circuit is configured to:
  • the control circuit is used to:
  • the data to be accessed is accessed by the physical address of the data to be accessed determined by the address determining circuit in the data cache.
  • the address determining circuit is specifically configured to: determine, according to the identifier of the service, a logical address and a location of the to-be-accessed block An address of the data to be accessed in the block to be accessed;
  • the address determining circuit is specifically configured to:
  • the block address table records the identifier of the service, and the mapping relationship between the second logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, where the service is occupied.
  • the second logical address of the block to be accessed is [first_blk_addr, first-blk_addr Any integer in +n, where n is the number of blocks in the service occupancy data cache;
  • the identifier of the service is recorded in the first block address table, and a logical address of a first block of the plurality of blocks occupied by the service;
  • the logical address table records the identifier of the service, and the logical address of the data to be accessed, and the value of the logical address of the data to be accessed is [0, mx the number of blocks occupied by the service] Any integer in .
  • the address determining circuit is specifically configured to:
  • the logical address table records the identifier of the service, and the logical address of the data to be accessed, and the logical address of the data to be accessed takes the value of [0, mx the block occupied by the service. Any number in the number];
  • the block remapping table records the identifier of the service, and the mapping relationship between the logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, and multiple blocks occupied by the service
  • the logical address of the block to be accessed is any integer of [0, n], and the n is occupied by the service.
  • the number of blocks in the data cache is any integer of [0, n], and the n is occupied by the service.
  • the address determining circuit is further configured to:
  • a method for accessing a multi-channel FIFO queue including: determining, according to an identifier of a service, a physical address of a block to be accessed in a data cache, where the data cache includes a plurality of blocks, each block includes m Storage unit, m is a positive integer;
  • the data to be accessed is accessed by the physical address of the data to be accessed determined by the address determining circuit in the data cache.
  • the determining, by the physical address of the data to be accessed in the data cache includes:
  • determining, according to the identifier of the service, a logical address of the to-be-accessed block and the to-be-accessed Determining, by the address in the block to be accessed, the physical address of the block to be accessed according to the mapping relationship between the logics of the to-be-accessed block, according to the physical address and location of the block to be accessed Determining, by the address in the block to be accessed, the physical address of the data to be accessed in the data cache, which includes:
  • the block address table records the identifier of the service, and the mapping relationship between the second logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, where the service is occupied.
  • the second logical address of the block to be accessed is [first_blk_addr, first-blk_addr Any integer in +n, where n is the number of blocks in the service occupancy data cache;
  • the identifier of the service is recorded in the first block address table, and a logical address of a first block of the plurality of blocks occupied by the service;
  • the logical address table records the identifier of the service, and the logical address of the data to be accessed, and the value of the logical address of the data to be accessed is [0, mx the number of blocks occupied by the service] Any integer in .
  • determining, by the identifier of the service, a logical address of the to-be-accessed block and the to-be-accessed Determining, by the address in the block to be accessed, the physical address of the block to be accessed according to the mapping relationship between the logics of the to-be-accessed block, according to the physical address and location of the block to be accessed Determining the waiting for the address of the data to be accessed in the block to be accessed
  • the physical address of the accessed data in the data cache specifically including:
  • the logical address table records the identifier of the service, and the logical address of the data to be accessed, and the logical address of the data to be accessed takes the value of [0, mx the block occupied by the service. Any number in the number];
  • the block remapping table records the identifier of the service, and the mapping relationship between the logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, and multiple blocks occupied by the service
  • the logical address of the block to be accessed is any integer of [0, n], and the n is occupied by the service.
  • the number of blocks in the data cache is any integer of [0, n], and the n is occupied by the service.
  • control circuit accesses the to-be-accessed After the data, it also includes:
  • the embodiment of the invention provides a multi-channel FIFO queue controller and a multi-channel FIFO queue access method.
  • the data buffer is divided into a plurality of blocks, and the address determining circuit can determine the physical location of the block to be accessed according to the identifier of the service. Address.
  • the address determining circuit can further determine the physical address of the data to be accessed in the data cache accordingly.
  • the control circuit can access the data to be accessed according to the physical address of the data to be accessed determined by the address determining circuit in the data cache. Therefore, the foregoing technical solution helps the sharing of data caches by multiple services, and helps reduce the occupation of resources of the FIFO queue.
  • an embodiment of the present invention provides a method for determining a physical address of data to be accessed. That is, the physical address of the block to be accessed is determined according to the identifier of the service, and the physical address of the data to be accessed in the data cache is determined according to the physical address of the block to be accessed and the data to be accessed in the block to be accessed. The data to be accessed is accessed according to the physical address in the data cache according to the data to be accessed.
  • FIG. 1 is a schematic diagram of FIFO queue read and write data in the prior art scheme 1;
  • FIG. 2 is a schematic diagram of reading and reading data of a FIFO queue in the prior art scheme 2;
  • FIG. 3 is a schematic structural diagram of a multi-channel FIFO queue controller according to an embodiment of the present invention
  • FIG. 4 is a schematic structural diagram of a multi-channel FIFO queue controller and a data cache according to an example of the present invention
  • FIG. 5 is a schematic diagram of association between CH—BLK—MAP—TBL and other tables according to an embodiment of the present invention
  • FIG. 6 is a schematic diagram of a working process of an automatic refreshing unit of an entry according to an embodiment of the present invention
  • FIG. 7 is a logic block diagram of a multi-channel FIFO queue controller provided by the first embodiment of the present invention
  • FIG. 8 is a schematic structural diagram of a multi-channel FIFO queue controller and a data cache according to an example 2 according to an embodiment of the present disclosure
  • FIG. 9 is a schematic diagram of a data structure of a block remapping table in the second embodiment according to an embodiment of the present invention.
  • FIG. 10 is a content of a BLK REMAP TBL in an example according to an embodiment of the present invention; Schematic diagram
  • FIG. 11 is a flowchart of a multi-channel FIFO queue access method according to an embodiment of the present invention. detailed description
  • the service involved in the embodiment of the present invention may be carried in at least one of the first layer to the seventh layer defined by the Open Systems Interconnection Reference Model (OSI reference model).
  • OSI reference model Open Systems Interconnection Reference Model
  • the service may be a service carried at a third layer or a service carried at a fourth layer.
  • the service carried in the third layer may be an Internet Protocol (IP) service.
  • IP Internet Protocol
  • the service carried in the fourth layer may be a Transmission Control Protocol (TCP) service or a User Datagram Protocol (UDP) service.
  • TCP Transmission Control Protocol
  • UDP User Datagram Protocol
  • the service may be a video transmission service, an audio transmission service, or a text transmission service.
  • the multi-channel FIFO queue controller provided by the embodiment of the present invention includes: an address determining circuit 301 and a control circuit 302;
  • the address determination circuit 301 is used to:
  • the data cache includes a plurality of blocks, each of which contains m storage units, m is a positive integer, and the data cache may be RAM or other commonly used memory.
  • Control circuit 302 is used to:
  • the data to be accessed determined by the address determining circuit 302 is in the data cache
  • the above-mentioned access operation may be, for example, a read and/or write operation, data to be accessed, that is, data to be read or written, and a block to be accessed, that is, a block in which data to be read or written is located.
  • the data cache is divided into a plurality of blocks (the total number of blocks > the maximum possible number of services in the application scenario of the multi-service application in the embodiment of the present invention, the total number of blocks is not less than 2)
  • Each block of m units, the size of m can be designed according to the minimum bandwidth requirement in multi-service. Since the total service bandwidth is unchanged, when the multi-channel FIFO entity processes the large-bandwidth service, the inevitable service channel is relatively small, so that for each service, its corresponding service channel can be allocated more blocks; In the case of a small bandwidth service, there are many service channels. For each service, its corresponding service channel can still be allocated to the block that meets the requirements.
  • the number of blocks allocated for each service can be determined according to the size of the bandwidth actually occupied by the service.
  • the blocks occupying more bandwidth can be allocated more blocks. Otherwise, fewer blocks can be allocated.
  • the change in bandwidth requirements of each service adjusts the number of blocks allocated for each service in real time.
  • the address determining circuit 301 may be implemented by an integral circuit module in a specific implementation, or may be separately configured on two different circuit modules according to different access requirements, such as a read operation and a write operation.
  • the address determining function of the read operation and the address determining function of the write operation, the specific circuit implementation manner belongs to the prior art, and details are not described herein again.
  • control circuit 302 can be implemented by an integral circuit module in a specific implementation, or can be divided into two different circuit modules according to different access requirements, such as a read operation and a write operation requirement. To achieve control of read and write operations, respectively.
  • the address determining circuit 301 is further configured to determine, according to an identifier of the service, such as a channel number corresponding to the service, a logical address of the to-be-accessed block, and the The address of the data to be accessed in the block to be accessed; and according to the logical address of the block to be accessed, and the logical address of the block to be accessed and the physical address of the block to be accessed Mapping a relationship, determining a physical address of the block to be accessed; Determining, according to the physical address of the to-be-accessed block and the address of the to-be-accessed data, the physical address of the data to be accessed in the data cache.
  • the address determining circuit 301 determines, according to the identifier of the service (for example, the channel number corresponding to the service, etc.), the logical address of the to-be-accessed block and the address of the to-be-accessed data in the block to be accessed. According to the logical address of the block to be accessed, and the physical address of the block to be accessed; according to the physical address of the block to be accessed and the data to be accessed in the block to be accessed The address of the data to be accessed in the data cache is determined. In a specific implementation, there are specifically described as follows:
  • the address determining circuit searches the logical address table according to the identifier of the service (for example, the channel number corresponding to the service), and obtains the logical address of the data to be accessed;
  • the block address table includes: an identifier of the service, and a mapping relationship between a second logical address of the multiple blocks occupied by the service and a physical address of multiple blocks occupied by the service, where the service is occupied a second logical address of the plurality of blocks and a physical location of the plurality of blocks occupied by the service Address-correspondingly, the second logical address of the to-be-accessed block is any integer of [first_blk_addr, first-blk_addr+n], and the n is in the service occupation data cache.
  • the first block address table records: an identifier of the service, and a logical address of a first block of the plurality of blocks occupied by the service;
  • the logical address table includes: an identifier of the service, and a logical address of the data to be accessed, where a logical address of the data to be accessed is a value of [0, mx, the number of blocks occupied by the service Any integer in .
  • the foregoing block address table may record the identifiers of multiple services, the second logical address of all blocks occupied by each service, and the mapping relationship between physical addresses of all blocks occupied by each service. .
  • the identifiers of the plurality of services and the logical addresses of the first blocks of all the blocks occupied by each service may be recorded.
  • the identifiers of the plurality of services and the logical addresses of the data to be accessed by each service may be recorded.
  • the logical address of the data to be accessed, the first logical address of the block to be accessed, the logical address of the first block, and the second logical address of the block to be accessed are linear, and are to be accessed by a certain service A.
  • the logical address of the data is 29, and each block has 10 storage units as an example.
  • the address determining circuit obtains the first logical address of the block to be accessed, logic_blk_addr, according to the logical address (29) of the data to be accessed.
  • the process of the offset address logic_shift_addr in the block is actually obtained by dividing the logical address of the data to be accessed by the number of memory cells of each block, that is: the first logical address of the block to be accessed (logic- Blk_add) is equal to the logical address (29) of the data to be accessed divided by the quotient (2) obtained by the number of storage units (10) of each block, and the intra-block offset address (logic_shift_addr) is equal to the to-be-accessed
  • the logical address of the data (29) is divided by the remainder of the number of memory cells per block (10) (9).
  • the blocks in the data cache occupied by each service are different. If all the blocks in the data cache are designed in a linear manner to their logical addresses (for example, 0, 1, 2, 3, ...), in the first block address table, the first of all the blocks occupied by each service. For example, if the logical address of the block is different, the service A is used as an example. For example, if the address of the first block of all blocks occupied by the service A is 12, the second logical address of the block to be accessed is equal to 14 (12+ 2), according to the mapping relationship between the second logical address and the physical address of each block in the block address table, the physical address of the block to be accessed can be found.
  • the logical address of the block to be accessed is referred to by the first logical address and the second logical address respectively.
  • the first logical address represents all occupied by a certain service.
  • the block to be accessed is the first block.
  • the logical address of the data to be accessed by a certain service A is 29, and each block has 10 storage units as an example.
  • the first logical address of the block to be accessed (logic-blk) – add ) equal to 2, meaning that the block to be accessed is the second block of all blocks occupied by the service A (counting from the 0th block), and the second logical address represents all blocks in the entire data cache.
  • the second logical address of the block to be accessed by service A is 14 .
  • the address determining circuit queries the logical address table according to the identifier of the service (for example, the channel number corresponding to the service), and obtains the logical address of the data to be accessed;
  • the logical address logic_blk_addr queries the block remapping table to obtain the physical address of the block to be accessed; determining the to-be-accessed according to the physical address of the block to be accessed and the intra-block offset address The physical address of the data in the data cache;
  • the logical address table records the identifier of the service, and the logical address of the data to be accessed, and the logical address of the data to be accessed takes the value of [0, mx Any of the number of blocks used];
  • the block remapping table records the identifier of the service, and the mapping relationship between the logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, and multiple blocks occupied by the service
  • the logical address of the block to be accessed is any integer of [0, n], and the n is occupied by the service.
  • the number of blocks in the data cache is any integer of [0, n], and the n is occupied by the service.
  • the second way differs from the first one in that the second method uses a block remapping table instead of the block address table and the first block address table.
  • the foregoing logical address table may record identifiers of multiple services and logical addresses of data to be accessed by each service (logical addresses involved in current access operations).
  • the identifiers of the plurality of services, and the mapping relationship between the logical addresses of all the blocks occupied by each service and the physical addresses of all the blocks occupied by each service may be described.
  • the block remapping table For the block remapping table, it records the logical address and corresponding physical address of each block occupied by each service, and in the specific implementation, the table can be a two-dimensional table of n*x size ( n is the total number of chunks of the data cache, X is the total number of services), there are several records, each record records the physical address of the jth block of the i-th service, and the value of i is (0 ⁇ X) Any integer, j is any integer from (0 ⁇ n).
  • the address determining circuit queries the logical address table according to the identifier of the service (for example, the channel number corresponding to the service), acquires the logical address of the data to be accessed, and the logic according to the data to be accessed.
  • the step of obtaining the logical address of the to-be-accessed block, the data-blk_addr, and the in-block offset address, the data-shift-add, is the same as the first method, and is not described here.
  • Example 1 In order to better illustrate the structure and function of the above multi-channel FIFO queue controller provided by the embodiment of the present invention, the following details are described in two specific examples: Example 1:
  • the address determining circuit is implemented by two independent circuit modules: a FIFO write address remapping unit 401 (responsible for determining the address of the write operation) and a FIFO.
  • the read address remapping unit 402 (which is responsible for determining the address of the read operation), the control circuit (not shown in FIG. 4) controls the data buffer (RAM) 403 by issuing a RAM read/write enable signal (ram wr en, ram_rd_en ), respectively. The operation of reading and writing data.
  • the functions of the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 are independent of each other. For the entire multi-channel FIFO queue controller, only the read or write operation of the RAM 403 can be performed currently, or the RAM read can be performed simultaneously. And write operations.
  • the RAM 403 is divided into n (n > maximum possible number of service channels) blocks, each of which is m units, and the size of m can be designed according to the minimum bandwidth requirement in each service channel.
  • the access address of RAM 403 is divided into two levels: logical address and physical address.
  • the logical address is linear in the space of a certain FIFO service channel. For example, the logical address of the block in the RAM is 0, 1, 2, 3, ..., etc.; through this logical address, the data buffer can be generated to be full.
  • the status alarm and whether the alarm information such as the set water line is reached, the physical address is the actual access address in the RAM.
  • a block number table (BLK_NUM_TBL)
  • a first block address table (FIRST_BLK_ADDR_TBL)
  • the logical address table (LOGIC ADDR TBL) and the block address table (BLK_ADDR_TBL)
  • the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 complete the logical address to the physical address by respectively querying the respective included tables.
  • Re-mapping i.e., determining the physical address of the current service channel read and write access
  • the above process is similar for the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402.
  • the following addresses are remapped for read and write addresses. The process is described in a unified manner.
  • Each of the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 The contents of the table are as follows:
  • Block quantity table (BLK_NUM_TBL):
  • the size of the table is the maximum possible number of services X
  • the content is the number of buffers (BUFFER) blocks occupied by each service.
  • the content of the fifth address space is 6, indicating that the service, for example, the service channel number 5, shares 6 blocks.
  • the first address table ( FIRST — BLK — ADDR — TBL ):
  • the table size is the maximum possible number of services
  • the address is the service channel number
  • the block address occupied by the service with the content of each service channel number is BLK — ADDR —
  • the first address in the TBL table (ie the logical address of the first block in all blocks occupied).
  • the content of the logical address table included in the FIFO write address remapping unit 401 is a linear logical address to be written by each service
  • the content of the logical address table included in the FIFO read address remapping unit 402 is the linear logic to be read by each service.
  • Address, logical address can be used to determine the status of the data cache, such as empty, water line and so on.
  • Block Address Table (BLK_ADDR_TBL): The table size is the number of blocks n of RAM 403, which records the actual block address (ie physical address) of all blocks occupied by each service.
  • the multi-channel FIFO queue controller may further include: an entry automatic refresh unit 404, the entry automatically The refresh unit 404 is respectively connected to the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 for generating and refreshing the FIFO write address remapping unit 401 and the FIFO read respectively for the channel-block mapping table (CH BLK MAP TBL )
  • CH BLK MAP TBL channel-block mapping table
  • the content of CH BLK MAP TBL is preset according to the user's needs.
  • the size is the number of blocks of RAM n, and the content is the service channel number.
  • the service channel number is 2 (referred to as service channel).
  • the traffic of channel 2) occupies the 2nd and 3rd blocks, and the content of the 2nd and 3rd address spaces of CH BLK MAP TBL is 2.
  • the data cache (RAM) number of the multi-channel FIFO entity is 12, the maximum number of services is 6, and only 3 services (corresponding service channel numbers are 0, 2, 5) are actually used, where:
  • the service of service channel 0 occupies blocks of 0, 3, 6, and 9;
  • the service of service channel 2 occupies blocks of 1, 4, 7, and 10;
  • the service of service channel 5 occupies blocks of 2, 5, 8, and 11;
  • BLK-NUM-TBL the number of blocks occupied by services with service channel numbers 0, 2, and 5 is 4, and the number of blocks occupied by other services is 0. The number of blocks occupied by these three services is correspondingly used. Fill pattern display.
  • the physical address of the block occupied by each service is recorded.
  • the physical address of the block occupied by the service with the service channel number 0 is 0, 3, 6, and 9, and the service channel number 2 is occupied.
  • the physical addresses of the blocks whose physical addresses are 1, 4, 7, and 10, and the services with service channel number 5 are 2, 5, 8, and 11.
  • the address of the first block of all the blocks occupied by the service with the service channel number 0 is 0, and the first block of all the blocks occupied by the service with the service channel number 2 is The address of the service is 4, and the address of the first block of the service with channel number 5 is 8.
  • FIFO write address remapping unit 401 and FIFO read address remapping unit 402 read and write addresses The process of remapping is as follows:
  • the block quantity table (BLK_NUM_TBL), the first block The address table ( FIRST_BLK_ADDR_TBL ) and the logical address table ( LOGIC ADDR TBL ), the number of blocks occupied by the service of the service channel number (blk_num), the logical address of the block to be read and written by the service (logic_blk_addr), and the intra-block bias
  • the address (logic_shift_addr), the logical address of the first block in all blocks occupied by the service (first_blk_addr).
  • the physical address of the block determines that the service is to be read or written according to the physical address (phy-blk_addr) of the block to be read and written by the service and the offset_addr in the block.
  • the physical address (phy_addr) of the data in the data cache completes the mapping of the logical address to the physical address.
  • ⁇ logic-blk_addr, logic_shift_addr ⁇ + 1 is written back to the logical address of the next read/write operation (logic addr next ) ( LOGIC_ADDR_TBL ), and the logical address table is updated.
  • the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 if querying the respective logical address table, determine that the logical address of the block to be read or written by the service exceeds the upper limit of the range of the logical address.
  • the logical address of the block to be read or written in the logical address table is set to 0, which means that the current read and write needs to start from the first block occupied by the service, and the read and write operations are guaranteed to be performed in the block occupied by the service. .
  • an empty alarm and water are also provided according to the logical address to be read and written by the service.
  • the mechanism of the line alarm is specifically implemented by the FIFO alarm unit 405.
  • the logical address table includes the symbols for reading and writing the current service. Bit, thus, the data structure of the logical address table is ⁇ write address sign bit (1 bit), write address ⁇ , ⁇ read address sign bit (1 bit), read address ⁇ .
  • the above write address sign bit indicates whether the logical address of the current service write (read) is increased to a bit equal to the occupied space size.
  • the write address sign bit (read address sign bit) in the logical address table is toggled when the write (read) address sign bit occurs once the logical address of the data to be written (read) increases to equal the size of the space. Flip (inverted from the current value, 0 ⁇ or 1 ⁇ 0, the initial value is 0), and the logical address of the data to be written (read) will be zero.
  • the FIFO alarm unit 405 calculates the waterline value for each service by:
  • the water line value write logical address - read logical address
  • High water line alarm When the water line value is greater than the preset high water line value, the high water line alarm is reported, otherwise the alarm is cancelled;
  • Low water line alarm When the water line value is less than the preset low water line value, the low water line alarm is reported, otherwise the alarm is cancelled;
  • Write overflow alarm Read address symbol bit ⁇ write address sign bit, and read logical address ⁇ write logic address, write overflow alarm is valid, otherwise invalid;
  • the embodiment of the present invention further provides a corresponding mechanism for refreshing the entry.
  • the automatic entry refreshing unit 404 is further configured to use the service channel-block that is pre-configured by the user.
  • the mapping table generates a block quantity table, a first block address table, and a block address table as a main table for querying by the FIFO write address remapping unit and the FIFO read address remapping unit, and backing up the block quantity table, the first block address table, and the block address
  • the table serves as a backup form.
  • the above-mentioned entry automatic refreshing unit is also used to periodically configure the content of the service channel-block mapping table according to the content of the user.
  • the table, the first address table, and the table of the block address table are refreshed, and the refreshed table is switched to the corresponding master table for query by the FIFO write address remapping unit and the FIFO read address remapping unit.
  • the working process of the table item automatic refresh unit is as shown in FIG. 6, and the BLK_NUM_TBL, FIRST_BLK_ADDR_TBL and BLK_ADDR-TBL in the FIFO write address remapping unit and the FIFO read address remapping unit are generated.
  • the main table and the standby table are operated by the multi-channel FIFO working logic.
  • the table item automatically refreshes the unit operation standby table and performs real-time table refresh and active/standby switching.
  • the automatic refresh unit of the entry can ensure the consistency of the information of the active and standby tables, and the operation of refreshing the entry does not affect the read and write process of the multi-channel FIFO queue controller, and dynamically adds and deletes services according to the needs of the user, and does not There is business impact.
  • FIG. 7 is a logic block diagram of the multi-channel FIFO queue controller provided in the first embodiment.
  • the data buffer is divided into n blocks, each service block shares a data cache, and the address remapping logic (for example, can be implemented by an address remapping unit).
  • the access address of the read/write operation in the data cache can be determined, and the empty state generating logic (for example, can be implemented by the FIFO alarm unit) generates a state alarm that the service storage space is full according to the logical address.
  • the remapping entry refresh logic (by the table entry auto-refresh unit) refreshes the entries required for remapping.
  • the multi-channel FIFO queue controller also includes a FIFO write address remapping unit. 801 (address responsible for determining the write operation) and FIFO read address remapping unit 802 (responsible for determining the address of the read operation), data cache 803, read and write control unit (not illustrated in FIG. 8), table entry automatic refresh unit 804, and
  • the FIFO alarm unit 805 differs in that the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 contain entries different from the first example.
  • the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 respectively include a quantity table (BLK_NUM_TBL), a logical address table (LOGIC ADDR TBL), and a block remapping.
  • Table (BLK REMAP TBL) where:
  • the contents of the block quantity table and the logical address table are the same as those of the first embodiment, and will not be described here.
  • the data structure of the block remapping table is as shown in FIG. 9.
  • the table is a two-dimensional table of n*x size (n The number of blocks for RAM, x is the maximum number of possible services, and the content is the jth value of j for a service whose service channel number is i (i is any integer in (0 ⁇ x)) Is the physical address of any block in (0 ⁇ n).
  • the BLK-REMAP-TBL in the second example realizes the function of the FIRST-BLK-ADDR-TBL+BLK ADDR TBL in the first instance in the remapping process of the address, and the storage space ratio occupied by the table.
  • a single FIRST-BLK-ADDR-TBL or a single BLK ADDR TBL is larger, which is another way to reduce the complexity of the space.
  • the number of data RAM blocks is 12, the maximum possible number of services is 6, and only 3 channels (channel numbers 0, 2, 5) are actually used.
  • the content of BLK-REMAP-TBL is shown in Figure 10.
  • Channel 0 occupies blocks of 0, 3, 6, and 9;
  • channel 2 occupies blocks of 1, 4, 7, and 10;
  • channel 5 occupies blocks of 2, 5, 8, and 11.
  • the space filled with X in Fig. 11 indicates the block corresponding to the channel that does not exist.
  • the process of remapping the read/write address by the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 is also different from that of the first example, as follows:
  • the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 respectively query the block number table (BLK NUM TBL) and the logical address table based on the service channel number sent from the previous stage.
  • the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 can learn the logical address range of the block occupied by the service by querying the number of blocks (blk_num) occupied by the service, and the service is to be read and written.
  • the block remapping table (BLK_REMAP_TBL) is queried according to the service channel number of the service and the logical address (logic_blk_addr) of the block to be read or written by the service. Get the physical address of the block to be read or written by the service
  • the FIFO write address remapping unit 801 and the FIFO read address remapping unit 902 if the respective logical address table is queried to determine that the logical address of the block to be read or written by the service exceeds the upper limit of the range of the logical address, the logical address table is The logical address of the block to be read or written by this service is set to zero.
  • the control unit controls the read and write enable of the service to be 0.
  • the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 are connected, respectively, for the channel-block mapping table (CH) according to the user pre-configuration.
  • CH channel-block mapping table
  • BLK MAP TBL BLK MAP TBL
  • a block quantity table BLK NUM TBL
  • a block remapping table BLK_REMAP_TBL
  • the address remapping unit 801 and the FIFO read address remapping unit 802 perform a query and back up the block number table and the block remapping table as a standby table.
  • the table item automatic refreshing unit 804 may also periodically refresh the table of the block quantity table and the block remapping table according to the content of the configuration of the service channel-block mapping table by the user, and switch the refreshed table.
  • the corresponding main table is queried by the FIFO write address remapping unit and the FIFO read address remapping unit.
  • the process of generating the block quantity table and the block remapping table by the foregoing table item refreshing unit is the same as the process of refreshing the block quantity table and the block remapping table, and details are not described herein again.
  • the above multi-channel FIFO queue controller provided by the embodiment of the present invention can be implemented by various hardware circuit units, for example, by a common FPGA.
  • the multi-channel FIFO queue controller provided by the embodiment of the present invention can realize that multiple services share the same data cache, which greatly saves the resources occupied by the RAM of the super-large bit-width multi-channel FIFO entity, and has been experimentally proved that the number of services is In the case of a multi-channel FIFO with a minimum service depth requirement of 16 storage units and a maximum service depth requirement of 128 storage units, if it is designed according to the existing scheme 1, approximately 400 RAMs are required, and the application is required.
  • the implementation of the above multi-channel FIFO queue controller provided by the embodiment of the invention requires only no more than 80 pieces of RAM (including additional entries), which saves about 80% from the RAM resource, and other resources can also be saved. It can also save nearly 70%, and the resources saved are still very impressive.
  • the embodiment of the present invention further provides a multi-channel FIFO queue access method.
  • the principle of the method is similar to the foregoing multi-channel FIFO queue controller. Therefore, the implementation of the method can be referred to the foregoing multi-channel. The implementation of the FIFO queue controller will not be repeated here.
  • the access method of the multi-channel FIFO queue provided by the embodiment of the present invention, as shown in FIG. 11, includes the following steps:
  • the determining the physical address of the data to be accessed in the data cache may be implemented by:
  • the physical address in the data cache can be implemented in the following two ways:
  • the block address table records the identifier of the service, and the mapping relationship between the second logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, where the service is occupied. a second logical address of the plurality of blocks and a physical address of the plurality of blocks occupied by the service
  • the second logical address of the block to be accessed takes any integer in [first_blk_addr, first-blk_addr+n], and the n is in the service occupation data cache.
  • the identifier of the service is recorded in the first block address table, and a logical address of a first block of the plurality of blocks occupied by the service;
  • the logical address table records the identifier of the service, and the logical address of the data to be accessed, and the value of the logical address of the data to be accessed is [0, mx the number of blocks occupied by the service] Any integer in .
  • determining the physical address of the data to be accessed in the data cache needs to query the logical address table and the block remapping table. Specifically, the process is as follows: according to the identifier of the service Querying a logical address table to obtain a logical address of the data to be accessed;
  • the logical address table records the identifier of the service, and the logical address of the data to be accessed, and the logical address of the data to be accessed takes the value of [0, mx Any of the number of blocks used];
  • the block remapping table records the identifier of the service, and the mapping relationship between the logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, and multiple blocks occupied by the service
  • the logical address of the block to be accessed is any integer of [0, n], and the n is occupied by the service.
  • the number of blocks in the data cache, the specific data structure can be seen in Figure 8 above.
  • the access method of the multi-channel FIFO queue may also perform the following steps:
  • the step of querying the block quantity table may be performed according to the service identifier.
  • the block quantity table records the service identifier of multiple services, the number of blocks of the data cache occupied by each service, and the purpose of querying the block quantity table, the number of blocks of the data cache occupied by the service can be known, and then the logical address of the service is determined.
  • the range of the data to be accessed in the logical address table is set to 0 when it is determined that the logical address of the data to be accessed by the service exceeds the upper limit of the logical address range.
  • block quantity table the first block address table, and the block address table used in the query in the foregoing manner 1 are generated by:
  • a block quantity table, a first block address table, and a block address table as a main table for query according to the service channel-block mapping table configured by the user; wherein, the service channel-block mapping table records each block and the data cache The mapping relationship between the occupied services (using the service channel number as the identifier).
  • the embodiment of the present invention may further perform the following steps:
  • block quantity table and the block remapping table used in the query in the foregoing mode 2 are generated in the following manner:
  • a block quantity table and a block remapping table as a main table for query according to the service channel-block mapping table configured by the user; wherein the service channel-block mapping table records each block in the data cache and the occupied service The mapping relationship between.
  • the embodiment of the present invention may further perform the following steps:
  • the block quantity table and the block remapping table as the standby table are refreshed, and the refreshed tables are switched to the corresponding main table for query.
  • refreshing the block quantity table and the block remapping table as the standby table is specifically implemented by the following process:
  • the multi-channel FIFO queue controller and the access method thereof provided by the embodiment of the invention, the multi-channel FIFO queue controller packet address determining circuit and the control circuit.
  • the data buffer is divided into a plurality of blocks, and the address determining circuit can determine the physical address of the block to be accessed based on the identity of the service.
  • the address determining circuit can further determine the physical address of the data to be accessed in the data cache based on this.
  • the control circuit can access the data to be accessed according to the physical address of the data to be accessed determined by the address determining circuit in the data cache. Therefore, the above technical solution helps the sharing of data caches by multiple services, which helps to reduce the occupation of resources of the FIFO queue.
  • embodiments of the present invention provide a method of determining the physical address of data to be accessed. That is, the physical address of the block to be accessed is determined according to the identifier of the service, and the physical address of the data to be accessed in the data cache is determined according to the physical address of the block to be accessed and the data to be accessed in the in-block address to be accessed. The data to be accessed is accessed according to the physical address in the data cache according to the data to be accessed.
  • the process of determining the physical address of the data to be accessed in the data cache there is no need to rely on the linked list pointer, and the reliability is high.
  • the multi-channel FIFO queue controller and the access method thereof are provided by the embodiment of the present invention, and the access address of the data cache is divided into two levels, a logical address and a physical address, and a mapping relationship between the two is established, and the logic is established.
  • the address is used to determine the corresponding physical address. Since the logical address is linear in the data buffer space, the logical address can be used to identify the empty state of the current data buffer and whether the current water line reaches the preset high and low water line. This makes up for the shortcomings of the prior art, such as Scheme 1 and Scheme 2, which do not recognize the data cache storage state.
  • the block quantity table, the first block address table, and the block address table (or the block quantity table) according to the determination of the read/write address of each service are determined.
  • the block remapping table) are generated and refreshed according to the content of the service channel-block mapping table configured by the user. Therefore, the reliability of determining the physical address of the data to be read and written of each service is almost equivalent to the user configuration. The reliability of the entries, the bandwidth of the business and other differences Often unrelated, further ensuring the reliability of multi-channel FIFO read and write operations.
  • the multi-channel FIFO queue controller and the access method thereof provided by the embodiment of the present invention, the block quantity table, the first block address table, and the block address table according to the determination of the address of the data to be read and written for each service (or The block quantity table and the block remapping table are periodically refreshed, and an active/standby switching mechanism is provided to implement dynamic changes such as additions and deletions of services without affecting the read and write operations of service data.

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Embodiments of the present invention provide a multi-channel FIFO queue controller and an access method for the multi-channel FIFO queue. The multi-channel FIFO queue controller comprises an address determining circuit and a control circuit. The address determining circuit is used for determining a physical address of a block to be accessed in a data cache according to an identification of a service, the data cache comprising multiple blocks, each of the blocks comprising m storage units, and m being a positive integer; and determining a physical address of data to be accessed in the data cache according to the physical address of the block to be accessed and an address of the data to be accessed in the block to be accessed. The control circuit is used for accessing the data to be accessed according to the physical address determined by the address determining circuit, of the data to be accessed in the data cache. The solution helps multiple services share the data cache, and helps to reduce the occupancy of resources of the FIFO queue, and the reliability is higher.

Description

多通道先进先出缓存队列控制器及访问方法 技术领域  Multi-channel FIFO cache queue controller and access method
本发明涉及数据传送技术领域, 尤其涉及多通道先进先出緩存队列 The present invention relates to the field of data transmission technologies, and in particular, to a multi-channel FIFO buffer queue
( first in first out queue , FIFO queue )控制器及访问方法。 (first in first out queue , FIFO queue ) controller and access method.
背景技术 Background technique
在传送领域, 随着传输带宽越来越大(例如 100G、 200G或者 400G ), 通讯设备中的现场可编程逻辑门阵列 ( Field Programmable Gate Array, FPGA )在处理多业务时、 往往把多路的低带宽业务变换成统一位宽的时分 信号 (如 640bit )。 多业务对应的带宽可能随着时间变化。 在不同业务处理 之间进行适配的时候, 需要一个 FIFO queue对业务的数据进行緩存。在大位 宽的场景下, 可能非常消耗 FIFO queue的资源。 具体来说, 可能非常消耗 FIFO queue对应的随机存储器( Random Access Memory, RAM ) 资源, 查 找表( Look Up Table, LUT ) 资源以及布线资源。  In the field of transmission, as the transmission bandwidth is getting larger (for example, 100G, 200G or 400G), Field Programmable Gate Array (FPGA) in communication equipment often uses multiple channels when processing multiple services. The low-bandwidth service is transformed into a time-division signal with a uniform bit width (such as 640 bits). The bandwidth corresponding to multiple services may change over time. When adapting between different business processes, a FIFO queue is needed to cache the data of the service. In a large-width scenario, the resources of the FIFO queue may be very consumed. Specifically, the random access memory (RAM) resource corresponding to the FIFO queue, the Look Up Table (LUT) resource, and the routing resource may be consumed.
一个现有的解决方案 (简称方案 1 )如图 1所示。 方案 1将多个大位宽 的 FIFO实体, 包封在一起作为一个多业务通道 FIFO实体来使用。 在数据输 入侧, 进来的数据流按照业务的通道号分发到对应的 FIFO实体; 在数据输 出侧, 根据业务的通道号, 从不同的 FIFO实体中读取数据。  An existing solution (referred to as scenario 1) is shown in Figure 1. Option 1 encapsulates multiple large-bit wide FIFO entities together as a multi-service channel FIFO entity. On the data input side, the incoming data stream is distributed to the corresponding FIFO entity according to the channel number of the service; on the data output side, data is read from different FIFO entities according to the channel number of the service.
上述方案 1中, 多业务通道 FIFO queue中不同业务通道对应的 RAM緩 存和控制电路都不能共享, 多业务通道 FIFO queue所使用的 RAM的大小必 须按照最大业务带宽颗粒的大小来设计, 当业务通道数量很多 (例如 >=64 ) 时, RAM的资源耗费相当巨大, 例如一个 640bit位宽, 80个业务通道, 每业 务通道最深 128个单元的多业务通道 FIFO, 在 FPGA上设计需要近 400块 RAM, 而一片较大的 FPGA上总的 RAM资源也就 2000多块。 并且, 在实际 应用场景中, 只有非常少数的几个业务通道会有大带宽的业务, 其他业务 通道都是空闲的 (总的带宽不变, 某些业务通道带宽大, 其他的业务通道 必然带宽小或者没有 ), 这样就造成了 RAM资源的浪费。 In the foregoing solution 1, the RAM buffer and the control circuit corresponding to different service channels in the multi-service channel FIFO queue cannot be shared, and the size of the RAM used by the multi-service channel FIFO queue must be designed according to the size of the largest service bandwidth particle, when the service channel When the number is large (for example, >=64), the RAM resource consumption is quite large, for example, a 640-bit width, 80 service channels, and a maximum of 128 units of multi-service channel FIFO per service channel, requiring nearly 400 RAMs on the FPGA. The total RAM resources on a larger FPGA are more than 2,000. In addition, in a practical application scenario, only a very small number of service channels have large bandwidth services, and other service channels are idle (the total bandwidth is constant, some service channels have large bandwidth, and other service channels are available. Inevitably, the bandwidth is small or not, which causes waste of RAM resources.
另外一种解决方案 (下面简述方案 2 )如图 2所示, 该方案 2中, 所有 业务通道共享一块大的緩存, 每个业务通道按照业务颗粒大小分配空间, 每个业务通道的空间通过一个循环链表组织起来。 每个业务通道都有自己 的链表指针, 每个业务通道都通过当前的读写指针进行緩存的读写操作。  Another solution (Scheme 2 is briefly described below) is shown in FIG. 2. In the solution 2, all service channels share a large cache, and each service channel allocates space according to the size of the service particle, and the space of each service channel passes. A circular linked list is organized. Each service channel has its own linked list pointer, and each service channel performs cache read and write operations through the current read and write pointers.
该方案 2 中所有业务通道的空间通过循环链表形式组织起来, 当链表 的指针发生异常错误时, 会导致无法恢复的错误, 可靠性较差。 发明内容  The space of all the service channels in the scheme 2 is organized in the form of a circular linked list. When an abnormality occurs in the pointer of the linked list, an error that cannot be recovered is caused, and the reliability is poor. Summary of the invention
本发明实施例提供了一种多通道先进先出緩存队列控制器及多通道先 进先出緩存队列访问方法, 有助于减少对多个业务进行处理时, 对 FIFO queue的资源占用较多的问题。  The embodiment of the invention provides a multi-channel FIFO cache queue controller and a multi-channel FIFO cache queue access method, which helps to reduce the problem of FIFO queue resource occupation when processing multiple services. .
第一方面, 提供了一种多通道 FIFO queue控制器, 包括: 地址确定电 路和控制电路;  In a first aspect, a multi-channel FIFO queue controller is provided, including: an address determining circuit and a control circuit;
所述地址确定电路用于:  The address determining circuit is configured to:
根据业务的标识确定在数据緩存中的待访问的块的物理地 址, 所述数据緩存包含多个块, 每个块包含 m个存储单元, m为 正整数;  Determining, according to the identifier of the service, a physical address of the block to be accessed in the data cache, where the data buffer includes a plurality of blocks, each block includes m storage units, and m is a positive integer;
根据所述待访问的块的物理地址和待访问的数据在所述待访 问的块内的地址, 确定所述待访问的数据在所述数据緩存中的物 理地址;  Determining, according to the physical address of the to-be-accessed block and the data to be accessed, an address in the to-be-accessed block, a physical address of the data to be accessed in the data cache;
所述控制电路用于:  The control circuit is used to:
根据所述地址确定电路确定的所述待访问的数据在所述数据緩存中的 物理地址访问所述待访问的数据。  And the data to be accessed is accessed by the physical address of the data to be accessed determined by the address determining circuit in the data cache.
第一方面的第一种可能的实现方式中, 所述地址确定电路具体用于: 根据所述业务的标识, 确定所述待访问的块的逻辑地址和所 述待访问的数据在所述待访问的块内的地址; In a first possible implementation manner of the first aspect, the address determining circuit is specifically configured to: determine, according to the identifier of the service, a logical address and a location of the to-be-accessed block An address of the data to be accessed in the block to be accessed;
根据所述待访问的块的逻辑地址, 以及所述待访问的块的逻 待访问的块的物理地址;  According to the logical address of the block to be accessed, and the physical address of the block to be accessed by the block to be accessed;
根据所述待访问的块的物理地址和所述待访问的数据在所述 待访问的块内的地址, 确定所述待访问的数据在所述数据緩存中 的物理地址。  And determining, according to the physical address of the block to be accessed and the address of the to-be-accessed data in the block to be accessed, a physical address of the data to be accessed in the data cache.
根据第一方面的第一种可能的实现方式, 在第一方面的第二种可能的 实现方式中, 所述地址确定电路具体用于:  According to the first possible implementation manner of the first aspect, in the second possible implementation manner of the first aspect, the address determining circuit is specifically configured to:
根据所述业务的标识查询逻辑地址表, 获取所述待访问的数 据的逻辑地址;  Querying a logical address table according to the identifier of the service, and acquiring a logical address of the data to be accessed;
根据所述待访问的数据的逻辑地址得到所述待访问的块的第 一還辑地址 logic blk addr和块内偏移地址 logic— shift— addr;  Obtaining, according to the logical address of the data to be accessed, a first rendition address of the block to be accessed, a logic blk addr, and an intra-block offset address, a logic_shift_addr;
根据所述业务的标识查询首块地址表, 得到所述业务占用的 多个块中首个块的逻辑地址 first— blk— addr;  Querying the first block address table according to the identifier of the service, and obtaining a logical address of the first block of the plurality of blocks occupied by the service, first blk_addr;
根据待访问的块的第二逻辑地址查询块地址表, 得到所述待 访问的块的物理地址, 所述待访问的块的第二逻辑地址等于 logic blk addr与 first— blk— addr的和;  Querying a block address table according to a second logical address of the block to be accessed, obtaining a physical address of the block to be accessed, where a second logical address of the block to be accessed is equal to a sum of logic blk addr and first_blk_addr;
根据所述待访问的块的物理地址和所述块内偏移地址, 确定 所述待访问的数据在所述数据緩存中的物理地址;  Determining, according to the physical address of the to-be-accessed block and the intra-block offset address, a physical address of the data to be accessed in the data cache;
其中, 所述块地址表中记载所述业务的标识, 以及所述业务占用的多 个块的第二逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所 述业务占用的多个块的第二逻辑地址和所述业务占用的多个块的物理地址 ——对应, 所述待访问的块的第二逻辑地址取值为 [first— blk— addr, first— blk— addr+n]中任一整数, 所述 n为所述业务占用数据緩存中的块的数 量; 所述首块地址表中记载所述业务的标识, 以及所述业务占用的多个块 中首个块的逻辑地址; The block address table records the identifier of the service, and the mapping relationship between the second logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, where the service is occupied. Corresponding to the second logical address of the plurality of blocks and the physical address of the plurality of blocks occupied by the service, the second logical address of the block to be accessed is [first_blk_addr, first-blk_addr Any integer in +n, where n is the number of blocks in the service occupancy data cache; The identifier of the service is recorded in the first block address table, and a logical address of a first block of the plurality of blocks occupied by the service;
所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数据的逻 辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占用的块 的数量]中任一整数。  The logical address table records the identifier of the service, and the logical address of the data to be accessed, and the value of the logical address of the data to be accessed is [0, mx the number of blocks occupied by the service] Any integer in .
根据第一方面的第一种可能的实现方式, 在第一方面的第三种可能的 实现方式中, 所述地址确定电路具体用于:  According to a first possible implementation manner of the first aspect, in a third possible implementation manner of the first aspect, the address determining circuit is specifically configured to:
根据所述业务的标识查询逻辑地址表, 获取所述待访问的数 据的逻辑地址;  Querying a logical address table according to the identifier of the service, and acquiring a logical address of the data to be accessed;
根据所述待访问的数据的逻辑地址, 得到所述待访问的块的 還辑地址 logic blk addr和块内偏移地址 logic— shift— addr;  Obtaining, according to the logical address of the data to be accessed, the address of the block to be accessed, the logical blk addr and the intra-block offset address logic_shift_addr;
根据所述业务的标识和所述待访问的块的逻辑地址 logic— blk— addr查询块重映射表,得到所述待访问的块的物理地址; 根据所述待访问的块的物理地址和所述块内偏移地址, 确定 所述待访问的数据在所述数据緩存中的物理地址;  Determining a block remapping table according to the identifier of the service and the logical address of the block to be accessed, logic_blk_addr, to obtain a physical address of the block to be accessed; according to the physical address and location of the block to be accessed Determining an intra-block offset address, determining a physical address of the data to be accessed in the data cache;
其中, 所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数 据的逻辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占 用的块的数量]中任一整数;  The logical address table records the identifier of the service, and the logical address of the data to be accessed, and the logical address of the data to be accessed takes the value of [0, mx the block occupied by the service. Any number in the number];
所述块重映射表中记载所述业务的标识、 以及所述业务占用的多个块 的逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所述业务占 用的多个块的逻辑地址和所述业务占用的多个块的物理地址——对应, 所 述待访问的块的逻辑地址取值为 [0, n]中的任一整数, 所述 n为所述业务占 用数据緩存中的块的数量。  The block remapping table records the identifier of the service, and the mapping relationship between the logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, and multiple blocks occupied by the service Corresponding to the logical address of the plurality of blocks occupied by the service, the logical address of the block to be accessed is any integer of [0, n], and the n is occupied by the service. The number of blocks in the data cache.
根据第一方面的第二种可能的实现方式或者第三种可能的实现方式, 在第一方面的第四种可能的实现方式中, 所述地址确定电路还用于:  According to the second possible implementation manner of the first aspect, or the third possible implementation manner, in the fourth possible implementation manner of the first aspect, the address determining circuit is further configured to:
在所述控制电路访问所述待访问的数据之后, 使用所述业务下次访问 的数据的逻辑地址替换所述逻辑地址表中所述待访问的数据的逻辑地址。 第二方面, 提供了一种多通道 FIFO queue的访问方法, 包括: 根据业务的标识, 确定在数据緩存中待访问的块的物理地址, 所述数 据緩存包含多个块, 每个块包含 m个存储单元, m为正整数; After the control circuit accesses the data to be accessed, using the service for the next access The logical address of the data replaces the logical address of the data to be accessed in the logical address table. In a second aspect, a method for accessing a multi-channel FIFO queue is provided, including: determining, according to an identifier of a service, a physical address of a block to be accessed in a data cache, where the data cache includes a plurality of blocks, each block includes m Storage unit, m is a positive integer;
根据所述待访问的块的物理地址和待访问的数据在所述待访问的块内 的地址, 确定所述待访问的数据在所述数据緩存中的物理地址;  Determining, according to the physical address of the to-be-accessed block and the data to be accessed, the physical address of the data to be accessed in the data cache;
根据所述地址确定电路确定的所述待访问的数据在所述数据緩存中的 物理地址访问所述待访问的数据。  And the data to be accessed is accessed by the physical address of the data to be accessed determined by the address determining circuit in the data cache.
第二方面的第一种可能的实现方式中, 所述确定所述待访问的数据在 所述数据緩存中的物理地址, 包括:  In a first possible implementation manner of the second aspect, the determining, by the physical address of the data to be accessed in the data cache, includes:
根据所述业务的标识, 确定所述待访问的块的逻辑地址和所述待访问 的数据在所述待访问的块内的地址;  Determining, according to the identifier of the service, a logical address of the to-be-accessed block and an address of the to-be-accessed data in the to-be-accessed block;
根据所述待访问的块的逻辑地址, 以及根据所述待访问的块的逻辑地 址与所述待访问的块的物理地址之间的映射关系, 确定所述待访问的块的 物理地址;  Determining a physical address of the block to be accessed according to a logical address of the block to be accessed, and a mapping relationship between a logical address of the block to be accessed and a physical address of the block to be accessed;
根据所述待访问的块的物理地址和所述待访问的数据在所述待访问的 块内的地址, 确定所述待访问的数据在所述数据緩存中的物理地址。  Determining, according to the physical address of the to-be-accessed block and the address of the to-be-accessed data, the physical address of the data to be accessed in the data cache.
根据第二方面的第一种可能的实现方式, 在第二方面的第二种可能的 实现方式中, 根据所述业务的标识, 确定所述待访问的块的逻辑地址和所 述待访问的数据在所述待访问的块内的地址, 根据所述待访问的块的逻辑 之间的映射关系, 确定所述待访问的块的物理地址, 根据所述待访问的块 的物理地址和所述待访问的数据在所述待访问的块内的地址, 确定所述待 访问的数据在所述数据緩存中的物理地址, 具体包括:  According to the first possible implementation manner of the second aspect, in a second possible implementation manner of the second aspect, determining, according to the identifier of the service, a logical address of the to-be-accessed block and the to-be-accessed Determining, by the address in the block to be accessed, the physical address of the block to be accessed according to the mapping relationship between the logics of the to-be-accessed block, according to the physical address and location of the block to be accessed Determining, by the address in the block to be accessed, the physical address of the data to be accessed in the data cache, which includes:
根据所述业务的标识查询逻辑地址表, 获取所述待访问的数据的逻辑 地址; 根据所述待访问的数据的逻辑地址得到所述待访问的块的第一逻辑地 址 logic blk addr和块内偏移地址 logic shift addr; Querying a logical address table according to the identifier of the service, and acquiring a logical address of the data to be accessed; Obtaining, according to the logical address of the data to be accessed, a first logical address of the block to be accessed, a logic blk addr, and an intra-block offset address, a logic shift addr;
根据所述业务的标识查询首块地址表, 得到所述业务占用的多个块中 首个块的逻辑地址 first— blk—addr;  Querying the first block address table according to the identifier of the service, and obtaining a logical address of the first block of the plurality of blocks occupied by the service, first blk_addr;
根据待访问的块的第二逻辑地址查询块地址表, 得到所述待访问的块 的物理地址, 所述待访问的块的第二逻辑地址等于 logic— blk—addr 与 first— blk—addr的和;  Querying a block address table according to a second logical address of the block to be accessed, obtaining a physical address of the block to be accessed, where a second logical address of the block to be accessed is equal to logic_blk_addr and first_blk_addr with;
根据所述待访问的块的物理地址和所述块内偏移地址, 确定所述待访 问的数据在所述数据緩存中的物理地址;  Determining, according to the physical address of the block to be accessed and the intra-block offset address, a physical address of the data to be accessed in the data cache;
其中, 所述块地址表中记载所述业务的标识, 以及所述业务占用的多 个块的第二逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所 述业务占用的多个块的第二逻辑地址和所述业务占用的多个块的物理地址 ——对应, 所述待访问的块的第二逻辑地址取值为 [first— blk—addr, first— blk—addr+n]中任一整数, 所述 n为所述业务占用数据緩存中的块的数 量;  The block address table records the identifier of the service, and the mapping relationship between the second logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, where the service is occupied. Corresponding to the second logical address of the plurality of blocks and the physical address of the plurality of blocks occupied by the service, the second logical address of the block to be accessed is [first_blk_addr, first-blk_addr Any integer in +n, where n is the number of blocks in the service occupancy data cache;
所述首块地址表中记载所述业务的标识, 以及所述业务占用的多个块 中首个块的逻辑地址;  The identifier of the service is recorded in the first block address table, and a logical address of a first block of the plurality of blocks occupied by the service;
所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数据的逻 辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占用的块 的数量]中任一整数。  The logical address table records the identifier of the service, and the logical address of the data to be accessed, and the value of the logical address of the data to be accessed is [0, mx the number of blocks occupied by the service] Any integer in .
根据第二方面的第一种可能的实现方式, 在第二方面的第三种可能的 实现方式中, 根据所述业务的标识, 确定所述待访问的块的逻辑地址和所 述待访问的数据在所述待访问的块内的地址, 根据所述待访问的块的逻辑 之间的映射关系, 确定所述待访问的块的物理地址, 根据所述待访问的块 的物理地址和所述待访问的数据在所述待访问的块内的地址, 确定所述待 访问的数据在所述数据緩存中的物理地址, 具体包括: According to a first possible implementation manner of the second aspect, in a third possible implementation manner of the second aspect, determining, by the identifier of the service, a logical address of the to-be-accessed block and the to-be-accessed Determining, by the address in the block to be accessed, the physical address of the block to be accessed according to the mapping relationship between the logics of the to-be-accessed block, according to the physical address and location of the block to be accessed Determining the waiting for the address of the data to be accessed in the block to be accessed The physical address of the accessed data in the data cache, specifically including:
根据所述业务的标识查询逻辑地址表, 获取所述待访问的数据的逻辑 地址;  Querying a logical address table according to the identifier of the service, and acquiring a logical address of the to-be-accessed data;
根据所述待访问的数据的逻辑地址, 得到所述待访问的块的逻辑地址 logic blk addr和块内偏移地址 logic— shift— addr;  Obtaining, according to the logical address of the data to be accessed, a logical address logical blk addr of the block to be accessed and an intra-block offset address logic_shift_addr;
根据所述业务的标识和所述待访问的块的逻辑地址 logic— blk—addr查询 块重映射表, 得到所述待访问的块的物理地址;  Obtaining a physical address of the block to be accessed according to the identifier of the service and the logical address logic of the block to be accessed, blk_addr, querying the block remapping table;
根据所述待访问的块的物理地址和所述块内偏移地址, 确定所述待访 问的数据在所述数据緩存中的物理地址;  Determining, according to the physical address of the block to be accessed and the intra-block offset address, a physical address of the data to be accessed in the data cache;
其中, 所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数 据的逻辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占 用的块的数量]中任一整数;  The logical address table records the identifier of the service, and the logical address of the data to be accessed, and the logical address of the data to be accessed takes the value of [0, mx the block occupied by the service. Any number in the number];
所述块重映射表中记载所述业务的标识、 以及所述业务占用的多个块 的逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所述业务占 用的多个块的逻辑地址和所述业务占用的多个块的物理地址——对应, 所 述待访问的块的逻辑地址取值为 [0, n]中的任一整数, 所述 n为所述业务占 用数据緩存中的块的数量。  The block remapping table records the identifier of the service, and the mapping relationship between the logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, and multiple blocks occupied by the service Corresponding to the logical address of the plurality of blocks occupied by the service, the logical address of the block to be accessed is any integer of [0, n], and the n is occupied by the service. The number of blocks in the data cache.
根据第二方面的第三种可能的实现方式或者第二方面的第四种可能的 实现方式, 在第二方面的第五种可能的实现方式中, 在所述控制电路访问 所述待访问的数据之后, 还包括:  According to a third possible implementation of the second aspect, or a fourth possible implementation of the second aspect, in a fifth possible implementation of the second aspect, the control circuit accesses the to-be-accessed After the data, it also includes:
使用所述业务下次访问的数据的逻辑地址替换所述逻辑地址表中所述 待访问的数据的逻辑地址  Replacing the logical address of the data to be accessed in the logical address table with the logical address of the data accessed next time by the service
本发明实施例的有益效果包括:  Advantageous effects of embodiments of the present invention include:
本发明实施例提供了多通道 FIFO queue控制器及多通道 FIFO queue访 问方法。 多通道 FIFO queue控制器包地址确定电路和控制电路。数据緩存被 分为多个块, 地址确定电路可以根据业务的标识确定待访问的块的物理地 址。 地址确定电路还可以据此进一步确定待访问的数据在数据緩存中的物 理地址。 控制电路可以根据地址确定电路确定的待访问的数据在数据緩存 中的物理地址访问待访问的数据。 因此, 上述技术方案有助于多个业务对 数据緩存的共享, 有助于减少对 FIFO queue的资源的占用。 此外, 本发明实 施例提供了待访问的数据的物理地址的确定方法。 即根据业务的标识, 确 定待访问的块的物理地址, 并根据待访问的块的物理地址和待访问的数据 在待访问的块内地址, 确定待访问的数据在数据緩存中的物理地址。 根据 待访问的数据在数据緩存中的物理地址访问待访问的数据。 上述技术方案 中, 确定待访问的数据在数据緩存中的物理地址的过程中, 不需要依赖链 表指针, 可靠性较高。 附图说明 The embodiment of the invention provides a multi-channel FIFO queue controller and a multi-channel FIFO queue access method. Multi-channel FIFO queue controller packet address determination circuit and control circuit. The data buffer is divided into a plurality of blocks, and the address determining circuit can determine the physical location of the block to be accessed according to the identifier of the service. Address. The address determining circuit can further determine the physical address of the data to be accessed in the data cache accordingly. The control circuit can access the data to be accessed according to the physical address of the data to be accessed determined by the address determining circuit in the data cache. Therefore, the foregoing technical solution helps the sharing of data caches by multiple services, and helps reduce the occupation of resources of the FIFO queue. In addition, an embodiment of the present invention provides a method for determining a physical address of data to be accessed. That is, the physical address of the block to be accessed is determined according to the identifier of the service, and the physical address of the data to be accessed in the data cache is determined according to the physical address of the block to be accessed and the data to be accessed in the block to be accessed. The data to be accessed is accessed according to the physical address in the data cache according to the data to be accessed. In the foregoing technical solution, in the process of determining the physical address of the data to be accessed in the data cache, there is no need to rely on the linked list pointer, and the reliability is high. DRAWINGS
图 1为现有技术的方案 1中 FIFO queue读写数据的示意图;  1 is a schematic diagram of FIFO queue read and write data in the prior art scheme 1;
图 2为现有技术的方案 2中 FIFO queue读写数据的示意图;  2 is a schematic diagram of reading and reading data of a FIFO queue in the prior art scheme 2;
图 3为本发明实施例提供的多通道 FIFO queue控制器的结构示意图; 图 4为本发明实施例提供的实例一的多通道 FIFO queue控制器和数据 緩存的结构示意图;  3 is a schematic structural diagram of a multi-channel FIFO queue controller according to an embodiment of the present invention; FIG. 4 is a schematic structural diagram of a multi-channel FIFO queue controller and a data cache according to an example of the present invention;
图 5为本发明实施例提供的 CH— BLK— MAP— TBL与其他各表的关联关 系示意图;  FIG. 5 is a schematic diagram of association between CH—BLK—MAP—TBL and other tables according to an embodiment of the present invention;
图 6为本发明实施例提供的表项自动刷新单元的工作过程的示意图; 图 7为本发明实施例提供的本实例一提供的多通道 FIFO queue控制器 的逻辑框图;  FIG. 6 is a schematic diagram of a working process of an automatic refreshing unit of an entry according to an embodiment of the present invention; FIG. 7 is a logic block diagram of a multi-channel FIFO queue controller provided by the first embodiment of the present invention;
图 8为本发明实施例提供的实例二的多通道 FIFO queue控制器和数据 緩存的结构示意图;  FIG. 8 is a schematic structural diagram of a multi-channel FIFO queue controller and a data cache according to an example 2 according to an embodiment of the present disclosure;
图 9为本发明实施例提供的实例二中块重映射表的数据结构的示意图; 图 10为本发明实施例提供的一个例子中 BLK REMAP TBL的内容的 示意图; FIG. 9 is a schematic diagram of a data structure of a block remapping table in the second embodiment according to an embodiment of the present invention; FIG. 10 is a content of a BLK REMAP TBL in an example according to an embodiment of the present invention; Schematic diagram
图 11为本发明实施例提供的多通道 FIFO queue访问方法的流程图。 具体实施方式  FIG. 11 is a flowchart of a multi-channel FIFO queue access method according to an embodiment of the present invention. detailed description
下面结合说明书附图, 对本发明实施例提供的一种多通道先进先出緩 存队列控制器及多通道先进先出緩存队列访问方法的具体实施方式进行说 明。  A specific implementation manner of a multi-channel FIFO buffer controller and a multi-channel FIFO cache queue access method according to an embodiment of the present invention will be described below with reference to the accompanying drawings.
本发明实施例涉及的业务可以承载在开放系统互连参考模型 (Open Systems Interconnection reference model, OSI reference model ) 定义的第一 层至第七层中的至少一层。 例如, 所述业务可以是承载在第三层的业务或 者承载在第四层的业务。所述承载在第三层的业务可以是网际协议(Internet Protocol , IP ) 业务。 所述承载在第四层的业务可以是传输控制协议 ( Transmission Control Protocol , TCP ) 业务或者用户数据报协议 (User Datagram Protocol, UDP )业务。 所述业务可以是视频传输业务、 音频传输 业务或者文本传输业务。  The service involved in the embodiment of the present invention may be carried in at least one of the first layer to the seventh layer defined by the Open Systems Interconnection Reference Model (OSI reference model). For example, the service may be a service carried at a third layer or a service carried at a fourth layer. The service carried in the third layer may be an Internet Protocol (IP) service. The service carried in the fourth layer may be a Transmission Control Protocol (TCP) service or a User Datagram Protocol (UDP) service. The service may be a video transmission service, an audio transmission service, or a text transmission service.
首先对本发明实施例提供的多通道 FIFO queue控制器进行详细说明。 如图 3所示, 本发明实施例提供的 FIFO queue控制器, 包括: 地址确 定电路 301和控制电路 302; 其中:  First, the multi-channel FIFO queue controller provided by the embodiment of the present invention is described in detail. As shown in FIG. 3, the FIFO queue controller provided by the embodiment of the present invention includes: an address determining circuit 301 and a control circuit 302;
地址确定电路 301用于:  The address determination circuit 301 is used to:
根据业务的标识确定在数据緩存中的待访问的块的物理地址; 根据待 访问的块的物理地址和待访问的数据在所述待访问的块内的地址, 确定待 访问的数据在所述数据緩存中的物理地址;  Determining, according to the identifier of the service, a physical address of the block to be accessed in the data cache; determining, according to the physical address of the block to be accessed and the address of the to-be-accessed data in the block to be accessed, the data to be accessed is The physical address in the data cache;
在本发明实施例中, 数据緩存包含多个块, 每个块内都包含有 m个存 储单元, m为正整数, 数据緩存可以为 RAM或其他常用存储器。  In the embodiment of the present invention, the data cache includes a plurality of blocks, each of which contains m storage units, m is a positive integer, and the data cache may be RAM or other commonly used memory.
控制电路 302用于:  Control circuit 302 is used to:
根据所述地址确定电路 302确定的所述待访问的数据在所述数据緩存 中的物理地址访问所述待访问的数据。 The data to be accessed determined by the address determining circuit 302 is in the data cache The physical address in the accesses the data to be accessed.
上述访问的操作可以是例如读和 /或写的操作, 待访问的数据即待读出 或写入的数据, 待访问的块即待读出或写入的数据所在的块。  The above-mentioned access operation may be, for example, a read and/or write operation, data to be accessed, that is, data to be read or written, and a block to be accessed, that is, a block in which data to be read or written is located.
本发明实施例中, 数据緩存预先被划分为若干个块(块的总数 >最大 可能的业务数, 在本发明实施例适用的多业务的应用场景中, 块的总数不 小于 2个),每个块 m个单元, m的大小可以按照多业务中的最小带宽需求 来设计。 由于总的业务带宽不变, 当多通道 FIFO实体在处理大带宽的业务 时, 必然业务通道比较少, 从而对于每个业务来说, 其对应的业务通道能 够分配到更多的块; 当处理小带宽的业务时, 业务通道变多, 对于每个业 务来说, 其对应的业务通道仍然能够分配到满足要求的块。 多业务的应用 场景下, 每个业务分配的块的多少可以根据该业务实际需要占用带宽的大 小来决定, 占用带宽多的可分配较多的块, 否则, 分配较少的块, 也可根 据各业务带宽需求的变化, 对各业务分配的块的数量进行实时调整。  In the embodiment of the present invention, the data cache is divided into a plurality of blocks (the total number of blocks > the maximum possible number of services in the application scenario of the multi-service application in the embodiment of the present invention, the total number of blocks is not less than 2) Each block of m units, the size of m can be designed according to the minimum bandwidth requirement in multi-service. Since the total service bandwidth is unchanged, when the multi-channel FIFO entity processes the large-bandwidth service, the inevitable service channel is relatively small, so that for each service, its corresponding service channel can be allocated more blocks; In the case of a small bandwidth service, there are many service channels. For each service, its corresponding service channel can still be allocated to the block that meets the requirements. In a multi-service application scenario, the number of blocks allocated for each service can be determined according to the size of the bandwidth actually occupied by the service. The blocks occupying more bandwidth can be allocated more blocks. Otherwise, fewer blocks can be allocated. The change in bandwidth requirements of each service adjusts the number of blocks allocated for each service in real time.
上述地址确定电路 301 在具体实施时, 可以通过一个整体的电路模块 来实现, 也可以依据不同的访问的需求例如读操作以及写操作的要求, 分 设在两块不同的电路模块上, 以分别实现读操作的地址确定功能和写操作 的地址确定功能, 具体的电路实现方式属于现有技术, 在此不再赘述。  The address determining circuit 301 may be implemented by an integral circuit module in a specific implementation, or may be separately configured on two different circuit modules according to different access requirements, such as a read operation and a write operation. The address determining function of the read operation and the address determining function of the write operation, the specific circuit implementation manner belongs to the prior art, and details are not described herein again.
类似地, 上述控制电路 302, 在具体实施时, 可以通过一个整体的电路 模块来实现, 也可以依据不同的访问的需求例如读操作以及写操作的要求, 分设在两块不同的电路模块上, 以分别实现对读和写操作的控制。  Similarly, the foregoing control circuit 302 can be implemented by an integral circuit module in a specific implementation, or can be divided into two different circuit modules according to different access requirements, such as a read operation and a write operation requirement. To achieve control of read and write operations, respectively.
本发明实施例提供的上述多通道 FIFO queue控制器中, 地址确定电路 301 , 进一步用于根据业务的标识 (例如业务对应的通道号等), 确定所述 待访问的块的逻辑地址和所述待访问的数据在所述待访问的块内的地址; 并根据所述待访问的块的逻辑地址, 以及所述待访问的块的逻辑地址 与所述待访问的块的物理地址之间的映射关系, 确定所述待访问的块的物 理地址; 根据所述待访问的块的物理地址和所述待访问的数据在所述待访问的 块内的地址, 确定所述待访问的数据在所述数据緩存中的物理地址。 In the foregoing multi-channel FIFO queue controller provided by the embodiment of the present invention, the address determining circuit 301 is further configured to determine, according to an identifier of the service, such as a channel number corresponding to the service, a logical address of the to-be-accessed block, and the The address of the data to be accessed in the block to be accessed; and according to the logical address of the block to be accessed, and the logical address of the block to be accessed and the physical address of the block to be accessed Mapping a relationship, determining a physical address of the block to be accessed; Determining, according to the physical address of the to-be-accessed block and the address of the to-be-accessed data, the physical address of the data to be accessed in the data cache.
更进一步地, 上述地址确定电路 301 根据业务的标识(例如业务对应 的通道号等 ), 确定所述待访问的块的逻辑地址和所述待访问的数据在所述 待访问的块内的地址; 根据所述待访问的块的逻辑地址, 以及所述待访问 待访问的块的物理地址; 根据所述待访问的块的物理地址和所述待访问的 数据在所述待访问的块内的地址, 确定所述待访问的数据在所述数据緩存 中的物理地址, 在具体实施时, 可以有两种具体的实施方式, 具体说明如 下:  Further, the address determining circuit 301 determines, according to the identifier of the service (for example, the channel number corresponding to the service, etc.), the logical address of the to-be-accessed block and the address of the to-be-accessed data in the block to be accessed. According to the logical address of the block to be accessed, and the physical address of the block to be accessed; according to the physical address of the block to be accessed and the data to be accessed in the block to be accessed The address of the data to be accessed in the data cache is determined. In a specific implementation, there are two specific implementation manners, which are specifically described as follows:
第一种方式:  The first way:
地址确定电路根据业务的标识 (例如业务对应的通道号) 查 询逻辑地址表, 获取所述待访问的数据的逻辑地址;  The address determining circuit searches the logical address table according to the identifier of the service (for example, the channel number corresponding to the service), and obtains the logical address of the data to be accessed;
根据所述待访问的数据的逻辑地址得到所述待访问的块的第 一還辑地址 logic blk addr和块内偏移地址 logic— shift— addr;  Obtaining, according to the logical address of the data to be accessed, a first rendition address of the block to be accessed, a logic blk addr, and an intra-block offset address, a logic_shift_addr;
根据所述业务的标识查询首块地址表, 得到所述业务占用的 多个块中首个块的逻辑地址 first— blk— addr;  Querying the first block address table according to the identifier of the service, and obtaining a logical address of the first block of the plurality of blocks occupied by the service, first blk_addr;
根据待访问的块的第二逻辑地址查询块地址表, 得到所述待 访问的块的物理地址, 所述待访问的块的第二逻辑地址等于 logic blk addr 与 first_blk_addr 的 和 ( 即 : logic blk addr+first blk addr );  Querying a block address table according to a second logical address of the block to be accessed, obtaining a physical address of the block to be accessed, where a second logical address of the block to be accessed is equal to a sum of logic blk addr and first_blk_addr (ie: logic blk Addr+first blk addr );
根据所述待访问的块的物理地址和所述块内偏移地址, 确定 所述待访问的数据在所述数据緩存中的物理地址;  Determining, according to the physical address of the to-be-accessed block and the intra-block offset address, a physical address of the data to be accessed in the data cache;
其中, 所述块地址表中记载: 所述业务的标识, 以及所述业务占用的 多个块的第二逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所述业务占用的多个块的第二逻辑地址和所述业务占用的多个块的物理地 址——对应, 所述待访问的块的第二逻辑地址取值为 [first— blk—addr, first— blk—addr+n]中任一整数, 所述 n为所述业务占用数据緩存中的块的数 量; The block address table includes: an identifier of the service, and a mapping relationship between a second logical address of the multiple blocks occupied by the service and a physical address of multiple blocks occupied by the service, where the service is occupied a second logical address of the plurality of blocks and a physical location of the plurality of blocks occupied by the service Address-correspondingly, the second logical address of the to-be-accessed block is any integer of [first_blk_addr, first-blk_addr+n], and the n is in the service occupation data cache. The number of blocks;
所述首块地址表中记载: 所述业务的标识, 以及所述业务占用的多个 块中首个块的逻辑地址;  The first block address table records: an identifier of the service, and a logical address of a first block of the plurality of blocks occupied by the service;
所述逻辑地址表中记载: 所述业务的标识, 以及所述待访问的数据的 逻辑地址, 所述待访问的数据的逻辑地址的取值为 [0, m x所述业务占用的 块的数量]中任一整数。  The logical address table includes: an identifier of the service, and a logical address of the data to be accessed, where a logical address of the data to be accessed is a value of [0, mx, the number of blocks occupied by the service Any integer in .
对于多业务的应用场景来说, 上述块地址表中, 可以记载多个业务的 标识、 每个业务分别占用的所有块的第二逻辑地址和每个业务占用的所有 块的物理地址的映射关系。  For a multi-service application scenario, the foregoing block address table may record the identifiers of multiple services, the second logical address of all blocks occupied by each service, and the mapping relationship between physical addresses of all blocks occupied by each service. .
类似地, 上述首块地址表中, 可以记载多个业务的标识、 每个业务分 别占用的所有块中首个块的逻辑地址。  Similarly, in the first block address table, the identifiers of the plurality of services and the logical addresses of the first blocks of all the blocks occupied by each service may be recorded.
类似地, 上述逻辑地址表中, 可以记载多个业务的标识、 每个业务待 访问的数据的逻辑地址(当前访问操作涉及的逻辑地址)。  Similarly, in the above logical address table, the identifiers of the plurality of services and the logical addresses of the data to be accessed by each service (the logical addresses involved in the current access operation) may be recorded.
上述待访问的数据的逻辑地址、 待访问的块的第一逻辑地址、 首个块 的逻辑地址和待访问的块的第二逻辑地址等逻辑地址, 均为线性, 以某业 务 A待访问的数据的逻辑地址为 29, 每个块 10个存储单元为例, 地址确 定电路根据所述待访问的数据的逻辑地址(29 )得到所述待访问的块的第 一逻辑地址 logic— blk—addr和块内偏移地址 logic— shift— addr的过程, 实际上 就是以待访问的数据的逻辑地址除以每个块的存储单元数得到, 即: 待访 问的块的第一逻辑地址 ( logic— blk— add )等于所述待访问的数据的逻辑地址 ( 29 ) 除以每个块的存储单元数 ( 10 ) 得到的商 (2 ) , 块内偏移地址 ( logic_shift_addr )等于所述待访问的数据的逻辑地址(29 )除以每个块的 存储单元数( 10 )得到的余数 ( 9 )。  The logical address of the data to be accessed, the first logical address of the block to be accessed, the logical address of the first block, and the second logical address of the block to be accessed are linear, and are to be accessed by a certain service A. The logical address of the data is 29, and each block has 10 storage units as an example. The address determining circuit obtains the first logical address of the block to be accessed, logic_blk_addr, according to the logical address (29) of the data to be accessed. And the process of the offset address logic_shift_addr in the block is actually obtained by dividing the logical address of the data to be accessed by the number of memory cells of each block, that is: the first logical address of the block to be accessed (logic- Blk_add) is equal to the logical address (29) of the data to be accessed divided by the quotient (2) obtained by the number of storage units (10) of each block, and the intra-block offset address (logic_shift_addr) is equal to the to-be-accessed The logical address of the data (29) is divided by the remainder of the number of memory cells per block (10) (9).
对于多业务的场景来说, 每个业务所占用的数据緩存中的块是不同的, 如果数据緩存中所有块统一按照线性来设计其逻辑地址(例如 0、 1、 2、 3... ... )相应地, 在首块地址表中, 每个业务所占用的所有块的首个块的逻 辑地址不同, 还是以上述某业务 A为例, 例如该业务 A占用的占用的所有 块的首个块的地址为 12, 则待访问的块的第二逻辑地址等于 14 ( 12+2 ), 根据块地址表中的每个块的第二逻辑地址和物理地址之间的映射关系, 就 可以查找到所述待访问的块的物理地址。 For a multi-service scenario, the blocks in the data cache occupied by each service are different. If all the blocks in the data cache are designed in a linear manner to their logical addresses (for example, 0, 1, 2, 3, ...), in the first block address table, the first of all the blocks occupied by each service. For example, if the logical address of the block is different, the service A is used as an example. For example, if the address of the first block of all blocks occupied by the service A is 12, the second logical address of the block to be accessed is equal to 14 (12+ 2), according to the mapping relationship between the second logical address and the physical address of each block in the block address table, the physical address of the block to be accessed can be found.
上述说明中, 为了说明的方便, 将待访问的块的逻辑地址釆用第一逻 辑地址和第二逻辑地址来分别称呼, 实际上, 第一逻辑地址表征的是针对 某个业务所占用的所有块中, 待访问的块到底是第几个块, 某业务 A待访 问的数据的逻辑地址为 29,每个块 10个存储单元为例,待访问的块的第一 逻辑地址(logic— blk— add )等于 2 , 意味着待访问的块为该业务 A所占用的 所有块中第 2个块(从第 0个块开始计 ), 第二逻辑地址表征的是对于整个 数据緩存中所有块来说, 其实际的逻辑地址是多少, 例如业务 A所占用的 所有块的首个块的逻辑地址为 12时, 由于逻辑地址是线性的, 业务 A待访 问的块的第二逻辑地址为 14。  In the above description, for the convenience of description, the logical address of the block to be accessed is referred to by the first logical address and the second logical address respectively. In fact, the first logical address represents all occupied by a certain service. In the block, the block to be accessed is the first block. The logical address of the data to be accessed by a certain service A is 29, and each block has 10 storage units as an example. The first logical address of the block to be accessed (logic-blk) – add ) equal to 2, meaning that the block to be accessed is the second block of all blocks occupied by the service A (counting from the 0th block), and the second logical address represents all blocks in the entire data cache. For example, what is the actual logical address? For example, when the logical address of the first block of all blocks occupied by service A is 12, since the logical address is linear, the second logical address of the block to be accessed by service A is 14 .
第二种方式:  The second way:
地址确定电路根据所述业务的标识 (例如业务对应的通道号) 查询逻辑地址表, 获取所述待访问的数据的逻辑地址;  The address determining circuit queries the logical address table according to the identifier of the service (for example, the channel number corresponding to the service), and obtains the logical address of the data to be accessed;
根据所述待访问的数据的逻辑地址, 得到所述待访问的块的 還辑地址 logic blk addr和块内偏移地址 logic— shift— addr; 根据所述业务的标识和所述待访问的块的逻辑地址 logic— blk— addr查询块重映射表,得到所述待访问的块的物理地址; 根据所述待访问的块的物理地址和所述块内偏移地址, 确定 所述待访问的数据在所述数据緩存中的物理地址;  Obtaining, according to the logical address of the data to be accessed, a recurring address of the block to be accessed, a logic blk addr, and an intra-block offset address, a logic_shift_addr; according to the identifier of the service and the block to be accessed The logical address logic_blk_addr queries the block remapping table to obtain the physical address of the block to be accessed; determining the to-be-accessed according to the physical address of the block to be accessed and the intra-block offset address The physical address of the data in the data cache;
其中, 所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数 据的逻辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占 用的块的数量]中任一整数; The logical address table records the identifier of the service, and the logical address of the data to be accessed, and the logical address of the data to be accessed takes the value of [0, mx Any of the number of blocks used];
所述块重映射表中记载所述业务的标识、 以及所述业务占用的多个块 的逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所述业务占 用的多个块的逻辑地址和所述业务占用的多个块的物理地址——对应, 所 述待访问的块的逻辑地址取值为 [0, n]中的任一整数, 所述 n为所述业务占 用数据緩存中的块的数量。  The block remapping table records the identifier of the service, and the mapping relationship between the logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, and multiple blocks occupied by the service Corresponding to the logical address of the plurality of blocks occupied by the service, the logical address of the block to be accessed is any integer of [0, n], and the n is occupied by the service. The number of blocks in the data cache.
第二种方式与第一种方式的区别在于, 第二种方式使用块重映射表来 替代块地址表和首块地址表的作用。  The second way differs from the first one in that the second method uses a block remapping table instead of the block address table and the first block address table.
对于多业务的应用场景来说, 上述逻辑地址表中, 可以记载多个业务 的标识、 每个业务待访问的数据的逻辑地址(当前访问操作涉及的逻辑地 址)。  For a multi-service application scenario, the foregoing logical address table may record identifiers of multiple services and logical addresses of data to be accessed by each service (logical addresses involved in current access operations).
类似地, 上述块重映射表中, 可以记载多个业务的标识、 以及每个业 务占用的所有块的逻辑地址和每个业务占用的所有块的物理地址的映射关 系。  Similarly, in the above block remapping table, the identifiers of the plurality of services, and the mapping relationship between the logical addresses of all the blocks occupied by each service and the physical addresses of all the blocks occupied by each service may be described.
对于块重映射表来说, 其记载有每个业务, 每个业务占用的所有块的 逻辑地址和对应的物理地址, 在具体实施时, 该表可以是一个 n*x 大小的 二维表(n为数据緩存的分块总数, X为业务的总数), 有若干纪录项, 每 个纪录项记录第 i个业务第 j个块的物理地址, i的取值为( 0~X )中的任一 整数, j的取值为 (0~n ) 中任一整数。  For the block remapping table, it records the logical address and corresponding physical address of each block occupied by each service, and in the specific implementation, the table can be a two-dimensional table of n*x size ( n is the total number of chunks of the data cache, X is the total number of services), there are several records, each record records the physical address of the jth block of the i-th service, and the value of i is (0~X) Any integer, j is any integer from (0~n).
第二种方式中, 上述地址确定电路根据所述业务的标识 (例如业务对 应的通道号) 查询逻辑地址表, 获取所述待访问的数据的逻辑地址; 以及 根据所述待访问的数据的逻辑地址, 得到所述待访问的块的逻辑地址 logic— blk—addr和块内偏移地址 logic— shift— add的步骤, 与前述第一种方式 相同, 在此不再赘述。  In the second mode, the address determining circuit queries the logical address table according to the identifier of the service (for example, the channel number corresponding to the service), acquires the logical address of the data to be accessed, and the logic according to the data to be accessed. The step of obtaining the logical address of the to-be-accessed block, the data-blk_addr, and the in-block offset address, the data-shift-add, is the same as the first method, and is not described here.
为了更好地说明本发明实施例提供的上述多通道 FIFO queue控制器的 结构和功能, 下面以两个具体实例对其进行详细说明: 实例一: In order to better illustrate the structure and function of the above multi-channel FIFO queue controller provided by the embodiment of the present invention, the following details are described in two specific examples: Example 1:
如图 4所示, 在本实例一的多通道 FIFO queue控制器中, 地址确定电 路通过两个独立的电路模块来实现即: FIFO写地址重映射单元 401 (负责 确定写操作的地址)和 FIFO读地址重映射单元 402 (负责确定读操作的地 址), 控制电路(在图 4 中未示意出)分别通过发出 RAM读写使能信号 ( ram wr en, ram_rd_en ), 控制数据緩存 ( RAM ) 403中数据的读和写的 操作。  As shown in FIG. 4, in the multi-channel FIFO queue controller of the first example, the address determining circuit is implemented by two independent circuit modules: a FIFO write address remapping unit 401 (responsible for determining the address of the write operation) and a FIFO. The read address remapping unit 402 (which is responsible for determining the address of the read operation), the control circuit (not shown in FIG. 4) controls the data buffer (RAM) 403 by issuing a RAM read/write enable signal (ram wr en, ram_rd_en ), respectively. The operation of reading and writing data.
上述 FIFO写地址重映射单元 401和 FIFO读地址重映射单元 402的功 能相互独立, 对于整个多通道 FIFO queue 控制器来说, 当前可只执行 RAM403的读或写操作, 也可以同时执行 RAM的读和写的操作。  The functions of the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 are independent of each other. For the entire multi-channel FIFO queue controller, only the read or write operation of the RAM 403 can be performed currently, or the RAM read can be performed simultaneously. And write operations.
RAM403被划分为 n ( n >最大可能的业务通道数)个块, 每个块 m个 单元, m的大小可以按照各业务通道中的最小带宽需求来设计。  The RAM 403 is divided into n (n > maximum possible number of service channels) blocks, each of which is m units, and the size of m can be designed according to the minimum bandwidth requirement in each service channel.
RAM403 的访问地址, 分为两个层次: 逻辑地址和物理地址。 逻辑地 址在某个 FIFO业务通道的空间内是线性的, 例如 RAM中的块的逻辑地址 为 0、 1、 2、 3... ...等; 通过这个逻辑地址, 可以产生数据緩存空满的状态 告警和是否达到设置的水线等告警信息,物理地址则是 RAM中的实际访问 地址。  The access address of RAM 403 is divided into two levels: logical address and physical address. The logical address is linear in the space of a certain FIFO service channel. For example, the logical address of the block in the RAM is 0, 1, 2, 3, ..., etc.; through this logical address, the data buffer can be generated to be full. The status alarm and whether the alarm information such as the set water line is reached, the physical address is the actual access address in the RAM.
如图 4所示, 对于 FIFO写地址重映射单元 401和 FIFO读地址重映射 单元 402来说, 分别包含四个表: 块数量表( BLK— NUM— TBL )、 首块地址 表(FIRST_BLK_ADDR_TBL )、 逻辑地址表 ( LOGIC ADDR TBL )和块 地址表( BLK— ADDR— TBL ), FIFO写地址重映射单元 401和 FIFO读地址 重映射单元 402通过分别查询各自包含的表, 完成逻辑地址到物理地址的 重映射 (即确定当前业务通道读写操作访问的物理地址), 上述过程对于 FIFO写地址重映射单元 401和 FIFO读地址重映射单元 402来说是类似的 , 以下针对读和写的地址重映射过程进行统一的说明。  As shown in FIG. 4, for the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402, respectively, four tables are included: a block number table (BLK_NUM_TBL), a first block address table (FIRST_BLK_ADDR_TBL), The logical address table (LOGIC ADDR TBL) and the block address table (BLK_ADDR_TBL), the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 complete the logical address to the physical address by respectively querying the respective included tables. Re-mapping (i.e., determining the physical address of the current service channel read and write access), the above process is similar for the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402. The following addresses are remapped for read and write addresses. The process is described in a unified manner.
FIFO写地址重映射单元 401和 FIFO读地址重映射单元 402包含的各 表的内容说明如下: Each of the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 The contents of the table are as follows:
块数量表( BLK— NUM— TBL ): 在多应用的场景下, 该表的大小为最大 可能的业务数 X , 内容为每个业务占用的緩冲 (BUFFER )块数。 例如第 5 个地址空间的内容为 6,表示业例如业务通道号为 5的业务占共用了 6个块。  Block quantity table (BLK_NUM_TBL): In the multi-application scenario, the size of the table is the maximum possible number of services X, and the content is the number of buffers (BUFFER) blocks occupied by each service. For example, the content of the fifth address space is 6, indicating that the service, for example, the service channel number 5, shares 6 blocks.
首块地址表( FIRST— BLK— ADDR— TBL ): 在多应用的场景下, 该表大 小为最大可能业务数, 地址为业务通道号, 内容为各业务通道号的业务所 占用的块地址在 BLK— ADDR— TBL表内的首地址(即占用的所有块中首个 块的逻辑地址)。  The first address table ( FIRST — BLK — ADDR — TBL ): In the multi-application scenario, the table size is the maximum possible number of services, the address is the service channel number, and the block address occupied by the service with the content of each service channel number is BLK — ADDR — The first address in the TBL table (ie the logical address of the first block in all blocks occupied).
逻辑地址表( LOGIC— ADDR— TBL ):该表大小为最大可能业务数 x, 地 址为业务通道号, 内容为该业务待读 (写) 的数据的线性逻辑地址。 逻辑 地址范围 = ( 0, m*占用块数)中任一整数。 换言之, FIFO写地址重映射单 元 401中包含的逻辑地址表的内容为各业务待写的线性逻辑地址, FIFO读 地址重映射单元 402 中包含的逻辑地址表的内容为各业务待读的线性逻辑 地址, 逻辑地址可用于判断数据緩存的状态, 如空满、 水线等等。  Logical Address Table ( LOGIC — ADDR — TBL ): The table size is the maximum possible number of services x, the address is the service channel number, and the content is the linear logical address of the data to be read (written) by the service. Logical address range = any integer in (0, m* occupied block number). In other words, the content of the logical address table included in the FIFO write address remapping unit 401 is a linear logical address to be written by each service, and the content of the logical address table included in the FIFO read address remapping unit 402 is the linear logic to be read by each service. Address, logical address can be used to determine the status of the data cache, such as empty, water line and so on.
块地址表( BLK— ADDR— TBL ): 该表大小为 RAM 403的分块数 n, 记 载了每个业务占用的所有块的实际块地址(即物理地址)。  Block Address Table (BLK_ADDR_TBL): The table size is the number of blocks n of RAM 403, which records the actual block address (ie physical address) of all blocks occupied by each service.
如图 4所示, 实例一中, 除了 FIFO写地址重映射单元 401和 FIFO读 地址重映射单元 402之外, 该多通道 FIFO queue控制器还可以包括: 表项 自动刷新单元 404, 表项自动刷新单元 404分别与 FIFO写地址重映射单元 401 和 FIFO 读地址重映射单元 402 相连, 用于 居通道-块映射表 ( CH BLK MAP TBL )分别生成并刷新 FIFO写地址重映射单元 401 和 FIFO读地址重映射单元 402中包含的块数量表(BLK— NUM— TBL )、 块地 址表( BLK_ADDR_TBL )和首块地址表 ( FIRST BLK ADDR TBL )的表 项。  As shown in FIG. 4, in the first example, in addition to the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402, the multi-channel FIFO queue controller may further include: an entry automatic refresh unit 404, the entry automatically The refresh unit 404 is respectively connected to the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 for generating and refreshing the FIFO write address remapping unit 401 and the FIFO read respectively for the channel-block mapping table (CH BLK MAP TBL ) The table of the block number table (BLK_NUM_TBL), the block address table (BLK_ADDR_TBL), and the first block address table ( FIRST BLK ADDR TBL ) included in the address remapping unit 402.
CH BLK MAP TBL 的内容是根据用户的需求预先设置的, 大小为 RAM的分块数 n, 内容为业务通道号。 例如业务通道号为 2 (简称业务通 道 2 ) 的业务占用第 2、 3个块, 则 CH BLK MAP TBL的第 2、 3个地址 空间的内容都为 2。 该实例中, 多通道 FIFO实体的数据緩存(RAM )分块数为 12, 最多业务 数为 6, 实际使用的只有 3个业务(对应的业务通道号为 0、 2、 5 )情况, 其中: The content of CH BLK MAP TBL is preset according to the user's needs. The size is the number of blocks of RAM n, and the content is the service channel number. For example, the service channel number is 2 (referred to as service channel). The traffic of channel 2) occupies the 2nd and 3rd blocks, and the content of the 2nd and 3rd address spaces of CH BLK MAP TBL is 2. In this example, the data cache (RAM) number of the multi-channel FIFO entity is 12, the maximum number of services is 6, and only 3 services (corresponding service channel numbers are 0, 2, 5) are actually used, where:
业务通道 0的业务占用了 0、 3、 6、 9的块;  The service of service channel 0 occupies blocks of 0, 3, 6, and 9;
业务通道 2的业务占用了 1、 4、 7、 10的块;  The service of service channel 2 occupies blocks of 1, 4, 7, and 10;
业务通道 5的业务占用了 2、 5、 8、 11的块;  The service of service channel 5 occupies blocks of 2, 5, 8, and 11;
如图 5所示, CH— BLK— MAP— TBL中, 不同填充图案代表一个业务通 道, 填充右向斜线的块均为通道号为 0的业务占用的块(0、 3、 6、 9 ), 填 充左向斜线的块均为业务通道号为 2 的业务占用的块(1、 4、 7、 10 ), 填 充交叉网格线的块均为业务通道号为 5的业务占用的块(2、 5、 8、 11 )。  As shown in Figure 5, in CH-BLK-MAP-TBL, different fill patterns represent one service channel, and blocks filled with right-hand diagonal lines are blocks occupied by services with channel number 0 (0, 3, 6, 9) The block that fills the left-hand slant line is the block occupied by the service with the service channel number 2 (1, 4, 7, and 10), and the block that fills the cross-grid line is the block occupied by the service with the service channel number of 5 ( 2, 5, 8, 11).
在 BLK— NUM— TBL中, 业务通道号为 0、 2和 5的业务占用的块数均 为 4、 其他业务占用的块数则均为 0, 这三个业务占用的块数分别使用相应 的填充图案显示。  In BLK-NUM-TBL, the number of blocks occupied by services with service channel numbers 0, 2, and 5 is 4, and the number of blocks occupied by other services is 0. The number of blocks occupied by these three services is correspondingly used. Fill pattern display.
在 BLK— ADDR— TBL中, 记载了各业务占用的块的物理地址, 例如业 务通道号为 0的业务占用的块的物理地址为 0、 3、 6和 9, 业务通道号为 2 的业务占用的块的物理地址为 1、 4、 7和 10 , 业务通道号为 5的业务占用 的块的物理地址为 2、 5、 8和 11。  In the BLK-ADDR-TBL, the physical address of the block occupied by each service is recorded. For example, the physical address of the block occupied by the service with the service channel number 0 is 0, 3, 6, and 9, and the service channel number 2 is occupied. The physical addresses of the blocks whose physical addresses are 1, 4, 7, and 10, and the services with service channel number 5 are 2, 5, 8, and 11.
相应地, 在 FIRST— BLK— ADDR— TBL中, 业务通道号为 0的业务所占 有的所有块中首个块的地址为 0,业务通道号为 2的业务所占有的所有块中 首个块的地址为 4, 通道号为 5的业务首个块的地址为 8。  Correspondingly, in FIRST-BLK-ADDR-TBL, the address of the first block of all the blocks occupied by the service with the service channel number 0 is 0, and the first block of all the blocks occupied by the service with the service channel number 2 is The address of the service is 4, and the address of the first block of the service with channel number 5 is 8.
FIFO写地址重映射单元 401和 FIFO读地址重映射单元 402读写地址 重映射的过程如下:  FIFO write address remapping unit 401 and FIFO read address remapping unit 402 read and write addresses The process of remapping is as follows:
根据前级送来的业务通道号, 查询块数量表(BLK— NUM— TBL )、 首块 地址表( FIRST_BLK_ADDR_TBL )和逻辑地址表 ( LOGIC ADDR TBL ), 得到该业务通道号的业务所占用的块数(blk— num )、 该业务待读写的块的 逻辑地址( logic_blk_addr )和块内偏移地址( logic_shift_addr )、 该业务所 占用的所有块中首个块的逻辑地址( first— blk— addr )。 According to the service channel number sent by the previous stage, query the block quantity table (BLK_NUM_TBL), the first block The address table ( FIRST_BLK_ADDR_TBL ) and the logical address table ( LOGIC ADDR TBL ), the number of blocks occupied by the service of the service channel number (blk_num), the logical address of the block to be read and written by the service (logic_blk_addr), and the intra-block bias The address (logic_shift_addr), the logical address of the first block in all blocks occupied by the service (first_blk_addr).
查询该业务所占用的块数(blk— num ), 可以获知该业务所占用的块的 逻辑地址范围, 在该业务需读写的块的逻辑地址在逻辑地址范围内时, 也 就是说该业务待读写的块的逻辑地址未超出该逻辑地址范围的上限时, 继 续根据 logic— blk— addr+first— blk— addr查询块地址表( BLK— ADDR— TBL ), 得到该业务待读写的块的物理地址(phy— blk— addr ), 根据该业务待读写的 块的物理地址( phy— blk— addr )和块内偏移地址( logic— shift— addr ), 确定该 业务待读写的数据在数据緩存中的物理地址(phy— addr ), 完成逻辑地址到 物理地址的映射。 同时, 将 {logic— blk— addr, logic— shift— addr} + 1作为下次 读写操作的逻辑地址( logic addr next )写回( LOGIC_ADDR_TBL ), 更新 逻辑地址表。  Query the number of blocks (blk_num) occupied by the service, and learn the logical address range of the block occupied by the service. When the logical address of the block to be read or written is in the logical address range, that is, the service When the logical address of the block to be read or written does not exceed the upper limit of the logical address range, continue to query the block address table (BLK_ADDR_TBL) according to logic_blk_addr+first-blk_addr to obtain the service to be read and written. The physical address of the block (phy-blk_addr) determines that the service is to be read or written according to the physical address (phy-blk_addr) of the block to be read and written by the service and the offset_addr in the block. The physical address (phy_addr) of the data in the data cache completes the mapping of the logical address to the physical address. At the same time, {logic-blk_addr, logic_shift_addr} + 1 is written back to the logical address of the next read/write operation (logic addr next ) ( LOGIC_ADDR_TBL ), and the logical address table is updated.
随着读写操作的进行, 由于逻辑地址表中记载的逻辑地址不断向前推 进, 有可能会出现逻辑地址超出业务占用的块的地址范围, 为了防止读写 操作访问非该业务对应的緩存空间, 在本发明实施例中, FIFO写地址重映 射单元 401和 FIFO读地址重映射单元 402如果查询各自的逻辑地址表,判 断该业务待读写的块的逻辑地址超出逻辑地址的范围的上限时, 将逻辑地 址表中该业务待读写的块的逻辑地址置为 0,意味着本次读写需要从该业务 占用的首个块开始, 保证读写操作都在该业务占用的块内进行。  As the read and write operations progress, the logical address recorded in the logical address table is continuously pushed forward, and the address range of the block whose logical address exceeds the service may occur. To prevent the read/write operation from accessing the cache space corresponding to the service. In the embodiment of the present invention, the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402, if querying the respective logical address table, determine that the logical address of the block to be read or written by the service exceeds the upper limit of the range of the logical address. The logical address of the block to be read or written in the logical address table is set to 0, which means that the current read and write needs to start from the first block occupied by the service, and the read and write operations are guaranteed to be performed in the block occupied by the service. .
还有一种情况, 如果在上述地址重映射的过程中, FIFO写地址重映射 单元 401和 FIFO读地址重映射单元 402读取的该业务占用数据緩存的块数 为 0 时, 确定该业务的业务通道号为非法, 读写控制单元会据此情况, 控 制该业务的读写使能为 0。  There is also a case where, if the number of blocks of the service occupied data buffer read by the FIFO write address remapping unit 401 and the FIFO read address remapping unit 402 is 0 during the above address remapping, the service of the service is determined. The channel number is illegal, and the read/write control unit controls the read and write enable of the service to be 0 according to the situation.
本实例一中, 还提供了根据业务待读写的逻辑地址进行空满告警和水 线告警的机制, 具体由 FIFO告警单元 405来实现, 同时, 前述逻辑地址表 中, 除了记载各业务待读和写的数据的线性逻辑地址之外, 还包括记载各 业务当前读和写的符号位, 这样, 逻辑地址表的数据结构为 {写地址符号位 ( 1比特),写地址} , {读地址符号位 ( 1比特),读地址}。 In the first example, an empty alarm and water are also provided according to the logical address to be read and written by the service. The mechanism of the line alarm is specifically implemented by the FIFO alarm unit 405. At the same time, in addition to the linear logical address of the data to be read and written for each service, the logical address table includes the symbols for reading and writing the current service. Bit, thus, the data structure of the logical address table is {write address sign bit (1 bit), write address}, {read address sign bit (1 bit), read address}.
上述写地址符号位(读地址符号位)表征当前各业务写 (读) 的逻辑 地址是否增加到等于所占空间大小的比特位。  The above write address sign bit (read address sign bit) indicates whether the logical address of the current service write (read) is increased to a bit equal to the occupied space size.
逻辑地址表中的写地址符号位(读地址符号位)会在下述情况下发生 翻转: 当待写 (读) 的数据的逻辑地址增加到等于空间大小时, 写 (读) 地址符号位发生一次翻转(与当前值取反, 0→或者 1→0, 初始值为 0 ), 并且, 此时待写 (读) 的数据的逻辑地址将归 0。  The write address sign bit (read address sign bit) in the logical address table is toggled when the write (read) address sign bit occurs once the logical address of the data to be written (read) increases to equal the size of the space. Flip (inverted from the current value, 0 → or 1 → 0, the initial value is 0), and the logical address of the data to be written (read) will be zero.
FIFO告警单元 405针对每个业务, 通过下述方式计算水线值:  The FIFO alarm unit 405 calculates the waterline value for each service by:
1、 待读的数据的逻辑地址(以下简称为读逻辑地址) 大于待写的数据 的逻辑地址(以下简称写逻辑地址) 时, 水线值 =地址空间大小- (读逻辑 地址-写逻辑地址);  1. The logical address of the data to be read (hereinafter referred to as the read logical address) is greater than the logical address of the data to be written (hereinafter referred to as the write logical address), the water line value = the address space size - (read logical address - write logical address) );
2、 读地址小于写地址时, 水线值 =写逻辑地址-读逻辑地址;  2. When the read address is less than the write address, the water line value = write logical address - read logical address;
高水线告警: 当水线值大于预先设定的高水线值时, 上报高水线告警, 否则撤销告警;  High water line alarm: When the water line value is greater than the preset high water line value, the high water line alarm is reported, otherwise the alarm is cancelled;
低水线告警: 当水线值小于预先设定的低水线值时, 上报低水线告警, 否则撤销告警;  Low water line alarm: When the water line value is less than the preset low water line value, the low water line alarm is reported, otherwise the alarm is cancelled;
空告警: 当读地址符号位=写地址符号位, 且读逻辑地址 =写逻辑地址, 空告警有效, 否则无效;  Empty alarm: When the read address sign bit = write address sign bit, and the read logical address = write logical address, the null alarm is valid, otherwise it is invalid;
满告警: 读地址符号位≠写地址符号位, 且读逻辑地址 =写逻辑地址, 满告警有效, 否则无效;  Full alarm: Read address symbol bit write address sign bit, and read logical address = write logical address, full alarm is valid, otherwise invalid;
写溢出告警: 读地址符号位≠写地址符号位, 且读逻辑地址 <写逻辑地 址, 写溢出告警有效, 否则无效;  Write overflow alarm: Read address symbol bit 地址 write address sign bit, and read logical address <write logic address, write overflow alarm is valid, otherwise invalid;
读溢出告警: 当读地址符号位=写地址符号位, 且读逻辑地址 >写逻辑 地址,读溢出告警有效, 否则无效。 Read overflow alarm: When read address sign bit = write address sign bit, and read logical address > write logic Address, read overflow alarm is valid, otherwise invalid.
由于上述块数量表 ( BLK NUM TBL )、块地址表( BLK_ADDR_TBL ) 和首块地址表 ( FIRST— BLK—ADDR—TBL ) 都是根据业务通道-块映射表 ( CH BLK MAP TBL ) 自 动生成, 在用户根据需求实时更新 CH BLK MAP TBL 的内容时, 本发明实施例还提供了相应的表项刷新的 机制, 进一步地, 表项自动刷新单元 404, 还用于根据用户预先配置的业务 通道 -块映射表, 生成块数量表、 首块地址表和块地址表作为主表以供 FIFO 写地址重映射单元和 FIFO读地址重映射单元进行查询, 并备份块数量表、 首块地址表和块地址表作为备表。  Since the above block quantity table (BLK NUM TBL ), the block address table (BLK_ADDR_TBL ), and the first block address table ( FIRST — BLK — ADDR — TBL ) are automatically generated according to the service channel-block mapping table (CH BLK MAP TBL ), When the user updates the content of the CH BLK MAP TBL in real time according to the requirements, the embodiment of the present invention further provides a corresponding mechanism for refreshing the entry. Further, the automatic entry refreshing unit 404 is further configured to use the service channel-block that is pre-configured by the user. The mapping table generates a block quantity table, a first block address table, and a block address table as a main table for querying by the FIFO write address remapping unit and the FIFO read address remapping unit, and backing up the block quantity table, the first block address table, and the block address The table serves as a backup form.
由于用户可能会根据需求实时更新 CH— BLK— MAP— TBL的内容,因此, 上述表项自动刷新单元, 还用于周期性地按照用户对业务通道 -块映射表的 配置的内容, 对块数量表、 首块地址表和块地址表的备表进行刷新, 并将 刷新后的各备表切换成对应的主表以供 FIFO写地址重映射单元和 FIFO读 地址重映射单元进行查询。  Since the user may update the content of the CH-BLK-MAP-TBL in real time according to the requirements, the above-mentioned entry automatic refreshing unit is also used to periodically configure the content of the service channel-block mapping table according to the content of the user. The table, the first address table, and the table of the block address table are refreshed, and the refreshed table is switched to the corresponding master table for query by the FIFO write address remapping unit and the FIFO read address remapping unit.
表项自动刷新单元的工作过程如图 6所示,生成 FIFO写地址重映射单 元 和 FIFO 读 地 址 重 映 射 单 元 中 的 BLK— NUM— TBL 、 FIRST— BLK—ADDR—TBL 和 BLK—ADDR—TBL 的主表和备表, 由多通道 FIFO工作逻辑操作主表, 由表项自动刷新单元操作备表并实时进行备表的 刷新和主备的切换。  The working process of the table item automatic refresh unit is as shown in FIG. 6, and the BLK_NUM_TBL, FIRST_BLK_ADDR_TBL and BLK_ADDR-TBL in the FIFO write address remapping unit and the FIFO read address remapping unit are generated. The main table and the standby table are operated by the multi-channel FIFO working logic. The table item automatically refreshes the unit operation standby table and performs real-time table refresh and active/standby switching.
表项自动刷新单元可保证主备表信息的一致性, 并且刷新表项的操作 不会影响多通道 FIFO queue控制器的读写过程, 实现了根据用户的需求动 态增删业务, 并且不会对原有业务造成影响。  The automatic refresh unit of the entry can ensure the consistency of the information of the active and standby tables, and the operation of refreshing the entry does not affect the read and write process of the multi-channel FIFO queue controller, and dynamically adds and deletes services according to the needs of the user, and does not There is business impact.
表项刷新单元生成各表以及每一次刷新各表的过程实际上是相同的, 为了简化说明, 下面以刷新各表的过程为例详细进行说明如下:  The process of generating each table by the table item refreshing unit and refreshing each table is actually the same. To simplify the description, the following is a detailed description of the process of refreshing each table as follows:
每 y个周期遍历业务通道 -块映射表, 所述 y=n*x, n为数据緩存的分 块数, X为业务的数量(最大可能的业务的总数); 在 y个周期内, 正好遍 历了 CH— BLK— MAP— TBL x次。 Traversing the service channel-block mapping table every y cycles, the y=n*x, n is the number of blocks of the data cache, and X is the number of services (the maximum number of possible services); in y cycles, just all over CH-BLK-MAP-TBL x times.
每次遍历时, 针对每个业务, 将该业务占用的块的数量进行累加, 统 计各业务占用的块的数量, 写入待刷新的块数量表(备表);  Each time traversing, for each service, the number of blocks occupied by the service is accumulated, the number of blocks occupied by each service is counted, and the block quantity table to be refreshed is written (prepared table);
每次遍历时, 针对数据緩存中的每个块, 将该块对应的物理地址写入 待刷新的块地址表 (备表 );  Each time traversing, for each block in the data cache, the physical address corresponding to the block is written into the block address table to be refreshed (prepared table);
每次遍历时, 针对数据緩存中的每个块, 当其为被占用的业务对应的 首个块时, 将该块的逻辑地址写入待刷新的首块地址表(备表)。  Each time the traversal, for each block in the data cache, when it is the first block corresponding to the occupied service, the logical address of the block is written into the first block address table (prepared table) to be refreshed.
图 7所示的是本实例一提供的多通道 FIFO queue控制器的逻辑框图, 数据緩存分为 n个块, 各业务分块共享数据緩存, 地址重映射逻辑(例如 可以由地址重映射单元实现)可以根据读写的业务通道号, 确定读写操作 在数据緩存中的访问地址, 同时空满状态产生逻辑(例如可以由 FIFO告警 单元实现)根据逻辑地址产生业务存储空间空满的状态报警, 重映射表项 刷新逻辑 (由表项自动刷新单元)对重映射所需的表项进行刷新。  FIG. 7 is a logic block diagram of the multi-channel FIFO queue controller provided in the first embodiment. The data buffer is divided into n blocks, each service block shares a data cache, and the address remapping logic (for example, can be implemented by an address remapping unit). According to the service channel number of reading and writing, the access address of the read/write operation in the data cache can be determined, and the empty state generating logic (for example, can be implemented by the FIFO alarm unit) generates a state alarm that the service storage space is full according to the logical address. The remapping entry refresh logic (by the table entry auto-refresh unit) refreshes the entries required for remapping.
实例二:  Example 2:
本实例二提供的多通道 FIFO queue控制器的结构与工作原理与实例一 提供的多通道 FIFO queue控制器类似, 如图 8所示, 该多通道 FIFO queue 控制器也包括 FIFO写地址重映射单元 801(负责确定写操作的地址)和 FIFO 读地址重映射单元 802 (负责确定读操作的地址)、 数据緩存 803、 读写控 制单元(图 8中未示意出)、 表项自动刷新单元 804和 FIFO告警单元 805 , 所不同的是, 对于 FIFO写地址重映射单元 801和 FIFO读地址重映射单元 802来说, 其包含的表项与实例一不同。  The structure and working principle of the multi-channel FIFO queue controller provided in the second embodiment are similar to the multi-channel FIFO queue controller provided in the first example. As shown in FIG. 8, the multi-channel FIFO queue controller also includes a FIFO write address remapping unit. 801 (address responsible for determining the write operation) and FIFO read address remapping unit 802 (responsible for determining the address of the read operation), data cache 803, read and write control unit (not illustrated in FIG. 8), table entry automatic refresh unit 804, and The FIFO alarm unit 805 differs in that the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 contain entries different from the first example.
具体来说, 如图 8所示, FIFO写地址重映射单元 801和 FIFO读地址 重映射单元 802 中分别包含数量表 ( BLK— NUM— TBL )、 逻辑地址表 ( LOGIC ADDR TBL )和块重映射表 ( BLK REMAP TBL ), 其中:  Specifically, as shown in FIG. 8, the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 respectively include a quantity table (BLK_NUM_TBL), a logical address table (LOGIC ADDR TBL), and a block remapping. Table (BLK REMAP TBL), where:
块数量表和逻辑地址表的内容与实例一相同, 在此不再赘述; 块重映射表的数据结构如图 9所示, 该表是一个 n*x大小的二维表(n 为 RAM分块数, x为最大可能的业务数), 内容为某个业务通道号为 i ( i 取值为 (0~x)中任一整数) 的业务所占用的第 j (j取值为 (0~n)中任一整数) 个块的物理地址 。 The contents of the block quantity table and the logical address table are the same as those of the first embodiment, and will not be described here. The data structure of the block remapping table is as shown in FIG. 9. The table is a two-dimensional table of n*x size (n The number of blocks for RAM, x is the maximum number of possible services, and the content is the jth value of j for a service whose service channel number is i (i is any integer in (0~x)) Is the physical address of any block in (0~n).
实际上实例二中的 BLK— REMAP— TBL在地址的重映射过程中 ,实现了 实例一中 FIRST— BLK—ADDR—TBL + BLK ADDR TBL配合在一起完成的 功能, 该表的占用的存储空间比单个 FIRST— BLK—ADDR—TBL 或单个 BLK ADDR TBL大, 是以空间变大换取复杂度的降低另一种实施方式。  In fact, the BLK-REMAP-TBL in the second example realizes the function of the FIRST-BLK-ADDR-TBL+BLK ADDR TBL in the first instance in the remapping process of the address, and the storage space ratio occupied by the table. A single FIRST-BLK-ADDR-TBL or a single BLK ADDR TBL is larger, which is another way to reduce the complexity of the space.
还是以数据 RAM分块数为 12, 最大可能的业务数量为 6, 实际使用的 只有 3个通道(通道号为 0、 2、 5 )情况为例, BLK— REMAP— TBL的内容 如图 10所示, 通道 0占用了 0、 3、 6、 9的块; 通道 2占用了 1、 4、 7、 10 的块; 通道 5占用了 2、 5、 8、 11的块。 图 11中填充 X的空格表示不存在 的通道对应的块。  Or the number of data RAM blocks is 12, the maximum possible number of services is 6, and only 3 channels (channel numbers 0, 2, 5) are actually used. For example, the content of BLK-REMAP-TBL is shown in Figure 10. Channel 0 occupies blocks of 0, 3, 6, and 9; channel 2 occupies blocks of 1, 4, 7, and 10; channel 5 occupies blocks of 2, 5, 8, and 11. The space filled with X in Fig. 11 indicates the block corresponding to the channel that does not exist.
相应地, 在本实例二中, FIFO写地址重映射单元 801和 FIFO读地址 重映射单元 802在进行读写地址的重映射的过程也与实例一不同, 具体说 明如下:  Correspondingly, in the second example, the process of remapping the read/write address by the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 is also different from that of the first example, as follows:
FIFO写地址重映射单元 801和 FIFO读地址重映射单元 802根据前级 送来的业务通道号, 分别查询块数量表 ( BLK NUM TBL )和逻辑地址表 The FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 respectively query the block number table (BLK NUM TBL) and the logical address table based on the service channel number sent from the previous stage.
( LOGIC— ADDR—TBL ), 得到该业务所占用的块数( blk— num )、 该业务待 读写的块的逻辑地址( logic_blk_addr )和块内偏移地址( logic_shift_addr ); ( LOGIC — ADDR — TBL ), obtain the number of blocks occupied by the service ( blk — num ), the logical address ( logic_blk_addr ) of the block to be read and written by the service, and the offset address ( logic_shift_addr ) in the block;
FIFO写地址重映射单元 801和 FIFO读地址重映射单元 802通过查询 该业务所占用的块数(blk— num ), 可以获知该业务所占用的块的逻辑地址 范围, 在该业务待读写的块的逻辑地址在逻辑地址范围内时, 根据该业务 的业务通道号和该业务待读写的块的逻辑地址(logic— blk— addr ), 查询块重 映射表 ( BLK— REMAP— TBL ) , 得到该业务待读写的块的物理地址 The FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 can learn the logical address range of the block occupied by the service by querying the number of blocks (blk_num) occupied by the service, and the service is to be read and written. When the logical address of the block is in the logical address range, the block remapping table (BLK_REMAP_TBL) is queried according to the service channel number of the service and the logical address (logic_blk_addr) of the block to be read or written by the service. Get the physical address of the block to be read or written by the service
( phy blk addr ), 根据该业务待读写的块的物理地址( phy— blk— addr )和块 内偏移地址(logic— shift— addr ), 确定该业务待读写的数据在数据緩存中的 物理地址(phy_addr ); 并将 {logic_blk_addr, logic_shift_addr}+l 作为所述 业务待访问的数据的逻辑地址更新逻辑地址表( LOGIC— ADDR—TBL )。 (phy blk addr ), according to the physical address (phy-blk_addr) of the block to be read and written by the service and the offset address (logic_shift_addr) in the block, determining that the data to be read and written by the service is in the data cache of The physical address (phy_addr); and {logic_blk_addr, logic_shift_addr}+l is used as the logical address of the data to be accessed by the service to update the logical address table (LOGIC_ADDR_TBL).
类似地, FIFO写地址重映射单元 801和 FIFO读地址重映射单元 902 如果查询各自的逻辑地址表判断该业务待读写的块的逻辑地址超出逻辑地 址的范围的上限时, 将逻辑地址表中该业务待读写的块的逻辑地址置为 0。  Similarly, the FIFO write address remapping unit 801 and the FIFO read address remapping unit 902, if the respective logical address table is queried to determine that the logical address of the block to be read or written by the service exceeds the upper limit of the range of the logical address, the logical address table is The logical address of the block to be read or written by this service is set to zero.
如果在上述地址重映射的过程中, FIFO写地址重映射单元和 FIFO读 地址重映射单元读取的该业务占用数据緩存的块数为 0 时, 确定该业务的 业务通道号为非法,读写控制单元会据此情况,控制该业务的读写使能为 0。  If the number of blocks of the service occupied data cache read by the FIFO write address remapping unit and the FIFO read address remapping unit is 0 during the above address remapping, it is determined that the service channel number of the service is illegal, read and write. According to this situation, the control unit controls the read and write enable of the service to be 0.
对于实例二中的 FIFO告警单元 805来说,其具体工作原理与实例一中 相同, 在此不再赘述。  For the FIFO alarm unit 805 in the second embodiment, the specific working principle is the same as that in the first embodiment, and details are not described herein again.
对于实例二中的表项自动刷新单元 804, 与实例一类似, 分别与 FIFO 写地址重映射单元 801和 FIFO读地址重映射单元 802相连,用于根据用户 预先配置的通道-块映射表 ( CH BLK MAP TBL ), 分别生成 FIFO写地址 重映射单元和 FIFO 读地址重映射单元中 包含的块数量表 ( BLK NUM TBL )和块重映射表( BLK— REMAP— TBL )作为主表以供 FIFO 写地址重映射单元 801和 FIFO读地址重映射单元 802进行查询,并备份块 数量表和块重映射表作为备表。  For the entry automatic refresh unit 804 in the second embodiment, similar to the first example, respectively, the FIFO write address remapping unit 801 and the FIFO read address remapping unit 802 are connected, respectively, for the channel-block mapping table (CH) according to the user pre-configuration. BLK MAP TBL ), respectively generates a block quantity table (BLK NUM TBL ) and a block remapping table (BLK_REMAP_TBL) included in the FIFO write address remapping unit and the FIFO read address remapping unit as a main table for FIFO writing The address remapping unit 801 and the FIFO read address remapping unit 802 perform a query and back up the block number table and the block remapping table as a standby table.
表项自动刷新单元 804, 还可以周期性地按照用户对业务通道-块映射 表的配置的内容, 对块数量表和块重映射表的备表进行刷新, 并将刷新后 的各备表切换成对应的主表以供 FIFO写地址重映射单元和 FIFO读地址重 映射单元进行查询。  The table item automatic refreshing unit 804 may also periodically refresh the table of the block quantity table and the block remapping table according to the content of the configuration of the service channel-block mapping table by the user, and switch the refreshed table. The corresponding main table is queried by the FIFO write address remapping unit and the FIFO read address remapping unit.
进一步地, 上述表项刷新单元 804, 具体通过下述方式刷新各表: 每 y个周期遍历业务通道 -块映射表, 所述 y=n*x, n为数据緩存的分 块数, X为业务的数量(最大可能的业务的总数);  Further, the foregoing table item refreshing unit 804 specifically refreshes each table by: traversing the service channel-block mapping table every y cycles, where y=n*x, n is the number of blocks of the data cache, and X is The number of services (the maximum number of possible services);
每次遍历时, 针对每个业务, 将该业务占用的块的数量进行累加, 统 计各业务占用的块的数量, 写入待刷新的块数量表; 每次遍历时, 针对每个业务, 将该业务占用的每个块的物理地址写入 待刷新的块重映射表。 Each time traversing, for each service, the number of blocks occupied by the service is accumulated, the number of blocks occupied by each service is counted, and the block quantity table to be refreshed is written; Each time the traversal, for each service, the physical address of each block occupied by the service is written into the block remapping table to be refreshed.
上述表项刷新单元生成块数量表和块重映射表的过程与刷新块数量表 和块重映射表的过程是相同的, 在此不再赘述。  The process of generating the block quantity table and the block remapping table by the foregoing table item refreshing unit is the same as the process of refreshing the block quantity table and the block remapping table, and details are not described herein again.
本发明实施例提供的上述多通道 FIFO queue控制器, 可以通过多种硬 件电路单元实现, 例如可通过常见的 FPGA实现。  The above multi-channel FIFO queue controller provided by the embodiment of the present invention can be implemented by various hardware circuit units, for example, by a common FPGA.
釆用本发明实施例提供的上述多通道 FIFO queue控制器, 可实现多个 业务共享同一个数据緩存, 大大节省了超大位宽多通道 FIFO实体的 RAM 占用的资源, 经过实验证明, 在业务数为 80, 最小业务深度需求为 16个存 储单元, 最大业务深度需求为 128个存储单元的多通道 FIFO的情形下, 如 果按照现有方案 1的方式设计, 大概需要 400块 RAM, 而釆用本发明实施 例提供的上述多通道 FIFO queue控制器的实现方式, 则只需要不多于 80 块 RAM (包括附加的表项 ), 从 RAM资源来看节省了约 80%, 而其他资源 也能节省也能节约近 70%, 节省的资源还是非常可观的。  The multi-channel FIFO queue controller provided by the embodiment of the present invention can realize that multiple services share the same data cache, which greatly saves the resources occupied by the RAM of the super-large bit-width multi-channel FIFO entity, and has been experimentally proved that the number of services is In the case of a multi-channel FIFO with a minimum service depth requirement of 16 storage units and a maximum service depth requirement of 128 storage units, if it is designed according to the existing scheme 1, approximately 400 RAMs are required, and the application is required. The implementation of the above multi-channel FIFO queue controller provided by the embodiment of the invention requires only no more than 80 pieces of RAM (including additional entries), which saves about 80% from the RAM resource, and other resources can also be saved. It can also save nearly 70%, and the resources saved are still very impressive.
基于同一发明构思, 本发明实施例还提供了一种多通道 FIFO queue的 访问方法, 由于该方法所解决问题的原理与前述多通道 FIFO queue控制器 相似, 因此该方法的实施可以参见前述多通道 FIFO queue控制器的实施, 重复之处不再赘述。  Based on the same inventive concept, the embodiment of the present invention further provides a multi-channel FIFO queue access method. The principle of the method is similar to the foregoing multi-channel FIFO queue controller. Therefore, the implementation of the method can be referred to the foregoing multi-channel. The implementation of the FIFO queue controller will not be repeated here.
本发明实施例提供的多通道 FIFO queue的访问方法,如图 11所示, 包 括下述步骤:  The access method of the multi-channel FIFO queue provided by the embodiment of the present invention, as shown in FIG. 11, includes the following steps:
51101、 根据业务的标识, 确定在数据缓存中待访问的块的物理地址, 所述数据緩存包含多个块, 每个块包含 m个存储单元, m为正整数;  51101. Determine, according to an identifier of the service, a physical address of a block to be accessed in a data cache, where the data cache includes multiple blocks, each block includes m storage units, where m is a positive integer;
51102、 根据所述待访问的块的物理地址和待访问的数据在所述待访问 的块内的地址, 确定所述待访问的数据在所述数据緩存中的物理地址; S102, determining, according to the physical address of the to-be-accessed block and the data to be accessed, the physical address of the data to be accessed in the data cache;
51103、 根据所述地址确定电路确定的所述待访问的数据在所述数据緩 存中的物理地址访问所述待访问的数据。 上述 S1101 中, 所述确定所述待访问的数据在所述数据緩存中的物理 地址, 可以通过下述方式实现: 51103. Access the data to be accessed according to the physical address of the to-be-accessed data determined by the address determining circuit in the data cache. In the above S1101, the determining the physical address of the data to be accessed in the data cache may be implemented by:
根据所述业务的标识, 确定所述待访问的块的逻辑地址和所述待访问 的数据在所述待访问的块内的地址;  Determining, according to the identifier of the service, a logical address of the to-be-accessed block and an address of the to-be-accessed data in the to-be-accessed block;
根据所述待访问的块的逻辑地址, 以及根据所述待访问的块的逻辑地 址与所述待访问的块的物理地址之间的映射关系, 确定所述待访问的块的 物理地址;  Determining a physical address of the block to be accessed according to a logical address of the block to be accessed, and a mapping relationship between a logical address of the block to be accessed and a physical address of the block to be accessed;
根据所述待访问的块的物理地址和所述待访问的数据在所述待访问的 块内的地址, 确定所述待访问的数据在所述数据緩存中的物理地址。  Determining, according to the physical address of the to-be-accessed block and the address of the to-be-accessed data, the physical address of the data to be accessed in the data cache.
进一步地, 上述根据所述业务的标识, 确定所述待访问的块的逻辑地 址和所述待访问的数据在所述待访问的块内的地址, 根据所述待访问的块 理地址之间的映射关系, 确定所述待访问的块的物理地址, 根据所述待访 问的块的物理地址和所述待访问的数据在所述待访问的块内的地址, 确定 所述待访问的数据在所述数据緩存中的物理地址, 在具体实施时, 可以通 过下述两种方式实现:  Further, determining, according to the identifier of the service, the logical address of the to-be-accessed block and the address of the to-be-accessed data in the to-be-accessed block, according to the block address to be accessed a mapping relationship, determining a physical address of the to-be-accessed block, determining the to-be-accessed data according to the physical address of the to-be-accessed block and the address of the to-be-accessed data in the to-be-accessed block The physical address in the data cache can be implemented in the following two ways:
方式一:  method one:
根据所述业务的标识查询逻辑地址表, 获取所述待访问的数据的逻辑 地址;  Querying a logical address table according to the identifier of the service, and acquiring a logical address of the to-be-accessed data;
根据所述待访问的数据的逻辑地址得到所述待访问的块的第一逻辑地 址( logic_blk_addr )和块内偏移地址( logic_shift_addr );  Obtaining, according to the logical address of the data to be accessed, a first logical address (logic_blk_addr) and an intra-block offset address (logic_shift_addr) of the block to be accessed;
根据所述业务的标识查询首块地址表, 得到所述业务占用的多个块中 首个块的逻辑地址( first— blk—addr );  Querying the first block address table according to the identifier of the service, and obtaining a logical address (first_blk_addr) of the first block of the plurality of blocks occupied by the service;
根据待访问的块的第二逻辑地址查询块地址表, 得到所述待访问的块 的物理地址, 所述待访问的块的第二逻辑地址等于 logic— blk—addr 与 first blk addr的和; 根据所述待访问的块的物理地址和所述块内偏移地址, 确定所述待访 问的数据在所述数据緩存中的物理地址; Querying a block address table according to a second logical address of the block to be accessed, obtaining a physical address of the block to be accessed, where a second logical address of the block to be accessed is equal to a sum of logic_blk_addr and first blk addr; Determining, according to the physical address of the to-be-accessed block and the intra-block offset address, a physical address of the data to be accessed in the data cache;
其中, 所述块地址表中记载所述业务的标识, 以及所述业务占用的多 个块的第二逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所 述业务占用的多个块的第二逻辑地址和所述业务占用的多个块的物理地址 The block address table records the identifier of the service, and the mapping relationship between the second logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, where the service is occupied. a second logical address of the plurality of blocks and a physical address of the plurality of blocks occupied by the service
——对应, 所述待访问的块的第二逻辑地址取值为 [first— blk—addr, first— blk—addr+n]中任一整数, 所述 n为所述业务占用数据緩存中的块的数 量; - correspondingly, the second logical address of the block to be accessed takes any integer in [first_blk_addr, first-blk_addr+n], and the n is in the service occupation data cache. The number of blocks;
所述首块地址表中记载所述业务的标识, 以及所述业务占用的多个块 中首个块的逻辑地址;  The identifier of the service is recorded in the first block address table, and a logical address of a first block of the plurality of blocks occupied by the service;
所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数据的逻 辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占用的块 的数量]中任一整数。  The logical address table records the identifier of the service, and the logical address of the data to be accessed, and the value of the logical address of the data to be accessed is [0, mx the number of blocks occupied by the service] Any integer in .
方式二:  Method 2:
与方式一不同的是, 在方式二中, 确定出待访问的数据在数据緩存中 的物理地址需要查询逻辑地址表和块重映射表, 具体来说, 其过程如下: 根据所述业务的标识查询逻辑地址表, 获取所述待访问的数据的逻辑 地址;  Different from the first method, in the second method, determining the physical address of the data to be accessed in the data cache needs to query the logical address table and the block remapping table. Specifically, the process is as follows: according to the identifier of the service Querying a logical address table to obtain a logical address of the data to be accessed;
根据所述待访问的数据的逻辑地址, 得到所述待访问的块的逻辑地址 ( logic blk addr )和块内偏移地址( logic_shift_addr );  Obtaining, according to the logical address of the data to be accessed, a logical address (logic blk addr ) and an intra-block offset address (logic_shift_addr ) of the block to be accessed;
根据所述业务的标识和所述待访问的块的逻辑地址 logic— blk—addr查询 块重映射表, 得到所述待访问的块的物理地址;  Obtaining a physical address of the block to be accessed according to the identifier of the service and the logical address logic of the block to be accessed, blk_addr, querying the block remapping table;
根据所述待访问的块的物理地址和所述块内偏移地址, 确定所述待访 问的数据在所述数据緩存中的物理地址;  Determining, according to the physical address of the block to be accessed and the intra-block offset address, a physical address of the data to be accessed in the data cache;
其中, 所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数 据的逻辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占 用的块的数量]中任一整数; The logical address table records the identifier of the service, and the logical address of the data to be accessed, and the logical address of the data to be accessed takes the value of [0, mx Any of the number of blocks used];
所述块重映射表中记载所述业务的标识、 以及所述业务占用的多个块 的逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所述业务占 用的多个块的逻辑地址和所述业务占用的多个块的物理地址——对应, 所 述待访问的块的逻辑地址取值为 [0, n]中的任一整数, 所述 n为所述业务占 用数据緩存中的块的数量, 具体数据结构可参见前述图 8。  The block remapping table records the identifier of the service, and the mapping relationship between the logical address of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service, and multiple blocks occupied by the service Corresponding to the logical address of the plurality of blocks occupied by the service, the logical address of the block to be accessed is any integer of [0, n], and the n is occupied by the service. The number of blocks in the data cache, the specific data structure can be seen in Figure 8 above.
在上述 S1102确定所述待访问的数据在所述数据緩存中的物理地址的 步骤之后, 本发明实施例提供的多通道 FIFO queue的访问方法, 还可以执 行下述步骤:  After the step S10102 determines the physical address of the data to be accessed in the data cache, the access method of the multi-channel FIFO queue provided by the embodiment of the present invention may also perform the following steps:
将 {logic— blk— addr, logic— shift— addr}+l作为业务下次待访问的数据的逻 辑地址更新逻辑地址表。  Update the logical address table with {logic-blk_addr, logic_shift_addr}+l as the logical address of the next data to be accessed by the service.
进一步地, 在上述方式一和方式二中, 在根据所述业务的标识查询逻 辑地址表, 获取所述待访问的数据的逻辑地址的同时, 还可以根据业务标 识执行查询块数量表的步骤, 块数量表记录有多个业务的业务标识、 每个 业务所占用的数据緩存的块数, 查询块数量表的目的, 可以获知该业务所 占用的数据緩存的块数, 继而确定该业务逻辑地址的范围, 当判断业务待 访问的数据的逻辑地址超出其逻辑地址范围的上限时, 将逻辑地址表中该 业务待访问的数据的逻辑地址置为 0。  Further, in the foregoing manners 1 and 2, when the logical address of the to-be-accessed data is obtained by querying the logical address table according to the identifier of the service, the step of querying the block quantity table may be performed according to the service identifier. The block quantity table records the service identifier of multiple services, the number of blocks of the data cache occupied by each service, and the purpose of querying the block quantity table, the number of blocks of the data cache occupied by the service can be known, and then the logical address of the service is determined. The range of the data to be accessed in the logical address table is set to 0 when it is determined that the logical address of the data to be accessed by the service exceeds the upper limit of the logical address range.
进一步地, 在上述方式一和方式二中, 当根据业务通道号查询块数量 表得到业务所占用的块的数量为 0 时, 确定该业务的业务通道号为非法, 控制该业务的读写使能为 0 (即阻止该业务的读写操作;)。  Further, in the foregoing manners 1 and 2, when the number of blocks occupied by the service is 0 according to the service channel number, the service channel number of the service is determined to be illegal, and the read/write of the service is controlled. Can be 0 (ie blocking the read and write operations of the business;).
进一步地, 本发明实施例提供的多通道 FIFO queue的访问方法中, 逻 辑地址表中还记载有各业务当前读和写地址的符号位, 该符号位是表征各 业务待读和写的数据的逻辑地址是否增加到等于所占空间大小的比特位; 在上述访问数据緩存(读和 /或写操作) 的过程中, 还可以实现数据緩存空 满的告警以及水线的告警, 具体过程如下: 针对每个业务, 当待读的数据的逻辑地址(以下简称为读逻辑地址) 大于待写的数据的逻辑地址(以下简称为写逻辑地址)时, 计算水线值 =地 址空间大小- (读逻辑地址 -写逻辑地址 ), 当读逻辑地址小于写逻辑地址时, 计算水线值 =写逻辑地址-读逻辑地址; Further, in the access method of the multi-channel FIFO queue provided by the embodiment of the present invention, the logical address table further records the symbol bits of the current read and write addresses of each service, and the symbol bits are data representing the data to be read and written by each service. Whether the logical address is increased to a bit equal to the size of the occupied space; in the process of accessing the data cache (read and/or write operation), the alarm of the data cache empty and the alarm of the waterline can also be implemented, and the specific process is as follows: For each service, when the logical address of the data to be read (hereinafter referred to as the read logical address) is larger than the logical address of the data to be written (hereinafter referred to as the write logical address), the watermark value = address space size is calculated - (read Logical address - write logical address), when the read logical address is less than the write logical address, calculate the watermark value = write logical address - read logical address;
并且, 当水线值高于预先设定的高水线值时, 上报高水线告警; 当水线值小于设定的低水线值时, 上报低水线告警;  And, when the water line value is higher than the preset high water line value, the high water line alarm is reported; when the water line value is less than the set low water line value, the low water line alarm is reported;
当读地址符号位=写地址符号位, 且当前读逻辑地址 =写逻辑地址, 则 上报为空的告警;  When the read address sign bit = the write address sign bit, and the current read logical address = write logical address, the alarm is reported as empty;
当读地址符号位≠写地址符号位, 且读逻辑地址 =写逻辑地址, 则上才艮 为满的告警;  When the read address sign bit writes the address sign bit, and the read logical address = write logical address, then the upper is 满 full alarm;
当读地址符号位≠写地址符号位, 且读逻辑地址 <写逻辑地址, 则上才艮 写溢出告警;  When the read address sign bit writes the address sign bit, and the read logical address <write logical address, the overflow alarm is written.
当读地址符号位=写地址符号位, 且读逻辑地址 >写逻辑地址, 则上才艮 读溢出告警。  When the read address sign bit = write address sign bit, and the read logical address > write logical address, the overflow alarm is read.
进一步地, 前述方式一中查询使用的所述块数量表、 首块地址表和块 地址表通过下述方式生成:  Further, the block quantity table, the first block address table, and the block address table used in the query in the foregoing manner 1 are generated by:
根据用户配置的业务通道 -块映射表, 生成块数量表、 首块地址表和块 地址表作为主表以供查询; 其中, 业务通道-块映射表记载有数据緩存中的 每个块与被占用的业务(使用业务通道号作为标识)之间的映射关系。  Generating a block quantity table, a first block address table, and a block address table as a main table for query according to the service channel-block mapping table configured by the user; wherein, the service channel-block mapping table records each block and the data cache The mapping relationship between the occupied services (using the service channel number as the identifier).
较佳地, 在生成块数量表、 首块地址表和块地址表作为主表之后, 本 发明实施例还可以执行下述步骤:  Preferably, after the block number table, the first block address table, and the block address table are generated as the main table, the embodiment of the present invention may further perform the following steps:
备份所述块数量表、 首块地址表和块地址表作为备表;  Backing up the block quantity table, the first block address table, and the block address table as a backup table;
周期性地按照用户对业务通道 -块映射表的配置的内容, 对作为备表的 块数量表、 首块地址表和块地址表进行刷新, 并将刷新后的各表切换成对 应的主表以供查询。  Periodically refreshing the block quantity table, the first block address table, and the block address table as the standby table according to the content of the configuration of the service channel-block mapping table by the user, and switching the refreshed tables to the corresponding main table. For inquiry.
进一步地, 对作为备表的块数量表、 首块地址表和块地址表进行刷新, 具体通过下述过程实现: Further, refreshing the block quantity table, the first block address table, and the block address table as the standby table, Specifically achieved through the following process:
每 y个周期遍历业务通道 -块映射表, 其中, y=n*x, n为数据緩存的分 块数, X为业务的数量;  The service channel-block mapping table is traversed every y cycles, where y=n*x, n is the number of blocks of the data cache, and X is the number of services;
每次遍历时, 针对每个业务, 将该业务占用的块的数量进行累加, 统 计各业务占用的块的数量, 写入待刷新的块数量表;  Each time traversing, for each service, the number of blocks occupied by the service is accumulated, the number of blocks occupied by each service is counted, and the block quantity table to be refreshed is written;
每次遍历时, 针对数据緩存中的每个块, 将该块对应的物理地址写入 待刷新的块地址表;  Each time traversing, for each block in the data cache, the physical address corresponding to the block is written into the block address table to be refreshed;
每次遍历时, 针对数据緩存中的每个块, 当其为被占用的业务对应的 首个块时, 将该块的逻辑地址写入待刷新的首块地址表。  Each time the traversal, for each block in the data cache, when it is the first block corresponding to the occupied service, the logical address of the block is written into the first block address table to be refreshed.
进一步地, 前述方式二中查询使用的块数量表、 块重映射表通过下述 方式生成:  Further, the block quantity table and the block remapping table used in the query in the foregoing mode 2 are generated in the following manner:
根据用户配置的业务通道 -块映射表, 生成块数量表和块重映射表作为 主表以供查询; 其中, 业务通道-块映射表记载有数据緩存中的每个块与被 占用的业务之间的映射关系。  Generating a block quantity table and a block remapping table as a main table for query according to the service channel-block mapping table configured by the user; wherein the service channel-block mapping table records each block in the data cache and the occupied service The mapping relationship between.
较佳地, 在生成块数量表和块重映射表作为主表之后, 本发明实施例 还可以执行下述步骤:  Preferably, after the block number table and the block remapping table are generated as the main table, the embodiment of the present invention may further perform the following steps:
备份所述块数量表和块重映射表作为备表;  Backing up the block quantity table and the block remapping table as a backup table;
周期性地按照用户对业务通道 -块映射表的配置的内容, 对作为备表的 块数量表和块重映射表进行刷新, 并将刷新后的各表切换成对应的主表以 供查询。  Periodically, according to the content of the configuration of the service channel-block mapping table by the user, the block quantity table and the block remapping table as the standby table are refreshed, and the refreshed tables are switched to the corresponding main table for query.
进一步地, 对作为备表的块数量表和块重映射表进行刷新, 具体通过 下述过程实现:  Further, refreshing the block quantity table and the block remapping table as the standby table is specifically implemented by the following process:
每 y个周期遍历业务通道 -块映射表, 其中, y=n*x, n为数据緩存的分 块数, X为业务的数量;  The service channel-block mapping table is traversed every y cycles, where y=n*x, n is the number of blocks of the data cache, and X is the number of services;
每次遍历时, 针对每个业务, 将该业务占用的块的数量进行累加, 统 计各业务占用的块的数量, 写入待刷新的块数量表; 每次遍历时, 针对每个业务, 将该业务占用的每个块的物理地址写入 待刷新的块重映射表。 Each time traversing, for each service, the number of blocks occupied by the service is accumulated, the number of blocks occupied by each service is counted, and the block quantity table to be refreshed is written; Each time the traversal, for each service, the physical address of each block occupied by the service is written into the block remapping table to be refreshed.
本发明实施例提供的上述多通道 FIFO queue控制器及其访问方法, 多 通道 FIFO queue控制器包地址确定电路和控制电路。 数据緩存被分为多个 块, 地址确定电路可以根据业务的标识确定待访问的块的物理地址。 地址 确定电路还可以据此进一步确定待访问的数据在数据緩存中的物理地址。 控制电路可以根据地址确定电路确定的待访问的数据在数据緩存中的物理 地址访问待访问的数据。 因此, 上述技术方案有助于多个业务对数据緩存 的共享, 有助于减少对 FIFO queue的资源的占用。 此外, 本发明实施例提 供了待访问的数据的物理地址的确定方法。 即根据业务的标识, 确定待访 问的块的物理地址, 并根据待访问的块的物理地址和待访问的数据在待访 问的块内地址, 确定待访问的数据在数据緩存中的物理地址。 根据待访问 的数据在数据緩存中的物理地址访问待访问的数据。 上述技术方案中, 确 定待访问的数据在数据緩存中的物理地址的过程中, 不需要依赖链表指针, 可靠性较高。  The multi-channel FIFO queue controller and the access method thereof provided by the embodiment of the invention, the multi-channel FIFO queue controller packet address determining circuit and the control circuit. The data buffer is divided into a plurality of blocks, and the address determining circuit can determine the physical address of the block to be accessed based on the identity of the service. The address determining circuit can further determine the physical address of the data to be accessed in the data cache based on this. The control circuit can access the data to be accessed according to the physical address of the data to be accessed determined by the address determining circuit in the data cache. Therefore, the above technical solution helps the sharing of data caches by multiple services, which helps to reduce the occupation of resources of the FIFO queue. Furthermore, embodiments of the present invention provide a method of determining the physical address of data to be accessed. That is, the physical address of the block to be accessed is determined according to the identifier of the service, and the physical address of the data to be accessed in the data cache is determined according to the physical address of the block to be accessed and the data to be accessed in the in-block address to be accessed. The data to be accessed is accessed according to the physical address in the data cache according to the data to be accessed. In the above technical solution, in the process of determining the physical address of the data to be accessed in the data cache, there is no need to rely on the linked list pointer, and the reliability is high.
进一步地, 本发明实施例提供的上述多通道 FIFO queue控制器及其访 问方法, 数据緩存的访问地址分为两个层次, 逻辑地址和物理地址, 并建 立两者之间的映射关系, 通过逻辑地址来确定对应的物理地址, 由于逻辑 地址在数据緩存空间内是线性的, 这样, 可以通过逻辑地址来识别当前数 据緩存的空满状态以及当前水线是否达到预设的高低水线的情况, 弥补了 现有技术例如方案 1和方案 2无法识别数据緩存存储状态的缺陷。  Further, the multi-channel FIFO queue controller and the access method thereof are provided by the embodiment of the present invention, and the access address of the data cache is divided into two levels, a logical address and a physical address, and a mapping relationship between the two is established, and the logic is established. The address is used to determine the corresponding physical address. Since the logical address is linear in the data buffer space, the logical address can be used to identify the empty state of the current data buffer and whether the current water line reaches the preset high and low water line. This makes up for the shortcomings of the prior art, such as Scheme 1 and Scheme 2, which do not recognize the data cache storage state.
进一步地, 本发明实施例提供的上述多通道 FIFO queue控制器及其访 问方法中, 各业务的读写地址的确定所依据的块数量表、 首块地址表和块 地址表 (或者块数量表和块重映射表 ),都是依据用户配置的业务通道 -块映 射表的内容生成和刷新的, 因此, 各业务的待读写的数据的物理地址的确 定的可靠性几乎等价于用户配置的表项的可靠性, 与业务的带宽和其他异 常无关, 进一步保证了多通道 FIFO读写操作的可靠性。 Further, in the multi-channel FIFO queue controller and the access method thereof provided by the embodiment of the present invention, the block quantity table, the first block address table, and the block address table (or the block quantity table) according to the determination of the read/write address of each service are determined. And the block remapping table) are generated and refreshed according to the content of the service channel-block mapping table configured by the user. Therefore, the reliability of determining the physical address of the data to be read and written of each service is almost equivalent to the user configuration. The reliability of the entries, the bandwidth of the business and other differences Often unrelated, further ensuring the reliability of multi-channel FIFO read and write operations.
另外, 本发明实施例提供的上述多通道 FIFO queue控制器及其访问方 法, 对于各业务的待读写的数据的地址的确定所依据的块数量表、 首块地 址表和块地址表(或者块数量表和块重映射表)进行周期性地刷新, 并提 供了主备切换机制, 在不影响业务数据读写操作的情况下, 实现对业务的 增删等动态变化。 本发明的精神和范围。 这样, 倘若本发明的这些修改和变型属于本发明权 利要求及其等同技术的范围之内, 则本发明也意图包含这些改动和变型在 内。  In addition, the multi-channel FIFO queue controller and the access method thereof provided by the embodiment of the present invention, the block quantity table, the first block address table, and the block address table according to the determination of the address of the data to be read and written for each service (or The block quantity table and the block remapping table are periodically refreshed, and an active/standby switching mechanism is provided to implement dynamic changes such as additions and deletions of services without affecting the read and write operations of service data. The spirit and scope of the invention. Thus, it is intended that the present invention cover the modifications and modifications of the invention

Claims

权利要求 Rights request
1、 一种多通道先进先出緩存队列 FIFO queue控制器, 其特征在于, 包 括: 地址确定电路和控制电路; 1. A multi-channel first-in-first-out buffer queue FIFO queue controller, characterized by including: an address determination circuit and a control circuit;
所述地址确定电路用于: The address determination circuit is used for:
根据业务的标识确定在数据緩存中的待访问的块的物理地 址, 所述数据緩存包含多个块, 每个块包含 m个存储单元, m为 正整数; Determine the physical address of the block to be accessed in the data cache according to the identifier of the service. The data cache contains multiple blocks, each block contains m storage units, and m is a positive integer;
根据所述待访问的块的物理地址和待访问的数据在所述待访 问的块内的地址, 确定所述待访问的数据在所述数据緩存中的物 理地址; Determine the physical address of the data to be accessed in the data cache according to the physical address of the block to be accessed and the address of the data to be accessed in the block to be accessed;
所述控制电路用于: The control circuit is used for:
根据所述地址确定电路确定的所述待访问的数据在所述数据緩存中的 物理地址访问所述待访问的数据。 The data to be accessed is accessed according to the physical address of the data to be accessed in the data cache determined by the address determination circuit.
2、 如权利要求 1所述的 FIFO queue控制器, 其特征在于, 所述地址确 定电路具体用于: 2. The FIFO queue controller according to claim 1, wherein the address determination circuit is specifically used for:
根据所述业务的标识, 确定所述待访问的块的逻辑地址和所 述待访问的数据在所述待访问的块内的地址; According to the identification of the service, determine the logical address of the block to be accessed and the address of the data to be accessed in the block to be accessed;
根据所述待访问的块的逻辑地址, 以及所述待访问的块的逻 待访问的块的物理地址; According to the logical address of the block to be accessed, and the physical address of the block to be accessed;
根据所述待访问的块的物理地址和所述待访问的数据在所述 待访问的块内的地址, 确定所述待访问的数据在所述数据緩存中 的物理地址。 The physical address of the data to be accessed in the data cache is determined according to the physical address of the block to be accessed and the address of the data to be accessed in the block to be accessed.
3、 如权利要求 2所述的 FIFO queue控制器, 其特征在于, 所述地址确 定电路具体用于: 根据所述业务的标识查询逻辑地址表, 获取所述待访问的数 据的逻辑地址; 3. The FIFO queue controller according to claim 2, characterized in that the address determination circuit is specifically used for: Query the logical address table according to the identifier of the service to obtain the logical address of the data to be accessed;
根据所述待访问的数据的逻辑地址得到所述待访问的块的第 一還辑地址 logic blk addr和块内偏移地址 logic— shift— addr; Obtain the first edit address logic blk addr and the intra-block offset address logic_shift_addr of the block to be accessed according to the logical address of the data to be accessed;
根据所述业务的标识查询首块地址表, 得到所述业务占用的 多个块中首个块的逻辑地址 first— blk— addr; Query the first block address table according to the identifier of the service to obtain the logical address of the first block among the multiple blocks occupied by the service first_blk_addr;
根据待访问的块的第二逻辑地址查询块地址表, 得到所述待 访问的块的物理地址, 所述待访问的块的第二逻辑地址等于 logic blk addr与 first— blk— addr的和; Query the block address table according to the second logical address of the block to be accessed to obtain the physical address of the block to be accessed. The second logical address of the block to be accessed is equal to the sum of logic blk addr and first_blk_addr;
根据所述待访问的块的物理地址和所述块内偏移地址, 确定 所述待访问的数据在所述数据緩存中的物理地址; Determine the physical address of the data to be accessed in the data cache according to the physical address of the block to be accessed and the offset address within the block;
其中, 所述块地址表中记载所述业务的标识, 以及所述业务占用的多 个块的第二逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所 述业务占用的多个块的第二逻辑地址和所述业务占用的多个块的物理地址 ——对应, 所述待访问的块的第二逻辑地址取值为 [first— blk— addr, first— blk— addr+n]中任一整数, 所述 n为所述业务占用数据緩存中的块的数 量; Wherein, the identifier of the service is recorded in the block address table, as well as the mapping relationship between the second logical addresses of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service. The second logical addresses of the plurality of blocks correspond to the physical addresses of the plurality of blocks occupied by the service. The value of the second logical address of the block to be accessed is [first_blk_addr, first_blk_addr +n], where n is the number of blocks in the data cache occupied by the service;
所述首块地址表中记载所述业务的标识, 以及所述业务占用的多个块 中首个块的逻辑地址; The first block address table records the identifier of the service and the logical address of the first block among the multiple blocks occupied by the service;
所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数据的逻 辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占用的块 的数量]中任一整数。 The logical address table records the identifier of the service and the logical address of the data to be accessed. The value of the logical address of the data to be accessed is [0, m x the number of blocks occupied by the service] any integer.
4、 如权利要求 2所述的 FIFO queue控制器, 其特征在于, 所述地址确 定电路具体用于: 4. The FIFO queue controller according to claim 2, wherein the address determination circuit is specifically used for:
根据所述业务的标识查询逻辑地址表, 获取所述待访问的数 据的逻辑地址; 根据所述待访问的数据的逻辑地址, 得到所述待访问的块的 還辑地址 logic blk addr和块内偏移地址 logic— shift— addr; 根据所述业务的标识和所述待访问的块的逻辑地址 logic— blk— addr查询块重映射表,得到所述待访问的块的物理地址; 根据所述待访问的块的物理地址和所述块内偏移地址, 确定 所述待访问的数据在所述数据緩存中的物理地址; Query the logical address table according to the identifier of the service to obtain the logical address of the data to be accessed; According to the logical address of the data to be accessed, the return address logic blk addr and the intra-block offset address logic_shift_addr of the block to be accessed are obtained; according to the identifier of the service and the block to be accessed The logical address logic_blk_addr queries the block remapping table to obtain the physical address of the block to be accessed; determine the block to be accessed based on the physical address of the block to be accessed and the offset address within the block. The physical address of the data in the data cache;
其中, 所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数 据的逻辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占 用的块的数量]中任一整数; Wherein, the identifier of the service and the logical address of the data to be accessed are recorded in the logical address table. The value of the logical address of the data to be accessed is [0, m x the value of the block occupied by the service. quantity] any integer;
所述块重映射表中记载所述业务的标识、 以及所述业务占用的多个块 的逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所述业务占 用的多个块的逻辑地址和所述业务占用的多个块的物理地址——对应, 所 述待访问的块的逻辑地址取值为 [0, n]中的任一整数, 所述 n为所述业务占 用数据緩存中的块的数量。 The block remapping table records the identification of the service and the mapping relationship between the logical addresses of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service. The multiple blocks occupied by the service are recorded in the block remapping table. The logical address corresponds to the physical addresses of the multiple blocks occupied by the service. The logical address of the block to be accessed is any integer in [0, n], where n is the service occupied. The number of blocks in the data cache.
5、 如权利要求 3或 4所述的 FIFO queue控制器, 其特征在于, 所述地 址确定电路还用于: 5. The FIFO queue controller according to claim 3 or 4, characterized in that the address determination circuit is also used to:
在所述控制电路访问所述待访问的数据之后, 使用所述业务下次访问 的数据的逻辑地址替换所述逻辑地址表中所述待访问的数据的逻辑地址。 After the control circuit accesses the data to be accessed, the logical address of the data to be accessed in the logical address table is replaced with the logical address of the data to be accessed next by the service.
6、一种多通道先进先出緩存队列 FIFO queue的访问方法,其特征在于, 包括: 6. A multi-channel first-in-first-out cache queue FIFO queue access method, which is characterized by including:
根据业务的标识, 确定在数据緩存中待访问的块的物理地址, 所述数 据緩存包含多个块, 每个块包含 m个存储单元, m为正整数; According to the identification of the service, determine the physical address of the block to be accessed in the data cache. The data cache contains multiple blocks, each block contains m storage units, and m is a positive integer;
根据所述待访问的块的物理地址和待访问的数据在所述待访问的块内 的地址, 确定所述待访问的数据在所述数据緩存中的物理地址; Determine the physical address of the data to be accessed in the data cache according to the physical address of the block to be accessed and the address of the data to be accessed in the block to be accessed;
根据所述地址确定电路确定的所述待访问的数据在所述数据緩存中的 物理地址访问所述待访问的数据。 The data to be accessed is accessed according to the physical address of the data to be accessed in the data cache determined by the address determination circuit.
7、 如权利要求 6所述的方法, 其特征在于, 所述确定所述待访问的数 据在所述数据緩存中的物理地址, 包括: 7. The method of claim 6, wherein determining the physical address of the data to be accessed in the data cache includes:
根据所述业务的标识, 确定所述待访问的块的逻辑地址和所述待访问 的数据在所述待访问的块内的地址; According to the identification of the service, determine the logical address of the block to be accessed and the address of the data to be accessed in the block to be accessed;
根据所述待访问的块的逻辑地址, 以及根据所述待访问的块的逻辑地 址与所述待访问的块的物理地址之间的映射关系, 确定所述待访问的块的 物理地址; Determine the physical address of the block to be accessed according to the logical address of the block to be accessed, and according to the mapping relationship between the logical address of the block to be accessed and the physical address of the block to be accessed;
根据所述待访问的块的物理地址和所述待访问的数据在所述待访问的 块内的地址, 确定所述待访问的数据在所述数据緩存中的物理地址。 The physical address of the data to be accessed in the data cache is determined according to the physical address of the block to be accessed and the address of the data to be accessed in the block to be accessed.
8、 如权利要求 7所述的方法, 其特征在于, 根据所述业务的标识, 确 定所述待访问的块的逻辑地址和所述待访问的数据在所述待访问的块内的 地址, 根据所述待访问的块的逻辑地址, 以及根据所述待访问的块的逻辑 的物理地址, 根据所述待访问的块的物理地址和所述待访问的数据在所述 待访问的块内的地址, 确定所述待访问的数据在所述数据緩存中的物理地 址, 具体包括: 8. The method according to claim 7, characterized in that, according to the identifier of the service, the logical address of the block to be accessed and the address of the data to be accessed in the block to be accessed are determined, According to the logical address of the block to be accessed, and according to the logical physical address of the block to be accessed, according to the physical address of the block to be accessed and the data to be accessed within the block to be accessed address, determining the physical address of the data to be accessed in the data cache, specifically including:
根据所述业务的标识查询逻辑地址表, 获取所述待访问的数据的逻辑 地址; Query the logical address table according to the identifier of the service to obtain the logical address of the data to be accessed;
根据所述待访问的数据的逻辑地址得到所述待访问的块的第一逻辑地 址 logic blk addr和块内偏移地址 logic shift addr; Obtain the first logical address logic blk addr and the intra-block offset address logic shift addr of the block to be accessed according to the logical address of the data to be accessed;
根据所述业务的标识查询首块地址表, 得到所述业务占用的多个块中 首个块的逻辑地址 first— blk—addr; Query the first block address table according to the identifier of the service to obtain the logical address of the first block among the multiple blocks occupied by the service first-blk-addr;
根据待访问的块的第二逻辑地址查询块地址表, 得到所述待访问的块 的物理地址, 所述待访问的块的第二逻辑地址等于 logic— blk—addr 与 first— blk—addr的和; Query the block address table according to the second logical address of the block to be accessed to obtain the physical address of the block to be accessed. The second logical address of the block to be accessed is equal to the relationship between logic_blk_addr and first_blk_addr. and;
根据所述待访问的块的物理地址和所述块内偏移地址, 确定所述待访 问的数据在所述数据緩存中的物理地址; According to the physical address of the block to be accessed and the offset address within the block, the block to be accessed is determined. The physical address of the requested data in the data cache;
其中, 所述块地址表中记载所述业务的标识, 以及所述业务占用的多 个块的第二逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所 述业务占用的多个块的第二逻辑地址和所述业务占用的多个块的物理地址 Wherein, the identifier of the service is recorded in the block address table, as well as the mapping relationship between the second logical addresses of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service. Second logical addresses of multiple blocks and physical addresses of multiple blocks occupied by the service
——对应, 所述待访问的块的第二逻辑地址取值为 [first— blk—addr, first— blk—addr+n]中任一整数, 所述 n为所述业务占用数据緩存中的块的数 量; ——Correspondingly, the value of the second logical address of the block to be accessed is any integer in [first-blk-addr, first-blk-addr+n], where n is the number in the service occupied data cache number of blocks;
所述首块地址表中记载所述业务的标识, 以及所述业务占用的多个块 中首个块的逻辑地址; The first block address table records the identifier of the service and the logical address of the first block among the multiple blocks occupied by the service;
所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数据的逻 辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占用的块 的数量]中任一整数。 The logical address table records the identifier of the service and the logical address of the data to be accessed. The value of the logical address of the data to be accessed is [0, m x the number of blocks occupied by the service] any integer.
9、 如权利要求 7所述的方法, 其特征在于, 根据所述业务的标识, 确 定所述待访问的块的逻辑地址和所述待访问的数据在所述待访问的块内的 地址, 根据所述待访问的块的逻辑地址, 以及根据所述待访问的块的逻辑 的物理地址, 根据所述待访问的块的物理地址和所述待访问的数据在所述 待访问的块内的地址, 确定所述待访问的数据在所述数据緩存中的物理地 址, 具体包括: 9. The method according to claim 7, characterized in that, according to the identifier of the service, the logical address of the block to be accessed and the address of the data to be accessed in the block to be accessed are determined, According to the logical address of the block to be accessed, and according to the logical physical address of the block to be accessed, according to the physical address of the block to be accessed and the data to be accessed within the block to be accessed address, determining the physical address of the data to be accessed in the data cache, specifically including:
根据所述业务的标识查询逻辑地址表, 获取所述待访问的数据的逻辑 地址; Query the logical address table according to the identifier of the service to obtain the logical address of the data to be accessed;
根据所述待访问的数据的逻辑地址, 得到所述待访问的块的逻辑地址 logic— blk—addr和块内偏移地址 logic— shift— addr; According to the logical address of the data to be accessed, the logical address logic_blk_addr and the intra-block offset address logic_shift_addr of the block to be accessed are obtained;
根据所述业务的标识和所述待访问的块的逻辑地址 logic— blk—addr查询 块重映射表, 得到所述待访问的块的物理地址; Query the block remapping table according to the identifier of the service and the logical address logic_blk_addr of the block to be accessed, and obtain the physical address of the block to be accessed;
根据所述待访问的块的物理地址和所述块内偏移地址, 确定所述待访 问的数据在所述数据緩存中的物理地址; According to the physical address of the block to be accessed and the offset address within the block, the block to be accessed is determined. The physical address of the requested data in the data cache;
其中, 所述逻辑地址表中记载所述业务的标识, 以及所述待访问的数 据的逻辑地址, 所述待访问的数据的逻辑地址的取值为 [0 , m x所述业务占 用的块的数量]中任一整数; Wherein, the identifier of the service and the logical address of the data to be accessed are recorded in the logical address table. The value of the logical address of the data to be accessed is [0, m x the value of the block occupied by the service. quantity] any integer;
所述块重映射表中记载所述业务的标识、 以及所述业务占用的多个块 的逻辑地址和所述业务占用的多个块的物理地址的映射关系, 所述业务占 用的多个块的逻辑地址和所述业务占用的多个块的物理地址——对应, 所 述待访问的块的逻辑地址取值为 [0, n]中的任一整数, 所述 n为所述业务占 用数据緩存中的块的数量。 The block remapping table records the identification of the service, and the mapping relationship between the logical addresses of the multiple blocks occupied by the service and the physical addresses of the multiple blocks occupied by the service. The multiple blocks occupied by the service The logical address corresponds to the physical addresses of the multiple blocks occupied by the service. The logical address of the block to be accessed is any integer in [0, n], where n is the service occupied. The number of blocks in the data cache.
10、 如权利要求 8或 9所述的方法, 其特征在于, 在所述控制电路访 问所述待访问的数据之后, 还包括: 10. The method according to claim 8 or 9, characterized in that, after the control circuit accesses the data to be accessed, it further includes:
使用所述业务下次访问的数据的逻辑地址替换所述逻辑地址表中所述 待访问的数据的逻辑地址。 The logical address of the data to be accessed in the logical address table is replaced with the logical address of the data to be accessed next by the service.
PCT/CN2014/081719 2013-08-30 2014-07-07 Multi-channel first-in first-out cache queue controller and access method WO2015027754A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310388500.2 2013-08-30
CN201310388500.2A CN103455442B (en) 2013-08-30 2013-08-30 Hyperchannel first outer buffer queue controller and access method

Publications (1)

Publication Number Publication Date
WO2015027754A1 true WO2015027754A1 (en) 2015-03-05

Family

ID=49737834

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/081719 WO2015027754A1 (en) 2013-08-30 2014-07-07 Multi-channel first-in first-out cache queue controller and access method

Country Status (2)

Country Link
CN (1) CN103455442B (en)
WO (1) WO2015027754A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455442B (en) * 2013-08-30 2016-06-08 华为技术有限公司 Hyperchannel first outer buffer queue controller and access method
CN107391023B (en) * 2016-05-16 2021-01-22 深圳市中兴微电子技术有限公司 Multi-channel data memory and access method and device thereof
CN108959107B (en) * 2017-05-18 2020-06-16 深圳市中兴微电子技术有限公司 Sharing method and device
CN109388508B (en) * 2018-10-10 2021-02-26 杭州安恒信息技术股份有限公司 Embedded cache sharing system and method for realizing zero dependence
CN112100107A (en) * 2019-06-17 2020-12-18 广州慧睿思通信息科技有限公司 USB data transmission method, device and system
CN113821191A (en) * 2021-10-13 2021-12-21 芯河半导体科技(无锡)有限公司 Device and method capable of configuring FIFO depth

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1439966A (en) * 2003-03-28 2003-09-03 北京港湾网络有限公司 Multichannel FILO data buffer storage devices
CN102521160A (en) * 2011-12-22 2012-06-27 上海交通大学 Write buffer detector, addressing method of written data and parallel channel write method
CN103116555A (en) * 2013-03-05 2013-05-22 中国人民解放军国防科学技术大学 Data access method based on multi-body parallel cache structure
CN103455442A (en) * 2013-08-30 2013-12-18 华为技术有限公司 Multi-channel first-in first-out buffer queue controller and access method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4315488B2 (en) * 1998-06-30 2009-08-19 ソニー株式会社 Data storage device, data processing device, data processing system and data processing method
CN100466602C (en) * 2005-04-28 2009-03-04 华为技术有限公司 Method for dynamically sharing space of memory
US8307149B2 (en) * 2005-12-09 2012-11-06 Panasonic Corporation Nonvolatile memory device including a logical-to-physical logig-to-physical address conversion table, a temporary block and a temporary table

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1439966A (en) * 2003-03-28 2003-09-03 北京港湾网络有限公司 Multichannel FILO data buffer storage devices
CN102521160A (en) * 2011-12-22 2012-06-27 上海交通大学 Write buffer detector, addressing method of written data and parallel channel write method
CN103116555A (en) * 2013-03-05 2013-05-22 中国人民解放军国防科学技术大学 Data access method based on multi-body parallel cache structure
CN103455442A (en) * 2013-08-30 2013-12-18 华为技术有限公司 Multi-channel first-in first-out buffer queue controller and access method

Also Published As

Publication number Publication date
CN103455442B (en) 2016-06-08
CN103455442A (en) 2013-12-18

Similar Documents

Publication Publication Date Title
WO2015027754A1 (en) Multi-channel first-in first-out cache queue controller and access method
US8930637B2 (en) Arrangement
US11416295B2 (en) Technologies for providing efficient access to data in an edge infrastructure
JP7116047B2 (en) Memory controller and method for flexible management of heterogeneous memory systems in processor-based systems
WO2021088466A1 (en) Method for improving message storage efficiency of network chip, device, and storage medium
US7477535B2 (en) 3D chip arrangement including memory manager
CN111190553B (en) Interconnect system and method using hybrid memory cube links
WO2016078313A1 (en) Data writing method and device
US20080140678A1 (en) Cache memory for a scalable information distribution system
CN103780506A (en) Data caching system and data caching method
US20120311264A1 (en) Data management method, device, and data chip
CN107783727B (en) Access method, device and system of memory device
EP3500935A1 (en) Method and apparatus for compressing addresses
US20070086428A1 (en) Network packet storage method and network packet transmitting apparatus using the same
CN102638412A (en) Cache management method and device
CN112052100B (en) Virtual machine communication method and device based on shared memory
US20060123139A1 (en) Intelligent memory interface
WO2020168522A1 (en) System on chip, routing method for access command and terminal
CN101499956A (en) Hierarchical buffer zone management system and method
KR20080042152A (en) Interleaved virtual local memory for a graphics processor
US20180225224A1 (en) Reducing bandwidth consumption when performing free memory list cache maintenance in compressed memory schemes of processor-based systems
KR20180105978A (en) Operation method for electronic device comprising on-chip network
US20180032442A1 (en) Real time memory address translation device
WO2024114497A1 (en) Hot and cold page management acceleration device and method, mmu, processor, and electronic device
CN103117962A (en) Satellite borne shared storage exchange device

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14839963

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14839963

Country of ref document: EP

Kind code of ref document: A1