CN112005211A - 用于异构片上系统的软件定义多域创建和隔离 - Google Patents

用于异构片上系统的软件定义多域创建和隔离 Download PDF

Info

Publication number
CN112005211A
CN112005211A CN201980024370.XA CN201980024370A CN112005211A CN 112005211 A CN112005211 A CN 112005211A CN 201980024370 A CN201980024370 A CN 201980024370A CN 112005211 A CN112005211 A CN 112005211A
Authority
CN
China
Prior art keywords
domain
soc
domains
hardware
processor
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
CN201980024370.XA
Other languages
English (en)
Inventor
S·贾维尔
S·雷勒
G·布德
A·R·纳利
C·卡玛拉普
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 CN112005211A publication Critical patent/CN112005211A/zh
Pending legal-status Critical Current

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/5061Partitioning or combining of resources
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Abstract

异构片上系统(SoC)[200]中的多域创建和隔离可以包括接收[705]硬件描述文件[135、505],所述硬件描述文件指定异构SoC[200]中可用的多个处理器[206、208、210]和多个硬件资源,并使用计算机硬件为异构SoC[200]创建[710]多个域,其中每个域包括从多个处理器[206、208、210]中选择的处理器和从多个硬件资源中选择的硬件资源。该方法可以包括使用计算机硬件向每个域分配[735]操作系统,以及使用计算机硬件生成[750]平台,所述平台被配置为在异构SoC[200]内实现多个域。

Description

用于异构片上系统的软件定义多域创建和隔离
技术领域
本申请涉及集成电路(IC),并且更具体地,涉及在异构片上系统(System-on-Chip,SoC)型IC内创建和隔离多个域。
背景技术
SoC是指一种类型的集成电路(IC),其中集成电路包括能够执行程序代码的处理器和一个或多个其他子系统。处理器能够与其他子系统一起协同工作。异构SoC是指包含两个或更多个处理器的IC。处理器可以具有不同的架构,例如使用不同的指令集。处理器也可以彼此独立运行。例如,这种异构SoC的第一处理器可以执行第一操作系统和应用,而异构SoC的第二处理器可以执行不同的第二操作系统和/或应用。
发明内容
在一个或多个实施例中,方法可以包括:接收硬件描述文件,该硬件描述文件指定异构SoC内可用的多个处理器和多个硬件资源;以及使用计算机硬件为异构SoC创建多个域,其中每个域包括从多个处理器中选择的一个处理器和从多个硬件资源中选择的一个硬件资源。该方法可以包括:使用计算机硬件将操作系统分配给每个域;以及使用计算机硬件生成平台,所述平台被配置为在异构SoC内实现多个域。
在一些实施例中,平台可以包括用于配置异构SoC的隔离电路的配置数据。
在一些实施例中,平台可以包括第一级启动加载器(boot loader),其被配置为使异构SoC的处理器系统初始化。
在一些实施例中,对于多个域中的所选择的域,平台可以包括用于分配给所述所选择的域的操作系统的设备树。所述设备树是基于从所述多个硬件资源中所选择的硬件资源而生成的。
在一些实施例中,每个域在逻辑上被实施在所述异构SoC内。
在一些实施例中,该方法可以进一步包括使用硬件描述文件来修改异构SoC的多个域中的至少一个域。
在一些实施例中,平台可以包括用于多个域的多个工件,以供软件开发环境使用。该方法可以进一步包括使用从所述多个工件中选择的对应于所选择的域的工件来为所述多个域中的所选择的域生成可执行程序代码。
在一些实施例中,每个域可以被分配可用的随机存取存储器的一部分。
在一个或多个实施例中,一种系统包括被配置为存储程序代码的存储器和耦接到该存储器的处理器。处理器被配置为响应于执行程序代码而开始操作。可执行的操作可以包括:接收硬件描述文件,所述硬件描述文件指定异构SoC内可用的多个处理器和多个硬件资源;以及为异构SoC创建多个域,其中每个域包括从多个处理器中选择的处理器和从多个硬件资源中选择的硬件资源。操作可以包括:将操作系统分配给每个域;以及生成平台,所述平台被配置为在所述异构SoC内实现所述多个域。
在一些实施例中,平台可以包括用于配置异构SoC的隔离电路的配置数据。
在一些实施例中,平台可以包括第一级启动加载器,其被配置为使异构SoC的处理器系统初始化。
在一些实施例中,对于多个域中的所选择的域,平台可以包括用于分配给所述所选择的域的操作系统的设备树。设备树是基于从多个硬件资源中选择的硬件资源而生成的。
在一些实施例中,每个域在逻辑上被实施在所述异构SoC内。
在一些实施例中,处理器可以被配置为开始操作,该操作还包括使用硬件描述文件来修改异构SoC的多个域中的至少一个域。
在一些实施例中,平台可以包括用于多个域的多个工件以供软件开发环境使用。处理器可以被配置为开始操作,该操作还包括使用从所述多个工件中选择的对应于所选择的域的工件来为所述多个域中的所选择的域生成可执行程序代码。
在一些实施例中,每个域可以被分配可用的随机存取存储器的一部分。
在一个或多个实施例中,一种计算机程序产品包括其上存储有程序代码的计算机可读存储介质。程序代码可由计算机硬件执行以开始操作。该操作可以包括:接收硬件描述文件,所述硬件描述文件指定异构SoC内可用的多个处理器和多个硬件资源;以及为异构SoC创建多个域,其中每个域包括从多个处理器中选择的处理器和从多个硬件资源中选择的硬件资源。该操作可以包括:将操作系统分配给每个域;以及生成平台,所述平台被配置为在异构SoC内实现多个域。
在一些实施例中,平台可以包括用于配置异构SoC的隔离电路的配置数据。
在一些实施例中,平台可以包括第一级启动加载器,其被配置为使异构SoC的处理器系统初始化。
在一些实施例中,对于多个域中的所选择的域,平台可以包括用于分配给所述所选择的域的操作系统的设备树。设备树是基于从多个硬件资源中选择的硬件资源而生成的。
提供本发明内容部分仅仅是为了引入某些概念,而不是标识所要求保护的主题的任何关键或必要特征。根据附图和以下具体实施方式,本发明布置的其他特征将变得显而易见。
附图说明
在附图中示例性地示出了本发明的布置。然而,附图不应被解释为将本发明的布置仅限制于示出的特定实施方式。在阅读以下具体实施方式并参考附图后,各个方面和优点将变得显而易见。
图1示出了与本申请中描述的一个或多个实施例一起使用的示例系统。
图2示出了异构SoC的示例。
图3示出了隔离电路的示例。
图4示出了隔离电路的另一示例。
图5示出了在异构SoC中创建和隔离多个域的示例。
图6示出了异构SoC的多个域的示例。
图7示出了在异构SoC内创建和隔离多个域的示例方法。
图8示出了SoC型IC的示例架构。
具体实施方式
尽管本申请以定义新颖特征的权利要求结尾,但是相信结合参考附图的描述,将更好地理解本申请中描述的各种特征。为了说明的目的,提供了本申请描述的过程、机器、制造及其任何变化。本公开内容中描述的特定结构和功能细节不应被解释为是限制性的,而仅仅是作为权利要求的基础,并且仅是作为教导本领域技术人员的代表性基础从而以实际上任何适当的详细结构按照各种方式来实施所描述的特征。此外,在本公开中使用的术语和短语不旨在限制,而是提供所描述特征的可理解的描述。
本公开涉及IC,并且更具体地,涉及在异构SoC内创建和隔离多个域。根据本文公开的发明布置,可以创建在异构SoC内实现的不同的域(例如软件域)。实际上,每个域都实施异构SoC的子系统。可以使用应用程序级工具而不是硬件设计工具来创建域。异构SoC的每个域可以被创建以包括各种资源,无论是硬件和/或软件。当在异构SoC中被实施时,可以使用各个域利用异构SoC中可用的硬件隔离功能来实施和/或执行一个或多个嵌入式应用程序。为了描述的目的,术语“SoC”或“片上系统”是指本申请中的异构SoC。
在一个或多个实施例中,可以使用硬件设计工具(例如,电子设计自动化(EDA)工具)来生成用于设计的硬件描述文件。由硬件设计工具生成的硬件描述文件指定了SoC的特定硬件资源,这些特定硬件资源已被实体化,因此可供在SoC中实施的给定设计使用。例如,硬件描述文件可以指定SoC的哪些处理器可供使用以及SoC的哪些外围设备可用于设计。硬件描述文件指定嵌入式应用程序(例如为在SoC上运行或执行而创建的程序代码)可以使用的SoC硬件资源。在这方面,与硬件设计工具生成的硬件描述文件内定义的硬件资源相比,SoC可能包含更多的硬件资源。
在一个或多个实施例中,可以从硬件设计工具导出硬件描述文件,并通过基于计算机的域创建工具导入硬件描述文件。域创建工具能够基于硬件描述文件生成多个域。例如,域创建工具能够定义多个域,其中每个域都包括来自硬件描述文件的处理器。域创建工具能够将在硬件描述文件中指定的不同硬件资源分配给所创建的不同域。
域创建工具能够生成一个平台,该平台指定已创建的域。该平台可以包括用于不同域的各种不同软件工件(software artifact)。作为示例,域创建工具能够生成配置数据,配置数据可以被加载到SoC中以实施各个域。在被加载到SoC中后,配置数据能够创建域并将域彼此隔离。在另一示例中,域创建工具能够生成针对不同域定制的一个或多个软件工件。可以使用软件工件生成旨在特定域中执行的可执行程序代码(例如,嵌入式应用程序)。
在一个或多个实施例中,域创建工具还能够修改从硬件设计系统创建的域。例如,软件开发人员可以基于最初用于创建原始域的原始硬件描述文件而使用域创建工具来修改一个或多个不同域。因此,硬件设计应用程序不需要生成新的和/或不同的硬件描述文件来更改和/或修改SoC的域。
下文参考附图更详细地描述了本发明布置的其他方面。为了图示的简洁明了,附图中所示的元件不一定按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被放大。此外,在适当的情况下,在附图中会重复附图标记以指示相应的、类似的或相似的特征。
图1示出了与本文描述的一个或多个实施例一起使用的示例系统100。系统100是可用于实施计算机、服务器、便携式计算机(例如笔记本或平板电脑)或其他数据处理系统的计算机硬件的示例。使用计算机硬件实现的系统或设备能够执行本文所述的各种操作,这些操作与在SoC中创建和隔离多个域有关和/或与处理电路设计以在SoC中实施有关。
如图1中的示例所示,系统100包括至少一个处理器105。处理器105通过接口电路115耦接到存储器110。系统100能够在存储器110内存储计算机可读指令(也称为“程序代码”)。存储器110是计算机可读存储介质的示例。处理器105能够执行通过接口电路115从存储器110访问的程序代码。
存储器110可以包括一个或多个物理存储器设备,例如本地存储器和大容量存储设备。本地存储器是指在程序代码的实际执行期间通常使用的非永久性存储设备。本地存储器的示例包括随机存取存储器(RAM)和/或适合于处理器在执行程序代码期间使用的各种类型的RAM(例如,动态RAM/“DRAM”或静态RAM/“SRAM”)中的任何一种。大容量存储设备是指永久性数据存储设备。大容量存储设备的示例包括但不限于硬盘驱动器(HDD)、固态硬盘(SSD)、闪存、只读存储器(ROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)或其他合适的存储器。系统100还可包括一个或多个高速缓冲存储器(未示出),其提供至少一些程序代码的临时存储,以减少在执行期间必须从大容量存储设备中获取程序代码的次数。
存储器110能够存储程序代码和/或数据。例如,存储器110能够存储各种例程(routine)、程序、对象、组件、逻辑、其他合适的指令和/或其他数据结构。为了说明的目的,存储器110存储操作系统125、一个或多个应用程序130和硬件描述文件135。存储器110还可以存储电路设计。在一个或多个实施例中,应用程序130可以包括硬件设计应用程序(例如,电子设计自动化或EDA应用程序)和/或域创建应用程序。硬件设计应用程序能够生成硬件系统并将该硬件系统存储为硬件描述文件135。硬件描述文件135可以指定已经被实例化的目标SoC的不同硬件资源,因此可以被将要在目标SoC中实施的设计所使用。硬件资源的示例包括但不限于SoC的处理器(和/或处理器内核)、内存、外围设备、存储设备和/或其他硬件组件,这些元件已被实例化并可供使用。
域创建应用程序能够执行本文所述的与SoC中域的创建和隔离有关的操作。硬件设计应用程序还可以执行设计流程的一个或多个操作(例如综合化、布局、布线和/或比特流生成),以在SoC内实施电路设计。
系统100(例如处理器105)能够执行操作系统125和应用程序130以执行本公开描述的操作。这样,操作系统125和应用程序130可以被认为是系统100的集成部分。此外,应当理解,系统100(例如,处理器105)使用、生成和/或操作的任何数据都是在用作系统一部分时赋予功能的功能数据结构。
接口电路115的示例包括但不限于系统总线和输入/输出(I/O)总线。可以使用多种总线架构中的任何一种来实施接口电路115。总线架构的示例可以包括但不限于增强型工业标准体系架构(EISA)总线、加速图形端口(AGP)、视频电子标准协会(VESA)本地总线、通用串行总线(USB)和外围组件互连高速(PCIe)总线。
系统100还可以包括耦接到接口电路115的一个或多个I/O设备120。I/O设备120可以直接或通过中间I/O控制器耦接到系统100(例如耦接到接口电路115)。I/O设备120的示例包括但不限于键盘、显示设备、定点设备、一个或多个通信端口以及网络适配器。网络适配器指的是使系统100能够通过中间的专用或公共网络与其他系统、计算机系统、远程打印机和/或远程存储设备耦接的电路。调制解调器、电缆调制解调器、以太网卡和无线收发器是可以与系统100一起使用的不同类型的网络适配器的示例。
系统100可以包括比所示更少的组件或图1中未示出的其他组件,这取决于所实施的设备和/或系统的特定类型。另外,所包括的特定操作系统、应用程序和/或I/O设备可能会根据系统类型而有所不同。此外,一个或多个说明性组件可以合并到另一组件中,或形成另一组件的一部分。例如,处理器可以包括至少一些存储器。系统100可以用于实施单个计算机或多个联网/互连的计算机,其中每个计算机使用图1或类似的架构来实施。
本公开内容中描述的发明布置能够在SoC内创建多个不同的域。例如,执行域创建应用程序的系统100能够接收硬件描述文件135,硬件描述文件135定义了可被嵌入式软件使用的硬件环境。嵌入式软件是指旨在SoC的特定域中运行或执行的程序代码。
系统100在执行域创建应用程序时能够定义可以在SoC内实施的多个不同域中的每一个域。为每个域分配硬件描述文件135中的SoC的可用处理器之一。另外,系统100能够指定每个域中的处理器要执行的特定操作系统。
系统100在执行域创建应用时还能够将来自硬件描述文件135的不同硬件资源分配给不同的域。在特定实施例中,系统100能够生成例如配置数据之类的软件工件,当被加载到SoC中时,软件工件将在SoC的操作期间创建域并在域之间强制隔离。例如,一旦完成要在SoC中实施的设计并将设计加载到SoC中,SoC内的电路就会阻止一个域访问被分配给其他域的SoC元件,从而确保各个域的独立性和安全操作。
在常规系统中,使用设计工具创建硬件设计。硬件设计不清楚操作系统的分配和设计的处理器的相关设置。硬件设计作为硬件描述文件输出给软件开发人员。但是,硬件描述文件是作为用户(例如,软件开发人员)无法更改的硬件硬化模块提供的。软件开发人员无法修改任何给定处理器可用的资源。
根据本文所述的发明布置,系统100允许用户(例如,软件开发人员)基于硬件描述文件来指定和创建不同的域。例如,系统100能够使用现有的硬件描述文件并分配边界(包括所分配的硬件资源和操作系统)以运行处理器,该处理器同样被分配给所创建的各个域。可以使用原始(且未更改的)硬件描述文件来修改域。
图2示出了异构SoC 200的示例。在图2的示例中,SoC 200包括处理器系统202和可编程电路204。处理器系统202是SoC 200的硬连线区域,其包括被配置为执行程序代码的两个或更多个处理器。在一个或多个实施例中,可编程电路系统204可以被实施为现场可编程门阵列(FGPA)电路和/或可编程逻辑。由于包括可编程电路204,所以SoC 200也可以被称为可编程SoC。
通常,在将配置数据加载到SoC 200的配置存储单元(未示出)之前,不会建立可编程电路204的功能。可使用一组配置比特对可编程电路204进行编程。配置比特通常被称为“配置比特流”或“比特流”。通常,在一开始未将配置比特流加载到SoC 200中的情况下,可编程电路将无法运行或起作用。配置比特流有效地实施了可编程电路204内的特定电路设计或电路结构和连接。例如,电路设计规定了可编程电路块的功能以及可编程电路204的各个可编程电路块之间的物理连接。
“硬连线的”或“硬化的”电路(即不可编程的电路)被制造为SoC 200的一部分。与可编程电路204不同,硬化电路或硬化电路块不是在制造SoC 200之后通过加载配置比特流来实施的。硬化电路通常被认为具有例如专用电路块和互连,在一开始未将配置比特流加载到SoC 200中的情况下,这些电路块和互连即可工作。
处理器系统202包括各种不同的处理器。一方面,处理器系统202的不同处理器是物理上不同的实例,但是具有相同的架构(使用相同的指令集)。在另一方面,处理器系统202的不同处理器是物理上不同的实例,并且使用两个或更多个不同的架构(例如,利用不同的指令集)。在图2的示例中,处理器系统202包括应用处理单元(APU)206、实时处理单元(RPU)208和/或处理器210。
APU 206可以包括一个或多个核。为了在本公开内讨论,将核视为被配置为执行程序代码的“处理器”。RPU 208可以包括一个或多个核。在一个或多个实施例中,RPU 208能够执行实时应用程序。实时应用程序的示例包括但不限于汽车应用、大容量存储应用、移动基带应用、医疗和/或工业应用。APU 206和RPU 208都可以分别通过隔离电路230-1和230-5直接连接到可编程电路204。
正如所指出的那样,一方面,不同的处理器(例如,包括核)可以具有不同的架构。在一个示例中,处理器210被实施为MicroBlazeTM处理器(来自加利福尼亚州圣何塞的赛灵思公司)的硬化版本。APU 206可以被实施为来自英国剑桥Arm公司的多核处理器,例如ARMCORTEX-A9。RPU 208可以被实施为同样来自Arm公司的ARM CORTEX-R5处理器。为了说明的目的,提供了本文描述的示例处理器架构。本领域技术人员将理解,可以使用其他架构(例如x86处理器架构等)来实施SoC 200中的处理器。
处理器系统202还可以包括输入/输出(I/O)子系统212、互连214、存储器控制器216和片上存储器(on-chip memory,OCM)218。在图2的示例中,互连214被耦接到RPU 208、OCM 218、APU 206、处理器210、I/O子系统212和存储器控制器216。如图所示,互连214可以分别通过中间隔离电路230-2、230-6、230-4和230-7连接到这些元件。
在一个或多个实施例中,互连214被实施为片上互连(on-chip interconnect)。片上互连的一个示例是AMBA可扩展接口(AXI)总线。AMBA AXI总线是嵌入式微控制器总线接口,用于在电路块和/或系统之间建立片上连接。互连的其他示例实施方式可以包括但不限于总线、交叉开关、片上网络(NoC)、交换机等。
I/O子系统212包括多个I/O设备,例如I/O设备220和222。I/O子系统212可以包括两个以上的I/O设备。每一个I/O设备220和222都被耦接到多路复用器I/O(MIO)224。MIO224可被配置为向处理器系统202和/或可编程电路204提供对SoC 200外部的节点以及SoC200的各种I/O设备的访问。MIO 224可以基于每个引脚进行配置,并且可以有助于处理器系统202和/或可编程电路系统204同时访问I/O设备220和/或222。
在图2的示例中,隔离电路230的实例被包括在SoC 200内。在一个或多个实施例中,每个隔离电路230可被配置为调节或控制对SoC 200中的硬件资源的访问。例如,可以通过加载配置数据来配置每个隔离电路230,以仅允许所选择的硬件资源访问其他硬件资源。配置数据还可为处理器系统202内的元件指定实施选项。这样,配置数据可以指定和/或实现SoC 200内的不同域。
例如,隔离电路230-2位于RPU 208与互连214之间的信号路径中,并且能够调节允许SoC 200的哪些硬件资源与RPU 208进行交互。隔离电路230-6在OCM 218和互连214之间的信号路径中,并且能够调节允许SoC 200的哪些硬件资源与OCM 218交互。隔离电路230-4在APU 206与互连214之间的信号路径中,并且能够调节允许SoC 200的哪些硬件资源与APU206进行交互。隔离电路230-7在处理器210和互连214之间的信号路径中,并且能够调节允许SoC 200的哪些硬件资源与处理器210交互。
此外,隔离电路230-8在互连214和I/O子系统212之间的信号路径中(例如,在到每个I/O设备的信号路径中)。例如,隔离电路230-8能够基于每个I/O设备来调节允许SoC 200的哪些硬件资源与I/O子系统212进行交互。隔离电路230-9位于互连214和存储器控制器216之间的信号路径中,并且能够调节允许SoC 200的哪些硬件资源与存储器控制器216进行交互和/或访问(例如,读取和/或写入)耦接到存储器控制器216的存储器特定区域(未示出)。此外,隔离电路230-1、230-3和230-5分别位于可编程电路204与RPU 208、与互连214和与APU 206之间的信号路径中。隔离电路230-1能够调节可编程电路204中的电路对RPU 208的访问和/或RPU 208对可编程电路204中的电路的访问。隔离电路230-3能够调节可编程电路204中的电路对互连214的访问和/或互连214对可编程电路204中的电路的访问。隔离电路230-5能够调节可编程电路204中的电路对APU 206的访问和/或APU 206对可编程电路204中的电路的访问。
通常,可以对隔离电路230进行编程以实现SoC 200中的不同的域。隔离电路230可以被编程为仅允许属于相同域的那些硬件资源彼此通信。在特定实施例中,隔离电路230实现SoC 200到不同域的硬件资源的逻辑分离。例如,隔离电路230可以基于正被访问的地址和/或试图访问另一硬件资源的电路的标识符来允许访问或拒绝访问。
作为说明性和非限制性示例,I/O设备220和/或222中的不同设备可以被分配给处理器中的一个特定处理器。例如,可以创建第一域,该第一域包括APU 206、存储器控制器216(例如,RAM的特定区域)和I/O设备220。可以创建第二域,该第二域包括RPU 208、I/O设备222、存储器控制器216(例如,RAM的第二不同的区域)和OCM 218。在此示例中,隔离电路230强制进行域隔离,例如,防止RPU 208访问I/O设备220以及防止APU 206访问I/O设备222。隔离电路230进一步防止APU 206访问RAM的第二区域,并且防止RPU 208访问RAM的第一区域。
在一个或多个实施例中,特定的隔离电路230可以被实施为存储器保护单元。例如,隔离电路230-6和230-9可以被实施为存储器保护单元。在一个或多个其他实施例中,特定的隔离电路230可以被实施为处理器保护单元。例如,隔离电路230-1、230-2、230-4、230-5和230-7可以被实施为处理器保护单元。
图3是隔离电路230的示例。图3的示例可以是存储器保护单元。为了说明的目的,图3使用AXI接口术语。应当理解,图3的隔离电路230可以被实施为与各种不同的总线和/或互连协议中的任何一种一起工作。
在图3的示例中,地址范围检查电路305检查接收到的事务(transaction)的地址是否在由起始地址和结束地址定义的区域内,其中起始地址和结束地址可以存储在隔离电路230的配置寄存器中(例如,通过将配置数据写入配置寄存器)。此外,主ID(标识符)电路310能够基于存储在隔离电路230的配置寄存器中的配置数据来检查到达的事务的主机ID是否被允许。
隔离电路230可以禁止不满足地址范围检查电路305和主机ID电路310执行的检查的任何事务。隔离电路230也可以使事务中毒(Poison)(例如,施加“中毒”信号)。根据隔离电路230的配置,如果事务不符合所执行的检查和/或使能(asserted)了中毒信号,则可能会产生中断。
图4是隔离电路230的另一示例。图4的示例可以是处理器保护单元。为了说明的目的,图4利用AXI接口术语。应当理解,图4的隔离电路230可以被实施为与各种不同的总线和/或互连协议中的任何协议一起工作。
在图4的示例中,存储在隔离电路230中的主机ID列表用于定义允许访问外围设备的主机。存储在隔离电路230中的口径(aperture)许可列表指定了主机可以访问的外围地址的权限。主机ID检查电路410检查所接收的事务的AXI主机ID是否在口径许可列表中。基于主机ID来确定权限。AXI从条目(slave entry)来自许可字段中的相应比特。地址范围电路405能够根据配置数据检查主机访问的地址范围是可被允许的。如果不满足要求,则事务是错误的,并有选择地生成中断。
参照图3和图4所示,可以响应于确定事务是非法的(例如,事务未能通过隔离电路230执行的一项或两项检查)产生错误响应信号,例如中毒信号。错误信号导致数据中止或产生中断信号。
图5示出了在异构SoC内创建和隔离多个域的示例。在图5的示例中,硬件设计应用505生成硬件描述文件510。硬件描述文件510指定了SoC的可使用的不同硬件资源。域创建应用515接收硬件描述文件510。基于指定域的用户输入520(例如,每个相应域中包括哪些处理器、每个处理器要执行的操作系统、每个域中每个处理器可用的外围设备和/或存储器),域创建应用515输出指定域的平台(platform)525。
在一个或多个实施例中,平台525包括一个或多个软件工件。软件工件可包括配置数据、第一级别启动加载器(boot loader)和/或可用于为SoC的不同域构建嵌入式应用程序的其他软件工件。例如,软件工件可以包括用于每个不同域中包括的外围设备的驱动程序。
图6示出了异构SoC 600的多个域的示例。在图6的示例中,示出了域602、604、606和660。一方面,将域602、604、606和660内所示的每个资源(操作系统除外)在硬件描述文件内指定为可用。为了说明的目的,域602、604和606中的每一个都使用操作系统。域660可不使用操作系统并且可以支持一个或多个裸机(bare-metal)应用程序和/或独立运行的应用程序。
如图所示,域602包括处理器608、通用设备模型(GEM)接口614、串行外围接口(SPI)616、监视定时器(watchdog timer,WDT)618、四路串行外围接口(QSPI)620和可编程逻辑IP(Intellectual Property)(PL IP)622。可编程逻辑IP是指在可编程电路中实施的IP或内核。域604包括处理器610、定时触发和控制(TTC)接口630、WDT 632、通用异步收发器(UART)634和PL IP 636。域606包括处理器612、GEM接口638、安全数字输入输出(SDIO)640、通用串行总线(USB)642、SPI 644、集成电路间(I2C)接口646、I2C接口648、UART 650、QSPI652、WDT 654和外围组件互连高速总线(PCIe)656。域660包括处理器662(例如,没有操作系统)、TTC接口664、WDT 668、UART 670和PLIP 672。
图7示出了在SoC内创建和隔离多个域的示例方法700。方法700可以由本文参考图1所描述的执行域创建应用的计算机系统来执行。
在框705中,系统加载或接收硬件描述文件。可以从硬件设计应用程序中获取硬件描述文件,在硬件设计应用程序中,硬件设计人员将实例化SoC中可用的硬件资源。硬件描述文件指定了已实例化且可用于设计的硬件资源。硬件描述文件还可包括与所列硬件资源有关的其他详细信息。
在框710中,系统创建域。例如,用户可以提供请求创建域的用户输入。在一个或多个实施例中,系统提供图形用户界面(GUI),用户可以通过该图形用户界面请求创建域。在一个或多个其他实施例中,系统提供命令行界面,用户可以通过该命令行界面提供创建域的命令。响应于请求,系统为SoC创建域。
在框715中,系统确定用于域的处理器。例如,在创建域的命令之后,系统可以接收进一步的用户输入,该进一步的用户输入在硬件描述文件中列出的处理器中指定分配给该域的处理器。在特定实施例中,可以将处理器指定为命令的一部分,例如,指定为命令的参数或自变量以创建域。响应于接收到指定处理器的用户输入,系统创建域并将处理器分配给该域。例如,系统在存储器中创建将处理器与域关联的数据结构。
在框720中,系统确定用于域的操作系统。例如,系统可以接收进一步的用户输入,该进一步的用户输入指定要用于域的特定操作系统。在一个或多个实施例中,用于创建域的命令可以包括或指定操作系统作为该命令的另一参数或自变量。可以选择在域中使用的不同类型的操作系统示例包括但不限于Linux、实时操作系统(RTOS,例如Free RTOS)或适用于处理器或嵌入式处理器执行的任何其他操作系统。在其他实施例中,域可以不包括操作系统,并且可以支持一个或多个裸机应用程序和/或独立运行的应用程序。
在常规的嵌入式系统开发技术中,软件开发人员被限制为基于硬件设计来使用与处理器相关联的特定操作系统。根据本公开中描述的发明性布置,软件开发者可以自由选择不同的操作系统。软件开发人员可以尝试不同的操作系统/处理器组合和/或尝试不同的操作系统配置(例如,使用不同的地址空间映射、不同的驱动程序等,如下面框725所示)。
在框725中,系统能够向框710和715中创建的域添加一个或多个资源。在一个或多个实施例中,系统通过将资源分配给域来将资源添加到域。资源可以是从硬件描述文件中选择的硬件资源。硬件资源的示例可以包括但不限于存储器和设备(例如,存储器控制器、I/O设备和/或其他外围设备)。这些资源还可以包括用于所选操作系统的软件资源。软件资源的示例可以包括但不限于驱动程序、物理地址空间映射和/或固件。
在一个或多个实施例中,系统能够修剪添加到域的硬件资源的属性。例如,系统能够通过改变这样的硬件资源的可配置寄存器(例如,改变写入到寄存器中的配置数据)来修改硬件资源的属性。作为说明性和非限制性示例,系统能够更改UART的时钟频率。
在框725中,还可以将附加属性添加到域和/或附加到添加到域的资源。例如,可以为添加到域的特定硬件资源指定服务质量(QoS)设置。也可以为域和/或添加到域的特定硬件资源指定隔离设置。可以为域的硬件资源指定时钟频率。响应于接收到这样的属性,系统将属性分配给域和/或域的相关硬件资源。
在框730中,系统能够生成实施域的配置数据。配置数据能够隔离SoC中的域。例如,配置数据可以是被加载到用于特定隔离电路的配置寄存器中的数据,其中该特定隔离电路用于调节对分配给域的特定硬件资源的访问。例如,如果域包括APU 206,则在框730中生成的配置数据可以用于隔离电路230-5和/或230-4。正如所指出的那样,SoC的隔离电路可创建域并且在配置后可以强制域之间实现隔离。
在方框735中,系统确定是否有更多资源要添加到域。例如,用户可以提供指示域已完成的输入。在另一示例中,用户可以提供指示要将额外的资源添加到域的输入。响应于确定要向域添加更多资源,方法700返回到框725以向该域添加更多资源。响应于确定没有其他资源要被添加到域,方法700继续到框740。
在框740中,系统配置域的操作系统。例如,系统能够为域划分RAM(例如,可通过存储器控制器访问的片外RAM)。例如,对于正在配置的当前域,操作系统可以是Linux。当前域使用的Linux版本可能最多可以访问4GB的RAM。用户可以提供输入以指定在硬件描述文件中规定的可用RAM中,在块710和715中创建的域将被分配1GB的RAM。在方法700的进一步迭代过程中,在配置不同的域时,RAM的其他部分可以被分配给具有不同处理器和/或操作系统的其他域。
作为框740的一部分,系统还能够确定已经添加到域中的设备并且能够包括用于每个特定设备的驱动程序。例如,如果该域包括一个UART(例如UART0)、另一个UART(例如UART1)和USB接口,则系统能够为所选择的包括在域中的每个特定类型(和实例)的设备以及为域选择的操作系统选择驱动程序。参考前文Linux是域的操作系统的示例,系统为添加到域的每个设备选择驱动程序的Linux版本。
作为框740的一部分,系统还可以为域的操作系统生成镜像文件。继续前面的示例,系统生成一个Linux镜像文件,该文件被配置为仅访问1GB的RAM,并且该文件包括用于域中包含的每个设备的Linux驱动程序。
在框745中,系统确定是否为SoC添加另一个域。例如,用户可以提供请求创建另一个域的用户输入。可以经由本文中描述的任何机制来提供用户输入,无论是通过GUI、向导(wizard)和/或命令行。用户还可以提供指示不再创建其他域的输入。如果要添加另一个域,则方法700循环回到框710,在框710中创建另外的域并且继续进程。如果没有其他域要创建,则方法700继续框750。
在框750中,系统可以生成平台。平台可以包括一个或多个软件工件,这些软件工件支持为SoC创建的域。在一个或多个实施例中,平台包括第一级启动加载器类型的软件工件。第一级启动加载器是可以在启动时装载到SoC中的程序。例如,第一级启动加载器可以被包括在可以加载到SoC中的启动镜像中。系统能够生成第一级启动加载器,并且包括针对所创建的每个域在框730中生成的配置数据。
SoC的启动顺序能够运行第一级启动加载器,以响应将第一级启动加载器和/或启动镜像加载到SoC中。响应于SoC中的执行,第一级启动加载器能够执行各种不同的功能。在一方面,第一级启动加载器能够使SoC的处理器系统内的硬件资源和配置寄存器初始化。
在另一方面,第一级启动加载器能够配置SoC的架构。例如,第一级启动加载器能够通过将处理器系统的配置数据写入SoC的适当的配置寄存器来配置SoC的处理器系统。配置数据指定用于处理器系统中包括的各种硬件资源的操作设置以同时实现每个域。此外,配置数据包括用于处理器系统中的隔离电路的配置数据。这样,当第一级启动加载器加载到异构SoC中时,会实施域并且隔离已定义的域。
在另一方面,第一级启动加载器能够将可以包括在引导镜像中的配置比特流加载到SoC的配置存储器中。所描述的加载配置比特流实现了由配置比特流定义的SoC的可编程电路内的物理电路。
在一个或多个实施例中,由系统生成的软件工件包括处理器初始化文件。在特定实施例中,处理器初始化文件可以是“C配置文件”。处理器初始化文件可以包括用于处理器系统的系统初始化代码。处理器初始化文件可以包括寄存器序列,例如,掩码写入(mask_write)、掩码轮询(mask_poll)和掩码读取(mask_read)。可以基于指定处理器系统配置的用户输入来生成处理器初始化文件。处理器初始化文件被包括在第一级启动加载器中。当用户创建一个域并且向该域分配硬件资源(例如内存、UART等)时,需要重新配置隔离电路。用于隔离电路的配置寄存器序列将变化。这些变化(例如,隔离电路的配置寄存器序列)可能是处理器初始化文件的一部分。
在一个或多个实施例中,平台包括一个或多个操作系统类型的软件工件。例如,系统能够为已经为平台创建的每个域生成一个或多个操作系统工件。在创建操作系统工件时,要遵守在框725中指定的任何设置和/或属性,例如,用于添加到域的资源。
可以作为框750的一部分生成的操作系统工件的示例是设备树(device tree)。系统能够为已经创建并且利用设备树的每个域的操作系统生成设备树。所生成的设备树遵循在框725中指定的设置、地址范围和/或属性。给定域的设备树将仅包括指定或分配给该域的硬件资源。这样,操作系统将仅“看到”设备树中列出的设备,这些设备与域中可用的设备相对应。
在一个或多个实施例中,平台包括软件工件,例如一个或多个数据结构和/或文件,它们指定关于SoC的配置和其中包括的域的信息。例如,平台或特定软件工件可以被加载到应用程序开发环境中(例如,在计算系统中执行的应用程序)。应用程序开发环境可以被配置为开发旨在SoC的域上运行的应用程序和/或程序。在那种情况下,当软件开发人员使用应用程序开发环境为域创建程序时,可以导入指定有关配置信息的软件工件,并将其用于应用程序开发的目的。
可以导入到应用程序开发环境中的软件工件的示例是链接脚本(linkerscript)。系统能够为每个域生成链接脚本,并且输出链接脚本和软件工件。通常,每个链接脚本控制链接器的操作以为SoC的特定域生成可执行的应用程序。例如,特定域的链接脚本能够在域已建立的属性(例如域的可寻址存储器等)确定的情况下控制输出文件的存储器布局(memory layout)并且将输入文件映射到输出文件。例如,在使用链接脚本时,正在组装的应用程序无法看到对于执行正在开发的应用程序的域不可用的内存的任何部分。该应用程序只能看到或访问分配给该域的内存部分(例如RAM)。
例如,当软件开发人员打开应用程序开发环境并加载平台时,软件开发人员可以指定用于其要开发的应用程序的平台的特定域。应用程序开发环境能够使指定域的任何软件工件对软件开发人员可用。作为说明性和非限制性示例,每个不同的操作系统都将基于域的操作系统和域中包含的设备来使用特定的驱动程序调用(driver call)。例如,在针对使用FreeRTOS的域开发应用程序时,软件开发环境可以将针对特定设备的特定语句(例如“打印”语句)转换为对该设备的驱动程序调用。例如,如果某个域的应用程序尝试通过UART0写入数据,而UART0是该域的一部分,则应用程序开发环境能够用对UART0的设备驱动程序调用替换访问UART0的语句,例如“打印”语句。如果应用程序包含试图访问域中未包含的设备的语句,则该应用程序的构建将失败。例如,如果应用程序包含指向UART0的打印语句,但UART0不包含在域中,则应用程序的构建操作将失败。
在其他情况下,如果软件开发者知道不在其开发应用程序域中的设备的地址,并编写程序代码以访问该地址(例如,手动指定该地址),则在SoC中执行应用程序时,其中包含的隔离电路将拒绝针对不属于应用程序域一部分的硬件资源的此类传输。
本发明的布置允许软件开发者尝试处理器、设备和/或操作系统的不同组合,而不必利用硬件开发工具来重新定义给定异构SoC的域。使用本文所述的工具,软件开发人员能够在使用从硬件设计应用程序生成的相同的硬件描述文件的同时定义域并重新定义域。在软件层面而不是在硬件层面(例如,使用硬件设计应用程序)指定域的能力使软件开发人员能够以比其他情况更少的时间来修改和/或重新定义域。每次软件开发人员对域进行修改时,域创建工具都能够输出平台的更新版本。
例如,应用程序开发人员可以通过GUI和/或命令行界面来修改平台。例如,应用程序开发人员可以调整域之间的存储分区、更改域的操作系统和/或在域之间重新分配设备。在完成修改时和/或响应于生成平台的命令,域创建应用程序生成实现修改的更新的平台。与硬件设计应用程序中重新生成的修改后的硬件描述文件相反,更新后的平台是基于原始硬件描述文件生成的。
生成的平台,例如第一级启动加载器,可以被包含在引导镜像中。引导镜像还可以包括一个或多个配置比特流和/或其他可执行程序代码以在域中执行。如所讨论的,可执行程序代码(例如,域的操作系统和/或应用)可以使用本文描述的发明布置和/或使用利用本文描述的发明布置产生的软件工件来创建。
引导镜像可以被加载到目标SoC中,并且用于配置目标SoC。响应于加载引导镜像,第一级启动加载器可以如所描述的那样运行。此外,可通过从启动镜像加载配置比特流来配置可编程电路。可以包括在引导镜像中的可执行程序代码(例如,操作系统和/或应用程序)可以被加载到相应域的适当存储区域或分区中并被执行。
图8示出了用于IC的示例架构800。一方面,架构800可以在可编程IC内实现。例如,架构800可以用于实施现场可编程门阵列(FPGA)。架构800也可以代表SoC类型(例如,异构SoC)的IC。
如图所示,架构800包括几种不同类型的可编程电路,例如,逻辑块。例如,架构800可以包括大量不同的可编程片,可编程片包括多千兆比特收发器(MGT)801、可配置逻辑块(CLB)802、随机存取存储器块(BRAM)803、输入/输出块(IOB)804、配置和时钟逻辑(CONFIG/CLOCKS)805、数字信号处理模块(DSP)806、专用I/O模块807(例如,配置端口和时钟端口)以及其他可编程逻辑808,例如数字时钟管理器、模数转换器、系统监控逻辑等。
在一些IC中,每个可编程片包括可编程互连元件(INT)811,其具有到每个相邻片中的对应INT 811和来自每个相邻片中的对应INT 811的标准化连接。因此,所有INT 811一起实施了所示IC的可编程互连结构。每个INT 811还包括到同一片内的可编程逻辑元件和来自同一片内的可编程逻辑元件的连接,如图8顶部的示例所示。
例如,CLB 802可以包括可配置逻辑元件(CLE)812以及单个的INT 811,可对CLE812进行编程以实施用户逻辑。除了一个或多个INT 811之外,BRAM 803还可包括BRAM逻辑元件(BRL)813。通常,片中包含的INT 811的数量取决于片的高度。如图所示,BRAM片具有与五个CLB相同的高度,但是也可以具有其他数量(例如四个)CLB的高度。除适当数量的INT811外,DSP片806还可包括DSP逻辑元件(DSPL)814。除了INT 811的一个实例之外,IOB 804还可包括例如I/O逻辑元件(IOL)815的两个实例。连接到IOL 815的实际的I/O焊盘可能不局限于IOL 815的区域。
在图8所示的示例中,例如由区域805、807和808形成的裸片中心附近的列状区域可以用于配置、时钟和其他控制逻辑。从该列延伸的水平区域809可用于跨越可编程IC的宽度分配时钟和配置信号。
一些利用图8中所示的架构的IC包括附加的逻辑块,这些附加的逻辑块破坏了构成IC大部分的规则的列状结构。附加的逻辑块可以是可编程块和/或专用电路。例如,被描绘为PROC 810和PROC 816的两个或更多个处理器块跨越CLB和BRAM的几个列。
在一个方面,PROC 810和/或PROC 816可以被实施为专用电路,例如,硬连线处理器,其被制造为实施IC的可编程电路的裸片的一部分。PROC 810和/或PROC 816可以代表各种不同的处理器类型和/或系统中的任何一个,其复杂度可以从单个的处理器(例如能够执行程序代码的单个核心)到具有一个或多个核心、模块、协处理器、接口等的整套处理器系统。
在另一方面,可以从架构800中除去PROC 810和/或PROC 816,并且替换为所描述的一个或多个其他类型的可编程块。此外,这样的块可以被用来形成“软处理器”,因为可编程电路的各个块可以被用来形成可以执行程序代码的处理器,就像PROC 810和/或PROC816的情况一样。
短语“可编程电路”是指IC内的可编程电路元件(例如,本文所述的各种可编程或可配置电路块或片)以及根据加载到IC的配置数据有选择性地耦接各种电路块、片和/或元件的互连电路。例如,图8中所示的PROC 810外部的电路块(例如CLB 802和BRAM 803)被视为IC的可编程电路。
如本文所讨论的,PROC 810能够执行第一操作系统,而PROC 816能够执行第二不同的操作系统。此外,可用于PROC 810和PROC 816中的每一个的设备可以是不同的,并且由在启动时在架构800内执行的第一级启动加载器所创建的域来定义。
通常,在将配置数据加载到IC之前,可编程电路的功能不能被建立。一组配置比特可用于对IC(例如FPGA)的可编程电路进行编程。一个或多个配置比特通常被称为“配置比特流”。通常,如果不先将配置比特流加载到IC中,可编程电路将无法运行或起作用。配置比特流有效地实现了可编程电路系统中的特定电路设计。例如,电路设计指定了可编程电路块的功能以及各种可编程电路块之间的物理连接。
被“硬接线”或“硬化”的(即不可编程的)电路被制造为IC的一部分。与可编程电路不同,在制造IC之后,通过加载配置比特流不会实施硬接线电路或电路块。例如,硬连线电路通常被认为具有专用电路块和互连,这些专用电路块和互连在不先将配置比特流加载到IC的情况下即可正常工作,例如PROC 810和/或PROC 816。
在某些情况下,硬连线电路可具有一种或多种操作模式,其可根据寄存器设置或存储在IC内的一个或多个存储元件中的值来设置或选择。例如,可以通过将配置数据加载到IC中来设置操作模式。尽管具有这种能力,但是硬接线电路不被认为是可编程电路,因为当硬接线电路被制造为IC的一部分时,硬接线电路便是可操作的并且具有特定的功能。
图8旨在说明可用于实施包括可编程电路的IC的示例架构,例如可编程结构。例如,图8顶部包含的列中逻辑块的数量、列的相对宽度、列的数量和顺序、列中包含的逻辑块的类型、逻辑块的相对大小以及互连/逻辑实施仅是说明性的。例如,在实际的IC中,CLB出现的地方通常都包括一个以上的相邻列的CLB,以助于用户电路设计的有效实施。然而,相邻的CLB列的数量可能会随IC的整体尺寸而变化。此外,IC中例如PROC 810之类的模块的大小和/或位置仅用于说明目的,并不旨在作为限制。
为了解释的目的,阐述了特定的命名以提供对本文公开的各种发明概念的透彻理解。然而,本文所使用的术语仅出于描述本发明布置的特定方面的目的,并不旨在作为本发明的限制。
如本文所定义,单数形式“一”,“一个”和“该”也意图包括复数形式,除非上下文另外明确指出。
如本文所定义,除非另外明确指出,否则术语“至少一个”,“一个或多个”和“和/或”是开放式的,其在操作上是结合的和分离的。例如,每个表达“A、B和C中的至少一个”,“A、B或C中的至少一个”,“A、B和C中的一个或多个”,“A、B或C中的一个或多个”表示单独的A,单独的B,单独的C,A和B一起,A和C一起,B和C一起或A、B和C一起。
如本文所定义的,术语“自动”是指没有用户干预。如本文所定义,术语“用户”是指人。
如本文所定义,术语“计算机可读存储介质”是指包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序代码的存储介质。如本文所定义的,“计算机可读存储介质”本身不是暂时的传播信号。计算机可读存储介质可以是但不限于电子存储设备、磁性存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。如本文所述,各种形式的存储器都是计算机可读存储介质的示例。计算机可读存储介质的更具体示例的非详尽列表可以包括:便携式计算机磁盘、硬盘、RAM、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存存储器)、电可擦除可编程只读存储器(EEPROM)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、存储棒、软盘等。
如本文所定义,术语“如果”是指“当…时”或“在…时”或“响应于…”或“回应于…”,这取决于上下文。因此,短语“如果确定”或“如果检测到[所陈述的条件或事件]”可以被解释为表示“在确定…时”或“响应于确定…”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”或“回应于检测到[所陈述的条件或事件]”,这具体取决于上下文。
如本文所定义,术语“响应于”以及如上所述的类似语言,例如,“如果”、“当…时”或“在…时”,是指容易对动作或事件做出响应或做出反应。响应或反应是自动执行的。因此,如果“响应于”第一动作而执行第二动作,则在第一动作的发生与第二动作的发生之间存在因果关系。术语“响应于”表示因果关系。
如本文所定义,术语“一个实施例”、“某实施例”、“一个或多个实施例”、“特定实施例”或类似语言意味着结合该实施例描述的特定特征、结构或特性包括在本公开内描述的至少一个实施例中。因此,贯穿本公开内容的短语“在一个实施例中”、“在某实施例中”、“在一个或多个实施例中”、“在特定实施例中”和类似语言可能但并非必须全部指代同一个的实施例。在本公开内容中,术语“实施例”和“布置”可互换使用。
如本文所定义的,术语“处理器”是指至少一个硬件电路。硬件电路可以被配置为执行程序代码中包含的指令。硬件电路可以是集成电路。处理器的示例包括但不限于中央处理器(CPU)、阵列处理器、矢量处理器、数字信号处理器(DSP)、可编程逻辑阵列(PLA)、ASIC和控制器。
如本文所定义的,术语“输出”是指在例如设备的物理存储元件中存储、向显示器或其他外围输出设备写入、向另一系统发送或传输/导出等。
如本文所定义的,术语“实时”是指对于要进行的特定进程或决定而言,用户或系统感测到足够即时的处理响应速度,或者使处理器能够跟上某些外部过程的处理响应速度。
如本文所定义的,术语“基本上”是指不需要精确地实现所列举的特性、参数或值,而是存在偏差或变化,包括例如公差、测量误差、测量精度限制和本领域技术人员已知的其他因素,可能以不排除该特性旨在提供的效果的量出现。
这里可以使用术语第一、第二等来描述各种元件。这些元件不应受这些术语的限制,因为除非另有说明或上下文另有明确说明,否则这些术语仅用于将一个要素与另一个要素区分开。
计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质,其中计算机可读程序指令用于使处理器执行本文所述的发明布置的各个方面。在本公开内,术语“程序代码”与术语“计算机可读程序指令”可互换使用。此处描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备中,或者通过网络(例如,互联网、LAN、WAN和/或无线网络)下载到外部计算机或外部存储设备中。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或包括边缘服务器的边缘设备。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且将计算机可读程序指令转发以存储在相应的计算/处理设备内的计算机可读存储介质中。
用于执行本文所述的发明布置的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令,机器相关指令、微代码、固件指令或以一种或多种编程语言(包括面向对象的编程语言和/或过程编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以包括状态设置数据。计算机可读程序指令可以完全在用户计算机上执行,部分在用户计算机上作为独立软件包执行或者部分在用户计算机上、部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括LAN或WAN)连接到用户的计算机,或者可以与外部计算机建立连接(例如,通过使用网络服务提供商的网络)。在某些情况下,包括例如可编程逻辑电路、FPGA或PLA的电子电路可以通过使用计算机可读程序指令的状态信息来执行计算机可读程序指令以个性化电子电路,从而执行本文所述的发明布置的各个方面。
这里参考方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述了本发明布置的某些方面。将理解的是,流程图说明和/或框图的每个框以及流程图说明和/或框图中的框的组合可以由例如程序代码的计算机可读程序指令来实施。
可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,从而使通过计算机或其他可编程数据处理设备的处理器执行的指令创建用于实施流程图和/或框图方框中指定的功能/行为。这些计算机可读程序指令也可以存储在计算机可读存储介质中,指令可以指示计算机、可编程数据处理装置和/或其他设备以特定方式起作用,从而使得其中存储有指令的计算机可读存储介质包括各种制品,这些制品包括指令以实施在流程图和/或框图方框中指定的操作的各个方面。
也可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上,从而在计算机、其他可编程装置或其他设备上执行一系列操作以产生计算机实施的过程,这样使得在计算机、其他可编程装置或其他设备上执行的指令实施流程图和/或框图方框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明布置的各个方面的系统、方法和计算机程序产品的可能实施的架构、功能和操作。就这一点而言,流程图或框图中的每个方框可以代表指令的模块、段或部分,其包括用于实施指定操作的一个或多个可执行指令。
在一些替代实施方式中,方框中指出的操作可以不按图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个方框可以基本上同时执行,或者有时可以以相反的顺序执行。在其他示例中,通常可以以数字变大的顺序来执行方框,而在其他示例中,可以以变化的顺序来执行一个或多个方框,每个方框的结果被存储并使用在随后的框中或不立即跟随的其他框中。还应注意,框图和/或流程图说明中的每个方框以及框图和/或流程图说明中的方框的组合可以由基于专用硬件的系统执行,该系统执行指定的功能或作用或执行专用硬件和计算机指令的组合。
可以在下文的权利要求书中找到的所有方法或步骤以及功能元件的相应结构、材料、动作和等价物旨在包括与具体要求保护的其他元件组合地执行功能的任何结构、材料或动作。
在一个或多个实施例中,一种方法可以包括:接收硬件描述文件,所述硬件描述文件指定异构SoC内可用的多个处理器和多个硬件资源;以及使用计算机硬件为异构SoC创建多个域,其中每个域包括从多个处理器中选择的处理器和从多个硬件资源中选择的硬件资源。该方法可以包括:使用计算机硬件将操作系统分配给每个域;以及使用计算机硬件生成平台,其中平台被配置为在异构SoC内实现多个域。
在一方面,平台包括用于配置异构SoC的隔离电路的配置数据。
在另一方面,平台包括第一级启动加载器,其被配置为使异构SoC的处理器系统初始化。
在另一方面,对于多个域中的所选择的域,平台包括用于分配给所选择的域的操作系统的设备树,其中设备树是基于从多个硬件资源中所选择的硬件资源而生成的。
在另一方面,每个域在逻辑上被实施在所述异构SoC内。
在另一方面,该方法可以包括使用硬件描述文件为异构SoC修改多个域中的至少一个域。
在另一方面,平台包括用于多个域的多个工件,以供软件开发环境使用。因此,该方法可以包括使用从多个工件中选择的对应于所选择的域的工件来为多个域中的所选择的域生成可执行程序代码。
在另一方面,每个域被分配可用的随机存取存储器的一部分。
在一个或多个实施例中,系统包括存储器和处理器,其中存储器被配置为存储程序代码,处理器被耦接至该存储器。响应于执行程序代码,处理器被配置为开始操作。可执行的操作可以包括:接收硬件描述文件,所述硬件描述文件指定异构SoC内可用的多个处理器和多个硬件资源;以及为异构SoC创建多个域,其中每个域包括从多个处理器中选择的处理器和从多个硬件资源中选择的硬件资源。操作可以包括:将操作系统分配给每个域;以及生成平台,其中平台被配置为在异构SoC内实现多个域。
在一方面,平台包括用于配置异构SoC的隔离电路的配置数据。
在另一方面,平台包括第一级启动加载器,其被配置为使异构SoC的处理器系统初始化。
在另一方面,对于多个域中的所选择的域,平台包括设备树,其中设备树用于被分配给所选择的域的操作系统,并且设备树是基于从多个硬件资源中所选择的硬件资源而生成的。
在另一方面,每个域在逻辑上被实施在所述异构SoC内。
在另一方面,处理器被配置为开始可执行的操作可以包括使用硬件描述文件为异构SoC修改多个域中的至少一个域。
在另一方面,平台包括用于多个域的多个工件,以供软件开发环境使用。因此,处理器被配置为开始可执行的操作可以包括使用从多个工件中选择的对应于所选择的域的工件来为多个域中的所选择的域生成可执行程序代码。
在另一方面,每个域被分配可用的随机存取存储器的一部分。
在一个或多个实施例中,计算机程序产品包括其上存储有程序代码的计算机可读存储介质。程序代码可由计算机硬件执行以开始操作。该操作可以包括:接收硬件描述文件,所述硬件描述文件指定异构SoC内可用的多个处理器和多个硬件资源;以及为异构SoC创建多个域,其中每个域包括从多个处理器中选择的处理器和从多个硬件资源中选择的硬件资源。操作可以包括:将操作系统分配给每个域;以及生成平台,其中平台被配置为在异构SoC内实现多个域。
在一方面,平台包括用于配置异构SoC的隔离电路的配置数据。
在另一方面,平台包括第一级引导加载器,其被配置为使异构SoC的处理器系统初始化。
在另一方面,对于多个域中的所选择的域,平台包括设备树,其中设备树是用于分配给从所选择的域的操作系统,并且设备树是基于从多个硬件资源中所选择的硬件资源而生成的。
在另一方面,每个域在逻辑上被实施在所述异构SoC内。
在另一方面,程序代码可由计算机硬件执行以开始操作,该操作可以包括使用硬件描述文件来为异构SoC修改多个域中的至少一个域。
在另一方面,平台包括用于多个域的多个工件,以供软件开发环境使用。因此,计算机硬件执行程序代码以开始操作可以包括使用从多个工件中选择的对应于所选择的域的工件来为多个域中的所选择的域生成可执行程序代码。
在另一方面,每个域被分配可用的随机存取存储器的一部分。
本文提供的发明性布置的描述是出于说明的目的,而不是穷举性的或受限于所公开的形式和示例。选择这里使用的术语来解释发明布置的原理、对市场上发现的技术的实际应用或对技术的改进,和/或使本领域的其他普通技术人员能够理解这里公开的发明性布置。在不脱离所描述的发明布置的范围和精神的情况下,修改和变化对本领域普通技术人员而言是显而易见的。因此,应参考以下权利要求,而不是前文的公开内容,以指示这种特征和实施方式的范围。

Claims (15)

1.一种方法,其特征在于,所述方法包括:
接收硬件描述文件,所述硬件描述文件指定异构片上系统SoC内可用的多个处理器和多个硬件资源;
使用计算机硬件为所述异构SoC创建多个域,其中每个域包括从所述多个处理器中选择的处理器和从所述多个硬件资源中选择的硬件资源;
使用所述计算机硬件将操作系统分配给每个域;以及
使用所述计算机硬件生成平台,所述平台被配置为在所述异构SoC中实现所述多个域。
2.根据权利要求1所述的方法,其特征在于,所述平台包括配置数据,所述配置数据用于配置所述异构SoC的隔离电路。
3.根据权利要求1或2所述的方法,其特征在于,所述平台包括第一级启动加载器,所述第一级启动加载器被配置为使所述异构SoC的处理器系统初始化。
4.根据权利要求1-3中任一项所述的方法,其特征在于,对于所述多个域中所选择的域,所述平台包括用于分配给所述所选择的域的操作系统的设备树,其中所述设备树是基于从所述多个硬件资源中所选择的硬件资源而生成的。
5.根据权利要求1-4中的任一项所述的方法,其特征在于,每个域在逻辑上被实施在所述异构SoC内。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
使用所述硬件描述文件为所述异构SoC修改所述多个域中的至少一个域。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述平台包括用于所述多个域的多个工件,以供软件开发环境使用,所述方法进一步包括:
使用从所述多个工件中选择的对应于所选择的域的工件来为所述多个域中的所选择的域生成可执行程序代码。
8.根据权利要求1-7中任一项所述的方法,其特征在于,每个域被分配可用的随机存取存储器的一部分。
9.一种系统,其特征在于,所述系统包括:
用于存储程序代码的存储器;以及
耦接到所述存储器的处理器,所述处理器被配置为响应于执行所述程序代码而开始操作,所述操作包括:
接收硬件描述文件,所述硬件描述文件指定异构片上系统SoC内可用的多个处理器和多个硬件资源;
为所述异构SoC创建多个域,其中每个域包括从所述多个处理器中选择的处理器和从所述多个硬件资源中选择的硬件资源;
为每个域分配操作系统;以及
生成平台,所述平台被配置为在所述异构SoC内实现所述多个域。
10.根据权利要求9所述的系统,其特征在于,所述平台包括配置数据,所述配置数据用于配置所述异构SoC的隔离电路。
11.根据权利要求9或10所述的系统,其特征在于,所述平台包括第一级启动加载器,所述第一级启动加载器被配置为使所述异构SoC的处理器系统初始化。
12.根据权利要求9-11中的任一项所述的系统,其特征在于,对于从所述多个域中所选择的域,所述平台包括用于分配给所述所选择的域的操作系统的设备树,其中所述设备树是基于从所述多个硬件资源中选择的硬件资源而生成的。
13.根据权利要求9-12中的任一项所述的系统,其特征在于,每个域在逻辑上被实施在所述异构SoC内,并且每个域被分配可用的随机存取存储器的一部分。
14.根据权利要求9-13中任一项所述的系统,其特征在于,所述处理器被配置为开始操作,所述操作还包括:
使用所述硬件描述文件为所述异构SoC修改所述多个域中的至少一个域。
15.根据权利要求9-14中任一项所述的系统,其特征在于,所述平台包括用于所述多个域的多个工件,以供软件开发环境使用,其中所述处理器被配置为开始操作,所述操作还包括:
使用从所述多个工件中选择的对应于所选择的域的工件来为所述多个域中的所选择的域生成可执行程序代码。
CN201980024370.XA 2018-04-18 2019-03-11 用于异构片上系统的软件定义多域创建和隔离 Pending CN112005211A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/956,480 2018-04-18
US15/956,480 US10853134B2 (en) 2018-04-18 2018-04-18 Software defined multi-domain creation and isolation for a heterogeneous System-on-Chip
PCT/US2019/021571 WO2019203956A1 (en) 2018-04-18 2019-03-11 Software defined multi-domain creation isolation for a heterogeneous system-on-chip

Publications (1)

Publication Number Publication Date
CN112005211A true CN112005211A (zh) 2020-11-27

Family

ID=65911267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980024370.XA Pending CN112005211A (zh) 2018-04-18 2019-03-11 用于异构片上系统的软件定义多域创建和隔离

Country Status (6)

Country Link
US (1) US10853134B2 (zh)
EP (1) EP3759601A1 (zh)
JP (1) JP7250043B2 (zh)
KR (1) KR102610567B1 (zh)
CN (1) CN112005211A (zh)
WO (1) WO2019203956A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112562767A (zh) * 2020-12-29 2021-03-26 国家数字交换系统工程技术研究中心 一种晶上软件定义互连网络装置与方法
CN112732183A (zh) * 2020-12-30 2021-04-30 科东(广州)软件科技有限公司 异构系统存储设备的访问方法、装置、设备及存储介质
CN116610388A (zh) * 2023-07-19 2023-08-18 成都泰格微电子研究所有限责任公司 一种快速启动ADC和linux系统的方法及装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10673439B1 (en) 2019-03-27 2020-06-02 Xilinx, Inc. Adaptive integrated programmable device platform
US11188684B2 (en) 2019-11-15 2021-11-30 Xilinx, Inc. Software defined subsystem creation for heterogeneous integrated circuits
US11055106B1 (en) * 2019-12-18 2021-07-06 Xilinx, Inc. Bootstrapping a programmable integrated circuit based network interface card
US11593126B1 (en) 2020-07-14 2023-02-28 Xilinx, Inc. Implementation for a heterogeneous device
CN112231001A (zh) * 2020-10-14 2021-01-15 佛吉亚歌乐电子(佛山)有限公司 车辆双系统兼容控制方法、系统、存储介质和车载终端
US20240004776A1 (en) * 2020-10-22 2024-01-04 Arizona Board Of Regents On Behalf Of Arizona State University User-space emulation framework for heterogeneous soc design
EP4092556A1 (en) * 2021-05-20 2022-11-23 Nordic Semiconductor ASA Bus decoder
US11586476B2 (en) * 2021-05-24 2023-02-21 Nxp Usa, Inc. Resource sharing in a multi-core system
CN115185880B (zh) * 2022-09-09 2022-12-09 南京芯驰半导体科技有限公司 一种数据存储方法及装置
CN115983173B (zh) * 2023-03-21 2023-07-07 湖北芯擎科技有限公司 寄存器模型生成方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054511A1 (en) * 2010-08-31 2012-03-01 Sonics, Inc Intelligent power controller
US8639487B1 (en) * 2003-03-25 2014-01-28 Cadence Design Systems, Inc. Method for multiple processor system-on-a-chip hardware and software cogeneration
US20160103723A1 (en) * 2014-10-14 2016-04-14 Spansion Llc System-on-chip verification
CN107077521A (zh) * 2014-12-20 2017-08-18 英特尔公司 片上系统配置元数据
CN107111663A (zh) * 2014-11-12 2017-08-29 赛灵思公司 目标为可编程集成电路的异构型多处理器程序编译

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311011B2 (en) * 2013-08-07 2016-04-12 Qualcomm Incorporated Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems
US10394731B2 (en) * 2014-12-19 2019-08-27 Amazon Technologies, Inc. System on a chip comprising reconfigurable resources for multiple compute sub-systems
US10628225B2 (en) * 2015-08-18 2020-04-21 Nippon Telegraph And Telephone Corporation Resource configuration system, resource configuration method and resource configuration program for selecting a computational resource and selecting a provisioning method
US9940483B2 (en) * 2016-01-25 2018-04-10 Raytheon Company Firmware security interface for field programmable gate arrays
US10289785B1 (en) 2016-09-15 2019-05-14 Xilinx, Inc. Platform architecture creation for a system-on-chip
US11099894B2 (en) * 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8639487B1 (en) * 2003-03-25 2014-01-28 Cadence Design Systems, Inc. Method for multiple processor system-on-a-chip hardware and software cogeneration
US20120054511A1 (en) * 2010-08-31 2012-03-01 Sonics, Inc Intelligent power controller
US20160103723A1 (en) * 2014-10-14 2016-04-14 Spansion Llc System-on-chip verification
CN107111663A (zh) * 2014-11-12 2017-08-29 赛灵思公司 目标为可编程集成电路的异构型多处理器程序编译
CN107077521A (zh) * 2014-12-20 2017-08-18 英特尔公司 片上系统配置元数据

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112562767A (zh) * 2020-12-29 2021-03-26 国家数字交换系统工程技术研究中心 一种晶上软件定义互连网络装置与方法
CN112562767B (zh) * 2020-12-29 2021-09-28 国家数字交换系统工程技术研究中心 一种晶上软件定义互连网络装置与方法
CN112732183A (zh) * 2020-12-30 2021-04-30 科东(广州)软件科技有限公司 异构系统存储设备的访问方法、装置、设备及存储介质
CN116610388A (zh) * 2023-07-19 2023-08-18 成都泰格微电子研究所有限责任公司 一种快速启动ADC和linux系统的方法及装置
CN116610388B (zh) * 2023-07-19 2023-09-19 成都泰格微电子研究所有限责任公司 一种快速启动ADC和linux系统的方法及装置

Also Published As

Publication number Publication date
JP2021521533A (ja) 2021-08-26
US10853134B2 (en) 2020-12-01
JP7250043B2 (ja) 2023-03-31
EP3759601A1 (en) 2021-01-06
KR20210002537A (ko) 2021-01-08
KR102610567B1 (ko) 2023-12-05
US20190324806A1 (en) 2019-10-24
WO2019203956A1 (en) 2019-10-24

Similar Documents

Publication Publication Date Title
JP7250043B2 (ja) 異種システムオンチップのためのソフトウェア定義マルチドメイン作成分離
US10705995B2 (en) Configurable logic platform with multiple reconfigurable regions
JP6886014B2 (ja) 再構成可能な論理デバイス内の以前に記憶した論理へのアクセスの制御
US11860810B2 (en) Configurable logic platform
CN107015845B (zh) Gpu虚拟化
US10893005B2 (en) Partial reconfiguration for Network-on-Chip (NoC)
CN110088734B (zh) 逻辑储存库服务
US20190042329A1 (en) System with programmable multi-context accelerator circuitry
US10289785B1 (en) Platform architecture creation for a system-on-chip
US11360925B2 (en) Method and apparatus for host adaptation to a change of persona of a configurable integrated circuit die
WO2017174000A1 (en) Dynamic partitioning of processing hardware
Pham et al. Zucl: A zynq ultrascale+ framework for opencl hls applications
US7370310B1 (en) Static address mapping
US20160378696A1 (en) Exposing memory-mapped io devices to drivers by emulating pci bus and pci device configuration space
CN117480498A (zh) 在运行时间为裸金属服务器动态提供PCIe器件
US20240134811A1 (en) Configurable logic platform

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