模块化纠错码电路的制作方法

文档序号:30582392发布日期:2022-06-29 13:06阅读:184来源:国知局
模块化纠错码电路的制作方法

1.本公开总体上涉及在使用模块化纠错码(ecc)电路的集成电路器件的互连中的错误处理。


背景技术:

2.本节旨在向读者介绍可能与本公开的各种方面相关的本领域的各种方面,这些方面在下面描述和/或要求保护。该讨论被认为有助于向读者提供背景信息以促进更好地理解本公开的各种方面。因此,应当理解,这些陈述将鉴于此来阅读,而不是作为对现有技术的承认。
3.随着全球数据量的增长,半导体芯片制造商不断开发具有高带宽网络输入输出(io)能力的高级芯片和设备。这种高带宽芯片和设备可以包括用于计算机系统的处理器、主板芯片、网络接口控制器和集成电路(ic)、图形芯片、嵌入式处理器和可能与高速计算和/或电子通信相关的其他设备。
4.具有高带宽网络io的芯片和设备可能依赖于具有高带宽、低时延和可扩展性的快速链路。然而,对可能随着时间的推移而改变的系统(例如,该系统可能包含可以被重新配置的可编程逻辑电路)上的网络io进行及时的错误检测和处理可能具有挑战性。例如,系统可以包括具有可配置核心逻辑的组件(例如,片上系统(soc)管芯)。用户可以重新配置核心逻辑中的一些以支持新的应用。重新配置可能与现有的错误处理方案不兼容,并且重新配置现有的错误处理方案对用户来说可能是困难的。
附图说明
5.通过阅读以下详细描述并参考附图,本公开的优点将变得显而易见,在附图中:
6.图1示出了根据实施例的在现场可编程门阵列(fpga)中的模块化纠错码(ecc)方案的示例的框图;
7.图2示出了根据实施例的ecc矩阵的示例,该ecc矩阵被划分为用于图1的模块化ecc方案的两个块矩阵;
8.图3示出了根据实施例的对应于图2的划分的块矩阵的示例逻辑电路设计;
9.图4示出了根据实施例的基于矩阵划分的另一示例逻辑电路设计;
10.图5示出了根据实施例的在图1的fpga中实现的16通道高级接口总线(aib)的示例电路设计;以及
11.图6示出了根据实施例的用于在使用模块化ecc电路的集成电路器件中提供错误处理的过程的流程图。
具体实施方式
12.下面将描述本公开的一个或多个具体实施例。为了提供对这些实施例的简明描述,在说明书中并未描述实际实现方式的所有特征。将认识到的是,在任何这种实际实现方
式的开发中,就像在任何工程或设计项目中一样,必须做出许多特定于实现方式的决策来实现开发者的特定目标,例如,遵守系统相关和业务相关的约束,这些约束可能从一个实现方式到另一实现方式而变化。此外,应该认识到的是,这样的开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言,这不过是设计、制造和生产的常规任务。本文呈现和要求保护的技术被引用并应用于实体对象和具有实际性质的具体示例,这些实体对象和具体实例明确地改进了当前技术领域,并因此不是抽象的、无形的或纯理论的。
13.当介绍本公开的各种实施例的元素时,冠词“一(a)”、“一(an)”和“该(the)”旨在表示存在元素中的一个或多个。术语“包括”、“包含”和“具有”旨在是包含性的,并且意味着除了所列元素之外可能还存在附加元素。另外地,应当理解,对本公开的“一个实施例”或“实施例”的引用并不旨在被解释为排除也并入引述的特征的附加实施例的存在。此外,短语a“基于”b旨在表示a至少部分地基于b。此外,除非明确地陈述,否则术语“或”旨在是包含性的(例如,逻辑or)而不是排除性的(例如,逻辑xor)。换言之,短语a“或”b旨在表示a,b,或a和b两者。
14.随着应用驱动业务的发展,半导体芯片制造商不断地关注可编程或可配置的半导体器件(例如,芯片)。可编程芯片可包括可编程逻辑(pl)组件和可编程互连,可编程逻辑(pl)组件和可编程互连允许用户在芯片制造之后对某些电路进行编程或重新配置以执行用于特定应用的功能(例如,逻辑运算)。例如,可编程逻辑组件可以被编程以复制基本逻辑门(例如,and、or、xor、not)的功能或更复杂的组合功能(例如,编码器或解码器)。可编程逻辑组件还可以包括各种外围电路,例如,存储器元件、io元件、收发机等。例如,存储器元件可以包括简单的触发器或更完整的存储器块。
15.可编程芯片可以是单片管芯或多芯片封装(mcp)的一部分。mcp是一种电子组装件,其上可以集成多个集成电路(ic或芯片)、半导体管芯和/或其他分立组件。单个芯片或半导体管芯可以分为较小的小芯片或管芯,以促进性能改进和降低成本。例如,较小的小芯片或管芯可以使更多的晶体管能够简单地跨多个小芯片拆分,使得可以在一个晶圆上放置更多的ic。较小的小芯片或管芯也可以促进模块化电路设计。另外地,较小的小芯片或管芯可以减少由于在较小的小芯片或管芯的半导体制造期间引入了不需要的材料而导致缺陷的风险。
16.在集成电路(ic)的上下文中的半导体管芯(为简单起见称为管芯)是半导体材料的小块,在该小块上制造了给定的功能电路。例如,soc管芯可以将计算设备的多个组件集成到单个微芯片中。多个组件可以包括核心逻辑(例如,cpu)和外围设备,例如,存储器、图形接口、io端口和其他相关元件。soc管芯中更紧密集成的系统设计可以改进性能、降低成本(例如,通过降低功耗)并实现跨soc管芯不同组件的高效集成。另一示例是网络io管芯,该网络io管芯可以用于处理在不同管芯之间的互通,以维持高带宽、低时延和灵活或可扩展的网络io。
17.在一些实施例中,soc管芯中的核心逻辑可以包括可编程逻辑器件(例如,现场可编程门阵列(fpga))的半导体知识产权(ip)核心。ip核心用于芯片设计,其目的与库用于计算机编程的目的相同。ip核心可以用作fpga逻辑设计内的构建块。ip核心可以包括可重用的逻辑单元、单元或芯片布局设计,这些逻辑单元、单元或芯片布局设计可能由实体拥有并用作知识产权。在一些实施例中,ip核心可以被许可给另一实体,该另一实体可以对ip核心
进行重新编程或重新配置以用于特定应用。
18.fpga是一种类型的超大规模集成(vlsi)电路,其在现场(例如,在fpga制造之后)是可编程的(和可重新编程的)。例如,可以通过使用某些程序来重新配置fpga,这些程序可以从主计算机系统下载到fpga。fpga正在成为越来越有价值的用于数字逻辑的实现介质。
19.fpga可以包括ip,例如,软宏(softmacro)和硬宏(hardmacro)。软宏通常用于soc实现方式中。软宏采用可综合的寄存器传输级(rtl)形式,并且在可重新配置性方面比硬宏更灵活。软宏可能不特定于任何制造过程,并且在时序、面积、性能或功率方面可能是不可预测的。软宏可能会带来更大的ip保护风险,因为rtl源代码更容易移植,并且因此比网络列表(netlist)或物理布局数据更不容易受到保护。在布置和布线(routing)工具中,软宏可以是可以被布置和布线的任何逻辑或单元。在某些情况下,软宏可能是可编辑的,并且可能包含标准单元格、硬宏或其他软宏。
20.与软宏相比,硬宏通常采用硬件ip形式。硬宏可能特定于某些ic制造过程。硬宏是针对时序、面积、功率或测试进行了优化的块级设计。与可重新配置(例如,重新编程rtl)的软宏不同,用户可以仅访问硬宏的某些部分(例如,引脚)。硬宏可以以不同于布置和布线的方法生成。
21.fpga可以包括可编程组件,例如,可编程逻辑(pl)块和可编程互连。pl块可以被编程以复制基本逻辑电路(例如,逻辑门,例如,and、or、not、nand、nor、eor和enor)的功能或更复杂的功能(例如,编码、解码)。pl块还可以包括存储器块(例如,简单的触发器或更完整的存储器块)。可编程互连可以允许fpga的pl块由用户根据期望互连。pl模块和可编程互连可以在制造过程之后由用户编程,使得fpga可以执行由用户指定的不同的逻辑功能。
22.可以针对fpga实现错误处理方案(例如,错误检测和纠正),以确保在fpga的内部组件之间的以及在fpga与相关联的外围设备(例如,存储器、收发机)或其他管芯(例如,io管芯)之间的数据通信的速度和准确度。由于与fpga和相关联的外围设备的重新配置相关的复杂度不断增加,因此半导体芯片制造商可能面临新的挑战。例如,可以通过在fpga内部部署纠错码(ecc)编码器和解码器来实现错误处理方案。用户可以组合多个可重新配置的组件(例如,存储器、收发机)以形成新的(例如,更宽的)接口。由于长布线(例如,在外部存储器与ecc编码器和解码器之间的布线)和布线拥塞(例如,在ecc编码器和解码器处的拥塞),被部署在fpga内部的ecc编码器和解码器可能具有某些限制(例如,面积利用、时序收敛)。可以将模块化ecc方案应用于fpga,以减少诸如布线和布线拥塞之类的问题。模块化ecc方案可以通过在fpga内部以及靠近fpga外部的可重新配置组件部署模块化ecc编码器或解码器来实现。例如,大量数据位将由靠近fpga外部的可重新配置组件的模块化ecc编码器/解码器处理,只有少量数据位(例如,错误校验位)将被发送到位于fpga内部的ecc编码器/解码器。因此,通过使用模块化ecc方案可以减少与长布线和布线拥塞相关联的问题。
23.考虑到前述内容,图1示出了在现场可编程门阵列(fpga)中的模块化纠错码(ecc)方案的示例的框图。fpga 100可以包括ip核心102、一个或多个可编程逻辑(pl)块104、一个或多个硬宏106以及多个高级接口总线(aib)108、110、112和114。fpga 100可以与位于同一多芯片封装(mcp)上的其他管芯和外围设备通信。例如,fpga 100可以经由aib 108、中介层122(或嵌入式多管芯互连桥(emib))和aib 124与io管芯120通信。fpga还可以经由aib 110、中介层122和aib 128与其他管芯126通信。在一些情况下,fpga 100还可以与各种外围
设备(例如,收发机130、132、134和136、存储器146、148、150、152和154)通信。
24.fpga 100可以被设计为可重新配置的集成电路,从而允许用户(例如,客户或设计者)在制造之后对该fpga 100进行重新配置或重新编程。例如,fpga 100可以在制造之后被重新配置或重新编程以满足客户定义的应用或功能要求。可以使用硬件描述语言(hdl)或其他合适的电子设计自动化工具来指定fpga 100的配置。fpga 100的配置可以指定fpga 100内的电子电路(例如,逻辑电路)的结构和行为。
25.hdl是可以用于描述电子电路的结构和行为的专用计算机语言。hdl可以实现对电子电路的精确描述,该电子电路允许对电子电路进行自动化分析和模拟。hdl还允许将hdl描述合成为网络列表(物理电子组件以及物理电子组件如何连接在一起的规范),然后可以进行放置和布线以生成用于创建集成电路的一组掩码。hdl形成电子设计自动化(eda)系统的组成部分,该eda系统特别用于复杂电路,例如,专用集成电路、微处理器和可编程逻辑器件。
26.ip核心102可以是任何类型的可编程的ip核心逻辑器件。ip核心102可以包括可重用的逻辑单元、单元或芯片布局设计。在一个实施例中,ip核心102可以由一个实体拥有,并且可以被许可给另一实体,使得ip核心102可以在制造之后被重新编程或重新配置。例如,另一实体可以在fpga100的逻辑设计内重新配置ip核心102以实现特定应用(例如,客户定义的应用)或功能。
27.pl块104可以被编程以复制基本逻辑门(例如,and门、or门和xor门)的功能或更复杂的功能(例如,编码和解码)。在一些实施例中,pl块104可以包括存储器块(例如,简单的触发器或更完整的存储器块)。硬宏106可以包括ip块,每个ip块以比可重新配置逻辑更快的速度和更小的面积执行固定功能。例如,硬宏106可以包括块ram(bram)、数字信号处理器(dsp)切片等。bram是一种类型的随机存取存储器(ram),该ram嵌入在整个fpga 100中用于数据存储。dsp切片可为fpga 100提供信号处理功能。
28.高级接口总线(aib)或任何其他合适的系统(例如,通用接口总线(uib)、线束(bow)、封装上的无限结构(ifop))可以用于提供管芯到管芯物理层(phy)级标准,该标准实现模块化方法以利用小芯片知识产权(ip)块的库进行系统设计。使用aib作为示例,aib可以使用与双倍数据速率同步动态随机存取存储器(ddr dram)接口类似的时钟转发并行数据传送机制。aib可以允许用户(例如,设计方法或服务提供商、代工厂、封装提供商或系统供应商)利用可能来自不同制造商的不同组件之间的灵活互通来实现不同的集成电路设计。
29.中介层122可以用作在一个插座或连接(例如,aib 108)与另一插座或连接(例如,aib 124)之间布线的电接口。中介层122可以将连接扩展到更宽的间距或者将连接重新布线到不同的连接。在一些实施例中,可以除了中介层122之外或替代中介层122使用intel公司的嵌入式多管芯互连桥(emib),该emib具有相似的带宽但成本更低。emib可以在将mcp中的一个管芯连接到另一管芯的布线层中使用较少的硅。
30.aib(例如,aib 108、110、112和114)可以提供高带宽和低时延的多通道物理层(phy),以将fpga 100与安装在同一mcp上的其他管芯(例如,io管芯120、其他管芯126)互连。io管芯120可以用于处理在不同管芯之间的互通,以维持高带宽、低时延和灵活或可扩展的网络io。例如,io管芯120可以是网络io管芯,该网络io管芯为fpga 100提供去往和/或
来自位于同一mcp上的其他管芯或设备(例如,外围设备)的高带宽吞吐量。在一些实施例中,io管芯120可以包括另一互连总线(ib)和/或硅光子(siph)接口。ib可以是任何合适的管芯到管芯互连,其可以提供高带宽和低时延的多通道物理层(phy),以互连安装在同一mcp内的多个管芯。siph接口可以是网络io小芯片,其使用光学链路以低分贝(db)损失和低能量成本进行数据传输。siph接口可以集成到mcp中,以为在fpga100与同一mcp内的其他soc管芯之间的互通提供高带宽吞吐量。
31.aib电路(例如,aib 108、110、112和114)还可以提供高带宽和低时延的多通道phy,以将fpga 100与各种外围设备互连。例如,外围设备可以包括io元件和存储器元件。io元件可以包括高速光学收发机,例如,硅光子收发机。存储器元件可以包括简单的触发器或更完整的存储器块。
32.fpga 100可以经由aib 112、中介层138(或emib)和aib 140与多个收发机130、132、134和136通信。另外地或可替代地,某些中间组件可以被放置在多个收发机与aib 140之间。例如,硬宏142可以被放置在aib 140与收发机130之间,并且ecc解码器144可以被放置在aib 140与收发机136之间以处理错误检测和纠正。
33.fpga 100还可以经由aib 114、中介层138(或emib)和aib 156与多个存储器(例如,存储器146、148、150、152和154)通信。例如,用户可以以与一定数量的存储器(例如,从存储器146到存储器154的16个存储器)进行通信的方式重新配置fpga 100,这些存储器可以组合以形成较宽的数据接口。ip核心102可以经由多通道高级接口总线(aib)链路与存储器通信。每个通道可以包括ecc编码器和ecc解码器以处理错误检测和纠正。例如,第一通道(称为chnl 1)可以包括ecc编码器160和ecc解码器162,以处理针对在ip核心102与存储器146之间的通信的错误检测和纠正。类似地,相应的通道(例如,chnl 2、8、15、16)中的ecc编码器164、168、172和176以及ecc解码器166、170、174、178提供针对ip核心102和对应的存储器(例如,存储器148、150、152、154)的错误处理。下面将关于图5更详细地描述多通道aib链路。
34.对于fpga 100,外围设备(例如,收发机130和132、存储器146和148)可以以模块化方式构建,如图1中示出的。每个外围设备可以支持固定数量的i/o。例如,每个存储器(例如,存储器130)可以支持多达24个、48个、96个或128个i/o等。对于要求fpga 100上更宽接口的应用,用户可以重新配置fpga 100以组合多个存储器(例如,存储器146、148、150、152和154)以形成更宽的接口。这种重新配置也可以应用于其他外围设备,例如,收发机130、132、134和136。
35.fpga 100的重新配置可以包括一种或多种错误处理方案,以确保与外围设备相关联的重新配置的fpga 100的可靠性并且促进故障排除和诊断。在一些实施例中,可以在存储器(例如,ddr、闪存)或通信协议(例如,无线协议)中使用错误恢复方案(例如,纠错码(ecc)方案)。fpga 100中的ecc实现方式可以使用单位纠错双位错误检测(secded)码(例如,hamming码或hsiao码)来提供错误处理。secded码使用h矩阵作为奇偶校验矩阵。hamming码是一种线性纠错码,其可以检测高达两位错误或纠正一位错误,而不会检测到未纠正的错误。hsiao码可以提供某些优势,例如,面积和由于平衡矩阵而导致的fmax。
36.在一个示例中,用于外部存储器(例如,ddr)的ecc配置可以包括64个数据位和8个奇偶校验位。奇偶校验是一种技术,其在数据从存储中的一个位置移动到另一位置时或在
数据在各个ip块之间传输时检查数据是否已经丢失或被覆写。例如,数据传输可能不是无错误的过程,并且由目标ip块接收到的数据可能与从源ip块发送的数据方式不同。奇偶校验位可以将校验和添加到数据中,以使目标ip块能够确定数据是否被正确接收。在64/8配置中,通过添加附加的8个奇偶校验位,将64位数据编码为72位数据,以进行secded。
37.为了支持具有不同宽度(例如,8、16、32、64、128、512或1024或更多位)的数据,可以使用外围设备的不同拓扑。例如,为了在fpga 100上创建64位数据接口,用户可以组合三个存储器(例如,存储器146、148和150)来创建64位数据接口。因此,ecc逻辑(例如,ecc解码器)可以使用所有数据来计算奇偶校验信息。例如,对于64位数据接口,所有64位数据可以用于计算8位奇偶校验。
38.可以使用两种不同的方法来实现用于fpga 100和相关联的外围设备的ecc方案。在第一种方法中,可以在fpga 100内部实现ecc逻辑电路(例如,ecc编码器/解码器)。在上面描述的64位数据接口的示例中,可以组合三个存储器(例如,存储器146、148和150)的接口以形成更宽的存储器接口。如先前所提到的,ecc逻辑可以使用所有数据来计算奇偶校验信息。因此,来自所有三个存储器的数据将被路由到在fpga 100内部实现的ecc逻辑以进行奇偶校验计算。由于长布线和布线拥塞,这种方法在应用(例如,宽存储器接口)中可能具有某些限制(例如,面积利用、时序收敛)。
39.当大量导线(例如,金属线)在狭窄空间中布线时,soc管芯上发生布线拥塞。在某些情况下,布线拥塞变得难以避免,因为必须在ip块限制之间的有限空间(例如,空白空间)中对导线进行布线。例如,在fpga 100内部使用ecc逻辑可能会造成布线拥塞,因为来自分片ip(例如,外围设备,例如,收发机130和132、存储器146和148)的数据将直接行进到fpga100。然而,数据还需要行进到位于fpga 100内部的ecc逻辑以进行ecc计算。即,来自所有外围设备的数据必须在ecc逻辑处收敛以进行奇偶校验。
40.为了减少或避免布线拥塞,在第二种方法中,可以通过使用模块化ecc编码器/解码器在fpga 100和分片ip(例如,外围设备,例如,收发机130和132、存储器146和148)两者中实现ecc方案,如图1中示出的。每个ecc模块可以执行与相应的分片ip相关联的ecc计算(编码和解码),并且只有奇偶校验位收敛到默认ecc模块以进行最终ecc计算。例如,ecc解码器162、166、174和178可以分别执行与存储器146、148、152和154相关联的本地ecc计算。只有来自ecc解码器162、166、174和178的奇偶校验位可以被发送到默认ecc(例如,ecc解码器170)以进行最终ecc计算。
41.利用模块化ecc实现方式,涉及相对大量数据位的ecc计算可以在各个ecc模块本地进行,并且只有少量的奇偶校验位可以被发送到默认ecc模块以进行最终ecc计算,由此减少布线轨迹。模块化ecc实现方式可以仅使用奇偶校验位的收敛来执行ecc编码和解码,由此在不牺牲其他区域中的性能(例如,时延、计算带宽)的情况下减少布线拥塞问题。
42.本文描述的模块化ecc实现可以利用ecc方案中的块矩阵属性。块矩阵(或划分的矩阵)是一种矩阵,其被解释为已经被分解为部分(例如,较小的矩形矩阵),这些部分被称为块矩阵或块。这些块可以重新组合为块矩阵。通过将大矩阵划分为块,并将每个块视为另一矩阵的元素,可以利用简化或更高效的算法,通过使用的较小块来执行大型复杂计算。矩阵划分可以使复杂的计算更加清晰或简化。模块化ecc实现方式可以使用矩阵划分来将大矩阵(例如,奇偶校验矩阵(例如,secded码中使用的h矩阵))分解为较小的矩阵(块矩阵),
以进行奇偶校验计算。即,由与大的h矩阵相关联的单个ecc编码器/解码器执行的奇偶校验计算可以由与一组较小矩阵相关联的一组模块化ecc编码器/解码器等效地执行。如先前所描述的,可以通过使用模块化ecc编码器/解码器来减少或避免与使用单个ecc编码器/解码器进行错误处理相关的某些问题(例如,长布线、布线拥塞),这些模块化ecc编码器/解码器被部署为更靠近模块化ecc编码器/解码器将针对其提供错误处理的单元。
43.在实施例中,生成器矩阵g和奇偶校验矩阵h可以被划分以执行ecc方案。生成器矩阵g是线性码,该生成器矩阵g可以表示为:
44.其中并且
45.线性码是一种纠错码,对于该线性码,码字的任何线性组合也是码字。生成器矩阵g可以被划分为块矩阵。当对划分的矩阵进行相乘时,矩阵乘法的基本规则可以应用于块矩阵,就好像块矩阵是单个元素一样。码字x可以生成为:
46.x=ag=a[ik|p]=[a c]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0047]
其中,a是数据矩阵,并且c是奇偶校验矩阵。
[0048]
码字x可以划分为块矩阵,如以下等式所示:
[0049][0050]
x=[a1][i1 p1]+[a2][i2 p2]
……
+[am][im pm]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0051]
x=x1+x2……
+xm,其中x1=[a
1 c1],x2=[a
2 c2],xm=[am cm]
ꢀꢀꢀꢀ
(5)
[0052]
因此,ecc方案(例如,编码方案)可以使数据位(a1,a2……am
)和奇偶校验位(c1,c2……cm
)在分离的通道(x1,x2……
xm)中发送。奇偶校验位可以收敛为:
[0053]
c=[c1+c2……
+cm]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0054]
奇偶校验位可以从任何通道发送并且在默认通道中收敛。例如,如果将奇偶校验位发送到默认通道x1,则码字x可以表示为:
[0055]
x=r=[a
1 c]+[a
2 z]+
……
+[a
m z]=r1+r2+
……
+rm,其中rm在xm中发送(7)奇偶校验矩阵h可以表示为:
[0056]
h=[p
t
|in]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0057]
奇偶校验矩阵h可以被划分为块矩阵,如h=[p
1 p2……
pn|i
1 i2……in
],其中(i1,i2……in
)是in的单位块矩阵,并且(p1,p2……
pn)是p
t
的块矩阵。奇偶校验矩阵h可以改写为:
[0058]
h=h1+h2+
……
+hnꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0059]
其中:
[0060]
h1=[p
1 z
2 z3ꢀ……ꢀzn
|i
1 z
2 z3ꢀ……ꢀzn
]
ꢀꢀ
(10)
[0061]
h2=[z
1 p
2 z3ꢀ……ꢀzn
|z
1 i
2 z3ꢀ……ꢀzn
]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(11)
[0062]hn
=[z
1 z
2 z3ꢀ……ꢀ
pn|z
1 z
2 z3ꢀ……ꢀin
]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)
[0063]
其中(z1,z2……zn
)是空矩阵。
[0064]
因此,可以使用奇偶校验矩阵h和码字r来表示用于识别错误位的校正子位z如下:
[0065]
z=h r==(h1*r
1t
+h2*r
2t
+
……
+hn*r
nt
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(13)
[0066]
考虑到前述内容,图2示出了示例ecc矩阵,该ecc矩阵被划分为用于图1中先前描述模块化ecc方案的两个块矩阵。这种矩阵划分可以允许每个ecc在收敛之前被独立编码。在当前示例中,较大的h矩阵202经由矩阵划分过程被分为两个较小的块矩阵204和206。如上面所提到的,较大的h矩阵202可以是与在fpga 100中实现的单个ecc编码器/解码器相对应的奇偶校验矩阵器,该单个ecc编码器/解码器使用来自其他设备或组件(例如,外围设备)的数据的收敛来执行错误检测和纠正。矩阵划分之后的较小的块矩阵204和206可以是对应于相应的ecc模块(例如,ecc编码器160、164、168、172和176,或ecc解码器162、166、170、174和178)的那些较小的块矩阵(例如,h矩阵),每个ecc模块可以使用少量奇偶校验位来本地执行ecc编码和解码(例如,靠近模块化ecc编码器/解码器将针对其提供奇偶校验的单元)。使用模块化ecc实现方式可以实现与使用在fpga 100中的ecc逻辑(例如,ecc编码器/解码器)进行奇偶校验相同或相似的功能,但减少了布线拥塞并且不牺牲数据时延、计算带宽等方面的性能。
[0067]
图3示出了对应于图2的划分的块矩阵的示例逻辑电路设计。本文使用图1的多通道高级接口总线(aib)链路来演示示例ecc电路设计。为简单起见,在当前示例中使用了通道的一部分(例如,两个通道)。在实施例中,用户可以通过组合两个数据通道(例如,chnl 8和chnl 1)来重新配置fpga 100,以形成具有较宽数据接口的新数据通道。chnl 8和chnl 1可以被配置为分别传输数据312和314。chnl 8中的ecc编码器168可以由可以对应于块矩阵204的第一组逻辑电路来实现。chnl 1中的ecc编码器160可以由可以对应于块矩阵206的第二组逻辑电路来实现。第一组逻辑电路和第二组逻辑电路可以包括多个逻辑电路,例如,and逻辑门322和xor逻辑门324。奇偶校验位可以经由奇偶校验链路从一个数据通道发送到另一数据通道。例如,如果chnl 8被配置作为默认数据通道,则从chnl 1生成的奇偶校验位将经由奇偶校验链路332发送到chnl 8以进行奇偶校验计算。从chnl 8输出的奇偶校验位330可以发送到ip核心102。
[0068]
针对chnl 8中的ecc编码器168实现的第一组逻辑电路和针对chnl 1中的ecc编码器160实现的第二组逻辑电路可以由用户分别经由矩阵编程逻辑电路326和328重新配置。例如,通过禁止某些xor逻辑电路(例如,xor逻辑门324)在逻辑0和逻辑1之间改变,第一组逻辑电路和第二组逻辑电路将分别基于块矩阵204和206被重新配置为相应的ecc编码器配置。这种重新编程或重新配置可以允许每个数据通道对于不同的应用是灵活的。另外地,由于模块化ecc的数量与较大h矩阵202的矩阵划分相关,因此重新编程或重新配置可以允许实现可变数据通道以支持不同应用。
[0069]
矩阵编程逻辑电路326或328可以包括可以存储块矩阵204和206的值的配置寄存器。可以在fpga 100的配置或重新配置期间对配置寄存器进行编程。块矩阵204和206的存储的值通过将块矩阵204和206的值提供给ecc编码器(例如,编码器160或168)的相应的逻辑电路来高效地定义ecc编码器(例如,编码器160或168)的操作。矩阵编程逻辑电路326或328可以通信地连接到一个或多个处理器(例如,这些处理器可以配置fpga 100),这些处理器可以执行矩阵操作,例如,生成奇偶校验矩阵(例如,secded码中使用的h矩阵)、将大的h
矩阵划分为较小的块矩阵以用于由模块化ecc逻辑电路执行的奇偶校验计算、基于矩阵划分来对模块化ecc逻辑电路进行编程等。
[0070]
一个或多个处理器可以包括能够执行计算机可执行代码以执行当前公开的技术的任何类型的计算机处理器或微处理器。一个或多个处理器可以访问存储器和存储装置,该存储器和存储装置可以是用作存储计算机可执行代码和数据(可编程逻辑电路的配置、数据的分析等)的介质的任何合适的制品。存储器和存储装置可以表示非暂时性计算机可读介质(即,任何合适形式的存储器或存储装置),该非暂时性计算机可读介质可以存储由一个或多个处理器使用以执行本文描述的各种技术的计算机可执行代码。应该注意的是,非暂时性仅指示介质是有形的,而不是信号。
[0071]
如上面所提到的,本文描述的重新编程或重新配置可以允许实现可变数据通道以支持不同的应用。图4示出了基于矩阵划分的另一示例逻辑电路设计。较大的h矩阵202可以被划分为四个较小的块矩阵208、210、212和214。相应地,可以分别基于四个块矩阵208、210、212和214来实现四个ecc编码器160、164、168和172。四个ecc编码器160、164、168和172可以分别为chnl 1、chnl 2、chnl 15和chnl 8提供奇偶校验。chnl 1、chnl 2、chnl 15和chnl 8可以被配置为分别传输数据315、316、317和318。
[0072]
奇偶校验位可以经由一个或多个奇偶校验链路从一个数据通道发送到其他数据通道。例如,如果chnl 8是默认通道,则可以将从chnl 1生成的奇偶校验位经由奇偶校验链路333发送到chnl 8,然后chnl 8可以将奇偶校验位经由奇偶校验链路335发送到chnl 15,chnl 15可以进一步将奇偶校验位经由奇偶校验链路337发送到chnl 18以进行奇偶校验计算。类似地,如果chnl 1是默认通道,则从chnl 8生成的奇偶校验位将经由奇偶校验链路339发送到chnl 15,然后chnl 15可以将奇偶校验位经由奇偶校验链路341发送到chnl 2,chnl 2可以进一步将奇偶校验位经由奇偶校验链路343发送到chnl 1以进行奇偶校验计算。
[0073]
尽管关于串行传输描述了奇偶校验传输,但是应当注意,本文描述的本实施例可以以奇偶校验的其他传输方法来实现,例如,将奇偶校验从一个数据通道广播到其他数据通道。
[0074]
考虑到前述内容,图5示出了16通道高级接口总线(aib)的示例电路设计。组合十六个通道以形成新的数据接口,该新的数据接口支持1280位数据总线,包括12位奇偶校验和1268位数据。16通道aib包括数据通道,例如,chnl1、chnl 2、chnl 8、chnl 15、chnl 16等。每个aib通道可以发送一定数量的数据位和奇偶校验位(例如,80位包括72个数据位和8个奇偶校验位)。来自源设备(例如,ip核心102)的每个80个位可能已经由对应的ecc编码器(例如,ecc编码器160和168)编码、由对应的复用器(例如,复用器344和366)复用、并且经由对应的通道发送到目标设备(例如,存储器)。所发送的80个位可以由对应的解复用器(例如,解复用器348和350)解复用、由对应的ecc解码器(例如,ecc解码器162和170)解码、并且被恢复为可以由目标设备处理的72个位。
[0075]
例如,72位数据312可以从ip核心102生成,并且然后由ecc编码器160编码。包括一定数量的附加的奇偶校验位(例如,8个奇偶校验位),总编码数据可以是80个位。编码的80个位由复用器344复用,然后经由chnl 1发送。io缓冲器334可以用于临时存储所发送的数据。所发送的80个位可以由解复用器348解复用、由ecc解码器162解码、并且被恢复为可以
由存储器146处理的72个位。
[0076]
复用器(例如,复用器344或366)可以是在若干个模拟或数字输入信号之间进行选择并将其转发到单个输出线的任何类型的数据选择器。复用器可以用于增加可以在特定时间量和带宽内通过网络发送的数据量。在一些实施例中,复用器还可以用于实现多个变量的布尔函数。
[0077]
io缓冲器(例如,io缓冲器334)可以提供用于临时存储在处理器(例如,ip核心102的处理器)与外围电路(例如,存储器146)之间传递的数据的io缓冲。io缓冲可以对处理器和外围电路可以处理数据的速率差异进行平滑处理,而没有时延或其他问题。
[0078]
在本示例中,chnl 8被设置为将所有奇偶校验位发送到fpga 100的核心逻辑(例如,ip核心102)的默认通道。即,所有其他通道将向chnl8传播奇偶校验位。例如,高于chnl 8的通道(例如,chnl 1和chnl 2)将相应的奇偶校验位向下传播到chnl 8。低于chnl 8的通道(例如,chnl 15和chnl 16)将相应的奇偶校验位向上传播到chnl 8。这种模块化设计使奇偶校验位能够向上或向下传播,从而允许默认通道的灵活配置。
[0079]
除了默认通道的灵活配置之外,奇偶校验矩阵(例如,h矩阵202)可以被调整为可变的块大小。这允许针对不同的块组合进行灵活的设计。例如,当前的具有chnl 8作为默认通道的16通道aib可以被重新编程为具有不同默认通道(例如,chnl 2)的另一16通道aib,或者该16通道aib可以被重新编程为各自具有相应的默认通道的两个8通道aib。通过组合模块化ecc和可编程奇偶校验矩阵,每个aib通道都可以被编程为任何h矩阵。
[0080]
考虑到前述内容,图6示出了用于在使用模块化ecc电路的集成电路设备中提供错误处理的过程的流程图。集成电路器件可以包括多管芯封装。多管芯封装可以包括可配置的第一管芯(例如,fpga 100或fpga 100包括的管芯)。第一管芯可以经由多通道链路(例如,图1中描述的多通道高级接口总线(aib)链路)与位于多管芯封装上的其他管芯和外围设备通信。
[0081]
在过程块400处,可以基于多管芯封装的第一管芯的配置和ecc来生成奇偶校验矩阵。例如,用户可以使用计算设备的一个或多个处理器和存储器来生成奇偶校验矩阵。存储器可以存储由一个或多个处理器使用以执行本文描述的各种技术的计算机可执行代码。第一管芯的配置是可重新配置的。ecc被配置为处理针对多管芯封装的错误检测和纠正。
[0082]
在过程块402处,奇偶校验矩阵可以被划分为块矩阵。块矩阵的数量可以等于多通道高级接口总线(aib)链路中的数据通道的数量,该数据通道的数量是可重新配置的以支持不同的应用。这允许针对块矩阵的不同组合进行灵活设计。
[0083]
在过程块404处,可以对包括一个或多个逻辑电路的一组ecc模块进行编程,该一个或多个逻辑电路对应于块矩阵的相应的矩阵。如先前所描述的,编程电路(例如,矩阵编程逻辑电路326和328)可以用于重新配置该组ecc模块。
[0084]
在过程块406处,ecc模块可以被布线到多通道链路的相应的通道,该通道在多管芯封装的第一管芯与第二管芯之间发送数据位和奇偶校验位。多通道链路可以包括默认通道。该组ecc模块的相应的ecc模块可以与多通道链路的相应的通道相关联。这些相应的ecc模块可以被配置为处理经由相应的通道发送的数据位的一部分。例如,被布线到默认通道的ecc模块可以被配置为处理奇偶校验位。
[0085]
通过以这种方式分配ecc处理,不仅可以取决于被配置到fpga 100中的系统设计
来放大或缩小接口的宽度,而且还可以分配由这种ecc处理产生的热量。
[0086]
本公开的系统和方法可以在数据处理系统或被包括在数据处理系统中的组件中使用。这种数据处理系统可以包括主机处理器(例如,中央处理单元(cpu))、存储器和/或存储电路以及网络接口。数据处理系统可以包括更多或更少的组件(例如,电子显示器、用户接口结构、专用集成电路(asic))。主机处理器可以包括任何合适的处理器,例如,处理器或精简指令处理器(例如,精简指令集计算机(risc)、高级risc机器(arm)处理器),其可以管理针对数据处理系统的数据处理请求(例如,以执行调试、数据分析、加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)。存储器和/或存储电路可以包括随机存取存储器(ram)、只读存储器(rom)、一个或多个硬盘驱动器、闪速存储器等。存储器和/或存储电路可以保存要由数据处理系统处理的数据。在一些情况下,存储器和/或存储电路还可以存储用于对集成电路设备进行编程的配置程序(位流)。网络接口可以允许数据处理系统与其他电子设备通信。数据处理系统可以包括若干不同的封装,或者可以被包含在单个封装衬底上的单个封装内。
[0087]
在一个示例中,数据处理系统可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统可以经由网络接口接收数据处理请求以执行asic仿真、调试、错误检测、数据分析、加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、数字信号处理或某种其他专门任务。
[0088]
应当注意,本公开中描述的特征,包括与核心逻辑(例如,fpga 100)的可配置性组合的模块化ecc实现方式,可以在通信耦合的任何合适的集成电路(ic)管芯中实现。即,fpga核心逻辑管芯和分片逻辑ic管芯(例如,存储器、收发机)仅意在作为示例。然而,其他合适的集成电路(例如,cpu管芯、gpu管芯、包含其他处理元件或阵列的管芯、asic)可以使用本公开的模块化ecc电路。
[0089]
虽然本公开中阐述的实施例可能易于受到各种修改和替代形式的影响,但已经通过示例的方式在附图中示出并且已经在本文中详细描述了具体实施例。然而,应当理解,本公开并不旨在限于所公开的特定形式。本公开将涵盖落入由以下所附权利要求书限定的本公开的精神和范围内的所有修改、等效物和替代方案。
[0090]
本文呈现和要求保护的技术被引用并应用于实体对象和具有实际性质的具体示例,这些实体对象和具体示例明确地改进了当前技术领域,并因此不是抽象的、无形的或纯理论的。此外,如果附加到本说明书末尾的任何权利要求包含被指定为“用于[执行][功能]
……
的单元”或“用于[执行][功能]
……
的步骤”的一个或多个元素,则旨在根据35u.s.c.112(f)来解释这种元素。然而,对于包含以任何其他方式指定的元素的任何权利要求,旨在不根据35u.s.c.112(f)解释这种元素。
[0091]
示例实施例
[0092]
以下编号的条款定义了本公开的某些示例实施例。
[0093]
示例实施例1.一种多管芯系统,包括:
[0094]
第一管芯,该第一管芯包括核心电路和外围电路,其中,核心电路的一部分和外围电路的一部分是能够重新配置的;
[0095]
第二管芯;以及
[0096]
多通道链路,该多通道链路被配置为提供在第一管芯与第二管芯之间的互连,该多通道链路包括:
[0097]
多个通道,该多个通道被配置为发送多个数据位和多个奇偶校验位,其中,多个通道中的一个通道是默认通道;以及
[0098]
多个纠错码(ecc)模块,该ecc模块被配置为提供针对多个通道的错误处理,其中,错误处理对应于能够重新配置的奇偶校验矩阵,其中,多个ecc模块中的每一个对应于从对奇偶校验矩阵进行划分得出的多个矩阵中的相应的矩阵,其中,耦合到多个通道中的相应的通道的多个ecc模块中的每一个被配置为处理经由相应的通道发送的多个数据位的一部分,其中,多个ecc模块中的耦合到默认通道的ecc模块被配置为处理多个奇偶校验位。
[0099]
示例实施例2.示例实施例1的多管芯系统,其中,核心电路包括现场可编程门阵列(fpga)。
[0100]
示例实施例3.示例实施例2的多管芯系统,其中,fpga和多个ecc模块是能够编程的以适应多通道链路的不同宽度。
[0101]
示例实施例4.示例实施例1的多管芯系统,其中,外围电路包括存储器设备。
[0102]
示例实施例5.示例实施例4的多管芯系统,其中,存储器设备的分离的部分能够组合以形成宽度能够调整的数据接口。
[0103]
示例实施例6.示例实施例1的多管芯系统,其中,外围电路包括收发机。
[0104]
示例实施例7.示例实施例1的多管芯系统,其中,错误处理是使用单位纠错双位错误检测(secded)码来实现的。
[0105]
示例实施例8.示例实施例7的多管芯系统,其中,secded码包括hamming码或hsiao码。
[0106]
示例实施例9.示例实施例1的多管芯系统,其中,奇偶校验矩阵和多个矩阵是块矩阵。
[0107]
示例实施例10.示例实施例1的多管芯系统,其中,多个ecc模块包括编码器、解码器或其组合。
[0108]
示例实施例11.示例实施例1的多管芯系统,其中,响应于对核心电路的一部分、一个或多个外围电路的一部分或其组合的一个或多个改变,多个ecc模块为奇偶校验矩阵提供能够重新配置性。
[0109]
示例实施例12.示例实施例1的多管芯系统,其中,多通道链路包括高级接口总线(aib)链路。
[0110]
实施例13.一种方法,包括:
[0111]
基于多管芯封装的第一管芯的配置和纠错码(ecc)来生成奇偶校验矩阵,其中,第一管芯的配置是能够重新配置的,其中,ecc针对多管芯封装处理错误检测和纠正;
[0112]
将奇偶校验矩阵划分为多个矩阵;
[0113]
对多个ecc模块进行编程,多个ecc模块分别包括与多个矩阵中的相应的矩阵相对应的多个逻辑电路;以及
[0114]
将多个ecc模块的输出路由到多通道链路的相应的通道,其中,多通道链路在多管芯封装的第一管芯与第二管芯之间发送多个数据位和多个奇偶校验位,其中,多个ecc模块处理多个数据位的相应的部分。
[0115]
示例实施例14.示例实施例13的方法,包括重新配置奇偶校验矩阵。
[0116]
示例实施例15.示例实施例13的方法,包括在配置或重新配置时定义默认通道。
[0117]
示例实施例16.示例实施例13的方法,其中,多个ecc模块中的处理由多通道链路的默认通道使用的数据的ecc模块处理多个奇偶校验位。
[0118]
示例实施例17.示例实施例13的方法,其中,对多个纠错码(ecc)模块进行编程包括禁止多个逻辑电路中的一个或多个逻辑电路以在逻辑0和逻辑1之间改变。
[0119]
示例实施例18.一种包括计算机可执行指令的非暂时性计算机可读介质,该计算机可执行指令在被执行时使处理器执行包括以下各项的操作:
[0120]
基于多管芯封装的第一管芯的配置和错误处理方案来生成奇偶校验矩阵,其中,第一管芯的配置是能够重新配置的;
[0121]
将奇偶校验矩阵划分为多个矩阵;
[0122]
对多个模块进行编程,多个模块分别包括与多个矩阵中的相应的矩阵相对应的多个逻辑电路,其中,多个模块被配置为基于错误处理方案来执行错误检测和纠正;
[0123]
将多个模块的输出路由到多通道链路的相应的通道,其中,多通道链路被配置为提供在多管芯封装的第一管芯与第二管芯之间的互通;
[0124]
将多通道链路中的一个通道设置为默认通道;以及
[0125]
使多通道链路在多管芯封装的第一管芯和第二管芯之间发送多个数据位和多个奇偶校验位,其中,多个模块被配置为处理经由相应的通道发送的多个数据位的一部分,其中,与默认通道相关联的模块被配置为处理多个奇偶校验位。
[0126]
示例实施例19.示例实施例18的非暂时性计算机可读介质,其中,指令使处理器执行的操作包括:重新配置第一管芯的可编程逻辑电路。
[0127]
示例实施例20.示例实施例19的非暂时性计算机可读介质,其中,重新配置第一管芯的可编程逻辑电路包括:调整多通道链路的宽度。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1