平码五不中公式规律
  • / 15
  • 下载费用:30 金币  

用于可编程逻辑的存储器的虚拟化.pdf

关 键 ?#21097;?/dt>
用于 可编程 逻辑 存储器 虚拟
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580044730.4

申请日:

2015.08.17

公开号:

CN106663061A

公开日:

2017.05.10

当前法律状态:

实审

?#34892;?#24615;:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):G06F 12/10申请日:20150817|||公开
IPC分类号: G06F12/10(2016.01)I; G06F1/32 主分类号: G06F12/10
申请人: 赛灵思公司
发明人: S·艾哈迈德
地址: 美国加利福尼亚州
优?#28909;ǎ?/td> 2014.08.18 US 14/462,460
专利代理机构: 北京市君?#19979;?#24072;事务所 11517 代理人: 顾?#21697;?吴龙瑛
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580044730.4

授权公告号:

|||

法律状态公告日:

2017.09.05|||2017.05.10

法律状态类型:

实质审查的生效|||公开

摘要

处理子系统被配置为执行程序,所述程序使用一组虚拟存储器地址以引用用于存储所述程序的变量的存储器位置。可编程逻辑子系统被配置为实现配置数据流中指定的一组I/O电路,每个I/O电路具有相应的ID并被配置为访问一个变量。存储器管理电路被配置为将虚拟存储器地址映射到存储器的物理存储器地址,并将ID映射到用于存储相应变量的物理地址。TLB被配置为从I/O电路接收存储器访问请求,每个请求指示ID,并且TLB向存储器提供指示映射到ID的物理存储器地址的存储器访问请求。

权利要求书

1.一种电子系统,其特征在于,包括:
处理子系统,其被配置为执行程序,所述程序使用一组虚拟存储器地址来引用用于存
储所述程序的变量的存储器位置;
可编程逻辑子系统,其被配置为实现配置数据流中指定的一组电路,该组电路中的每
一个都包括多个输入/输出电路,每个输入/输出电路都具有相应的标识符(ID),并且被配
置为访问所述变量中相应的一个变量;
存储器;
存储器管理电路,其被配置为:
将该组虚拟存储器地址映射到所述存储器的物理存储器地址;以及
对于所述多个输入/输出电路中的每一个,将所述输入/输出电路的所述ID映射到被映
射到相应变量的虚拟存储器地址的物理存储器地址,其中所述输入/输出电路被配置为访
问所述相应变量;以及
至少一个转换后备缓冲器(TLB),其被耦接到所述多个输入/输出电路中的至少一个输
入/输出电路,所述至少一个转换后备缓冲器被配置为响应于接收到指示ID的存储器访问
请求,向所述存储器提供指示映射到所述ID的物理存储器地址的存储器访问请求。
2.根据权利要求1所述的电子系统,其特征在于:
所述至少一个TLB包括缓存,其被配置为针对一个或多个ID存储所述ID到所述物理存
储器地址的映射;以及
所述至少一个TLB还被配置为,响应于接收到存储器访问请求并且所述存储器访问请
求指示存储在所述缓存中的虚拟存储器地址和ID,从所述缓存检索映射到所述ID和虚拟存
储器地址的物理存储器地址。
3.根据权利要求2所述的电子系统,其特征在于,所述至少一个TLB还被配置为,响应于
接收到存储器访问请求并且所述存储器访问请求指示未包括在所述缓存中的虚拟存储器
地址和ID,从所述存储器管理电路检索映射到所述ID和所述虚拟存储器地址的物理存储器
地址。
4.根据权利要求3所述的电子系统,其特征在于,所述至少一个TLB还被配置为,响应于
从所述存储器管理电路检索到映射到所述ID和所述虚拟存储器地址的物理存储器地址,缓
存从所述ID和所述虚拟存储器地址到所述检索到的物理存储器地址的映射。
5.根据权利要求3或4所述的电子系统,其特征在于,所述至少一个TLB是使用所述可编
程逻辑子系统的可编程电路来实现的。
6.根据权利要求1所述的电子系统,其特征在于:
至少一个TLB包括多个TLB;并且
所述系统还包括交换网络,其被配置为将存储器访问请求从所述多个TLB路由到所述
存储器。
7.根据权利要求6所述的电子系统,其特征在于,还包括:
所述处理子系统中的缓存,所述缓存被配置为存储所述存储器的一个或多个物理存储
器位置的值;
缓存一致性互连,其被配置为维持存储在所述缓存中的值与存储在所述存储器中的值
之间的一致性;以及
其中所述缓存一致性互连被配置为从所述多个TLB中的至少一个接收存储器访问请
求。
8.根据权利要求1至7中任一项所述的电子系统,其特征在于,所述可编程逻辑子系统
包括:
多个接口电路,每个接口电路都被配置为将来自所述多个输入/输出电路中的一个或
多个的存储器访问请求传送到所述至少一个TLB。
9.根据权利要求8所述的电子系统,其特征在于,所述多个接口电路中的至少一个被配
置为将来自所述多个输入/输出电路中的多个输入/输出电路的存储器访问请求传送到所
述至少一个TLB。
10.一种用于操作具有处理子系统和可编程逻辑子系统的可编程IC的方法,其特征在
于,包括:
在所述处理子系统上执行程序,所述程序使用一组虚拟存储器地址来引用用于存储所
述程序的变量的存储器位置;
对所述可编程逻辑子系统编程以实现配置数据流中指定的一组电路,该组电路包括多
个输入/输出电路,每个输入/输出电路都具有相应的标识符(ID),并且被配置为访问所述
变量中相应的一个变量;
对于每个所述输入/输出电路,通过执行包括下述的操作来访问相应的变量:
从所述输入/输出电路向连接到所述存储器的多个转换后备缓冲器(TLB)中的一个提
供存储器访问请求,所述存储器访问请求指示所述输入/输出电路的ID和虚拟存储器地址;
以及
使用所述多个TLB中的一个来进行下述操作:
基于所述ID和所述虚拟存储器地址,确定存储所述相应变量的物理存储器地址;并且
向所述存储器提供包括所述确定的物理存储器地址的存储器访问请求。
11.根据权利要求10所述的方法,其特征在于,还包括使用存储器管理电路进行下述操
作:
将该组虚拟存储器地址映射到一组物理存储器地址;以及
将所述ID映射到物理存储器地址,所述物理存储器地址被映射到对应于所述输入/输
出电路被配置访问的变量的虚拟存储器地址。
12.根据权利要求11所述的方法,其特征在于,基于所述ID和所述虚拟存储器地址确定
存储所述相应变量的所述物理存储器地址包括:
对于由所述多个TLB中的所述一个TLB接收的指示所述ID的第一存储器访问请求,从所
述存储器管理电路检索与所述ID和所述虚拟存储器地址对应的所述物理存储器地址,并将
检索到的所述物理存储器地址存储在所述TLB的缓存中;以及
对于由所述TLB接收的指示所述ID的第二存储器访问请求,从所述TLB的所述缓存中检
索与所述ID和所述虚拟存储器地址对应的所述物理存储器地址。
13.根据权利要求10至12中任一项所述的方法,其特征在于,所述可编程逻辑子系统的
所述编程包括:对所述可编程逻辑子系统进行编程以实现所述多个TLB中的至少一个。
14.根据权利要求10所述的方法,其特征在于,还包括对所述可编程逻辑子系统编程以
实现多个接口电路,每个接口电路被配置为将存储器访问请求从所述多个输入/输出电路
中的一个或多个传送到所述多个TLB中相应的一个。
15.根据权利要求10所述的方法,其特征在于,还包括:
将所述存储器的所述物理存储器位置中的一个或多个的值存储在缓存中;以及
从所述多个TLB中的至少一个向所述缓存一致性互连提供存储器访问请求,所述缓存
一致性互连被连接到所述缓存并被配置为维持存储所述缓存中的值与存储在所述存储器
中的值之间的一致性。

说明书

用于可编程逻辑的存储器的虚拟化

技术领域

本公开大体涉及集成电路(IC),并且具体涉及存储器的虚拟化。

背景技术

可编程集成电路(IC)是可以被编程以执行指定逻辑功能的设备。一种类型的可编
程IC——现场可编程门阵列(FPGA)通常包括可编程片(tile)的阵列。这些可编程片包括各
种类型的逻辑块,其可以包括例如输入/输出模块(IOB)、可配置逻辑模块(CLB)、专用随机
存取存储器模块(BRAM)、乘法器、数?#20013;?#21495;处理模块(DSP)、处理器、时钟管理器、?#26144;?#38145;定
环(DLL)、总线或网络接口(如快速外围组件互连(PCIe)和以太网等)?#21462;?br />

每个可编程片可以包括可编程互连和可编程逻辑。可编程互连通常包括通过可编
程互连点(PIP)互连的不同长度的大量互连线。可编程逻辑使用可编程元件实现用户设计
的逻辑,可编程元件可以包括例如函数发生器、寄存器、算术逻辑?#21462;?br />

可编程互连和可编程逻辑通常通过将配置数据流加载到定义可编程元件的配置
方式的内部配置存储器单元中来实现编程。配置数据可以从存储器(例如,从外部PROM)读
取或通过外?#21487;?#22791;写入FPGA。然后,各个存储器单元的集合状态确定FPGA的功能。

一些可编程IC包括能够执行程序代码的?#24230;?#24335;处理器。处理器可以被制造成包括
可编程逻辑电路和可编程互连电路(也被统称为IC的“可编程电路”)的同一裸片的一部分。
应当理解,执行处理器内的程序代码与在IC上可用的对可编程电路进行“编程?#34987;頡?#37197;置”是
不同的。编程或配置IC的可编程电路的行为会导致可编程电路内由配置数据指定的不同物
理电路的实现。

在一些实现中,可编程IC的处理器可以利用存储器虚拟化来向程序提供更多可用
的存储器。在处理器上执行的每个程序运行就好像它可以访问大部分连续的计算机存储器
(例如随机存取存储器(RAM))一样。即使一个程序使用的物理存储器可能是碎片化的和/或
溢出到磁盘存储器上,该程序也可以使用虚拟存储器地址来操作,就像它正在访问存储器
地址的连续集合一样。虚拟存储器还?#24066;?#27599;个正在执行的程序运行就像它可以在任何给定
时间都可以访问主机计算机的整个物理存储器一样,尽管其只能访问物理存储器的一部
分。

虚拟存储器的实现需要硬件组件,其帮助处理器将由程序使用的虚拟存储器地址
(虚拟地址)转换成由硬件使用以用于代表程序读取和写入存储器的物理存储器地址(物理
地址)。存储器管理单元负责将虚拟存储器地址转换为物理存储器地址。存储器管理单元处
理由处理器请求的存储器访问。

发明内容

本申请公开了一种系统,其包括处理子系统和可编程逻辑子系统。处理子系统被
配置为执行程序,所述程序使用一组虚拟存储器地址以引用用于存储所述程序的变量的存
储器位置。可编程逻辑子系统被配置为实现配置数据流中指定的一组电路。该组电路中的
每一个都包括多个输入/输出(I/O)电路,每个电路具有相应的标识符(ID)并且被配置为访
问变量中一个相应的变量。该系统还包括存储器和存储器管理电路,存储器管理电路被配
置为将该组虚拟存储器地址映射到存储器的物理存储器地址。对于所述多个I/O电路中的
每一个,存储器管理电路还将I/O电路的ID映射到物理存储器地址,其被映射到I/O电路被
配置以访问的相应变量的虚拟存储器地址。该系统还包括耦接到至少一个I/O电路的至少
一个转换后备缓冲器(“translation look-aside buffer”,TLB)。响应于接收到指示ID的
存储器访问请求,TLB被配置为向存储器提供指示映射到ID的物理存储器地址的存储器访
问请求。

本申请还公开了一种用于操作具有处理子系统和可编程逻辑子系统的可编程IC
的方法。在处理子系统上执行程序,该程序使用一组虚拟存储器地址来引用用于储存所述
程序的变量的存储器的位置。可编程逻辑子系统被编程以实现配置数据流中指定的一组电
路。该组电路包括多个I/O电路,每个I/O电路具有相应的ID并且被配置为访问变量中一个
相应的变量。对于每个I/O电路,通过从输入/输出电路向连接到存储器的多个TLB中的一个
提供指示I/O电路的ID和虚拟存储器地址的存储器访问请求,来访问相应的变量。通过使用
所述TLB中的一个,基于ID和虚拟存储器地址来确定存储对应变量的物理存储器地址。将包
括所确定的物理存储器地址的存储器访问请求从所述TLB中的一个提供到存储器。

通过考虑具体实施方式和权利要求将认识到其它特征。

附图说明

所公开的方法和电路的各个方面和特征将在阅?#26009;?#38754;的详?#35813;?#36848;并参考附图时
变得显而易见,其中:

图1示出根据一个或多个实施例的被配置为对处理子系统和可编程逻辑子系统执
行地址转换的示例可编程IC;

图2示出根据一个或多个实施例的用于在可编程IC启动时配置处理子系统和可编
程逻辑子系统的过程;

图3示出根据一个或多个实施例的用于转换包括在由可编程逻辑子系统发出的存
储器访问请求中的虚拟存储器地址的过程;

图4示出根据一个或多个实施例的被配置为对处理子系统和可编程逻辑子系统执
行地址转换的另一示例性可编程IC;并且

图5示出了可以根据一个或多个实施例配置的另一可编程IC。

具体实施方式

虚拟存储器地址的使用可能对在可编程集成电路的处理子系统中执行的电路设
计的软件部分和在可编程逻辑子系统中实现的电路设计的硬件部分之间的数据通信构成
挑战。例如,通过访问存储变量的存储器地址,在处理子系统中执行的程序的变量可以被可
编程逻辑访问。但是,当处理子系统使用虚拟存储器地址时,可编程逻辑子系统难以确定哪
些物理地址对应于要访问的变量。在某些方法中,可以在处理子系统上执行软件来执行虚
拟存储器地址的转换。然而,这?#22336;?#27861;可能会很低效,增加了软件的复?#26377;裕?#24182;?#26723;?#20102;软件
的可移植性。

本申请公开了?#34892;?#22320;将可编程逻辑子系统发出的存储器访问请求映射和路由到
与要访问的程序变量对应的物理存储器地址的方法和电路。在一些实施例中,可编程IC包
括处理子系统,其被配置为执行程序,该程序使用一组虚拟存储器地址以引用用于存储程
序的变量的存储器位置。可编程IC还包括可编程逻辑子系统,其被配置为实现配置数据流
中指定的一组电路,该组电路通过访问程序的一个或多个变量与该程序交互操作。例如,该
组电路可以包括多个输入/输出(I/O)电路,每个I/O电路具有相应的标识符(ID)并被配置
为读取和/或修改多个程序变量中一个相应的程序变量。

可编程IC包括存储器管理电路,其被配置为当处理子系统被初始化以执行该程序
时将该组虚拟存储器地址映射到存储器的物理存储器地址。存储器管理电路还将I/O电路
的ID映射到与要访问的变量对应的物理存储器基地址(base physical memory address)。
在对可编程IC的后续操作过程中,从可编程逻辑子系统向用于地址转换的一个或多个转换
后备缓冲器(TLB)提供存储器访问请求。每个TLB被配置为确定与接收的存储器访问请求中
指示的ID和/或虚拟存储器地址对应的物理存储器地址。在确定物理存储器地址后,TLB代
表I/O电路,向存储器提供指示物理存储器地址的存储器访问请求。

在一些实施例中,TLB被配置为响应于指示ID和/或虚拟存储器地址的存储器访问
请求的第一实例,检索ID和/或虚拟存储器地址到物理存储器地址的映射。例如,可以从存
储器管理电路请求该映射。TLB可缓存被检索到的ID和/或虚拟存储器地址到物理存储器地
址的映射,以供以后使用。缓存地址映射有助于减少存储器管理电路必须执行的地址转换
的负担。在一些其它的实施例中,在可编程逻辑子系统生成存储器地址请求之前,存储器管
理电路可以被配置为于启动时向每个TLB提供地址映射表。

TLB可以使用各种电路实现。在一些实施例中,TLB可以使用内容可寻址存储器
(CAM)来缓存地址映射条目(address mapping entry)。与使用存储器地址访问数据的随机
存取存储器(RAM)不同,CAM可以搜索存储数据以寻找包括指定的虚拟存储器地址和/或ID
的条目。如果在CAM内未找到指定的ID和/或虚拟存储器地址,则可以生成导致从存储器映
射电路中检索物理存储器地址的异常(exception)。

在一些实施例中,TLB是被耦接到可编程IC上的可编程逻辑和存储器的硬连线电
路。可选地或另外地,可编程逻辑子系统中的可编程资源可被编程以形成一些或所有TLB。
使用可编程资源来实现TLB可以?#24066;?#35774;计者专门配置可编程IC以满足用户设计的要求。例
如,对于一些应用,可以仅生成少量的存储器访问请求以在处理和可编程逻辑子系统之间
交换数据。对于这样的应用,可以使用单个TLB来执行用于存储器访问请求的地址转换。对
于其它一些应用,可能需要大量的TLB来为更大数量的存储器访问请求执行地址转换。

现在转到附图,图1示出了根据一个或多个实施例的被配置为执行地址转换的示
例性可编程IC。可编程IC 100包括处理子系统110,可编程逻辑子系统120和存储器190。处
理子系统110可以被配置为执行程序112,程序112使用一组虚拟存储器地址来引用用于存
储软件程序的变量的存储器190的位置。可编程逻辑子系统120还可以被配置为实现包括多
个I/O电路124和126的电路设计122,I/O电路124和126被配置为通过访问用于存储程序变
量的存储器190的物理位置与程序112交换数据。

可编程IC包括存储器管理电路170,其被配置为将程序使用的虚拟存储器地址映
射到存储器190的存储程序变量的物理存储器地址。存储器管理电路170还被配置为将I/O
电路124和126的ID映射到与要访问的变量对应的物理存储器地址。

在操作过程中,I/O电路124和126使用存储器访问请求(如读请求或写请求)来访
问存储在存储器190中的变量。存储器访问请求可以指示例如作为源地址的I/O电路的ID和
与作为目标地址的对应于程序变量的虚拟存储器地址。由I/O电路124和126发出的存储器
访问请求被提供给TLB 144和146以用于地址转换。在该示例中,可编程IC还包括TLB 140,
其被配置为在程序112执行期间,转换虚拟存储器地址以用于处理子系统110发出的存储器
访问请求。

当接收到存储器访问请求时,TLB 140、144和146确定与存储器访问请求中指示的
虚拟存储器地址和/或ID对应的物理存储器地址。例如,可以从存储器管理电路请求对应于
虚拟存储器地址和/或ID的物理存储器地址。在各种实施例中,物理存储器地址可以被确定
为ID、虚拟存储器地址或这两者的函数。然后使用所确定的物理存储器地址作为目标地址
将存储器访问请求提供给存储器。如上所述,在确定用于ID和虚拟存储器地址的物理存储
器地址之后,TLB可以缓存指示物理存储器地址到ID和/或虚拟存储器地址的映射的条目。
被缓存的条?#21487;?#21518;可以用于确定与ID和/或虚拟存储器地址对应的物理存储器地址,而不
用联系存储器管理电路170。

图2示出根据一个或多个实施例的用于在可编程IC启动时配置处理子系统和可编
程逻辑子系统的过程。在可编程IC的启动202时,在框204处操作系统(OS)被载入处理子系
统。在框206处,可编程逻辑子系统被编程以实现在配置数据流中指定的电路。在框208,将
程序的实例加载到OS中。作为程序实例的加载的一部分,被程序使用以用于执行的虚拟存
储器地址被映射到物理存储器地址。在框210,该过程确定被实现在可编程逻辑子系统中的
电路所访问的程序变量。在一些实施例中,例如,配置数据流可以指定被在可编程逻辑子系
统?#34892;?#25104;的电路访问的变量或虚拟存储器地址。在框212,访问变量的电路的ID被映射到存
储变量的对应的物理存储器基地址。

图3示出根据一个或多个实施方式的用于转换包括在由可编程逻辑子系统发出的
存储器访问请求中的虚拟存储器地址的过程。当TLB接收到存储器访问请求302?#22791;?#36807;程启
动。如果用于存储器访问请求302中指示的ID和/或虚拟存储器地址的物理存储器地址被缓
存,则判定块304将过程引导框块306。在框306,使用缓存的物理存储器地址作为目标地址,
将存储器访问请求提供给存储器。否则,在框308处将转换请求发送到存储器管理电路。一
旦从存储器管理电路接收到物理存储器地址,则过程进行到框310,其中物理存储器地址到
虚拟存储器地址以及ID的映射被缓存。在框312,使用缓存的物理存储器地址作为目标地
址,将存储器访问请求提供给存储器。

图4示出根据一个或多个实施例的被配置为对处理子系统和可编程逻辑子系统执
行地址转换的另一示例性可编程IC。可编程IC 400包括处理子系统410,其可以被配置为执
行用户程序414,用户程序414使用一组虚拟存储器地址来以引用用于存储软件程序的变量
的存储器490的位置。如该示例所示,处理子系统410可以包括用于执行程序414的一个或多
个处理器412。在该示例中,处理子系统410还包括缓存416,用于存储由程序414使用的存储
器位置的本地?#21271;尽?#22312;一些实施例中,可编程IC 400包括缓存一致性互连(cache coherent
interconnect)450,其被配置为维持存储在缓存416中的被缓存的存储器位置的值与存储
在存储器490中的被缓存的存储器位置的值之间的一致性。

可编程IC 400还包括可编程逻辑子系统420,其可以被配置为实现电路设计424。
电路设计424包括多个I/O电路426和428,其通过访问用于存储程序的变量的存储器490的
位置与程序414交换数据。

类似于图1所示的可编程IC,IC 400包括存储器管理电路470,其被配置为将程序
使用的虚拟存储器地址映射到存储程序变量的存储器490的物理存储器地址。存储器管理
电路470还将I/O电路426和428的ID映射到与要访问的变量相对应的物理存储器基地址。在
操作期间,I/O电路426和428使用存储器访问请求(如读取请求或写入请求)来访问存储在
存储器490中的变量。

在该示例中,可编程逻辑子系统420包括一组接口电路430、432、434和436。接口电
路430、432、434和436中的每一个都可以被配置为通过交换网络460或其它数据总线将数据
传送到一个或多个I/O电路426和428和/或从一个或多个I/O电路426和428接收数据。作为
一个示例,接口电路可以是AXI Fabric接口(AFI),其被配置为根据AXI通信协议缓冲和传
送数据。

在一些实施例中,I/O电路426和428的ID还可以标识接口电路430、432、434和436
中的哪一个被用于传送数据。在一个示例性实施例中,可以使用10位ID(xxxxyyyyyy),其中
4个最高?#34892;?#27604;特(xxxx)唯一地标识接口电路。6个最低?#34892;?#27604;特(yyyyyy)可以唯一地标识
经由每个接口电路通信的用户设计的多达64个不同的电路。这种ID还可以用于标识可编程
IC中的其他电路。例如,4个最高?#34892;?#26631;识(xxxx)可以用于唯一地标识包括在处理子系统中
的处理器(例如,412)。6个最低?#34892;?#27604;特(yyyyyy)可以被用于区分在处理器上执行的不同
程序实例。

在该示例中,接口电路430、432、434和436通过TLB 442、444和446连接到交换网
络。参考前面图1中的TLB 144和146所描述的,TLB 442、444和446被配置为对从接口电路
430、432、434和436接收的存储器访问请求执行地址转换。地址转换可以与TLB和存储器管
理电路470一起执行(例如,使用图3所示的过程)。在通过地址转换为存储器访问请求确定
了物理存储器地址之后,TLB 442、444或446修改存储器访问请求以使用所确定的物理存储
器地址作为目标地址。TLB 442、444或446向存储器490(经由交换网络460)和/或缓存一致
性互连450提供修改后的存储器访问请求,以访问期望的存储器位置。如上所述,在一些实
施例中,可以使用可编程逻辑子系统420的可编程资源来实现一个或多个TLB(例如,422)。

在该示例中,可编程IC 400还包括一个或多个外部I/O电路480,其可以用于经由
可编程IC 400的一个或多个外部数据端口来传送数据。数据可以在处理子系统410和/或可
编程逻辑子系统420之间经由核心交换网络(core switching network)462通信。在一些实
施例中,外部I/O电路480还可以通过使用指示虚拟存储器地址的存储器访问请求访问程序
的变量,?#20174;?#22788;理子系统410通信。TLB 440被配置为对这种存储器访问请求执行地址转换,
如参考TLB 442、444和446所描述的。

图5示出了可以根据一个或多个实施例配置的可编程IC 502。可编程IC还可以被
称为片上系统(SOC),其包括处理子系统510和可编程逻辑子系统530。处理子系统510可以
被编程以通过执行用户程序实现用户设计的软件部分。程序可以被指定为配置数据流的一
部分,或者可以从片上或片外数据存储设备取回。处理子系统510可以包括用于执行一个或
多个软件程序的各种电路512、514、516和518。电路512、514、516和518可以包括例如一个或
多个处理器核、浮点单元(FPU)、中断处理单元、片上存储器、存储器缓存和/或缓存一致性
互连。

可编程IC 502的可编程逻辑子系统530可以被编程以实现用户设计的硬件部分。
例如,可编程逻辑子系统可以包括多个可编程资源532,其可以被编程以实现配置数据流中
指定的一组电路。可编程资源532包括可编程互连电路,可编程逻辑电路和配置存储器单
元。可编程逻辑使用可编程元件实现用户设计的逻辑,可编程元件可以包括例如函数发生
器、寄存器、算术逻辑?#21462;?#21487;编程互连电路可以包括通过可编程互连点(PIP)互连的不同长
度的大量互连线。

可编程资源532可以通过将配置数据流加载到配置存储器单元中被编程,配置存
储器单元定义可编程互连电路和可编程逻辑电路的配置方式。然后,各个存储器单元的集
体状态确定可编程资源532的功能。配置数据可以从存储器(例如,从外部PROM)读取,或者
通过外?#21487;?#22791;写入可编程IC 502。在一些实施例中,配置数据可由包括在可编程逻辑子系
统530中的配置控制器534加载到配置存储器单元中。在其它一些实施例中,可通过处理子
系统510执行的启动过程将配置数据加载到配置存储器单元中。

可编程IC 502可以包括各种电路以将处理子系统510与在可编程逻辑子系统530
内实现的电路互连。在该示例中,可编程IC 502包括核心交换器526,其可以在处理子系统
510和可编程逻辑子系统530的各种数据端口之间路由数据信号。核心交换器526还可以在
可编程逻辑或处理子系统510和530中的任一个与可编程IC的各种其它电路(例如内部数据
总线)之间路由数据信号。可选地或另外地,处理子系统510可以包括直接与可编程逻辑子
系统连接的接口——绕过核心交换器526。这样的接口可以使用例如由ARM公布的AMBA AXI
协议规范(AXI)来实现。

在一些实施例中,处理子系统510和可编程逻辑子系统530还可以经由存储器控制
器521读取或写入片上存储器522或片外存储器(未示出)的存储器位置。存储器控制器521
可以被实现为与一个或多个不同类型的存储器电路通信,包括但不限于双倍数据速率
(DDR)2、DDR3、低功率(LP)DDR2存储器类型,无论是16比特、32比特还是具有ECC的16比特
?#21462;?#33021;够与存储器控制器521通信的不同存储器类型的列表仅是为了说明的目的而提供,而
不旨在作为限制或穷举。如图5中所示,可编程IC 502可以包括存储器管理单元520和转换
后备缓冲器524,以将子系统510和530所使用的虚拟存储器地址转换为由存储器控制器521
使用的物理存储器地址以访问特定存储器位置。

可编程IC可以包括用于与外部电路进行数据通信的输入/输出(I/O)子系统550。
I/O子系统550可以包括各种类型的I/O设备或接口,包括例如闪存(flash memory)类型I/O
设备、高性能I/O设备、低性能接口、调试I/O设备和/或RAM I/O设备。

I/O子系统550可以包括被示为560A和560B的一个或多个闪存接口560。例如,一个
或多个闪存接口560可以被实现为四串行外设接口(QSPI),其被配置用于4比特通信。一个
或多个闪存接口560可以被实现为并行8比特NOR/SRAM类型的接口。一个或多个闪存接口
560可以被实现为NAND接口,其被配置用于8比特和/或16比特通信。应当理解,所描述的特
定接口是出于说明而非限制的目的提供的。具有不同比特宽度的其他接口也可以被使用。

I/O子系统550可以包括提供比存储器接口560更高级别性能的接口562中的一个
或多个。接口562A-562C中的每一个可以分别耦接到DMA控制器564A-564C。例如,接口562中
的一个或多个可以被实现为通用串行总线(USB)类型的接口。接口562中的一个或多个可以
实现为千兆以太网类型的接口。接口562中的一个或多个可以实现为安全数字(SD)类型的
接口。

I/O子系统550还可以包括提供比接口562更?#22270;?#21035;性能的一个或多个接口566,例
如接口566A-566D。例如,接口566中的一个或多个可以被实现为通用I/O(GPIO)类型的接
口。接口566中的一个或多个可以被实现为通用异步接收器/发射器(UART)类型的接口。接
口566中的一个或多个可以被实现为串行外围接口(SPI)总线类型的接口。接口566中的一
个或多个可以被实现为控制器局域网(CAN)类型的接口和/或I2C类型的接口的?#38382;健?#25509;口
566中的一个或多个还可以被实现为三重定时器计数器(Triple Timer Counter,TTC)和/
或看门狗定时器(WDT)类型的接口。

I/O子系统550可以包括一个或多个调试接口568,例如处理器JTAG(PJTAG)接口
568A?#36879;?#36394;接口568B。PJTAG接口568A可以为可编程IC 502提供外部调试接口。跟踪接口
568B可以提供端口以从处理子系统510或可编程逻辑子系统530接收调试(例如跟踪)信息。

如图所示,接口560、562、566和568中的每一个都可以耦接到多路复用器570。多路
复用器570提供多个输出,这些输出可以被直接路由或耦接到可编程IC 502的外部引脚,例
如,其中布置有可编程IC 502的封装的焊球。例如,可编程IC 502的I/O引脚可以在接口
560、562、566和568之间共享。用户可以通过配置数据流配置多路复用器570,以选择使用接
口560-568中的哪一个,以及,因此经由多路复用器570将其耦接到可编程IC 502的I/O引
脚。I/O子系统550还可以包括结构多路复用I/O(fabric multiplexer I/O,FMIO)接口(未
示出),用于将接口562-568连接到可编程逻辑子系统的可编程逻辑电路。附加地或替代地,
可编程逻辑子系统530可以被配置为实现可编程逻辑内的一个或多个I/O电路。在一些实施
例中,可编程IC 502还可以包括具有用于电源和/或安全管理的各种电路的子系统540。例
如,子系统540可以包括电源管理单元546,其被配置为监控和维持用于为可编程IC 502的
各个子系统供电的一个或多个电压域。在一些实施例中,电源管理单元546在可以禁止单个
子系统在空闲时的供电,以减少功率消?#27169;?#32780;不禁用对正在使用的子系统的供电。

子系统540还可以包括安全电路以监视子系统的状态,以确保正确的运行。例如,
子系统540可以包括被配置为监视各种子系统的状态(例如,如状态寄存器544中所指示的)
的一个或多个实时处理器542。实时处理器542可以被配置为响应于检测到错误而执行多个
任务。例如,对于一些错误,实时处理器542可以响应于检测到错误而生成警报。作为另一示
例,实时处理器542可以重置子系统以尝试?#25351;?#23376;系统以校正操作。子系统540包括可用于
互连各种子系统的交换网络548。例如,交换网络548可以被配置为将各种子系统510、530和
540连接到I/O子系统550的各种接口。在一些应用中,交换网络548还可以用于将实时处理
器542与要被监视的子系统隔离。这?#25351;?#31163;可能是某些应用标准(例如,IEC-61508SIL3或
ISO-26262标准)所要求的,以确保实时处理器542不受在其它子系统中发生的错误的影响。

这些方法和电路被认为可应用于各种系统和应用中。考虑本说明书,其他方面和
特征对于本领域技术人员将是显而易见的。例如,虽然在一些情况下一些方面和特征可以
在单个附图中被描述,但是应当理解,来自一个附图的特征也可以与另一个附图的特征组
合,即使该组合没有被明确地示出或明确地描述为组合。本说明书?#36879;?#22270;仅旨在作为示例,
本发明的真实范围由所附权利要求书指示。

关于本文
本文标题:用于可编程逻辑的存储器的虚拟化.pdf
链接地址:http://www.pqiex.tw/p-6091857.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 腾讯捕鱼达人 代理佣金日结平台 淘宝快3秘籍 重庆时时开奖直播app 海南七星彩本期规律图 王者传奇手游官网客服 娱乐平台注册 天天捕鱼电玩版ios下载 澳门新葡亰游戏网址 手机版农场种蔬菜赚钱