WO2022127873A1 - Procédé de réalisation de programmation à grande vitesse de puce de réseau, dispositif et support de stockage - Google Patents

Procédé de réalisation de programmation à grande vitesse de puce de réseau, dispositif et support de stockage Download PDF

Info

Publication number
WO2022127873A1
WO2022127873A1 PCT/CN2021/138905 CN2021138905W WO2022127873A1 WO 2022127873 A1 WO2022127873 A1 WO 2022127873A1 CN 2021138905 W CN2021138905 W CN 2021138905W WO 2022127873 A1 WO2022127873 A1 WO 2022127873A1
Authority
WO
WIPO (PCT)
Prior art keywords
queue
linked list
memory
address
queue number
Prior art date
Application number
PCT/CN2021/138905
Other languages
English (en)
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 WO2022127873A1 publication Critical patent/WO2022127873A1/fr

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Definitions

  • the present invention claims the priority of the Chinese patent application with the application number 202011491125.0 and the invention title "Method, Device and Storage Medium for Realizing High-speed Scheduling of Network Chips" submitted to the China Patent Office on December 16, 2020, the entire contents of which are incorporated by reference in the present invention.
  • the embodiments of the present invention belong to the field of communication technologies, and mainly relate to a method, a device and a storage medium for realizing high-speed scheduling of network chips.
  • FIG. 1 A typical data packet storage-scheduling model is shown in Figure 1, and the input signal includes: ⁇ queue number, data, linked list address (write information address) ⁇ .
  • the storage scheduling model is mainly composed of the following modules: a data memory, which caches "data” according to the "write information address" of the input signal.
  • the linked list control module is used to control the conventional linked list “enqueue” and “dequeue” operations; the control of the linked list belongs to a general technical category, and the embodiment of the present invention will not be repeated; the linked list control module mainly includes four submodules: ⁇ head pointer memory, tail pointer memory, linked list memory, queue read status ⁇ .
  • the head pointer memory is used to store the storage address pointed to by the data head pointer
  • the tail pointer memory is used to store the storage address pointed to by the data tail pointer
  • the linked list memory is used to store the storage address corresponding to the data;
  • the queue read status It is used to indicate the status of the linked list control module. When it is “0”, it means that there is no other data waiting to be scheduled in the queue at this time. When it is “1”, it means that there is other data waiting to be scheduled in the queue.
  • the scheduler if the queue read status is 1, that is, the queue status is not empty, the scheduler participates in the scheduling, and the scheduler will send the scheduled queue to the "linked list control module" to obtain the read "linked list address" of the queue and trigger " "Linked list control module” updates the queue read status information.
  • the read information module accesses the data memory according to the read "linked list address” obtained by the scheduler, obtains data, and outputs it. Read the information module, access the data memory according to the "linked list address" obtained by the scheduler, obtain data, and generate output.
  • the scheduler Since the queue status directly determines whether the current queue can participate in scheduling, the scheduler generates a "queue number” and triggers the "linked list control module” to update the "queue status" with a certain delay limit.
  • the scheduler is complex, the number of queues is large, and the linked list memory is large, it often takes multiple clock cycles to complete the update of the "queue state". For example, in a complex system, it takes J clock cycles to complete a "queue state" update. If the system requires that the minimum scheduling interval for each queue is K clock cycles (K ⁇ J), the scheduling performance of the queue cannot be obtained at this time. Guaranteed; based on this, typical scheduler design principles are only applicable to systems with low complexity and low rate requirements.
  • the purpose of the embodiments of the present invention is to provide a method for realizing high-speed scheduling of network chips, a network chip, and a readable storage medium.
  • an embodiment of the present invention provides a method for realizing high-speed scheduling of network chips, the method includes: configuring Y secondary linked lists with the same structure for each storage queue, where Y is an integer, J is the queue state update period; K is the minimum scheduling interval period of each queue; each secondary linked list includes: head pointer memory, tail pointer memory and secondary linked list memory;
  • the secondary queue numbers include: the original queue number and the secondary queue number. Number offset value.
  • a queue polling status register is configured
  • the method further includes: configuring a secondary queue state memory for each secondary linked list, and judging whether the queried secondary linked list is empty by querying the state of the secondary queue state memory.
  • replacing the original queue number carried by the current message with the secondary queue number, and performing the linked list operation with the secondary queue number corresponding to the current message as the new queue number includes:
  • the linked list operation is an enqueue operation, then:
  • the matching secondary linked list is not empty, the address of the linked list carried by the current message is used as the value, and the value of the tail pointer register is used as the address to write into the secondary linked list memory matched by the current secondary linked list; at the same time, the current packet is used to carry The number of the secondary queue is used as the address, and the address of the linked list carried by the current message is written as the value and replaces the pointer register matched by the current secondary linked list at the end.
  • the method further includes: configuring the final scheduler, the final queue state memory, the linked list address memory, and configuring the secondary scheduler, the secondary scheduler state memory, the secondary total queue state memory;
  • the final-level scheduler executes the final-level scheduling logic
  • the final queue state memory is used to store the storage state of each queue
  • the linked list address memory is used to store the storage address of any data
  • the secondary scheduler executes secondary scheduling logic
  • the secondary overall queue state memory is used to store the storage state of each secondary queue
  • the secondary scheduling logic In the enabled state of the secondary queue state memory, by querying whether the corresponding storage location of the secondary scheduler state memory is enabled, it is determined whether the secondary scheduling logic can be executed on the current secondary queue.
  • the method further includes:
  • the linked list operation is a dequeue operation corresponding to the current queue, and executes the final scheduling logic and the secondary scheduling logic;
  • the final scheduling logic includes:
  • M12 access the linked list address memory according to the first secondary queue number, obtain the access address, and access the data memory to read the data with the access address;
  • the secondary scheduling logic includes:
  • the pointer accesses its corresponding secondary linked list memory to obtain the next hop pointer, takes the acquired next hop pointer as a value, and writes the second secondary queue number as an address into the corresponding head pointer memory;
  • the method further includes:
  • step M11 includes:
  • the secondary queue state memory is disabled, the first secondary queue number is used as the address, and the corresponding secondary scheduler state memory is disabled;
  • the secondary scheduling logic is executed preferentially with the first secondary queue number.
  • an embodiment of the present invention provides an electronic device, including a memory and a processor, where the memory stores a computer program that can run on the processor, and the processor executes the program When implementing the steps in the method for realizing high-speed scheduling of network chips as described above.
  • an embodiment of the present invention provides a computer-readable storage medium on which a computer program is stored.
  • the computer program is executed by a processor, the above-mentioned method for realizing high-speed scheduling of network chips is implemented. A step of.
  • the beneficial effects of the embodiments of the present invention are: the method, device and storage medium for realizing high-speed scheduling of network chips according to the embodiments of the present invention cut off the queue status update period of the entire queue and the minimum queue scheduling interval through hierarchical scheduling. Coupling greatly improves the flexibility of network chip design.
  • FIG. 1 is a schematic structural diagram of a data storage-scheduling model provided by the background technology
  • FIG. 2 is a schematic flowchart of a method for implementing high-speed scheduling of network chips provided by an embodiment of the present invention
  • FIG. 3 is a schematic structural diagram of a scheduling model according to Embodiment 1 of the present invention.
  • a method for implementing high-speed scheduling of network chips includes:
  • each secondary linked list includes: head pointer memory, tail pointer memory and secondary linked list memory;
  • the secondary queue numbers include: the original queue number and the secondary queue number. Number offset value.
  • the linked list control module sets Y secondary linked lists to store the link status of each queue respectively.
  • the scheduling interval of the queues on the scheduler can be reduced to
  • the value of Y can be ⁇ the smallest integer value of .
  • a queue polling state register is configured; after receiving any message, the polling state is queried. register to get the offset value of the secondary number that the current message matches.
  • the offset value of the secondary number is actually the number of the secondary linked list written during the data entry operation; for any queue, the number of secondary linked lists is Y; taking Y equal to 2 as an example, then The secondary number offset value is 2, for example: strictly follow 0, 1 alternation; take Y equal to 4 as an example, the secondary number offset value is 4, for example: strictly follow 0, 1, 2, 3 alternation;
  • the value of the secondary number offset value can be set as required, as long as different secondary linked lists can be distinguished, which will not be described here.
  • the included queue information is represented as ⁇ secondary queue number, data, linked list address ⁇ ; correspondingly , use the linked list address as the address, the data as the value to write the data memory, and use the secondary queue number to perform the linked list operation.
  • a secondary queue state memory is configured for each secondary linked list, and it is determined whether the queried secondary linked list is empty by querying the state of the secondary queue state memory. If the secondary queue state memory is disabled, it means that its corresponding secondary linked list is empty, and the data can be linked to the current secondary linked list; if the secondary queue state memory is enabled, it means that its corresponding secondary linked list The linked list is not empty, and the data needs to wait for the data corresponding to the current secondary linked list to be read before the current secondary linked list can be linked.
  • step S2 replaces the original queue number carried by the current message with the secondary queue number, and uses the secondary queue number corresponding to the current message as the new queue number to perform the linked list operation
  • the linked list operation is a queue entry operation.
  • the matching secondary linked list is not empty, the address of the linked list carried by the current message is used as the value, and the value of the tail pointer register is used as the address to write into the secondary linked list memory matched by the current secondary linked list; at the same time, the current packet is used to carry The number of the secondary queue is used as the address, and the address of the linked list carried by the current message is written as the value and replaces the pointer register matched by the current secondary linked list at the end.
  • the corresponding secondary linked list is obtained through the secondary queue number, and whether the secondary linked list is empty by querying the secondary queue state memory corresponding to the secondary linked list, and then the corresponding secondary linked list is linked. .
  • the linked list operation is also performed with the secondary queue number, thereby ensuring the system's requirements for scheduling performance.
  • the method further includes: configuring a final scheduler, a final queue state memory, a linked list address memory, and configuring a secondary scheduler, a secondary scheduler state memory, secondary total queue state memory;
  • the final-level scheduler executes the final-level scheduling logic
  • the final queue state memory is used to store the storage state of each queue; the final queue state memory is queried with the initial queue number, and if the storage location corresponding to the queue number is enabled, it means that there is data stored in the queue and can be read out, If it is not enabled, it means that the queue does not store data.
  • the linked list address memory is used to store the storage address of any data
  • the secondary scheduler executes secondary scheduling logic
  • the secondary total queue state memory is used to store the storage state of each secondary queue; for example, for a queue corresponding to two secondary linked lists, the two locations of the secondary total queue state memory are used to store the corresponding two
  • the state of the secondary linked list that is, the two positions correspond to the enabled states of the two secondary queue state memories respectively; correspondingly, when the position corresponding to at least one of the two secondary linked lists is enabled, it means that its There is data in the corresponding queue to perform queue operations.
  • the secondary scheduling logic can be executed on the current secondary queue;
  • the secondary scheduling logic can be executed only when the position of the scheduler state memory corresponding to the enabled secondary queue state memory is enabled.
  • a linked list operation is performed with the secondary queue number;
  • the linked list operation is a dequeue operation corresponding to the current queue, and the final scheduling logic and the secondary scheduling logic are executed;
  • the final scheduling logic includes:
  • the secondary queue number stored by the secondary queue is represented by the number of the first secondary queue.
  • the final scheduler schedules a queue number according to the actual queue state and the preset scheduling policy column, and the queue number is the initial queue number carried by the data; optionally, the secondary total queue state memory is accessed with this queue number, The status of the Y secondary members in the queue can be obtained. In particular, it is still necessary to access each secondary member corresponding to the queue by polling to obtain a valid secondary queue number, that is, the first secondary queue. It should be noted here that at the same time, the number of the first secondary queue obtained by the final scheduler and the number of the second secondary queue scheduled by the following secondary scheduler may be the same or different, which will not be repeated here. .
  • the access address is the head pointer cached in the head pointer register during the execution of the following secondary scheduling logic.
  • the secondary scheduling logic includes:
  • the secondary scheduler schedules the second secondary queue number according to the predetermined scheduling policy.
  • a secondary linked list must be scheduled in strict accordance with the polling method, otherwise the internal data of the queue will be out of order.
  • the pointer accesses its corresponding secondary linked list memory to obtain a next hop pointer, takes the acquired next hop pointer as a value, and writes the second secondary queue number as an address into the corresponding head pointer memory.
  • the dequeue operation of the secondary linked list is performed using the second secondary queue number scheduled by the secondary scheduler.
  • the linked list needs to be updated, that is:
  • the queue state corresponding to the parsed initial queue number is set to be enabled.
  • step M11 also includes: the final scheduler uses the first secondary queue number to initiate a scheduling request to the secondary scheduler; in this process, accessing the secondary queue state memory with the first secondary queue number, if the secondary queue status If the memory is disabled, the first secondary queue number is used as the address, and the corresponding secondary scheduler state memory is disabled;
  • the secondary scheduling logic is executed preferentially with the first secondary queue number.
  • the secondary queue state memory if the secondary queue state memory is disabled, it means that there is no data to be scheduled; if the secondary queue state memory is enabled, it means that there is data to be scheduled. Scheduling logic until all data is scheduled; that is, after the final scheduler completes the dequeue operation, the secondary scheduler needs to be triggered in the reverse direction, so as to achieve high-speed scheduling.
  • an embodiment of the present invention provides an electronic device, including a memory and a processor, the memory stores a computer program that can run on the processor, and the processor implements the above when executing the program. Describe the steps in the method for realizing high-speed scheduling of network chips.
  • an embodiment of the present invention provides a computer-readable storage medium on which a computer program is stored, and when the computer program is executed by a processor, implements the steps in the above-described method for implementing high-speed scheduling of network chips.
  • the method, device, and storage medium for realizing high-speed scheduling of network chips cut off the coupling between the entire queue status update period and the queue minimum scheduling interval through specially designed hierarchical scheduling, without changing the scheduler.
  • the purpose of high-speed scheduling is achieved, which greatly improves the flexibility of the design of the network chip.
  • modules described as separate components may or may not be physically separated, and the components shown as modules are logic modules, that is, one of the logic modules that may be located in the chip modules, or can also be distributed to multiple data processing modules in a chip. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution in this implementation manner. Those of ordinary skill in the art can understand and implement it without creative effort.
  • This application can be used in many general-purpose or special-purpose communication chips. For example: switch chips, router chips, server chips, etc.

Abstract

Des modes de réalisation de la présente invention concernent un procédé de réalisation de programmation à grande vitesse d'une puce de réseau, un dispositif et un support de stockage. Le procédé consiste : à configurer, pour chaque file d'attente de stockage, Y listes chaînées secondaires ayant la même structure ; toute file d'attente recevant des données ; à interroger des listes chaînées secondaires d'une file d'attente actuelle, et à obtenir le numéro de série d'une liste chaînée secondaire actuellement mise en correspondance comme valeur de décalage de numéro de série secondaire correspondant à un paquet actuel ; et à remplacer, avec un numéro de série de file d'attente secondaire, un numéro de série de file d'attente d'origine transporté dans le paquet actuel, et à prendre le numéro de série de file d'attente secondaire correspondant au paquet actuel comme nouveau numéro de série de file d'attente pour une opération de liste chaînée, le numéro de série de file d'attente secondaire comprenant le numéro de série de file d'attente d'origine et la valeur de décalage de numéro de série secondaire. Dans les modes de réalisation de la présente invention, au moyen d'une programmation hiérarchique, le couplage entre un cycle de mise à jour d'état de file d'attente et un intervalle de programmation minimum de file d'attente d'une file d'attente est interrompu, ce qui permet d'améliorer considérablement la flexibilité de conception de la puce de réseau.
PCT/CN2021/138905 2020-12-16 2021-12-16 Procédé de réalisation de programmation à grande vitesse de puce de réseau, dispositif et support de stockage WO2022127873A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011491125.0 2020-12-16
CN202011491125.0A CN112433839B (zh) 2020-12-16 2020-12-16 实现网络芯片高速调度的方法、设备及存储介质

Publications (1)

Publication Number Publication Date
WO2022127873A1 true WO2022127873A1 (fr) 2022-06-23

Family

ID=74692530

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/138905 WO2022127873A1 (fr) 2020-12-16 2021-12-16 Procédé de réalisation de programmation à grande vitesse de puce de réseau, dispositif et support de stockage

Country Status (2)

Country Link
CN (1) CN112433839B (fr)
WO (1) WO2022127873A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114885045A (zh) * 2022-07-07 2022-08-09 浙江锐文科技有限公司 一种在高速智能网卡/dpu内节约dma通道资源方法和装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433839B (zh) * 2020-12-16 2024-04-02 苏州盛科通信股份有限公司 实现网络芯片高速调度的方法、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180159802A1 (en) * 2015-07-30 2018-06-07 Huawei Technologies Co., Ltd. Data enqueuing method, data dequeuing method, and queue management circuit
CN109840145A (zh) * 2019-01-08 2019-06-04 盛科网络(苏州)有限公司 一种多级调度方法、装置、网络芯片及存储介质
CN110519180A (zh) * 2019-07-17 2019-11-29 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 网卡虚拟化队列调度方法及系统
CN112433839A (zh) * 2020-12-16 2021-03-02 盛科网络(苏州)有限公司 实现网络芯片高速调度的方法、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180159802A1 (en) * 2015-07-30 2018-06-07 Huawei Technologies Co., Ltd. Data enqueuing method, data dequeuing method, and queue management circuit
CN109840145A (zh) * 2019-01-08 2019-06-04 盛科网络(苏州)有限公司 一种多级调度方法、装置、网络芯片及存储介质
CN110519180A (zh) * 2019-07-17 2019-11-29 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 网卡虚拟化队列调度方法及系统
CN112433839A (zh) * 2020-12-16 2021-03-02 盛科网络(苏州)有限公司 实现网络芯片高速调度的方法、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114885045A (zh) * 2022-07-07 2022-08-09 浙江锐文科技有限公司 一种在高速智能网卡/dpu内节约dma通道资源方法和装置

Also Published As

Publication number Publication date
CN112433839A (zh) 2021-03-02
CN112433839B (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
US6307789B1 (en) Scratchpad memory
WO2022127873A1 (fr) Procédé de réalisation de programmation à grande vitesse de puce de réseau, dispositif et support de stockage
KR100962769B1 (ko) 수퍼차지 메시지 교환기
US9280297B1 (en) Transactional memory that supports a put with low priority ring command
US9069602B2 (en) Transactional memory that supports put and get ring commands
US20050060705A1 (en) Optimizing critical section microblocks by controlling thread execution
WO2021209051A1 (fr) Dispositif de mémoire cache sur puce, procédé de lecture/écriture de mémoire cache sur puce et support lisible par ordinateur
US20060209827A1 (en) Systems and methods for implementing counters in a network processor with cost effective memory
WO2022121808A1 (fr) Procédé et dispositif de planification de mode de transfert direct, et support de stockage
CN114827048B (zh) 一种动态可配高性能队列调度方法、系统、处理器及协议
CN109062857B (zh) 一种能高速实现多处理器间通信的新型消息控制器及其通信方法
US9342313B2 (en) Transactional memory that supports a get from one of a set of rings command
CN113126911A (zh) 基于ddr3 sdram的队列管理方法、介质、设备
US9288163B2 (en) Low-latency packet receive method for networking devices
CN115955441A (zh) 一种基于tsn队列的管理调度方法、装置
CN102420749A (zh) 一种网卡发包功能的实现装置和方法
CN112822126B (zh) 报文存储方法、报文出入队列方法及存储调度装置
James-Roxby et al. Time-critical software deceleration in a FCCM
CN108108149A (zh) 一种基于分离统计高效收集的性能统计电路
CN105912273A (zh) 一种报文共享储存管理的fpga实现方法
WO2024001332A1 (fr) Mémoire à ports multiples, et procédé et appareil de lecture et d'écriture pour mémoire à ports multiples
CN116800692B (zh) 活动队列的调度方法、装置及存储介质
CN117312197A (zh) 报文处理方法、装置、电子设备及非易失性存储介质
CN111402940B (zh) 一种基于srio协议的sram存储装置及方法
CN118012510A (en) Network processor, network data processing device and chip

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: 21905799

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 101123)