CN115136125A - Noc宽松写入顺序方案 - Google Patents

Noc宽松写入顺序方案 Download PDF

Info

Publication number
CN115136125A
CN115136125A CN202180014637.4A CN202180014637A CN115136125A CN 115136125 A CN115136125 A CN 115136125A CN 202180014637 A CN202180014637 A CN 202180014637A CN 115136125 A CN115136125 A CN 115136125A
Authority
CN
China
Prior art keywords
request
logic block
linked list
write
ordered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180014637.4A
Other languages
English (en)
Inventor
A·莫舍德
Y·阿贝尔
E·M·金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of CN115136125A publication Critical patent/CN115136125A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/355Application aware switches, e.g. for HTTP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/064Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Software Systems (AREA)
  • Architecture (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本文的实施例描述了包括支持严格排序请求和宽松排序请求的NoC的SoC。也就是说,一些应用程序可能需要严格排序,其中从相同入口逻辑传输到不同出口逻辑块的请求是顺序执行的。然而,其它应用程序可能不需要严格排序,诸如对存储器的交错写入。在这些应用程序中,如果相同的入口逻辑块能够向不同的出口逻辑块并行传输多个请求,则能够使用宽松排序。例如,入口逻辑块可以接收被指示为宽松有序请求的第一请求。在将请求传输到出口逻辑块之后,入口逻辑块可以接收第二请求。入口逻辑块能够向不同的出口逻辑块传输第二请求,而无需等待对第一请求的响应。

Description

NOC宽松写入顺序方案
技术领域
本公开的示例总体上涉及使用片上网络(NoC)执行严格有序请求和宽松有序请求。
背景技术
片上系统(SoC)(例如,现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或专用集成电路(ASIC))可以包含称为片上网络(NoC)的分组网络结构,以在SoC中的逻辑块(例如,可编程逻辑块、处理器、存储器等)之间路由数据分组。
NoC可以包括入口逻辑块(例如,主逻辑块),该入口逻辑块执行对出口逻辑块(例如,从逻辑块)的读取或写入请求。入口逻辑块可接收多个请求。如果需要严格排序,则入口逻辑块可能必须等待,直到从第一出口逻辑块接收到对第一请求的响应,然后才能将第二请求传输到不同的出口逻辑块。也就是说,严格排序要求对不同出口逻辑块的响应顺序发生。由此,在入口逻辑块在发出另一个读取或写入请求之前等待来自每个出口逻辑块的响应的情况下,这可能会导致很大的延迟。
发明内容
描述了定义宽松顺序请求的技术。一个示例是集成电路,其包括第一硬件实体、第二硬件实体和提供第一硬件实体与第二硬件实体之间的连接性的片上网络(NoC)。NoC包括耦合到第一硬件实体的入口逻辑块和耦合到第二硬件实体的出口逻辑块,其中入口逻辑块包括写入跟踪器,该写入跟踪器被配置为从第一硬件实体接收用以将数据写入第二硬件实体的第一请求,并且确定第一请求是宽松有序请求还是严格有序请求中的一者,其中所述宽松有序请求能够与后续接收到的响应并行执行,而严格有序请求不能与具有不同于第一请求的目的地的后续接收到的响应并行执行。
本文所描述的一个示例是一种方法,该方法包括从第一硬件实体接收用以将数据写入第二硬件实体的第一请求,其中第一硬件实体和第二硬件实体通过NoC通信地耦合,并且在NoC中的入口逻辑块处确定第一请求是宽松有序请求还是严格有序请求中的一者,其中宽松有序请求能够与后续接收到的响应并行执行,而严格有序请求不能与具有与第一请求不同的的目的地的后续接收到的响应并行执行。
附图说明
为了可以详细理解上述特征的方式,可参考示例实施方式来进行上文简要概述的更具体的描述,其中一些示例实施方式在附图中示出。然而,应注意,附图仅示出了典型的示例实施方式,因此不应被认为是对其范围的限制。
图1是根据示例的含有可编程NoC的SoC的框图。
图2示出了根据示例的含有可编程NoC的SoC的示例性布局。
图3是根据示例的用于使用链表服务写入请求的流程图。
图4是根据示例的用于从链表中移除写入请求的流程图。
图5A-5P示出了根据示例在接收和完成写入请求时链表的状态。
为了便于理解,在可能的情况下,使用了相同的附图标记来表示附图所共有的相同元件。可设想,一个示例的元件可以有益地结合到其它示例中。
具体实施方式
下文将参考附图描述各种特征。应当注意,附图可按比例绘制,也可不按比例绘制,并且在所有附图中,相似结构或功能的元件由相似的附图标记表示。应当注意,附图仅旨在便于描述特征。它们不旨在作为对说明书的详尽描述或者作为对权利要求范围的限制。此外,所示示例不需要具有所示的所有方面或优点。结合特定示例描述的方面或优点不一定限于该示例,并且即使未如此示出或未如此明确描述,也可在任何其它示例中实践。
本文的实施例描述了包括支持严格排序请求和宽松排序请求的NoC的SoC。也就是说,一些应用程序可能需要严格排序(诸如,许多处理器类型的操作),其中从相同入口逻辑块(也称为NoC主单元(NMU))传输到不同出口逻辑块(也称为NoC从单元或NoC服务单元(NSU))的请求被顺序地执行。然而,其它应用程序可能不需要严格排序,诸如对存储器的交错写入。在这些应用程序中,如果相同的入口逻辑块可向不同的出口逻辑块并行传输多个请求,则可使用宽松排序。例如,入口逻辑块可以接收被指示为宽松有序请求的第一请求。在将请求传输到对应的出口逻辑块之后,入口逻辑块可接收到与第一请求相同或不同的目的地的第二请求。入口逻辑块可向其目的地传输第二请求,而无需等待对第一请求的响应。通过这种方式,将请求指定为宽松排序可避免由严格排序导致的延迟。
在一个实施例中,入口逻辑块仍然向按顺序提交请求的硬件实体返回完成通知。继续上述示例,如果第二请求在第一请求之前完成(例如,入口逻辑块在从与第一请求相对应的出口逻辑块接收响应之前,从与第二请求相对应的出口逻辑块接收响应),入口逻辑块等待通知提交请求的实体第二请求已完成,直到第一请求已完成。然而,这可能是协议特定的要求,因此可取决于用于在NoC上传输数据的通信协议。
图1是根据示例的含有NoC 105的SoC 100的框图。在一个实施例中,使用单个集成电路(IC)实施SoC 100。在一个实施例中,SoC100包括硬化逻辑和可编程逻辑的混合。例如,可以使用硬化电路系统而不是可编程电路系统来形成NoC 105,从而减少其在SoC 100中的占用面积。
如图所示,NoC 105将可编程逻辑(PL)块125A、PL块125B、处理器110和存储器120互连。也就是说,NoC可用于SoC 100中,以允许SoC 100内的不同的硬化和可编程电路系统元件进行通信。例如,PL块125A可使用一个入口逻辑块115(例如,NMU)与PL块125B通信,并且使用另一个入口电路块115与处理器110通信。然而,在另一个实施例中,PL块125A可使用相同的入口逻辑块115与PL块125B和处理器110通信(假设端点使用相同的通信协议)。PL块125A可将数据传输到PL块125B和处理器110的相应出口逻辑块140(例如,NSU),处理器110可基于地址(如果使用存储器映射协议)或目的地ID(如果使用流协议)来确定数据是否旨在用于它们。
PL块125A可包括用于接收由PL块125B和处理器110传输的数据的出口逻辑块140。在一个实施例中,硬件逻辑块能够与也连接到NoC 105的所有其它硬件逻辑块通信,但在其它实施例中,硬件逻辑块可以仅与连接到NoC 105的其它硬件逻辑块的子部分通信。例如,存储器120可以能够与PL块125A通信,但不能够与PL块125B通信。
如上所述,入口逻辑块115和出口逻辑块140可以全部使用相同的通信协议与PL块125、处理器110和存储器120通信,或者可使用不同的通信协议。例如,PL块125A可使用存储器映射协议与PL块125B通信,而处理器110使用流协议与存储器120通信。在一个实施例中,NoC 105中的转移网络130可支持多种协议。
在一个实施例中,SoC 100是根据用户设计配置PL块125的FPGA。也就是说,在该示例中,FPGA包括可编程逻辑块和硬化逻辑块两者。然而,在其它实施例中,SoC 100可以是仅包括硬化逻辑块的ASIC。也就是说,SoC 100可以不包括PL块125。即使在该示例中,逻辑块是不可编程的,NoC 105仍然是可编程的,使得硬化逻辑块(例如,处理器110和存储器120)可以在不同的通信协议之间切换,改变接口处的数据宽度,或者调整频率。
NoC 105允许实体(例如,PL块125、处理器110和存储器120)使用严格排序或宽松排序提交写入请求。例如,当通过NoC 105传输数据时,处理器110可以总是使用严格排序。然而,PL块125A可以包括存储器控制器,其可以使用宽松排序将数据存储在存储器120中。使用本文的实施例,用户可自定义SoC 100,使得使用严格排序或宽松排序来完成由NoC105促进的某些写入。
入口逻辑块115中的每一个入口逻辑块可包括写入跟踪器145,该写入跟踪器跟踪由入口逻辑块传输到出口逻辑块140的写入请求。写入跟踪器包括链表150以及关于写入请求和接收到的写入响应的所有状态信息。在一个实施例中,写入跟踪器可以处理最大数目的请求(例如,64个请求),但该数目可取决于实施方式。
写入跟踪器145包括具有头部和尾部的链表150。当写入请求被接收到时,可以将写入请求添加到链表150。此外,如下文所述,根据写入请求是严格排序请求还是宽松排序请求,可以将写入请求添加到链表150。例如,如果链表150已经包括严格排序请求,则后续接收到的严格请求可被阻塞(即,未添加到链表150)。在图3-5中描述了用于解释如何从链表150添加和移除请求的细节。
图2示出了根据示例的含有NoC 105的SoC 100的示例性布局。与图1类似,图2示出了PL块125、处理器110、存储器120以及入口逻辑块115和出口逻辑块140。此外,图2示出了NoC中的转移网络用于在入口逻辑块115与出口逻辑块140之间路由分组的连接和各种交换机135(标记为具有“X”的框)。
PL块125、处理器110和存储器120在SoC 100的物理布局中的位置只是布置这些硬件元件的一个示例。此外,SoC 100可包括比所示更多的硬件元件。例如,SoC 100可包括设置在SoC 100上不同位置处的附加PL块、处理器和存储器。此外,SoC 110可包括其它硬件元件,诸如I/O模块和存储器控制器,这些硬件元件可使用或不可使用相应的入口逻辑块115和出口逻辑块140耦合到NoC 105。例如,I/O模块可围绕SoC 100的外围设置。
图3是根据示例的用于使用链表服务写入请求的方法300的流程图。在框305,入口逻辑块从SoC中的硬件实体(例如,PL块、处理器、存储器控制器、I/O模块等)接收写入请求。为了便于解释,下面将写入请求简称为“请求”。
在框310,入口逻辑块确定请求是否被阻塞。请求可能出于多种原因而被阻塞。在一个示例中,链表可能已包括尚未完成的严格排序请求。如果在框305处接收到的请求是到与链表中已存在的严格排序请求不同的目的地,则如果新请求也是严格排序请求,则该新请求被阻塞。在另一个示例中,请求可细分为不同的“分段(chop)”(例如,512字节的写入请求被划分为两个256字节的分段)。如果严格排序请求的分段是针对两个不同的目的地,则第二分段可能被阻塞,而第一分段被传输到其目的地。也就是说,第一分段可以被传输到其出口逻辑块,而第二分段必须等待。存储器系统还可以具有模式位,该模式位可以执行迫使严格请求等待,直到具有相同AXI ID的所有宽松有序请求从写入跟踪器中被引退(retire)。这些示例并不旨在涵盖请求将(至少部分地)被入口逻辑块阻塞的所有场景。场景的类型可根据NoC的实施方式和所使用的通信协议而变化。
还有许多请求未被阻塞的情况。例如,高级可扩展接口(AXI)通信协议允许具有不同AXI ID的请求并行发生(例如,无需严格排序)。因此,对于与具有不同AXI ID的另一个请求相同或不同目的地的严格或宽松有序请求不会被阻塞。此外,AXI允许具有相同AXI ID和相同目的地ID(例如,相同目的地出口逻辑块)的请求并行发生。因此,即使链表具有与在框305处接收到的新的严格有序请求具有相同目的地的先前严格有序请求,新请求也不会被阻塞。相反地,只有当新请求与先前接收到的请求具有不同目的地时,先前接收到的严格有序请求才会阻塞新的严格有序请求(具有相同的AXI ID)。此外,如果先前请求是宽松有序请求,则新请求(无论是严格顺序还是宽松顺序)均不会被先前请求阻塞,无论新请求具有相同的目的地还是不同的目的地。同样,存储器系统也可具有模式位,该模式位执行严格请求等待,直到所有具有相同AXI ID的所有宽松有序请求从写入跟踪器中被引退。这些示例并不旨在涵盖请求不会在入口逻辑块处被阻塞的所有场景。图5A-5L示出了其中请求被先前接收到的请求阻塞和解除阻塞的许多不同的示例。
如果请求在框310处被阻塞,则方法300前进到框315,其中入口逻辑块在写入跟踪器中为请求添加临时条目。即,入口逻辑块不将条目添加到链表,但仍可存储针对请求的临时条目,其中请求可等待直到它被解除阻塞。
在框320处,入口逻辑块在先前阻塞请求已经被服务(即,完成)之后将该请求添加到链表。例如,如果新接收到的请求由先前接收到的严格有序请求阻塞,则在从与先前接收到的请求相对应的目的地接收到响应后,入口逻辑块可将新请求的临时条目添加到链表,并且将请求传输到其目的地出口逻辑块。
返回到框310,如果请求未被阻塞,则方法300前进到框325,其中入口逻辑块将与请求相对应的条目添加到链表的尾部。如果该请求是链表中当前正在跟踪的唯一请求,则其对应条目将是链表的头部和尾部两者。
在框330,入口逻辑块在不等待与先前请求相关的响应的情况下传输请求。也就是说,如果链表中存在与先前接收到的请求相对应的其它条目,则入口逻辑块仍然可将新接收到的请求传输到其目的地,而无需等待对先前接收到的请求(一个或多个)的响应。通过这种方式,宽松排序可减少请求之间的延迟。也就是说,如果先前的请求是宽松排序,则可在不等待入口逻辑块接收对先前请求的响应的情况下传输新请求。相比之下,如果先前请求是严格排序,则具有相同AXI ID但不同目的地ID的新的严格顺序请求被阻塞。因此,通过向用户提供指定哪些请求是严格排序,哪些是宽松排序的能力,用户可避免由阻塞具有相同AXI ID但不同目的地ID的请求的严格排序所造成的延迟。
有多种不同的方式用以将请求指定为宽松排序或严格排序。在一个实施例中,将一个新位(以下称为宽松(RELAX)位)添加到入口逻辑块中维护的地址映射表中的每个条目。该位指示地址区域是否需要执行严格或宽松的AXI写入顺序规则。也就是说,用户可指定哪些地址区域应遵循严格或宽松的排序,并且提交请求的实体(例如,PL块、处理器或存储器控制器)可相应地分配relax_order_en位。在另一个实施例中,AXI写入地址通道的两位AWUSER信号用于执行宽松写入顺序或严格写入顺序。在又一实施例中,relax_order_en位也被添加到入口逻辑块中的写入跟踪器条目数据结构。该位基于查找地址映射表条目(或重映射操作)设置。在另一个实施例中,可添加另一个位来实施先前的宽松顺序请求和新的严格顺序请求之间的阻塞(即,block_en位),这将在下面论述。
为了说明如何使用宽松位,在一个实施例中,当新的严格AXI写入请求到达入口逻辑块,并且其dest-ID/宽松位由地址映射选择时,写入跟踪器检查链表是否含有任何有效(VALID)条目,其中匹配的AXI-ID和宽松位设定为0(指示先前的请求是严格排序请求)。如果发现与新的严格有序请求的不同dest-ID的匹配,则新请求将被阻塞,直到匹配条目接收到其所有NoC响应并被引退——即,从链表中移除。相反,当新的宽松AXI写入请求到达入口逻辑块,并且其dest-ID/宽松位由地址映射选择时,写入跟踪器不会阻塞写入请求被发送到NoC。
图4是根据示例的用于从链表移除请求的方法400的流程图。在框405处,入口逻辑块从出口逻辑块(即,请求的目的地)接收对请求的响应。
在框410,入口逻辑块确定与请求相对应的条目是否在链表的头部。也就是说,假设链表仅存储具有相同AXI ID的请求,写入跟踪器确定该请求是否是链表上存储的最旧请求(例如,该请求是在链表中表示的所有其它请求之前被接收)。如上所述,至少对于AXI,入口逻辑块按照接收到的请求的顺序通知提交请求的实体。因此,如果链表中的请求在先前接收到的请求之前完成,则方法400移动到框415,在框415,写入跟踪器等待,直到链表中所有先前的响应均被报告出来。
一旦完成(或者如果响应位于链表的头部),方法400就前进到框420,在框420,写入跟踪器报告请求已完成——即,请求已被引退。
在框425处,写入跟踪器从链表中删除条目。也就是说,链表的头部被移动到链表中的下一个条目。
图5A-5L示出了根据示例的当请求被接收和完成时写入跟踪器的状态。也就是说,图5A-5L示出了在多个时间段内使用写入跟踪器接收新请求并服务于这些请求。也就是说,图5A示出了第一时间段,图5B示出了第二后续时间段,而图5C示出了在第二时间段之后的第三时间段,等等。在一个实施例中,在相同的写入跟踪器(或相同的入口逻辑块)处接收图5A-5L中示出的请求,尽管图5L示出了可由相同的入口逻辑块或两个不同的入口逻辑块中的两个不同的写入跟踪器管理的两个链表。
图5A示出了在接收到Req0之后写入跟踪器的状态。由于没有先前的请求被写入跟踪器服务(即,链表150为空),因此写入跟踪器可立即将Req0的条目添加到链表150,并且在NoC上传输请求。
如图所示,图5A-5L包括指示条目是否有效的有效(VALID)区段、指示入口逻辑块或入口逻辑块中的写入跟踪器(一个或多个)的AXI ID的AXI-ID区段、指示作为请求目的地的出口逻辑块的DEST-ID区段、指示请求是严格排序还是宽松排序的宽松区段、指示针对请求的所有响应(一个或多个)是否已被接收到的状态(STATUS)区段、指示条目是否是请求的最后条目的最后(LAST)区段、指示请求是单个请求还是已分解为多个子请求或分段的RESP区段。图5A中所示的条目是严格排序请求(因为宽松位被设定为0而不是1),并且写入跟踪器尚未接收到对请求的响应,因为状态位的值仍然是0而非1。
图5B示出了接收到Req1后写入跟踪器的状态。Req1是严格有序请求(因为宽松位为0),并且具有与Req0不同的目的地——即,D7而不是D2。在本示例中,由于Req0的状态位仍然为0,指示写入跟踪器尚未接收到对REQ0的响应,因此写入跟踪器块阻塞Req1以便维持严格排序。换句话说,写入跟踪器不将NoC上的Req1传输到其目的地。
此外,图5B示出了阻塞的Req1没有被添加到链表150。相反,写入跟踪器将Req1的条目存储为临时条目505A。阻塞Req1并将临时条目505A存储在写入跟踪器中是方法300中的框310和315中描述的逻辑的一个示例。
图5C示出了来自Req0的目的地的响应已经被接收到之后的写入跟踪器的状态。这在与Req0相对应的条目中通过状态位从0变为1来指示。由于现在已经接收到响应,因此写入跟踪器可向提交Req0的实体报告它已经完成,这是方法400中框420中描述的逻辑的一个示例。此外,接收到对Req0的响应将Req1解除阻塞,这是与方法300相对应的框320的描述的示例。
图5D示出了在Req1已经被添加到链表150之后的写入跟踪器的状态。也就是说,Req0的条目已经从链表150中移除,而Req1的条目已经被添加到链表150(并且可以从写入跟踪器中移除Req1的临时条目505A)。Req1已经被传输到其目的地(即,D7),但写入跟踪器尚未收到响应。因为Req1是当前由写入跟踪器服务的唯一请求,所以其对应条目是链表150的头部和尾部。
图5E示出了在写入跟踪器接收Req2之后写入跟踪器的状态,Req2是由具有值为1的宽松位指示的宽松有序请求。此外,与Req0和Req1不同,Req2已经被分为两个分段,如具有值为2的RESP区段所示。
因为Req2是一个宽松有序请求,所以它不会被严格有序请求Req1阻塞。因此,写入跟踪器可将条目添加到Req2的链表150的尾部,并且将其两个分段转发到它们各自的目的地(可为相同的目的地或不同的目的地)。也就是说,两个分段可平行转发到它们的目的地。
在该实施例中,Req2的两个分段由链表150中的相同(即,单个)条目表示。也就是说,因为Req2是宽松有序请求,所以传输分段的顺序或者在写入跟踪器处接收对两个分段的响应的顺序并不重要。因此,写入跟踪器可对Req2使用相同的条目,以确保它在引退Req2之前接收到两个响应(如RESP区段所示),但不关心以什么顺序接收到对分段的响应。
图5F示出了写入跟踪器接收Req3之后写入跟踪器的状态。如图所示,Req3是仅具有一个分段的宽松有序请求(不同于具有两个分段的Req2)。因为Req3是一个宽松顺序请求,它不会被链表150中已存在的任何请求阻塞。如此,写入跟踪器将Req3的条目添加到链表150的尾部,并且将REQ 3转发到其NoC中的目的地。因此,图5F示出了写入跟踪器具有四个未决请求:Req1、Req2的两个分段(或子请求)和Req3。
图5G示出了在接收到对Req2的分段的两个响应之后写入跟踪器的状态。作为响应,Req2条目的状态位变为1,指示已接收到该请求的所有响应。然而,因为Req2不在链表150的头部(即,不是最早接收到的请求),所以写入跟踪器不能够报告Req2已完成。因此,图5G示出了在方法400的框410和415处论述的逻辑的示例,其中写入跟踪器等待,直到链表中的所有先前响应已经被报告为完成。但是该要求特定于AXI通信协议,并且其它通信协议可能不需要该要求。也就是说,AXI声明具有相同AXI ID的请求(在该示例中,在链表150中存储的所有请求具有相同的ID)应按被接收顺序报告为完整。因此,因为写入跟踪器尚未收到来自Req1目的地的响应,所以即使已接收到对其两个分段的响应,写入跟踪器也无法报告Req2已完成。如此,Req2的条目保留在链表150中。
图5H示出了在已经接收到对Req1的响应之后的写入跟踪器的状态。如图所示,Req1的状态位已从0变为1,因此,Req1可以向对入口逻辑块提交请求的实体报告Req1已完成。可移除链表150中的Req1条目。
在移除Req1的条目后,Req2的条目现在是链表150的头部。因为已接收到Req2响应(如图5G所示),所以写入跟踪器还向对入口逻辑块提交请求的实体报告Req2已完成(在报告Req1已完成以维持AXI响应顺序之后),并且从链表150中移除表示两个Req2的条目。
图5I示出了在Req1和Req2的条目已从链表150中移除——即,这些请求已被引退之后的写入跟踪器的状态。因此,Req3的条目现在是链表150的头部和尾部,因为Req3是写入跟踪器中唯一仍未决的请求。
图5J示出了在接收到作为严格排序请求的Req4之后写入跟踪器的状态。此外,Req4被细分为两个分段:分段1和分段2。因此,与宽松有序请求Req2类似,Req4具有太多的数据,无法通过NoC在单个请求中发送,因此被划分为多个分段。在该示例中,分段被发送到两个不同的目的地:D2和D3。例如,Req4可以是对两个不同存储器的交错写入。
尽管Req4是严格有序的,但由于Req3是宽松顺序的,因此Req4分段1未被阻塞。然而,由于分段2具有与Req4分段1不同的目的地,因此分段2被阻塞与REQ4分段1并行传输。如果两个分段的目的地均是与Req3相同的目的地,则Req4的两个分段均可与REQ 3并行传输。相反,写入跟踪器继续在NoC上转发分段1,并且将两个分段1的条目存储为临时条目505B和505C。也就是说,写入跟踪器可能不会将Req4的分段添加到链表150。
图5K示出了在接收到对Req3和Req4的分段1的响应后写入跟踪器的状态。也就是说,Req3的状态位和Req4分段1变为1,指示写入跟踪器已接收到来自其目的地(即D2和D3)的响应。在本示例中,写入跟踪器将Req4分段1的NoC响应复制到分段2的条目(即条目505C)。
此外,因为已经接收到对Req3的响应,所以写入跟踪器可报告Req3已完成,并且从链表150中移除其条目。此外,由于收到对分段1的响应,Req4分段2不再被AXI严格排序阻塞,并且可以被发送给NoC。
图5L示出了在接收到Req5之后写入跟踪器的状态,该Req5具有与在入口逻辑块处接收到的先前请求(例如,Req0-Req4)不同的AXI ID。图5L还示出了临时条目505B-C已经被组合并添加到链表150。也就是说,链表150包括Req4的分段2的条目并包括对分段1的响应,但这不是要求。
在该实施例中,因为Req5具有与先前请求不同的AXI ID,所以写入跟踪器在链表510中存储Req5的条目。在一个实施例中,写入跟踪器为每个AXI ID维护不同的链表。例如,入口逻辑块可与多个AXI ID相对应。入口逻辑块可为每个AXI ID维护相应的链表。
如上所述,AXI允许并行发送具有不同AXI ID的请求,而不管这些请求是严格顺序还是宽松顺序。也就是说,Req5从未被Req4阻塞,因为它们被分配给不同的AXI ID。因此,Req5可以被传输到NoC,而无需首先等待接收到对分段2的响应。此外,写入跟踪器可报告以任何顺序接收对Req4和Req5的响应,因为它们被分配给不同的AXI ID(并且存储在不同的链表中)。也就是说,如果写入跟踪器在对Req4分段2的响应之前接收到对Req5的响应,则写入跟踪器可继续并且向提交它的实体报告Req5已完成,而无需等待首先等待报告Req4已完成,其符合AXI。
图5M示出了在接收到作为严格顺序请求的Req6之后写入跟踪器的状态。Req6未被阻塞,并且可以被立即传输。
图5N示出了在接收到宽松顺序请求Req7之后写入跟踪器的状态。Req7包括两个分段,并且没有被阻塞。因此,它可以被立即发送并且被添加到链表150。
图5O示出了在接收到严格顺序请求Req8之后写入跟踪器的状态。此外,Req8具有block_en位(图5O中未示出),其在先前的宽松顺序请求和新的严格顺序请求之间执行阻塞。因此,即使Req8否则将被解除阻塞,block_en位也指示入口逻辑块阻塞块Req8被传输。也就是说,由于Req7是先前接收到的宽松顺序请求,因此写入跟踪器阻塞Req8。因此,Req8不会添加到链表150。
图5P示出了在完成Req6和Req7之后写入跟踪器的状态。也就是说,写入跟踪器已接收到来自Req7的两个分段的目的地的响应,并且从链表150中移除了Req7。因为现在链表150中没有先前接收到的宽松顺序请求,因此Req8被解除阻塞,因此它可被传输到其目的地。
除了权利要求书中描述的以外,所公开的技术还可通过以下非限制性示例来表达。
示例1.一种集成电路,其包括:第一硬件实体;第二硬件实体;片上网络(NoC),其提供第一硬件实体与第二硬件实体之间的连接性,该NoC包括:入口逻辑块,其耦合到第一硬件实体;以及出口逻辑块,其耦合到第二硬件实体,其中入口逻辑块包括写入跟踪器,该写入跟踪器被配置为:从第一硬件实体接收用以向第二硬件实体写入数据的第一请求;以及确定该第一请求是宽松有序请求还是严格有序请求中的一者,其中宽松有序请求能够与后续接收到的响应并行执行,而严格有序请求不能与具有与第一请求不同的目的地的后续接收到的响应并行执行。
示例2.根据示例1所述的集成电路,其中写入跟踪器被配置为:确定第一请求没有被在入口逻辑块处接收到的先前请求阻塞,其中先前请求是宽松有序请求。
示例3.根据示例2所述的集成电路,其中写入跟踪器被配置为:在确定第一请求没有被阻塞时,将第二条目添加到与第一请求相对应的链表的尾部,其中链表包括与先前请求相对应的第一条目。
示例4.根据示例2所述的集成电路,其中写入跟踪器被配置为:将第一请求传输到第二硬件实体,而不等待来自先前请求的目的地的响应。
示例5.根据示例1所述的集成电路,其中写入跟踪器被配置为:确定第一请求被在所述入口逻辑块处接收到的先前请求阻塞,其中先前请求是严格有序请求。
示例6.根据示例5所述的集成电路,其中写入跟踪器被配置为:在确定第一请求被阻塞时,添加与第一请求相对应的临时条目;接收来自先前请求的目的地响应;以及将第一请求解除阻塞并且将与第一请求相对应的条目添加到链表。
示例7.根据示例1所述的集成电路,其中严格有序请求能够与具有与第一请求相同目的地的后续接收到的响应并行执行。
示例8.根据示例1所述的集成电路,其中写入跟踪器被配置为:在出口逻辑块接收到第一请求之后,从出口逻辑块接收响应;以及确定与第一请求相对应的条目是否在链表的头部,其中该链表跟踪正在由写入跟踪器处理的未决写入请求。
示例9.根据示例8所述的集成电路,其中写入跟踪器被配置为:在确定与第一请求相对应的条目不在链表的头部时,等待直到链表中表示的所有先前响应已被报告出;以及在确定第一请求在链表的头部之后,向第一硬件实体报告第一请求完成,以便与高级可扩展接口(AXI)响应顺序兼容。
示例10.一种方法,包括:从第一硬件实体接收用以向第二硬件实体写入数据的第一请求,其中第一硬件实体和第二硬件实体通过NoC通信地耦合;以及
在NoC中的入口逻辑块处确定第一请求是宽松有序请求还是严格有序请求中的一者,其中宽松有序请求能够与后续接收到的响应并行执行,而严格有序请求不能与具有与第一请求不同的目的地的后续接收到的响应并行执行。
示例11.根据示例10所述的方法,还包括:确定第一请求没有被在入口逻辑块处接收到的先前请求阻塞,其中先前请求是宽松有序请求。
示例12.根据示例11所述的方法,还包括:在确定第一请求未被阻塞时,将第二条目添加到与第一请求相对应的链表的尾部,其中链表包括与先前请求相对应的第一条目。
示例13.根据示例11所述的方法,还包括:经由NoC向第二硬件实体传输第一请求,而不等待来自先前请求的目的地的响应。
示例14.根据示例10所述的方法,还包括:基于在先前接收到的宽松顺序请求和当前接收到的严格顺序请求之间执行阻塞的block_en位,确定第一请求被在入口逻辑块处接收到的先前请求阻塞,其中先前请求是宽松有序请求。
示例15.根据示例14所述的方法,还包括:在确定第一请求被阻塞时,添加与第一请求相对应的临时条目;从先前请求的目的地接收响应;以及解除阻塞第一请求并将与第一请求相对应的条目添加到链表。
示例16.根据示例10所述的方法,其中严格有序请求能够与具有与第一请求相同目的地的后续接收到的响应并行执行。
示例17.根据示例10所述的方法,还包括:在出口逻辑块接收到所述第一请求之后,从NoC中的出口逻辑块中接收响应;以及确定与第一请求相对应的条目是否在链表的头部,其中链表跟踪正在由入口逻辑块处理的未决写入请求。
示例18.根据示例17的方法,还包括:在确定与第一个请求相对应的条目不在链表的头部处时,等待直到链表中所表示的所有先前响应均已被报告出;以及在确定第一请求在链表的头部之后,向第一硬件实体报告第一请求完成,以便与AXI响应顺序兼容。
示例19.根据示例18所述的方法,还包括:从链表中删除与第一请求相对应的条目。
示例20.根据示例10所述的方法,还包括:将第一请求划分为在NoC上传输的数个分段;以及在向第一硬件实体报告第一请求完成之前,等待直到已从它们各自的目的地接收到对所有分段的响应。
虽然前述内容针对具体示例,但在不脱离其基本范围的情况下,可设计其它和另外的示例,并且其范围由以下权利要求确定。

Claims (15)

1.一种集成电路,包括:
第一硬件实体;
第二硬件实体;
片上网络(NoC),提供所述第一硬件实体与所述第二硬件实体之间的连接性,所述NoC包括:
入口逻辑块,耦合到所述第一硬件实体;以及
出口逻辑块,耦合到所述第二硬件实体,其中所述入口逻辑块包括写入跟踪器,所述写入跟踪器被配置为:
从所述第一硬件实体接收用以向所述第二硬件实体写入数据的第一请求;以及
确定所述第一请求是宽松有序请求还是严格有序请求中的一者,其中所述宽松有序请求能够与后续接收到的响应并行执行,而所述严格有序请求不能与具有与所述第一请求不同的目的地的后续接收到的响应并行执行。
2.根据权利要求1所述的集成电路,其中所述写入跟踪器被配置为:
确定所述第一请求没有被在所述入口逻辑块处接收到的先前请求阻塞,其中所述先前请求是宽松有序请求。
3.根据权利要求2所述的集成电路,其中所述写入跟踪器被配置为:
在确定所述第一请求没有被阻塞时,将第二条目添加到与所述第一请求相对应的链表的尾部,其中所述链表包括与所述先前请求相对应的第一条目。
4.根据权利要求2所述的集成电路,其中所述写入跟踪器被配置为:
将所述第一请求传输到所述第二硬件实体,而不等待来自所述先前请求的目的地的响应。
5.根据权利要求1所述的集成电路,其中所述写入跟踪器被配置为:
确定所述第一请求被在所述入口逻辑块处接收到的先前请求阻塞,其中所述先前请求是严格有序请求。
6.根据权利要求5所述的集成电路,其中所述写入跟踪器被配置为:
在确定所述第一请求被阻塞时,添加与所述第一请求相对应的临时条目;
接收来自所述先前请求的目的地的响应;以及
将所述第一请求解除阻塞并且将与所述第一请求相对应的条目添加到链表。
7.根据权利要求1所述的集成电路,其中所述严格有序请求能够与具有与所述第一请求相同的目的地的后续接收到的响应并行执行。
8.根据权利要求1所述的集成电路,其中所述写入跟踪器被配置为:
在所述出口逻辑块接收到所述第一请求之后,从所述出口逻辑块接收响应;以及
确定与所述第一请求相对应的条目是否在链表的头部,其中所述链表跟踪正在由所述写入跟踪器处理的未决写入请求。
9.根据权利要求8所述的集成电路,其中所述写入跟踪器被配置为:
在确定与所述第一请求相对应的条目不在所述链表的所述头部时,等待直到所述链表中所表示的所有先前响应已被报告出;以及
在确定所述第一请求在所述链表的所述头部之后,向所述第一硬件实体报告所述第一请求完成,以便与高级可扩展接口(AXI)响应顺序兼容。
10.一种方法,包括:
从第一硬件实体接收用以向第二硬件实体写入数据的第一请求,其中所述第一硬件实体和所述第二硬件实体通过NoC通信地耦合;以及
在所述NoC中的入口逻辑块处确定所述第一请求是宽松有序请求还是严格有序请求中的一者,其中所述宽松有序请求能够与后续接收到的响应并行执行,而所述严格有序请求不能与具有与所述第一请求不同的目的地的后续接收到的响应并行执行。
11.根据权利要求10所述的方法,还包括:
确定所述第一请求没有被在所述入口逻辑块处接收到的先前请求阻塞,其中所述先前请求是宽松有序请求。
12.根据权利要求10所述的方法,还包括:
基于在先前接收到的宽松有序请求和当前接收到的严格有序请求之间执行阻塞的block_en位,确定所述第一请求被在所述入口逻辑块处接收到的先前请求阻塞,其中所述先前请求是宽松有序请求。
13.根据权利要求10所述的方法,其中所述严格有序请求能够与具有与所述第一请求相同的目的地的后续接收到的响应并行执行。
14.根据权利要求10所述的方法,还包括:
在所述出口逻辑块接收到所述第一请求之后,接收来自所述NoC中的出口逻辑块的响应;以及
确定与所述第一请求相对应的条目是否在链表的头部,其中所述链表跟踪正在由所述入口逻辑块处理的未决写入请求。
15.根据权利要求10所述的方法,还包括:
将所述第一请求划分为在所述NoC上传输的数个分段;以及
在向所述第一硬件实体报告所述第一请求完成之前,等待直到已经从它们各自的目的地接收到对所有所述分段的响应。
CN202180014637.4A 2020-03-25 2021-03-15 Noc宽松写入顺序方案 Pending CN115136125A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/830,142 US11714779B2 (en) 2020-03-25 2020-03-25 NoC relaxed write order scheme
US16/830,142 2020-03-25
PCT/US2021/022399 WO2021194787A1 (en) 2020-03-25 2021-03-15 Noc relaxed write order scheme

Publications (1)

Publication Number Publication Date
CN115136125A true CN115136125A (zh) 2022-09-30

Family

ID=75426689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180014637.4A Pending CN115136125A (zh) 2020-03-25 2021-03-15 Noc宽松写入顺序方案

Country Status (6)

Country Link
US (1) US11714779B2 (zh)
EP (1) EP4127954A1 (zh)
JP (1) JP2023518677A (zh)
KR (1) KR20220154092A (zh)
CN (1) CN115136125A (zh)
WO (1) WO2021194787A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT202000009364A1 (it) * 2020-04-29 2021-10-29 St Microelectronics Srl Procedimento per accedere a una memoria e circuito corrispondente
US11832035B2 (en) * 2021-04-16 2023-11-28 Xilinx, Inc. Localized NoC switching interconnect for high bandwidth interfaces

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933369A (en) 1997-02-28 1999-08-03 Xilinx, Inc. RAM with synchronous write port using dynamic latches
US20030145136A1 (en) * 2002-01-31 2003-07-31 Tierney Gregory E. Method and apparatus for implementing a relaxed ordering model in a computer system
US7000060B2 (en) * 2002-09-27 2006-02-14 Hewlett-Packard Development Company, L.P. Method and apparatus for ordering interconnect transactions in a computer system
US20040100900A1 (en) * 2002-11-25 2004-05-27 Fulcrum Microsystems, Inc. Message transfer system
US7233168B1 (en) 2005-06-14 2007-06-19 Xilinx, Inc. Methods of setting and resetting lookup table memory cells
US7804719B1 (en) 2005-06-14 2010-09-28 Xilinx, Inc. Programmable logic block having reduced output delay during RAM write processes when programmed to function in RAM mode
US7746717B1 (en) 2007-09-07 2010-06-29 Xilinx, Inc. Desensitizing static random access memory (SRAM) to process variation
EP2771797A4 (en) * 2011-10-28 2015-08-05 Univ California MULTICOUSE COMPUTER PROCESSOR
US9489304B1 (en) * 2011-11-14 2016-11-08 Marvell International Ltd. Bi-domain bridge enhanced systems and communication methods
US9473388B2 (en) * 2013-08-07 2016-10-18 Netspeed Systems Supporting multicast in NOC interconnect
GB2557944B (en) 2016-12-19 2020-02-12 Advanced Risc Mach Ltd Transaction handling

Also Published As

Publication number Publication date
WO2021194787A1 (en) 2021-09-30
KR20220154092A (ko) 2022-11-21
JP2023518677A (ja) 2023-05-08
US20210303508A1 (en) 2021-09-30
EP4127954A1 (en) 2023-02-08
US11714779B2 (en) 2023-08-01

Similar Documents

Publication Publication Date Title
US7450583B2 (en) Device to receive, buffer, and transmit packets of data in a packet switching network
US8886861B2 (en) Memory interleaving device to re-order messages from slave IPS and a method of using a reorder buffer to re-order messages from slave IPS
US10970237B2 (en) Storage system
US7577773B1 (en) Method and system for DMA optimization
US8316171B2 (en) Network on chip (NoC) with QoS features
US9430432B2 (en) Optimized multi-root input output virtualization aware switch
US7246191B2 (en) Method and apparatus for memory interface
US7320056B2 (en) Multi-processor system
US7818546B2 (en) Pipeline processing communicating adjacent stages and controls to prevent the address information from being overwritten
US20030126319A1 (en) Flexible I/O interface and method for providing a common interface to a processing core
US10713202B2 (en) Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports
US8631180B2 (en) Requests and data handling in a bus architecture
KR101699784B1 (ko) 버스 시스템 및 그것의 동작 방법
KR100951856B1 (ko) 멀티미디어 시스템용 SoC 시스템
CN115136125A (zh) Noc宽松写入顺序方案
CN114679415A (zh) 一种满足AXI5-Lite协议标准的无阻塞banyan网络
US20060259648A1 (en) Concurrent read response acknowledge enhanced direct memory access unit
US7409486B2 (en) Storage system, and storage control method
CN111917815A (zh) 支持有序和无序事务类的设备
US20170147517A1 (en) Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
US7752375B2 (en) Input output control apparatus with a plurality of ports and single protocol processing circuit
KR102496994B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
TWI826216B (zh) 記憶體控制系統與記憶體控制方法
US20230315345A1 (en) Storage device and protocol conversion method by storage device
CA2509307A1 (en) Switching fabric bridge

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination