CN114661528A - 用于包括多个半导体芯片的封装中的系统的调试架构 - Google Patents
用于包括多个半导体芯片的封装中的系统的调试架构 Download PDFInfo
- Publication number
- CN114661528A CN114661528A CN202111339426.6A CN202111339426A CN114661528A CN 114661528 A CN114661528 A CN 114661528A CN 202111339426 A CN202111339426 A CN 202111339426A CN 114661528 A CN114661528 A CN 114661528A
- Authority
- CN
- China
- Prior art keywords
- logic
- chips
- logic chips
- chip
- package
- 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
Links
- 239000004065 semiconductor Substances 0.000 title claims description 25
- 230000015654 memory Effects 0.000 claims abstract description 82
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000004044 response Effects 0.000 claims abstract description 11
- 230000001360 synchronised effect Effects 0.000 claims abstract description 7
- 238000003860 storage Methods 0.000 claims description 14
- 238000013528 artificial neural network Methods 0.000 claims description 6
- 230000002776 aggregation Effects 0.000 description 19
- 238000004220 aggregation Methods 0.000 description 19
- 238000005192 partition Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
描述了一种方法。该方法包括:在同一封装内的多个逻辑芯片中的每一者中保持同步的计数值。该方法包括:将该计数值与多个逻辑芯片中的每一者中的相同的被查找计数值进行比较。该方法包括:响应于多个逻辑芯片中的每一者在同一周期内辨识出该计数值已达到该相同的被查找计数值,多个逻辑芯片中的每一者在其相应的本地存储器中记录它的至少一些状态信息。
Description
技术领域
本发明领域总地涉及计算科学,更具体地涉及一种用于包括多个半导体芯片的封装中的系统的调试架构。
背景技术
计算机系统设计者越来越多地寻求将大量功能打包到单一封装中的途径。一种方法是在单个半导体芯片封装内建立包括多个半导体芯片的整个系统。采用这种方法时出现的挑战是与调试封装内的系统有关的困难。
附图说明
在附图的图示中以举例而非限制的方式阐明本发明,在附图中,类似的附图标记表示类似的元件,其中:
图1示出了包括单个封装内的多个半导体芯片的系统;
图2示出了具有跟踪电路的半导体芯片;
图3示出了用于跟踪包括单个封装内的多个半导体芯片的系统的方法;
图4是示例性计算机架构的框图;
图5是根据一些实施例的第一更具体的示例性系统的框图;
图6是根据一些实施例的第二更具体的示例性系统的框图;
图7是根据一些实施例的片上系统(SoC)的框图;
图8是根据一些实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
半导体芯片是同时执行大量相互依赖的复杂操作(例如,计算、信息操纵等)的逻辑电路的复杂布置。为了验证半导体芯片是按照设计的操作方式进行操作的,半导体芯片的逻辑设计者在芯片中加入了“跟踪”电路,该跟踪电路实时监测并记录芯片的操作。利用这样的跟踪电路,工程师们既能验证芯片的实际操作,又能在芯片操作不正确时对芯片进行调试。
在高层次上,半导体芯片的设计可以被看作是逻辑元件和状态元件的组合。逻辑元件(例如,通过定制设计的逻辑电路实现)对信息执行复杂的操作。相比之下,状态元件(例如,寄存器、便签存储器、高速缓存等)既保存由逻辑元件处理的输入信息,又保存由逻辑元件响应于输入信息而生成的输出信息。通常,状态元件从前面的逻辑元件接收到的输出信息会变成该状态元件提供给后面的逻辑元件的输入信息。
因此,半导体芯片的设计可以被看作是相互连接的逻辑元件的复杂网络,其中状态元件沿着逻辑元件之间的连接设置。在半导体芯片的运行时间内,状态元件不断地接收和转发信息,这些信息又对应于通过半导体芯片的处理信息流。
跟踪电路旨在通过在芯片的操作过程中的关键时刻记录状态元件的内容来捕获这种流。这里,例如,内置在半导体芯片内的全局计数器随着芯片的主时钟的每一次滴答而增加。跟踪电路被编程(例如,由调试工程师编程)为记录特定状态元件在芯片的特定时钟周期中的信息(“状态”)。
在运行时间期间,当到达某些状态元件的信息要被记录的时钟周期时,状态元件中的信息被倾倒到或以其他方式写入存储器。因此,在某些关键时刻,芯片在其中的关键节点处的状态信息被记录并被保存。调试工程师随后可以访问和分析所记录的信息,以再现或以其他方式研究芯片的实际执行情况,并验证芯片是否按照预期进行操作。
各种计算系统处理能力产品被实现为单个封装内的多个半导体芯片。这里,封装产品作为单个装置出售,其功能特性和I/O是在封装层面定义的。然而,在封装内部,有多个半导体芯片,它们相互协调操作,以实现封装作为整体的总体功能。
然而,在多芯片封装方案的情况下,在跟踪方面存在挑战。多芯片封装方案是将不止一个半导体芯片打包到单个半导体芯片封装中的方案。由于封装内的芯片集合被设计成作为更大系统中的部件进行操作,所以跟踪需要支持作为整体的更大系统,而不仅仅是支持分别作为单独部件的芯片。
图1示出了在单个封装101中具有多个半导体芯片102的系统的高级视图。芯片102在封装101内相互连接(为了便于说明,图1中没有描绘),或者以其他方式协同工作来在封装101内实现“系统”。重要的是,芯片102被设计成实现分布但协同工作的跟踪基础设施,该基础设施支持跟踪跨芯片102的操作流,从而可以达到对封装101内实现的整个“系统”的跟踪。
如在图1中观察到的,封装级系统包括多个“逻辑”芯片102和多个存储器芯片103。在图1的特定封装级系统中,每个逻辑芯片102被假定为具有它自己的一组一个或多个“本地”存储器芯片103。每个逻辑芯片102包含独特的功能,该功能被设计用来执行在封装101内实现的整个系统的一个或多个相关功能。相比之下,本地存储器芯片103存储由其相关联的逻辑芯片102使用和/或生成的信息。在各种方法中,本地存储器103被实现为堆叠存储器(例如,堆叠在其相应的逻辑芯片上的存储器芯片,如联合电子器件工程委员会(JEDEC)或其他地方发布的适用规范中描述的高带宽存储器(HBM)堆叠存储器方案)。
在此,许多不同的系统可以根据图1的高层次架构实现在封装101中。例如,如果每个逻辑芯片102对应于图形处理器(或神经网络处理器)并且每个本地存储器103对应于图形处理器(或神经网络处理器)用来存储指令和数据二者的存储器,则可以实现高性能的图形处理或神经网络阵列。
作为另一个示例,如果每个逻辑芯片102对应于通用处理器并且每个本地存储器103对应于通用处理器用来存储指令和数据二者的存储器,则可以实现高性能的处理阵列。作为再一个示例,如果不同的逻辑芯片102对应于计算机系统的不同功能部件(例如,一个或多个通用处理器逻辑芯片、一个或多个图形处理逻辑芯片、一个或多个外围控制逻辑芯片、一个或多个加速器逻辑芯片等),则可以实现高性能的“系统封装”。
图2示出了图1的每个逻辑芯片102的详细视图202。重要的是,如下文更详细描述的,每个逻辑芯片202包括其自身的专用跟踪计数器204,其中,跨所有逻辑芯片102的计数器集合被设计成彼此同步地进行计数(跨所有逻辑芯片的所有计数器同时保存相同的计数值,例如来自同一个封装级主时钟)。此外,每个逻辑芯片102的本地存储器103保存该逻辑芯片生成的跟踪信息。
在此,使用跨逻辑芯片102同步的计数器,允许在作为凝聚的整体的封装101内定义并实现跟踪。也就是说,如果所有逻辑芯片102保持来自同一个封装级主时钟的相同的计数器值,则可以跨封装级系统的扩展的运行时间内发生的周期序列精确定义跨所有逻辑芯片 102 的特定周期。
因此,协调封装级跟踪只需要定义针对特定计数器值(同样,所有芯片同样地保持)需要记录哪些特定逻辑芯片的哪些特定状态元件。也就是说,为了实现封装级跟踪,封装中的每个逻辑芯片被分配以自己的“时间表(schedule)”,该“时间表”是关于将针对哪些特定计数器值记录它的哪些状态元件的信息的。值得注意的是,可以针对任何计数器值唯一地定义要记录哪些状态元件,以便可以逐周期地定制要记录的状态信息(例如,可以跨不同周期定义状态元件的不同子集,从而避免大量倾倒不必要的信息)。
由于每个逻辑芯片在延续的运行时间内同时保持相同的计数器值,容易记录和保存同时存在的下述状态信息很:该状态信息存在于两个或更多个不同的逻辑芯片202,需要一起被记录,以便对作为整体的封装级系统的操作提供有意义的洞察(同一时间在多个芯片存在过什么信息)。
因此,对于每个逻辑芯片102,当该芯片的计数器达到该芯片的时间表指示将记录状态信息的值时,该芯片自己的专用跟踪电路将记录状态元件的信息,该状态元件的信息将针对该计数值被记录。由于每个芯片102针对计数值记录了它应该记录的信息并且用计数值对该信息进行标记(对状态信息有效地添加标记),通过结合针对该计数值为所有逻辑芯片记录的所有状态信息,可以容易地再现封装101内的整个系统的状态。对于一个或多个逻辑芯片102要记录的跟踪信息所针对的所有计数值,这种情况重复发生。
将跟踪数据记录到每个逻辑芯片102的本地存储器103,简化了跟踪信息的物理记录,从而不需要为了存储而将跟踪信息传输到封装101内的不同逻辑芯片或从这些逻辑芯片传输跟踪信息。也就是说,对于每个逻辑芯片102,该芯片的跟踪信息的存储被保留为相对简单的任务,即在适当时从该芯片的状态元件读取状态信息并将该信息写入该芯片的本地存储器103。同样,针对特定计数器值收集的每组数据应该被用该计数值进行标记,以便其能与数据被采样的精确时间(系统主时钟周期)正确地关联起来。
如上所述,图2示出了逻辑芯片的更详细的实施例,该逻辑芯片被设计用来支持如上所述的跟踪。如在图2中观察到的,逻辑芯片202包括计数器204、跟踪聚合和控制电路205、核心逻辑206、源寄存器207、本地存储器接口208、传输跟踪信息的跟踪总线211、以及去往核心逻辑206内的不同分区212a、212b、212c、212d中的每个分区的相应接口213。
核心逻辑206对应于芯片202的主要功能。例如,如果逻辑芯片202是图形处理器,则核心逻辑206对应于实现图形处理的逻辑电路,与之相比,如果逻辑芯片202是通用的多处理器,则核心逻辑206对应于通用的多处理器。
跟踪信息的来源207对应于芯片的状态元件(例如,寄存器)。状态元件可以接受要提交给核心逻辑206的输入信息(例如,来自芯片外),接受由核心逻辑206生成的输出信息,和/或是核心逻辑内的内部寄存器(为了简单起见,图2没有示出位于核心逻辑206内部的状态元件跟踪源)。在替代布置中,跟踪源207是用于跟踪功能的本地寄存器,这些本地寄存器与接受核心逻辑的输入信息、接受核心逻辑的输出信息和/或核心逻辑的内部信息的状态元件耦合并存储这些状态元件的信息。为了便于讨论,其余的讨论假设采用前一种方法。
跟踪聚合和控制电路205接收芯片的跟踪时间表(例如,来自本地存储器),并对其进行处理以理解哪些跟踪源的信息要针对哪些特定的计数器值被存储。
如在图2中观察到的,核心逻辑206可以被看作是被划分为多个分区212a、212b、212c、212d。每个分区具有总线接口逻辑213,该总线接口逻辑被耦合到总线211。总线211还被耦合到跟踪聚合和控制电路205。从特定分区内的一个或多个状态元件收集的跟踪信息从该分区的接口213发出,被提交在总线211上,并被跟踪聚合和控制电路205接收。
与每个分区的跟踪能力相关联的逻辑电路也被耦合到计数器204。这里,芯片202的上述跟踪时间表可以被分解为用于每个分区212a、212b、212c、212d的相应的不同时间表。在一个实施例中,跟踪聚合和控制电路205向每个分区发送芯片的跟踪时间表中属于该分区的部分(例如,通过总线211)。然后,每个分区内的逻辑电路处理该时间表,以了解该分区内的哪些状态元件的内容要被记录以及何时记录。
当来自计数器204的计数值等于针对特定分区的跟踪定义中列出的值时,该分区从其状态元件中针对该计数值的信息要被记录的那些状态元件中读取内容,利用该计数值对该信息添加标记,并通过接口213将添加标记的状态信息转发到总线211上。在各个实施例中,从分区发送到跟踪聚合和控制电路205的每个数据包或帧不仅包括添加标记的状态信息,而且还识别哪个(哪些)状态元件提供了这些信息,并识别发送这些信息的分区。
然后,跟踪聚合和控制电路205聚合来自每个分区212a、212b、212c、212d的跟踪信息,并使其被存储在本地存储器中。该信息可以被结构化为包括:对于其信息被记录的每个状态元件,该状态元件的标识符(例如,寄存器标识符和分区标识符)、该状态元件的内容、和相应的时间/计数器标记。
关于聚合,如果本地存储器以X字节为单位存储信息,则跟踪聚合和控制电路把针对特定计数值的所有信息打包成X字节的单位,并把X字节的单位转发给芯片的本地存储器控制器以存储在本地存储器中。如果针对不止一个计数值的跟踪信息被打包到X字节的单个单位中,则可以添加元数据,从而可以识别不同计数值的相应数据之间的分界。
在一个实施例中,在位于核心逻辑206内部的状态元件(寄存器)的情况下,在各个实施例中,跟踪信息路径被直接从该状态元件路由出核心逻辑206(并路由进入跟踪聚合和控制电路205)并进入适当的接口210,而不依靠核心逻辑206的功能电路来将信息传输到接口210。以这种方式,跟踪信息数据路径被与核心逻辑206隔离开。因此,例如,如果核心逻辑206由于任何原因被“冻结”,它的状态信息也可以被可靠地提取。
在各种实施例中,参考图1和图2,每个逻辑芯片102、202中的计数值被保证在所有逻辑芯片上是相同值,因为它们从相同的全局复位信号复位。也就是说,例如,由封装接收的、作为封装级输入信号的电源良好复位信号被分发到每个逻辑芯片102。每个逻辑芯片具有计数器复位电路209,在相同的复位信号特征序列(例如,某个上升/下降沿或上升/下降沿序列)下,计数器复位电路209将计数器值复位到预设值(例如,0)。因此,所有逻辑芯片206的计数器在同一周期内被复位到相同的复位值。
此外,相同的主时钟信号在整个封装中被路由到每个逻辑芯片102。每个逻辑芯片102的计数器电路204在时钟的每个周期增加其各自的计数器。因此,所有逻辑芯片的计数器在同一时钟周期内相互锁定地计数到相同的值。
关于获取跟踪数据,如在图1和2中观察到的,在一个实施例中,每个逻辑芯片具有从其本地存储器控制器到封装I/O 110、210的数据路径。也就是说,每个逻辑芯片的每个本地存储器的数据总线被路由到外部的封装输出。因此,来自所有逻辑芯片102的跟踪数据可以由外部的调试系统收集,该外部的调试系统连接到封装I/O并通过从本地存储器读取跟踪数据来收集跟踪数据。调试系统随后处理收集到的跟踪数据,并在时钟滴答的基础上再现/研究封装101内的整个系统的状态,就像在封装内的系统的先前的运行时会话期间记录跟踪数据时存在的那样。
在另一种可替代上述模式的操作模式中,直接从跟踪控制和聚合器205收集跟踪信息。也就是说,跟踪信息被从跟踪控制和聚合器205路由到外部数据总线输出210(而不是被倾倒到本地存储器中),然后被路由到封装I/O以供例如,逻辑分析仪等接收。
在各个实施例中,为了节约封装I/O,来自每个本地存储器控制器208的外部数据总线输出210被绑定到连接到封装I/O的同一数据总线。在这种情况下,每次只有一个本地存储器或逻辑芯片的内容可以被提交到封装I/O。也就是说,在任何时候,只有一个本地存储器或逻辑芯片的内容可以被发送到封装外部(只有一个逻辑芯片的数据被赋予访问外部数据总线的入口,而其他逻辑芯片被置于高阻抗状态)。替代地或者结合地,可以在封装内为每个逻辑芯片建立缓冲,以使得逻辑芯片能同时报告信息,使信息被缓存并且在稍后的适当时间被单独提交到封装I/O。
在各个实施例中,外部数据总线无论是每个逻辑芯片专用的还是在逻辑芯片之间共享,也可以被路由到跟踪聚合和控制电路205,以使得跟踪聚合和控制电路205能从调试系统接收调试配置信息(例如,上述跟踪时间表),调试系统在外部封装I/O连接到封装。
在各个实施例中,每个逻辑芯片的跟踪电路被设计成在观察到计数器值已被定义在芯片的跟踪时间表中之后,在若干个时钟周期内对芯片的状态进行采样。这里,跟踪时间表还识别在达到计数值后的多少个时钟周期内,跟踪聚合和控制电路将记录芯片的状态。在这种情况下,一旦达到计数器值,跟踪数据就作为在多个时钟周期内收集的稳定信息流被流传输到本地存储器中。
在其他各个实施例中,逻辑芯片的跟踪电路支持“触发”从观察到的封装或芯片状态而不是特定的计数器值收集跟踪数据。在这种情况下,每个芯片的每个分区内的跟踪电路包括比较电路(未示出),该比较电路将其一个或多个状态元件(寄存器)的当前状态与预定值进行比较,该预定值例如是由调试工程师和/或连接到封装的外部调试系统生成的。
这里,一个或多个预定值可以被加载到每个分区内的一个或多个寄存器(未示出)中。寄存器被耦合到比较器的一组输入,而触发条件取决于其内容的状态元件被路由到比较器的另一组输入。如果触发条件出现在核心逻辑的状态中,则来自每组输入的一对值将匹配,从而导致比较器产生表明已经观察到触发条件的标志。作为响应,跟踪聚合和控制电路205将使逻辑芯片的状态在一个或多个后续的时钟周期中被记录。在进一步的实施例中,跟踪聚合和控制电路205包括配置寄存器空间(例如,通过外部数据总线从调试工程师/系统接收),以协助设置被查找状态触发条件。
为了执行系统/封装范围的触发,在一个实施例中,封装中的每个核心逻辑芯片的每个跟踪聚合和控制电路205聚合来自上述触发/比较电路的相应输出,并提供标志信号来向封装中的每个其他芯片表明它的被查找触发条件是否被观察到。
每个核心逻辑芯片的每个跟踪聚合和控制电路205同样接收来自封装中的每个其他核心逻辑芯片的标志信号。当每个核心逻辑芯片的跟踪聚合和控制电路205辨识出其标志被产生并且来自每个其他芯片的标志也被产生时(例如,在至少一个周期中),每个核心逻辑芯片的跟踪聚合和控制电路205将辨识出系统范围的触发条件存在,并且将导致在一个或多个周期中记录跟踪信息(例如,基于其配置寄存器信息)。
实施例还可以包括从外部封装I/O直接行进到各个芯片的引脚和信号,以使得芯片能根据外部提供的触发信号被触发。
在各个实施例中,一个或多个本地存储器芯片是非易失性存储器芯片。在此,新兴的非易失性存储器技术(如英特尔公司的OptaneTM)正在针对传统的易失性随机存取存储器(如动态随机存取存储器(DRAM))的各种应用(如封装内夫人任何一个或多个逻辑芯片的本地存储器)取得进展。这种新兴的非易失性存储器通常包括电阻性存储单元的三维阵列,这些电阻性存储单元构建在半导体芯片基板上形成的互连布线层中。在其他或组合实施例中,至少有一些本地存储器是由DRAM组成的。
图3示出了上述方法。如在图3中观察到的,该方法包括:在同一封装内的多个逻辑芯片中的每一者中保持同步的计数值(301)。该方法还包括:将该计数值与多个逻辑芯片中的每一者中的相同的被查找计数值进行比较(302)。该方法还包括:响应于多个逻辑芯片中的每一者在同一周期内辨识出该计数值已达到相同的被查找计数值,多个逻辑芯片中的每一者在其各自的本地存储器中记录它的至少一些状态信息(303)。
示例性的计算机架构
图4至图8是示例性计算机架构的框图。在以下领域已知的其他系统设计和配置也适用:膝上型、台式、手持PC,个人数字助理,工程工作站,服务器,网络装置,网络集线器,交换机,嵌入式处理器,数字信号处理器(DSP),图形装置,视频游戏装置,机顶盒,微控制器,蜂窝电话,便携式媒体播放器,手持装置,以及其他各种电子装置。这些计算架构和/或系统/设计中的任何一者可以包括单个封装中的多个半导体芯片(如上文详述的)。
现在参考图4,示出了根据本发明的一个实施例的系统400的框图。系统400可以包括一个或多个处理器410、415,这些处理器被耦合到控制器集线器420。在一个实施例中,控制器集线器420包括图形存储器控制器集线器(GMCH)490和输入/输出集线器(IOH)450(它们可以在单独芯片上);GMCH 490包括存储器和图形控制器,存储器440和协处理器445与之耦合;IOH 450将输入/输出(I/O)装置460耦合到GMCH 490。替代地,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器440和协处理器445被直接耦合到处理器410以及与IOH 450在单个芯片中的控制器集线器420。
附加处理器415的可选特性在图4中用虚线表示。每个处理器410、415可以包括本文所述的一个或多个处理核,并且可以是处理器1200的某个版本。
存储器440可以是例如,动态随机存取存储器(DRAM)、相变存储器(PCM)、或它们两者的组合。对于至少一个实施例,控制器集线器420通过多分支总线(如前端总线(FSB))、点对点接口(如快速路径互连(QuickPath Interconnect,QPI))、或类似的连接495与一个或多个处理器410、415进行通信。
在一个实施例中,协处理器445是特殊用途的处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器420可以包括集成图形加速器。
物理资源410、415之间在包括架构、微架构、热、功耗特性等一系列优点指标方面可以存在各种不同。
在一个实施例中,处理器410执行控制一般类型的数据处理操作的指令。在指令中嵌入的可能是协处理器指令。处理器410将这些协处理器指令辨识为应该由附接的协处理器445执行的类型。因此,处理器410在协处理器总线或其他互连上将这些协处理器指令(或代表协处理器指令的控制信号)发布给协处理器445。一个或多个协处理器445接受并执行接收到的协处理器指令。
现在参考图5,示出了根据本发明的实施例的第一更具体的示例性系统500的框图。如图5所示,多处理器系统500是点对点互连系统,并包括通过点对点互连550耦合的第一处理器570和第二处理器580。在一些实施例中,处理器570和580分别是处理器410和415,而协处理器538是协处理器445。在另一个实施例中,处理器570和580分别是处理器410和协处理器445。
处理器570和580被示出为分别包括集成存储器控制器(IMC)单元572和582。处理器570还包括作为其总线控制器单元的一部分的点对点(P-P)接口576和578;类似地,第二处理器580包括P-P接口电路586和588。处理器570、580可以通过点对点(P-P)接口550,使用P-P接口电路578、588交换信息。如图5所示,IMC 572和582将处理器耦合到相应的存储器,即存储器532和存储器534,存储器532和存储器534可以是本地附接到相应的处理器的主存储器的部分。
处理器570、580可以分别通过单独的P-P接口552、554,使用点对点接口电路576、594、586、598与芯片组590交换信息。芯片组590可以可选地通过高性能接口592与协处理器538交换信息。在一个实施例中,协处理器538是特殊用途的处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享的高速缓存(未示出)可以被包括在任一处理器中或者被包括在两个处理器之外但仍通过P-P互连与处理器连接,使得如果处理器被置于低功耗模式,任一个或两个处理器的本地缓存信息可以被存储在共享的高速缓存中。
芯片组590可以通过接口596被耦合到第一总线516。在一个实施例中,第一总线516可以是外围部件互连(PCI)总线或诸如PCI 快速(Express)总线或另一第三代I/O互连总线的总线,但是本发明的范围不限于此。
如图5所示,各种I/O装置514可以与总线桥518一起被耦合到第一总线516,其中,总线桥518将第一总线516耦合到第二总线520。在一个实施例中,一个或多个附加处理器515(如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理器)被耦合到第一总线516。在一个实施例中,第二总线520可以是低引脚数(LPC)总线。在一个实施例中,各种装置可以被耦合到第二总线520,这些装置包括例如,键盘和/或鼠标522、通信装置527、和存储单元528(例如,磁盘驱动器或其他大容量存储装置),存储单元528可以包括指令/代码和数据530。此外,音频I/O 524可以被耦合到第二总线520。请注意,其他架构也是可能的。例如,代替图5的点对点架构,系统可以实现多分支总线或其他类似的架构。
现在参考图6,示出了根据本发明的实施例的第二更具体的示例性系统600的框图。图5和图6中的相似元件具有相似的附图标记,图5的某些方面被从图6中省去,以避免模糊图6的其他方面。
图6示出了处理器570、580可以分别包括集成存储器和I/O控制逻辑(“CL”)672和682。因此,CL 672、682包括集成存储器控制器单元并包括I/O控制逻辑。图6示出了不仅存储器532、534被耦合到CL 672、682,而且I/O装置614也被耦合到控制逻辑672、682。传统的I/O装置615被耦合到芯片组590。
现在参考图7,示出了根据本发明的实施例的SoC 700的框图。图7中的相似元件具有相似的附图标记。另外,短划线框是更高级SoC上的可选功能。在图7中,一个或多个互连单元702被耦合到:应用处理器710,其包括一组一个或多个内核702A-N和一个或多个共享的高速缓存单元706,该一个或多个内核包括高速缓存单元704A至704N;系统代理单元710;一个或多个总线控制器单元716;一个或多个集成存储器控制器单元714;一组一个或多个协处理器720,该一个或多个协处理器可以包括集成图形逻辑、图像处理器、音频处理器、和视频处理器;静态随机存取存储器(SRAM)单元730;直接存储器存取(DMA)单元732;以及用于耦合到一个或多个外部显示器的显示单元740。在一个实施例中,一个或多个协处理器720包括特殊用途的处理器,例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可以在硬件、软件、固件、或此类实施方式的组合中实现。本发明的实施例可以被实现为计算机程序或程序代码,这些计算机程序或程序代码在可编程系统上执行,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、和至少一个输出装置。
程序代码(如图5所示的代码530)可以被应用于输入指令,以执行本文所述的功能并生成输出信息。输出信息可以被以已知的方式应用于一个或多个输出装置。就本申请的目的而言,处理系统包括具有处理器(例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以用高级程序化的或面向对象的编程语言实现,以便与处理系统进行通信。如果需要,程序代码也可以用汇编或机器语言实现。事实上,这里描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解析语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该机器可读介质代表处理器内的各种逻辑,代表性指令在被机器读取时使得机器制造执行本文所述技术的逻辑。这种被称为“IP核”的表示可以被存储在有形的机器可读介质上,并被提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
这种机器可读存储介质可以包括但不限于由机器或装置制造或形成的物品的非暂态有形布置,包括存储介质(如硬盘)、任何其他类型的盘(包括软盘、光盘、光盘只读存储器(CD-ROM)、光盘可重写盘(CD-RW)、和磁光盘);半导体器件(如只读存储器(ROM)、随机存取存储器(RAM),如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM));磁卡或光卡;或任何其他适于存储电子指令的介质类型。
因此,本发明的实施例还包括含有指令或含有设计数据(例如,硬件描述语言(HDL),其定义本文所述的结构、电路、设备、处理器、和/或系统特征)的非暂态有形机器可读介质。这种实施例也可以被称为程序产品。仿真(包括二进制翻译、代码变形等)。
在某些情况下,指令转换器可以被用来将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令翻译(例如,使用静态二进制翻译、动态二进制翻译(包括动态编译))、变形、仿真、或以其他方式转换为将由内核处理的一个或多个其他指令。指令转换器可以由软件、硬件、固件、或它们的组合实现。指令转换器可以在处理器上,也可以在处理器外,或者部分在处理器上、部分在处理器外。
图8是根据本发明的一些实施例的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但是替代地,指令转换器可以实现在软件、固件、硬件、或它们的各种组合中。图8示出了高级语言802的程序可以用x86编译器804进行编译,以生成x86二进制代码806,该代码可以由具有至少一个x86指令集核的处理器816本机执行。具有至少一个x86指令集核的处理器816代表以下这种的任何处理器,该处理器能够通过兼容执行或以其他方式处理(1)英特尔x86指令集核的大部分指令集或(2)针对在具有至少一个x86指令集核的英特尔处理器上运行的应用程序或其他软件的目标代码版本,而执行与具有至少一个x86指令集核的英特尔处理器基本相同功能,以达到与具有至少一个 x86 指令集核的英特尔处理器基本相同的结果。x86编译器804代表可操作以生成x86二进制代码806(例如,目标代码)的编译器,可以在有或没有额外链接处理的情况下,在具有至少一个x86指令集核的处理器816上执行该x86二进制代码。类似地,图8示出了高级语言802的程序可以使用替代的指令集编译器808进行编译,以生成替代的指令集二进制代码810,该代码可由不具有至少一个x86指令集核的处理器814(例如,具有执行加利福尼亚州桑尼维尔市MIPS技术公司的MIPS指令集和/或执行加利福尼亚州桑尼维尔市ARM控股公司的ARM指令集的核的处理器)本机执行。指令转换器812用于将x86二进制代码806转换成可由不具有x86指令集核的处理器814本机执行的代码。这种转换的代码不可能与替代的指令集二进制代码810相同,因为能够做到这一点的指令转换器很难制造;然而,转换的代码将完成一般操作,并由替代的指令集的指令组成。因此,指令转换器812代表软件、固件、硬件、或它们的组合,通过仿真、模拟、或任何其他过程,使不具有x86指令集处理器或核的处理器或其他电子装置能够执行x86二进制代码806。
Claims (23)
1.一种设备,包括:
同一半导体芯片封装内的多个逻辑芯片,所述多个逻辑芯片中的每一者被耦合到相应的本地存储器,所述多个逻辑芯片中的每一者包括计数器电路,所述计数器电路中的每一者在所述封装内的所述多个芯片的运行时间内保持同步的计数值,以使得所述封装内的同一周期对于所述多个逻辑芯片中的每一者来说是能够识别的,所述逻辑芯片中的每一者包括跟踪电路,所述跟踪电路将其至少一些状态按照其在所述同一周期内存在时的情况记录到其相应的本地存储器。
2.根据权利要求1所述的设备,其中所述相应的本地存储器被实现为堆叠的存储器芯片。
3.根据权利要求2所述的设备,其中所述堆叠的存储器芯片被堆叠在其相应的逻辑芯片上。
4.根据权利要求1所述的设备,其中所述多个逻辑芯片中的至少一者包括核心逻辑电路,所述核心逻辑电路实现以下任何一项:
图形处理器;
神经网络处理器;
通用的多处理器。
5.根据权利要求1所述的设备,其中存在从每个相应的本地存储器到所述封装的输入/输出(I/O)的数据路径。
6.根据权利要求1所述的设备,其中所述多个逻辑芯片中的每一者包括以下电路:该电路响应于所述封装内的所述多个逻辑芯片中的每一者内的观察状态,触发对它们的至少一些状态的记录。
7.根据权利要求1所述的设备,其中所述状态包括以下任何一项:
应用于所述多个逻辑芯片中的任何一者的核心逻辑的输入信息;
由所述多个逻辑芯片中的任何一者的核心逻辑生成的输出信息;
所述多个逻辑芯片中的任何一者的核心逻辑内的状态信息。
8.一种逻辑芯片,包括:
核心逻辑;
去往本地存储器的接口;以及
计数器电路,所述计数器电路在运行时间内保持与其他逻辑芯片同步的计数值,所述其他逻辑芯片与所述逻辑芯片处于同一封装内,使得所述封装内的同一周期对于所述其他逻辑芯片和所述逻辑芯片中的每一者来说是能够识别的;
跟踪电路,所述跟踪电路将所述逻辑芯片的至少一些状态按照其在所述同一周期内存在时的情况记录到所述本地存储器中;
触发电路和来自所述其他逻辑芯片的相应触发电路的输入,所述触发电路辨识所述逻辑芯片的被查找状态,并从所述输入上的断言信号辨识出所述其他逻辑芯片存在相应的被查找状态,并响应于此将所述逻辑芯片的至少一些状态记录到所述本地存储器中。
9.根据权利要求8所述的逻辑芯片,其中所述本地存储器被实现为堆叠的存储器芯片。
10.根据权利要求9所述的逻辑芯片,其中,所述堆叠的存储器芯片被堆叠在所述逻辑芯片上。
11.根据权利要求8所述的逻辑芯片,其中所述核心逻辑用于实现以下任何一项:
图形处理器;
神经网络处理器;
通用的多处理器。
12.根据权利要求8所述的逻辑芯片,其中存在从所述本地存储器到所述逻辑芯片的外部输入/输出(I/O)的数据路径,该数据路径延伸到所述封装的I/O。
13.根据权利要求8所述的逻辑芯片,其中所述多个逻辑芯片中的每一者包括以下电路,该电路响应于所述封装内的所述多个逻辑芯片中的每一者内的观察状态,触发对它们的至少一些状态的记录。
14.根据权利要求8所述的逻辑芯片,其中所述状态包括以下任何一项:
应用于所述核心逻辑的输入信息;
由所述核心逻辑生成的输出信息;
所述核心逻辑内的状态信息。
15.一种方法,包括:
在同一封装内的多个逻辑芯片中的每一者中保持同步的计数值;
将所述计数值与所述多个逻辑芯片中的每一者中的相同的被查找计数值进行比较;以及
响应于所述多个逻辑芯片中的每一者辨识出在同一周期内所述计数值已达到所述相同的被查找计数值,所述多个逻辑芯片中的每一者在其相应的本地存储器中记录它的至少一些状态信息。
16.根据权利要求15所述的方法,其中所述相应的本地存储器被实现为堆叠存储器。
17.根据权利要求16所述的方法,其中所述堆叠存储器是由联合电子器件工程委员会(JEDEC)规范定义的高带宽存储器(HBM)堆叠存储器。
18.根据权利要求15所述的方法,其中所述多个逻辑芯片中的至少一者包括核心逻辑电路,所述核心逻辑电路用于实现以下任何一项:
图形处理器;
神经网络处理器;
通用的多处理器。
19.根据权利要求15所述的方法,其中所述状态信息包括以下任何一种:
应用于所述多个逻辑芯片中的任何一者的核心逻辑的输入信息;
由所述多个逻辑芯片中的任何一者的核心逻辑生成的输出信息;
所述多个逻辑芯片中的任何一者的核心逻辑内的状态信息。
20.根据权利要求15所述的方法,进一步包括:
响应于所述多个逻辑芯片中的每一者中的被查找状态信息存在于所述多个逻辑芯片中的每一者中,触发在所述封装内的同一周期内对所述多个逻辑芯片中的每一者内的状态信息的记录,其中,所述多个逻辑芯片中的每一者查找其自身的被查找状态信息并将其状态信息传达给所述其他逻辑芯片中的每一者。
21.一种包含程序代码的机器可读存储介质,所述程序代码在由一个或多个处理器执行时使得一种方法被执行,所述方法包括:
在同一封装内的多个逻辑芯片中的每一者中保持同步的计数值;
将所述计数值与所述多个逻辑芯片中的每一者中的相同的被查找计数值进行比较;以及
响应于所述多个逻辑芯片中的每一者辨识出在同一周期内所述计数值已达到所述相同的被查找计数值,所述多个逻辑芯片中的每一者在其相应的本地存储器中记录它的至少一些状态信息。
22.根据权利要求21所述的机器可读存储介质,其中所述状态信息包括以下任何一种:
应用于所述多个逻辑芯片中的任何一者的核心逻辑的输入信息;
由所述多个逻辑芯片中的任何一者的核心逻辑生成的输出信息;
所述多个逻辑芯片中的任何一者的核心逻辑内的状态信息。
23.根据权利要求21所述的机器可读存储介质,其中所述方法还包括:
响应于所述多个逻辑芯片中的每一者中的被查找状态信息存在于所述多个逻辑芯片中的每一者中,触发在所述封装内的同一周期内对所述多个逻辑芯片中的每一者内的状态信息的记录,其中,所述多个逻辑芯片中的每一者查找其自身的被查找状态信息并将其状态信息传达给所述其他逻辑芯片中的每一者。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/132,891 US20220198110A1 (en) | 2020-12-23 | 2020-12-23 | Debugging architecture for system in package composed of multiple semiconductor chips |
US17/132,891 | 2020-12-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114661528A true CN114661528A (zh) | 2022-06-24 |
Family
ID=78500325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111339426.6A Pending CN114661528A (zh) | 2020-12-23 | 2021-11-12 | 用于包括多个半导体芯片的封装中的系统的调试架构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220198110A1 (zh) |
EP (1) | EP4020219A1 (zh) |
CN (1) | CN114661528A (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8140925B2 (en) * | 2007-06-26 | 2012-03-20 | International Business Machines Corporation | Method and apparatus to debug an integrated circuit chip via synchronous clock stop and scan |
US8578382B2 (en) * | 2009-05-19 | 2013-11-05 | Qualcomm Incorporated | Associating data for events occurring in software threads with synchronized clock cycle counters |
KR101124251B1 (ko) * | 2010-07-07 | 2012-03-27 | 주식회사 하이닉스반도체 | 적층된 칩들에 아이디를 부여하는 시스템, 반도체 장치 및 그 방법 |
US8832500B2 (en) * | 2012-08-10 | 2014-09-09 | Advanced Micro Devices, Inc. | Multiple clock domain tracing |
US9087554B1 (en) * | 2012-12-21 | 2015-07-21 | Samsung Electronics Co., Ltd. | Memory device, method for performing refresh operation of the memory device, and system including the same |
US9720036B2 (en) * | 2014-08-18 | 2017-08-01 | Duke University | Signal tracing using on-chip memory for in-system post-fabrication debug |
US10365987B2 (en) * | 2017-03-29 | 2019-07-30 | Google Llc | Synchronous hardware event collection |
US11398453B2 (en) * | 2018-01-09 | 2022-07-26 | Samsung Electronics Co., Ltd. | HBM silicon photonic TSV architecture for lookup computing AI accelerator |
US10789153B2 (en) * | 2018-04-03 | 2020-09-29 | Xilinx, Inc. | Debug controller circuit |
KR102605205B1 (ko) * | 2018-07-25 | 2023-11-24 | 에스케이하이닉스 주식회사 | 메모리 장치 및 프로세싱 시스템 |
-
2020
- 2020-12-23 US US17/132,891 patent/US20220198110A1/en active Pending
-
2021
- 2021-10-01 EP EP21200407.1A patent/EP4020219A1/en active Pending
- 2021-11-12 CN CN202111339426.6A patent/CN114661528A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220198110A1 (en) | 2022-06-23 |
EP4020219A1 (en) | 2022-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Biookaghazadeh et al. | Are {FPGAs} suitable for edge computing? | |
US7036114B2 (en) | Method and apparatus for cycle-based computation | |
CN111433758B (zh) | 可编程运算与控制芯片、设计方法及其装置 | |
US20220164285A1 (en) | Compensating for dram activation penalties | |
US20190004921A1 (en) | Method and system for cache agent trace and capture | |
US8365111B2 (en) | Data driven logic simulation | |
JP2009505171A (ja) | ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置 | |
US20070234310A1 (en) | Checking for memory access collisions in a multi-processor architecture | |
US10977018B1 (en) | Development environment for heterogeneous devices | |
US8626965B2 (en) | Using a DMA engine to automatically validate DMA data paths | |
JP2014523569A (ja) | 拡張可能な並列プロセッサのためのシステム、方法、および、装置 | |
Mosanu et al. | PiMulator: A fast and flexible processing-in-memory emulation platform | |
Eisenhardt et al. | Spatial and temporal data path remapping for fault-tolerant coarse-grained reconfigurable architectures | |
US7954012B2 (en) | Hierarchical debug information collection | |
CN114661528A (zh) | 用于包括多个半导体芯片的封装中的系统的调试架构 | |
Cheng et al. | Automatic generation of memory built-in self-test cores for system-on-chip | |
US10452393B2 (en) | Event-driven design simulation | |
CN114661350A (zh) | 用于并发地将多个pmon计数存储在单个寄存器中的设备、系统和方法 | |
US11106846B1 (en) | Systems and methods for emulation data array compaction | |
US10565335B2 (en) | Event-driven design simulation | |
US10410713B1 (en) | Content addressable memory modeling in emulation and prototyping | |
JP2007514214A (ja) | 使用率を計測するための計測ユニットを備える集積回路 | |
US7945433B2 (en) | Hardware simulation accelerator design and method that exploits a parallel structure of user models to support a larger user model size | |
Kumar B et al. | A novel utilization-aware and power-delay-aware intelligent DMA controller for video streaming used in AI applications | |
Xiang et al. | Parameterized design and formal verification of multi-ported memory |
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 |