KR20210002537A - 이종 시스템 온 칩에 대한 소프트웨어 정의 다중 도메인 생성 및 분리 - Google Patents

이종 시스템 온 칩에 대한 소프트웨어 정의 다중 도메인 생성 및 분리 Download PDF

Info

Publication number
KR20210002537A
KR20210002537A KR1020207032848A KR20207032848A KR20210002537A KR 20210002537 A KR20210002537 A KR 20210002537A KR 1020207032848 A KR1020207032848 A KR 1020207032848A KR 20207032848 A KR20207032848 A KR 20207032848A KR 20210002537 A KR20210002537 A KR 20210002537A
Authority
KR
South Korea
Prior art keywords
domain
domains
soc
hardware
processor
Prior art date
Application number
KR1020207032848A
Other languages
English (en)
Other versions
KR102610567B1 (ko
Inventor
솜둣 자브레
시다스 렐레
간가드하 버드
압파 라오 나리
차이탄야 카마라푸
Original Assignee
자일링크스 인코포레이티드
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 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20210002537A publication Critical patent/KR20210002537A/ko
Application granted granted Critical
Publication of KR102610567B1 publication Critical patent/KR102610567B1/ko

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Stored Programmes (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

이종 시스템 온 칩(SoC)[200] 내에서의 다중 도메인 생성 및 분리는, 이종 SoC[200] 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서[206, 208, 210]를 명시하는 하드웨어 디스크립션 파일[135, 505]을 수신하는 것[705] 및 컴퓨터 하드웨어를 사용하여, 이종 SoC[200]에 대한 복수의 도메인을 생성하는 것[710]을 포함할 수도 있는데, 여기서 각각의 도메인은 복수의 프로세서[206, 208, 210]로부터 선택되는 프로세서 및 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함한다. 방법은, 컴퓨터 하드웨어를 사용하여, 오퍼레이팅 시스템을 각각의 도메인에게 할당하는 것[735] 및 컴퓨터 하드웨어를 사용하여, 이종 SoC[200] 내에서 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 것[750]을 포함할 수도 있다.

Description

이종 시스템 온 칩에 대한 소프트웨어 정의 다중 도메인 생성 및 분리
본 개시는 집적 회로(integrated circuit; IC)에 관한 것으로, 특히, 이종(heterogeneous) 시스템 온 칩(System-on-Chip; SoC) 타입의 IC 내에서 다수의 도메인을 생성 및 분리하는 것에 관한 것이다.
SoC는, 프로그램 코드를 실행할 수 있는 프로세서 및 하나 이상의 다른 서브시스템을 포함하는 집적 회로(IC)의 한 타입을 지칭한다. 프로세서는 다른 서브시스템(들)과 연동하여 동작할 수 있다. 이종 SoC는 두 개 이상의 프로세서를 포함하는 IC를 지칭한다. 프로세서는 상이한 아키텍쳐를 가질 수도 있다, 예를 들면, 상이한 명령어 세트를 활용할 수도 있다. 프로세서는 서로 독립적으로 또한 동작할 수도 있다. 예를 들면, 그러한 이종 SoC의 제1 프로세서는 제1 오퍼레이팅 시스템 및 애플리케이션을 실행할 수도 있고, 한편, 이종 SoC의 제2 프로세서는 제2의 상이한 오퍼레이팅 시스템 및/또는 애플리케이션을 실행할 수도 있다.
하나 이상의 실시형태에서, 방법은 이종 SoC 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서 명시하는 하드웨어 디스크립션 파일(hardware description file)을 수신하는 것 및 컴퓨터 하드웨어를 사용하여, 이종 SoC에 대한 복수의 도메인을 생성하는 것을 포함할 수도 있는데, 여기서 각각의 도메인은 복수의 프로세서로부터 선택되는 프로세서 및 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함한다. 방법은, 컴퓨터 하드웨어를 사용하여, 오퍼레이팅 시스템을 각각의 도메인에게 할당하는 것 및 컴퓨터 하드웨어를 사용하여, 이종 SoC 내에서 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 것을 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 이종 SoC의 분리 회로(isolation circuit)를 구성하기 위한 구성 데이터를 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 이종 SoC의 프로세서 시스템을 초기화하도록 구성되는 제1 단계 부트 로더(boot loader)를 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 복수의 도메인 중 선택된 도메인에 대해, 선택된 도메인에게 할당되는 오퍼레이팅 시스템에 대한 디바이스 트리를 포함할 수도 있다. 디바이스 트리는 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스에 기초하여 생성될 수도 있다.
몇몇 실시형태에서, 각각의 도메인은 이종 SoC 내에서 논리적으로 시행될 수도 있다.
몇몇 실시형태에서, 방법은 하드웨어 디스크립션 파일을 사용하여 이종 SoC에 대한 복수의 도메인 중 적어도 하나의 도메인을 수정하는 것을 더 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 소프트웨어 개발 환경에 의한 사용을 위한 복수의 도메인에 대한 복수의 아티팩트(artifact)를 포함할 수도 있다. 방법은, 선택된 도메인에 대응하는 복수의 아티팩트로부터 선택되는 아티팩트를 사용하여 복수의 도메인 중 선택된 도메인에 대한 실행 가능한 프로그램 코드를 생성하는 것을 더 포함할 수도 있다.
몇몇 실시형태에서, 각각의 도메인은 이용 가능한 랜덤 액세스 메모리의 일부를 할당받을 수도 있다.
하나 이상의 실시형태에서, 시스템은 프로그램 코드를 저장하도록 구성되는 메모리 및 메모리에 커플링되는 프로세서를 포함한다. 프로세서는, 프로그램 코드를 실행하는 것에 응답하여, 동작을 개시하도록 구성된다. 실행 가능한 동작은, 이종 SoC 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서를 명시하는 하드웨어 디스크립션 파일을 수신하는 것 및 이종 SoC에 대한 복수의 도메인을 생성하는 것을 포함할 수도 있는데, 여기서 각각의 도메인은 복수의 프로세서로부터 선택되는 프로세서 및 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함한다. 동작은, 오퍼레이팅 시스템을 각각의 도메인에게 할당하는 것 및 이종 SoC 내에서 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 것을 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 이종 SoC의 분리 회로를 구성하기 위한 구성 데이터를 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 이종 SoC의 프로세서 시스템을 초기화하도록 구성되는 제1 단계 부트 로더를 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 복수의 도메인 중 선택된 도메인에 대해, 선택된 도메인에게 할당되는 오퍼레이팅 시스템에 대한 디바이스 트리를 포함할 수도 있다. 디바이스 트리는 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스에 기초하여 생성될 수도 있다.
몇몇 실시형태에서, 각각의 도메인은 이종 SoC 내에서 논리적으로 시행될 수도 있다.
몇몇 실시형태에서, 프로세서는, 하드웨어 디스크립션 파일을 사용하여 이종 SoC에 대한 복수의 도메인 중 적어도 하나의 도메인을 수정하는 것을 더 포함하는 동작을 개시하도록 구성될 수도 있다.
몇몇 실시형태에서, 플랫폼은 소프트웨어 개발 환경에 의한 사용을 위한 복수의 도메인에 대한 복수의 아티팩트(artifact)를 포함할 수도 있다. 프로세서는, 선택된 도메인에 대응하는 복수의 아티팩트로부터 선택되는 아티팩트를 사용하여 복수의 도메인 중 선택된 도메인에 대한 실행 가능한 프로그램 코드를 생성하는 것을 더 포함하는 동작을 개시하도록 구성될 수도 있다.
몇몇 실시형태에서, 각각의 도메인은 이용 가능한 랜덤 액세스 메모리의 일부를 할당받을 수도 있다.
하나 이상의 실시형태에서, 컴퓨터 프로그램 제품은, 프로그램 코드를 저장한 컴퓨터 판독 가능 저장 매체를 포함한다. 프로그램 코드는 동작을 개시하기 위해 컴퓨터 하드웨어에 의해 실행 가능하다. 동작은, 이종 SoC 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서를 명시하는 하드웨어 디스크립션 파일을 수신하는 것 및 이종 SoC에 대한 복수의 도메인을 생성하는 것을 포함할 수도 있는데, 여기서 각각의 도메인은 복수의 프로세서로부터 선택되는 프로세서 및 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함한다. 동작은, 오퍼레이팅 시스템을 각각의 도메인에게 할당하는 것 및 이종 SoC 내에서 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 것을 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 이종 SoC의 분리 회로를 구성하기 위한 구성 데이터를 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 이종 SoC의 프로세서 시스템을 초기화하도록 구성되는 제1 단계 부트 로더를 포함할 수도 있다.
몇몇 실시형태에서, 플랫폼은 복수의 도메인 중 선택된 도메인에 대해, 선택된 도메인에게 할당되는 오퍼레이팅 시스템에 대한 디바이스 트리를 포함할 수도 있다. 디바이스 트리는 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스에 기초하여 생성될 수도 있다.
이 개요 섹션은 소정의 개념을 소개하기 위해 제공되는 것에 불과하며 청구된 주제의 임의의 주요한 또는 본질적인 피쳐를 식별하기 위해 제공되는 것은 아니다. 독창적인 배열(inventive arrangement)의 다른 피쳐는 첨부의 도면으로부터 그리고 다음의 상세한 설명으로부터 명백해질 것이다.
독창적인 배열은 첨부의 도면에서 예로서 예시된다. 그러나, 도면은 독창적인 배열을 도시되는 특정한 구현예로만 제한하는 것으로 해석되지 않아야 한다. 다음의 상세한 설명을 재검토하고 도면을 참조하면, 다양한 양태 및 이점이 명백해질 것이다.
도 1은 본 개시 내에서 설명되는 하나 이상의 실시형태와 함께 사용하기 위한 예시적인 시스템을 예시한다.
도 2는 이종 SoC의 예를 예시한다.
도 3은 분리 회로의 예를 예시한다.
도 4는 분리 회로의 또 다른 예를 예시한다.
도 5는 이종 SoC 내에서 다수의 도메인을 생성하고 분리하는 예를 예시한다.
도 6은 이종 SoC에 대한 다수의 도메인의 예를 예시한다.
도 7은 이종 SoC 내에서 다수의 도메인을 생성하고 분리하는 예시적인 방법을 예시한다.
도 8은 SoC 타입의 IC에 대한 예시적인 아키텍쳐를 예시한다.
본 개시가 신규의 피쳐를 정의하는 청구범위로 종결되지만, 본 개시 내에서 설명되는 다양한 피쳐는 도면과 연계한 설명의 고려로부터 더 잘 이해될 것으로 여겨진다. 본원에서 설명되는 프로세스(들), 머신(들), 제조(들) 및 이들의 임의의 변형은 예시의 목적을 위해 제공된다. 본 개시 내에서 설명되는 특정한 구조적 및 기능적 세부 사항은 제한적인 것으로 해석되어야 하는 것이 아니라, 단지 청구범위에 대한 기초로서 그리고 실질적으로 임의의 적절하게 상세한 구조체에서 설명되는 피쳐를 다양하게 활용할 것을 기술 분야의 숙련된 자에게 교시하기 위한 대표적인 기초로서 해석되어야 한다. 게다가, 본 개시 내에서 사용되는 용어 및 어구(phrase)는 제한하도록 의도되는 것이 아니라, 오히려, 설명되는 피쳐의 이해 가능한 설명을 제공하도록 의도된다.
본 개시는 IC에 관한 것으로, 특히 이종 SoC 내에서 다수의 도메인을 생성 및 분리하는 것에 관한 것이다. 본원에서 개시되는 독창적인 배열에 따르면, 상이한 도메인, 예를 들면, 소프트웨어 도메인이 이종 SoC 내에서의 구현을 위해 생성될 수도 있다. 각각의 도메인은, 사실상, 이종 SoC의 서브시스템을 구현한다. 도메인은, 하드웨어 설계 도구가 아닌, 애플리케이션 레벨 도구를 사용하여 생성될 수도 있다. 이종 SoC에 대한 각각의 도메인은, 하드웨어이든 및/또는 소프트웨어이든 간에, 다양한 리소스를 포함하도록 생성될 수도 있다. 각각의 도메인은, 이종 SoC에서 구현될 때, 이종 SoC에서 이용 가능한 하드웨어 분리 피쳐를 활용하는 것에 의해 하나 이상의 임베딩된 애플리케이션을 구현 및/또는 실행하기 위해 사용될 수도 있다. 설명의 목적을 위해, 용어 "SoC" 또는 "시스템 온 칩"은 본 개시 내에서 이종 SoC를 지칭한다.
하나 이상의 실시형태에서, 설계를 위한 하드웨어 디스크립션 파일을 생성하기 위해, 하드웨어 설계 도구(예를 들면, 전자 설계 자동화(Electronic Design Automation; EDA) 도구)가 사용될 수도 있다. 하드웨어 설계 도구에 의해 생성되는 바와 같은 하드웨어 디스크립션 파일은, 인스턴스화되는, 그러한 만큼, SoC 내에서 구현될 주어진 설계에 의한 사용에 이용 가능한 SoC의 특정한 하드웨어 리소스를 명시한다. 예를 들면, 하드웨어 디스크립션 파일은, SoC의 어떤 프로세서가 사용에 이용 가능한지 및 SoC의 어떤 주변장치 디바이스가 설계에 의한 사용에 이용 가능한지를 명시할 수도 있다. 하드웨어 디스크립션 파일은, 임베딩된 애플리케이션, 예를 들면, SoC 상에서 실행되도록(run) 또는 실행되도록(execute) 생성되는 프로그램 코드에 의해 사용될 수도 있는 SoC의 하드웨어 리소스를 명시한다. 이와 관련하여, SoC는 하드웨어 설계 도구에 의해 생성되는 하드웨어 디스크립션 파일 내에서 정의되는 것보다 더 많은 하드웨어 리소스를 포함할 수도 있다.
하나 이상의 실시형태에서, 하드웨어 디스크립션 파일은 하드웨어 설계 도구로부터 내보내기될(exported) 수도 있고 컴퓨터 기반의 도메인 생성 도구에 의해 가져오기될(imported) 수도 있다. 도메인 생성 도구는 하드웨어 디스크립션 파일에 기초하여 다수의 도메인을 생성할 수 있다. 도메인 생성 도구는, 예를 들면, 하드웨어 디스크립션 파일로부터 복수의 도메인을 정의할 수 있는데, 여기서 각각의 도메인은 프로세서를 포함한다. 도메인 생성 도구는 하드웨어 디스크립션 파일 내에서 명시되는 상이한 하드웨어 리소스를 생성되는 상이한 도메인에게 할당할 수 있다.
도메인 생성 도구는 생성된 도메인을 명시하는 플랫폼을 생성할 수 있다. 플랫폼은 상이한 도메인에 대한 여러 가지 상이한 소프트웨어 아티팩트를 포함할 수도 있다. 한 예로서, 도메인 생성 도구는, 다양한 도메인을 구현하기 위해 SoC로 로딩될 수도 있는 구성 데이터를 생성할 수 있다. 구성 데이터는, SoC로 로딩될 때, 도메인을 생성할 수 있고 도메인을 서로 분리할 수 있다. 다른 예에서, 도메인 생성 도구는 상이한 도메인에 맞춰지는 하나 이상의 소프트웨어 아티팩트를 생성할 수 있다. 소프트웨어 아티팩트는, 도메인 중 특정한 도메인에서의 실행을 위해 의도되는 실행 가능한 프로그램 코드(예를 들면, 임베딩된 애플리케이션)를 생성하기 위해 사용될 수도 있다.
하나 이상의 실시형태에서, 도메인 생성 도구는 또한 하드웨어 설계 시스템으로부터 생성되는 도메인을 수정할 수 있다. 예를 들면, 소프트웨어 개발자는, 원래의 도메인을 생성하기 위해 최초 사용되었던 원래의 하드웨어 디스크립션 파일에 기초하여 상이한 도메인 중 하나 이상을 수정하기 위해 도메인 생성 도구를 활용할 수도 있다. 따라서, SoC의 도메인을 변경 및/또는 수정하기 위해, 하드웨어 설계 애플리케이션에 의해 새로운 및/또는 상이한 하드웨어 디스크립션 파일이 생성될 필요가 없다.
독창적인 배열의 또 다른 양태는 도면을 참조하여 하기에서 더욱 상세하게 설명된다. 예시의 단순성 및 명확성의 목적을 위해, 도면에 도시되는 엘리먼트는 반드시 일정한 비율로 묘화된 것은 아니다. 예를 들면, 엘리먼트 중 몇몇의 치수는, 명확성을 위해, 다른 엘리먼트에 비해 과장될 수도 있다. 게다가, 적절한 것으로 간주되는 경우, 대응하는, 유사한, 또는 같은 피쳐를 나타내기 위해, 도면 사이에서 참조 번호가 반복된다.
도 1은 본원에서 설명되는 하나 이상의 실시형태와 함께 사용하기 위한 예시적인 시스템(100)을 예시한다. 시스템(100)은, 컴퓨터, 서버, 휴대용 컴퓨터 예컨대 랩탑 또는 태블릿 컴퓨터, 또는 다른 데이터 프로세싱 시스템을 구현하기 위해 사용될 수도 있는 컴퓨터 하드웨어의 한 예이다. 컴퓨터 하드웨어를 사용하여 구현되는 시스템 또는 디바이스는, SoC 내에서 다수의 도메인을 생성하고 분리하는 것 및/또는 SoC 내에서 구현하기 위한 회로 설계를 프로세싱하는 것에 관련이 있는 본원에서 설명되는 다양한 동작을 수행할 수 있다.
도 1의 예에서, 시스템(100)은 적어도 하나의 프로세서(105)를 포함한다. 프로세서(105)는 인터페이스 회로부(interface circuitry)(115)를 통해 메모리(110)에 커플링된다. 시스템(100)은 메모리(110) 내에 컴퓨터 판독 가능 명령어("프로그램 코드"로 또한 지칭됨)를 저장할 수 있다. 메모리(110)는 컴퓨터 판독 가능 저장 매체의 한 예이다. 프로세서(105)는 인터페이스 회로부(115)를 통해 메모리(110)로부터 액세스되는 프로그램 코드를 실행할 수 있다.
메모리(110)는, 예를 들면, 로컬 메모리 및 벌크 스토리지 디바이스(bulk storage device)와 같은 하나 이상의 물리적 메모리 디바이스를 포함할 수도 있다. 로컬 메모리는, 프로그램 코드의 실제 실행 동안 일반적으로 사용되는 비영구적 메모리 디바이스(들)를 지칭한다. 로컬 메모리의 예는, 랜덤 액세스 메모리(random-access memory; RAM) 및/또는 프로그램 코드의 실행 동안 프로세서에 의한 사용에 적절한 다양한 타입의 RAM 중 임의의 것(예를 들면, 동적 RAM(dynamic RAM) 또는 "DRAM" 또는 정적 RAM(static RAM) 또는 "SRAM")을 포함한다. 벌크 스토리지 디바이스는 영구적 데이터 스토리지 디바이스를 지칭한다. 벌크 스토리지 디바이스의 예는, 하드 디스크 드라이브(hard disk drive; HDD), 솔리드 스테이트 드라이브(solid-state drive; SSD), 플래시 메모리, 리드 온리 메모리(read-only memory; ROM), 소거 가능한 프로그래밍 가능한 리드 온리 메모리(erasable programmable read-only memory; EPROM), 전기적으로 소거 가능한 프로그래밍 가능한 리드 온리 메모리(electrically erasable programmable read-only memory; EEPROM), 또는 다른 적절한 메모리를 포함하지만, 그러나 이들로 제한되지는 않는다. 시스템(100)은 또한, 실행 동안 벌크 스토리지 디바이스로부터 프로그램 코드가 검색되어야 하는 횟수를 감소시키기 위해, 적어도 몇몇 프로그램 코드의 일시적 저장을 제공하는 하나 이상의 캐시 메모리(도시되지 않음)를 포함할 수도 있다.
메모리(110)는 프로그램 코드 및/또는 데이터를 저장할 수 있다. 예를 들면, 메모리(110)는 다양한 루틴, 프로그램, 오브젝트, 컴포넌트, 로직, 다른 적절한 명령어, 및/또는 다른 데이터 구조를 저장할 수 있다. 예시의 목적을 위해, 메모리(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)는 다양한 버스 아키텍쳐 중 임의의 것을 사용하여 구현될 수도 있다. 버스 아키텍쳐의 예는, 향상된 산업 표준 아키텍쳐(Enhanced Industry Standard Architecture; EISA) 버스, 가속 그래픽 포트(Accelerated Graphics Port; AGP), 비디오 전자 표준화 협회(Video Electronics Standards Association; VESA) 로컬 버스, 범용 직렬 버스(Universal Serial Bus; USB), 및 주변 장치 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express; PCIe) 버스를 포함할 수도 있지만, 그러나 이들로 제한되지는 않는다.
시스템(100)은 인터페이스 회로부(115)에 커플링되는 하나 이상의 I/O 디바이스(120)를 더 포함할 수도 있다. I/O 디바이스(120)는, 직접적으로 또는 개재하는 I/O 컨트롤러를 통해, 시스템(100), 예를 들면, 인터페이스 회로부(115)에 커플링될 수도 있다. I/O 디바이스(120)의 예는, 키보드, 디스플레이 디바이스, 포인팅 디바이스, 하나 이상의 통신 포트, 및 네트워크 어댑터를 포함하지만, 그러나 이들로 제한되지는 않는다. 네트워크 어댑터는, 시스템(100)이 개재하는 개인 또는 공공 네트워크를 통해 다른 시스템, 컴퓨터 시스템, 원격 프린터, 및/또는 원격 스토리지 디바이스에 커플링되는 것을 가능하게 하는 회로부를 지칭한다. 모뎀, 케이블 모뎀, 이더넷(Ethernet) 카드, 및 무선 트랜스시버는, 시스템(100)과 함께 사용될 수도 있는 상이한 타입의 네트워크 어댑터의 예이다.
시스템(100)은, 구현되는 특정한 타입의 디바이스 및/또는 시스템에 의존하여, 도시되는 것보다 더 적은 컴포넌트 또는 도 1에서 예시되지 않은 추가적인 컴포넌트를 포함할 수도 있다. 또한, 포함되는 특정한 오퍼레이팅 시스템, 애플리케이션(들), 및/또는 I/O 디바이스는 시스템 타입에 기초하여 변할 수도 있다. 게다가, 예시적인 컴포넌트 중 하나 이상은 다른 컴포넌트에 통합될 수도 있거나, 또는 다르게는, 다른 컴포넌트의 일부를 형성할 수도 있다. 예를 들면, 프로세서는 적어도 몇몇 메모리를 포함할 수도 있다. 시스템(100)은 도 1의 아키텍쳐 또는 그와 유사한 아키텍쳐를 사용하여 각각 구현되는 복수의 네트워크화된 또는 인터커넥트된 컴퓨터 또는 단일의 컴퓨터를 구현하기 위해 사용될 수도 있다.
본 개시 내에서 설명되는 독창적인 배열은 SoC 내에 복수의 상이한 도메인을 생성할 수 있다. 예를 들면, 도메인 생성 애플리케이션을 실행하는 시스템(100)은, 임베딩된 소프트웨어에 의한 사용에 이용 가능한 하드웨어 환경을 정의하는 하드웨어 디스크립션 파일(135)을 수신할 수 있다. 임베딩된 소프트웨어는 SoC의 특정한 도메인에서 실행되도록(run) 또는 실행되도록(execute) 의도되는 프로그램 코드를 지칭한다.
시스템(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)의 하드웨어에 내장된 영역(hardwired region)이다. 하나 이상의 실시형태에서, 프로그래밍 가능한 회로부(204)는 현장 프로그래밍 가능 게이트 어레이(field programmable gate array; FGPA) 회로부 및/또는 프로그래밍 가능한 로직으로서 구현될 수도 있다. 프로그래밍 가능한 회로부(204)의 포함에 기인하여, SoC(200)는 프로그래밍 가능한 SoC로 또한 지칭될 수도 있다.
일반적으로, 프로그래밍 가능한 회로부(204)의 기능성은, 구성 데이터가 SoC(200)의 구성 메모리 셀(도시되지 않음)로 로딩될 때까지 확립되지 않는다. 프로그래밍 가능한 회로부(204)를 프로그래밍하기 위해 구성 비트 세트가 사용될 수도 있다. 구성 비트(들)는, 통상적으로, "구성 비트스트림" 또는 "비트스트림"으로 지칭된다. 일반적으로, 프로그래밍 가능한 회로부는, 먼저 구성 비트스트림을 SoC(200)로 로딩하지 않고는, 동작하지 않거나 또는 기능하지 않는다. 구성 비트스트림은 프로그래밍 가능한 회로부(204) 내에서 특정한 회로 설계 또는 회로 구조체 및 연결을 효과적으로 구현한다. 회로 설계는, 예를 들면, 프로그래밍 가능한 회로부(204)의 다양한 프로그래밍 가능한 회로 블록 사이의 물리적 연결성 및 프로그래밍 가능한 회로 블록의 기능적 양태를 명시한다.
"하드웨어에 내장된" 또는 "경화된(hardened)", 즉, 프로그래밍 가능하지 않은 회로부는 SoC(200)의 일부로서 제조된다. 프로그래밍 가능한 회로부(204)와는 달리, 경화된 회로부 또는 경화된 회로 블록은, 구성 비트스트림의 로딩을 통해 SoC(200)의 제조 이후에 구현되지 않는다. 경화된 회로부는, 예를 들면, 구성 비트스트림을 SoC(200)로 먼저 로딩하지 않고 기능하는 전용 회로 블록 및 인터커넥트를 갖는 것으로 일반적으로 간주된다.
프로세서 시스템(202)은 여러 가지 상이한 프로세서를 포함한다. 하나의 양태에서, 프로세서 시스템(202)의 상이한 프로세서는 물리적으로 별개인 인스턴스이지만, 그러나, 동일한 아키텍쳐를 갖는다(동일한 명령어 세트 사용함). 다른 양태에서, 프로세서 시스템(202)의 상이한 프로세서는 물리적으로 별개인 인스턴스이고 두 개 이상의 상이한 아키텍쳐를 활용한다(예를 들면, 상이한 명령어 세트를 활용함). 도 2의 예에서, 프로세서 시스템(202)은 애플리케이션 프로세싱 유닛(application processing unit; APU)(206), 실시간 프로세싱 유닛(real-time processing unit; RPU)(208), 및/또는 프로세서(210)를 포함한다.
APU(206)는 하나 이상의 코어를 포함할 수도 있다. 본 개시 내에서의 논의의 목적을 위해, 코어는 프로그램 코드를 실행하도록 구성되는 "프로세서"로 간주된다. RPU(208)는 하나 이상의 코어를 포함할 수도 있다. 하나 이상의 실시형태에서, RPU(208)는 실시간 애플리케이션을 실행할 수 있다. 실시간 애플리케이션의 예는, 자동차, 대용량 스토리지, 모바일 베이스밴드, 의료, 및/또는 산업 애플리케이션을 포함하지만, 그러나 이들로 제한되지는 않는다. APU(206) 및 RPU(208) 둘 모두는, 각각, 분리 회로(230-1 및 230-5)를 통해 프로그래밍 가능한 회로부(204)에 직접적으로 연결될 수도 있다.
언급한 바와 같이, 하나의 양태에서, 상이한 프로세서(예를 들면, 코어를 포함함)는 상이한 아키텍쳐를 가질 수도 있다. 한 예에서, 프로세서(210)는 미국 캘리포니아(CA) 산호세(San Jose) 소재의 Xilinx, Inc.로부터의 MicroBlaze™ 프로세서의 경화된 버전으로서 구현된다. APU(206)는 ARM CORTEX-A9와 같은 영국(UK) 케임브리지(Cambridge) 소재의 Arm Ltd.로부터의 멀티코어 프로세서로서 구현될 수도 있다. RPU(208)는 또한 Arm Ltd로부터 또한 입수 가능한 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)는 온칩 인터커넥트로서 구현된다. 온칩 인터커넥트의 한 예는 AMBA 확장 가능 인터페이스(eXtensible Interface; AXI) 버스이다. AMBA AXI 버스는, 회로 블록 및/또는 시스템 사이의 온칩 연결을 확립함에 있어서 사용하기 위한 임베딩된 마이크로컨트롤러 버스 인터페이스이다. 인터커넥트의 다른 예시적인 구현예는 버스, 크로스바, 네트워크 온 칩(network on chip; NoC), 스위치, 및 등등을 포함할 수도 있지만, 그러나 이들로 제한되지는 않는다.
I/O 서브시스템(212)은 I/O 디바이스(220 및 222)와 같은 복수의 I/O 디바이스를 포함한다. I/O 서브시스템(212)은 두 개보다 더 많은 I/O 디바이스를 포함할 수도 있다. I/O 디바이스(220 및 222)의 각각은 멀티플렉서 I/O(MIO)(224)에 커플링된다. MIO(224)는, SoC(200) 외부의 노드에 대한 그리고 SoC(200)의 다양한 I/O 디바이스에 대한 액세스를, 프로세서 시스템(202) 및/또는 프로그래밍 가능한 회로부(204)에게 제공하도록 구성 가능하다. 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)의 어떤 하드웨어 리소스가 APU(206)와 상호 작용하도록 허용되는지를 조절할 수 있다. 분리 회로(230-7)는 프로세서(210)와 인터커넥트(214) 사이의 신호 경로 내에 있으며 SoC(200)의 어떤 하드웨어 리소스가 프로세서(210)와 상호 작용하도록 허용되는지를 조절할 수 있다.
게다가, 분리 회로(230-8)는 인터커넥트(214)와 I/O 서브시스템(212) 사이의 신호 경로 내에(예를 들면, I/O 디바이스의 각각에 대한 신호 경로에 내에) 있다. 분리 회로(230-8)는 SoC(200)의 어떤 하드웨어 리소스가 I/O 서브시스템(212)과 상호 작용하도록 허용되는지를, 예를 들면, I/O 디바이스 단위 기반으로 조절할 수 있다. 분리 회로(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)를 포함하는 제1 도메인이 생성될 수도 있다. RPU(208), I/O 디바이스(222), 메모리 컨트롤러(216)(예를 들면, RAM의 제2의 상이한 영역) 및 OCM(218)을 포함하는 제2 도메인이 생성될 수도 있다. 이 예에서, 분리 회로(230)는 도메인 분리를 시행하고, 예를 들면, RPU(208)가 I/O 디바이스(220)에 액세스하는 것을 방지하고 APU(206)가 I/O 디바이스(222)에 액세스하는 것을 방지한다. 분리 회로(230)는 또한, APU(206)가 RAM의 제2 영역에 액세스하는 것을 방지하고 RPU(208)가 RAM의 제1 영역에 액세스하는 것을 방지한다.
하나 이상의 실시형태에서, 분리 회로(230) 중 특정한 것은 메모리 보호 유닛으로서 구현될 수도 있다. 예를 들면, 분리 회로(230-6 및 230-9)는 메모리 보호 유닛으로서 구현될 수도 있다. 하나 이상의 다른 실시형태에서, 분리 회로(230) 중 특정한 것은 프로세서 보호 유닛으로서 구현될 수도 있다. 예를 들면, 분리 회로(230-1, 230-2, 230-4, 230-5, 및 230-7)는 프로세서 보호 유닛으로 구현될 수도 있다.
도 3은 분리 회로(230)의 한 예이다. 도 3의 예는 메모리 보호 유닛일 수도 있다. 예시의 목적을 위해, 도 3은 AXI 인터페이스 전문 용어(terminology)를 활용한다. 도 3의 분리 회로(230)는 여러 가지 상이한 버스 및/또는 인터커넥트 프로토콜 중 임의의 것과 함께 작동하도록 구현될 수도 있다는 것이 인식되어야 한다.
도 3의 예에서, 어드레스 범위 체크 회로(305)는, 수신된 트랜잭션의 어드레스가, (예를 들면, 구성 레지스터에 구성 데이터를 기록하는 덕분에) 분리 회로(230)의 구성 레지스터에 저장될 수도 있는 시작 어드레스 및 종료 어드레스에 의해 정의되는 영역 내에 있는지의 여부를 체크한다. 게다가, 마스터 ID(식별자) 회로(310)는, 분리 회로(230)의 구성 레지스터에 저장되는 구성 데이터에 기초하여 유입하는 트랜잭션의 마스터 ID가 허용되는지의 여부를 체크할 수 있다.
분리 회로(230)는 어드레스 범위 체크 회로(305) 및 마스터 ID 회로(310)에 의해 수행되는 체크를 충족하지 않는 임의의 트랜잭션을 허용하지 않을 수도 있다. 분리 회로(230)는 또한 트랜잭션을 중독시킬(poison) 수도 있다(예를 들면, "포이즌(poison)" 신호를 가함). 분리 회로(230)의 구성에 따라, 트랜잭션이 수행되는 체크를 충족하지 못하는 및/또는 포이즌 신호가 어써트되는(asserted) 경우, 인터럽트가 생성될 수도 있다.
도 4는 분리 회로(230)의 다른 예이다. 도 4의 예는 프로세서 보호 유닛일 수도 있다. 예시의 목적을 위해, 도 4는 AXI 인터페이스 전문 용어를 활용한다. 도 4의 분리 회로(230)는 여러 가지 상이한 버스 및/또는 인터커넥트 프로토콜 중 임의의 것과 함께 작동하도록 구현될 수도 있다는 것이 인식되어야 한다.
도 4의 예에서, 분리 회로(230) 내에 저장되는 마스터 ID 목록은, 주변장치에 액세스하도록 허용되는 마스터를 정의하기 위해 사용된다. 분리 회로(230) 내에 저장되는 어퍼쳐 퍼미션 목록(aperture permission list)은, 마스터가 액세스할 수 있는 주변장치 어드레스에 대한 퍼미션을 명시한다. 마스터 ID 체크 회로(410)는 수신된 트랜잭션의 AXI 마스터 ID가 어퍼쳐 퍼미션 목록 내에 있는지를 체크한다. 퍼미션은 마스터 ID에 기초한다. AXI 슬레이브 엔트리는 퍼미션 필드 내의 대응하는 비트로부터 유래한다. 어드레스 범위 회로(405)는, 구성 데이터에 따른, 마스터에 의해 액세스되는 어드레스 범위가 허용되는지를 체크할 수 있다. 요건이 충족되지 않는 경우, 트랜잭션은 중독되고, 옵션 사항으로(optionally) 인터럽트가 생성된다.
도 3 및 도 4 둘 모두를 참조하면, 트랜잭션이 불법이다는(예를 들면, 트랜잭션은 분리 회로(230)에 의해 수행되는 하나의 체크 또는 체크 둘 모두에서 실패함) 것을 결정하는 것에 응답하여 에러 응답 신호, 예를 들면, 포이즌 신호가 생성될 수도 있다. 에러 신호는 데이터 중단 또는 인터럽트 신호가 생성되게 한다.
도 5는 이종 SoC 내에서 다수의 도메인을 생성하고 분리하는 예를 예시한다. 도 5의 예에서, 하드웨어 설계 애플리케이션(505)은 하드웨어 디스크립션 파일(510)을 생성한다. 하드웨어 디스크립션 파일(510)은 사용에 이용 가능한 SoC의 상이한 하드웨어 리소스를 명시한다. 도메인 생성 애플리케이션(515)은 하드웨어 디스크립션 파일(510)을 수신한다. 도메인, 예를 들면, 각기 각각의 도메인에 어떤 프로세서가 포함되는지를 명시하는 유저 입력(520), 각각의 프로세서에 의해 실행될 오퍼레이팅 시스템, 각각의 도메인에서 각각의 프로세서가 이용 가능하게 되는 주변장치 및/또는 메모리에 기초하여, 도메인 생성 애플리케이션(515)은 도메인을 명시하는 플랫폼(525)을 출력한다.
하나 이상의 실시형태에서, 플랫폼(525)은 하나 이상의 소프트웨어 아티팩트를 포함한다. 소프트웨어 아티팩트는, 구성 데이터, 제1 단계 부트 로더, 및/또는 SoC의 상이한 도메인에 대한 임베딩된 애플리케이션을 구축하기 위해 사용될 수도 있는 다른 소프트웨어 아티팩트를 포함할 수도 있다. 예를 들면, 소프트웨어 아티팩트는 상이한 도메인의 각각에 포함되는 주변장치에 대한 드라이버를 포함할 수도 있다.
도 6은 이종 SoC(600)에 대한 다수의 도메인의 한 예를 예시한다. 도 6의 예에서, 도메인(602, 604, 606, 및 660)이 도시되어 있다. 하나의 양태에서, (오퍼레이팅 시스템을 제외한) 도메인(602, 604, 606, 및 660) 내에 도시되는 리소스의 각각은 하드웨어 디스크립션 파일 내에서 이용 가능한 것으로 명시된다. 예시의 목적을 위해, 도메인(602, 604, 및 606)의 각각은 오퍼레이팅 시스템을 활용한다. 도메인(660)은 오퍼레이팅 시스템을 사용하지 않을 수도 있고 하나 이상의 베어 메탈(bare-metal) 및/또는 독립형 애플리케이션(들)을 지원할 수도 있다.
예시되는 바와 같이, 도메인(602)은 프로세서(608), 범용 기기 모델(General Equipment Model; GEM) 인터페이스(614), 직렬 주변장치 인터페이스(Serial Peripheral Interface; SPI)(616), 워치도그 타이머(Watchdog Timer; WDT)(618), 쿼드 직렬 주변장치 인터페이스(Quad Serial Peripheral Interface; QSPI)(620), 및 프로그래밍 가능한 로직 지적 자산(Programmable logic Intellectual Property; PLC IP)(622)을 포함한다. 프로그래밍 가능한 로직 IP는 프로그래밍 가능한 회로부에서 구현되는 IP 또는 코어를 지칭한다. 도메인(604)은 프로세서(610), 타이밍 트리거 및 제어(timing trigger and control; TTC) 인터페이스(630), WDT(632), 범용 비동기식 수신기-송신기(Universal Asynchronous Receiver-Transmitter; UART)(634), 및 PL IP(636)를 포함한다. 도메인(606)은, 프로세서 612, GEM 인터페이스(638), 보안 디지털 입력 출력(SDIO)(640), 범용 직렬 버스(USB)(642), SPI(644), 인터 인터그레이티드 회로(Inter-Integrated Circuit; I2C) 인터페이스(646), I2C 인터페이스(648), UART(650), QSPI(652), WDT(654), 및 주변 장치 컴포넌트 인터커넥트 익스프레스(PCI)(656)를 포함한다. 도메인(660)은 프로세서(662)(예를 들면, 오퍼레이팅 시스템 없음), TTC 인터페이스(664), WDT(668), UART(670), 및 PLIP(672)를 포함한다.
도 7은, SoC 내에서 다수의 도메인을 생성하고 분리하는 것의 예시적인 방법(700)을 예시한다. 방법(700)은 도메인 생성 애플리케이션을 실행하는 도 1을 참조하여 본원에서 설명되는 바와 같은 컴퓨팅 시스템에 의해 수행될 수도 있다.
블록(705)에서, 시스템은 하드웨어 디스크립션 파일을 로딩하거나 또는 수신한다. 하드웨어 디스크립션 파일은, 하드웨어 설계자가 SoC에서 이용 가능할 하드웨어 리소스를 인스턴스화하는 하드웨어 설계 애플리케이션으로부터 획득될 수도 있다. 하드웨어 디스크립션 파일은, 인스턴스화된 그리고 설계에 이용 가능한 하드웨어 리소스를 명시한다. 하드웨어 디스크립션 파일은, 나열된 하드웨어 리소스에 관련이 있는 추가적인 세부 정보를 더 포함할 수도 있다.
블록(710)에서, 시스템은 도메인을 생성한다. 예를 들면, 유저는 도메인의 생성을 요청하는 유저 입력을 제공할 수도 있다. 하나 이상의 실시형태에서, 시스템은, 유저가 도메인 생성을 요청할 수도 있는 그래픽 유저 인터페이스(graphical user interface; GUI)를 제공한다. 하나 이상의 다른 실시형태에서, 시스템은 유저가 도메인을 생성하기 위한 커맨드를 제공할 수도 있는 커맨드 라인 인터페이스를 제공한다. 그렇게 하려는 요청에 응답하여, 시스템은 SoC에 대한 도메인을 생성한다.
블록(715)에서, 시스템은 도메인에 대한 프로세서를 결정한다. 예를 들면, 도메인을 생성하기 위한 커맨드에 후속하여, 시스템은 도메인에게 할당할 하드웨어 디스크립션 파일에서 나열되는 프로세서를 명시하는 추가적인 유저 입력을 수신할 수도 있다. 특정한 실시형태에서, 프로세서는 도메인을 생성하기 위한 커맨드의 일부로서, 예를 들면, 커맨드의 파라미터 또는 인수로서 명시될 수도 있다. 프로세서를 명시하는 유저 입력을 수신하는 것에 응답하여, 시스템은 도메인을 생성하고 프로세서를 도메인에게 할당한다. 예를 들면, 시스템은 프로세서를 도메인과 관련시키는 데이터 구조를 메모리에서 생성한다.
블록(720)에서, 시스템은 도메인에 대한 오퍼레이팅 시스템을 결정한다. 예를 들면, 시스템은 도메인에 대해 사용될 특정한 오퍼레이팅 시스템을 명시하는 추가적인 유저 입력을 수신할 수도 있다. 하나 이상의 실시형태에서, 도메인을 생성하기 위한 커맨드는, 커맨드의 추가적인 파라미터 또는 인수로서 오퍼레이팅 시스템을 포함하거나 또는 명시할 수도 있다. 도메인에서의 사용을 위해 선택될 수도 있는 상이한 타입의 오퍼레이팅 시스템의 예는, Linux(리눅스), Free RTOS와 같은 실시간 오퍼레이팅 시스템(Real-time Operating System; RTOS), 또는 프로세서 또는 임베딩된 프로세서에 의한 실행에 적절한 임의의 다른 오퍼레이팅 시스템을 포함하지만, 그러나 이들로 제한되지는 않는다. 다른 실시형태에서, 도메인은 오퍼레이팅 시스템을 포함하지 않을 수도 있고 하나 이상의 베어 메탈 및/또는 독립형 애플리케이션을 지원할 수도 있다.
종래의 임베딩된 시스템 개발 기술에서, 소프트웨어 개발자는 하드웨어 설계를 기초하여 프로세서와 관련되는 특정한 오퍼레이팅 시스템을 활용하도록 제한되었다. 본 개시 내에서 설명되는 독창적인 배열에 따라, 소프트웨어 개발자는 상이한 오퍼레이팅 시스템을 자유롭게 선택할 수 있다. 소프트웨어 개발자는 상이한 오퍼레이팅 시스템/프로세서 페어링 및/또는 상이한 오퍼레이팅 시스템 구성(예를 들면, 하기의 블록(725)에 따른, 상이한 어드레스 공간 매핑, 상이한 드라이버, 등등)을 가지고 실험할 수도 있다.
블록(725)에서, 시스템은 블록(710 및 715)에서 생성되는 도메인에 하나 이상의 리소스를 추가할 수 있다. 하나 이상의 실시형태에서, 시스템은 리소스(들)를 도메인에게 할당하는 것에 의해 도메인에 리소스(들)를 추가한다. 리소스는 하드웨어 디스크립션 파일로부터 선택되는 하드웨어 리소스일 수도 있다. 하드웨어 리소스의 예는, 메모리 및 디바이스(예를 들면, 메모리 컨트롤러, I/O 디바이스, 및/또는 다른 주변장치)를 포함할 수 있지만, 그러나 이들로 제한되지는 않는다. 리소스는 선택된 오퍼레이팅 시스템에 대한 소프트웨어 리소스를 또한 포함할 수도 있다. 소프트웨어 리소스의 예는, 드라이버, 물리적 어드레스 공간 매핑, 및/또는 펌웨어를 포함할 수 있지만, 그러나 이들로 제한되지는 않는다.
하나 이상의 실시형태에서, 시스템은 도메인에 추가되는 하드웨어 리소스의 속성을 프루닝할(pruning) 수 있다. 예를 들면, 시스템은, 그러한 하드웨어 리소스의 구성 가능한 레지스터를 변경하는 것에 의해, 예를 들면, 레지스터에 기록되는 구성 데이터를 변경하는 것에 의해, 하드웨어 리소스의 속성을 수정할 수 있다. 예시적이고 비제한적인 예로서, 시스템은 UART의 클록 주파수를 변경할 수 있다.
블록(725) 내에서, 추가적인 속성이 또한 도메인에 추가될 수도 있고 및/또는 도메인에 추가되는 리소스에 첨부될 수도 있다. 예를 들면, 도메인에 추가되는 특정한 하드웨어 리소스에 대해 서비스 품질(Quality of Service; QoS) 설정이 명시될 수도 있다. 도메인에 대해 및/또는 도메인에 추가되는 특정한 하드웨어 리소스에 대해 분리 설정이 또한 명시될 수도 있다. 도메인의 하드웨어 리소스에 대해 클록 주파수가 명시될 수도 있다. 시스템은, 그러한 속성을 수신하는 것에 응답하여, 도메인에게 및/또는 도메인의 관련 하드웨어 리소스에게 속성을 할당한다.
블록(730)에서, 시스템은 도메인을 구현하는 구성 데이터를 생성할 수 있다. 구성 데이터는 SoC 내에서 도메인을 분리할 수 있다. 구성 데이터는, 예를 들면, 도메인에게 할당되는 특정한 하드웨어 리소스에 대한 액세스를 규제하기 위해 사용되는 특정한 분리 회로에 대한 구성 레지스터로 로딩되는 데이터일 수도 있다. 예를 들면, 도메인이 APU(206)를 포함하는 경우, 블록(730)에서 생성되는 구성 데이터는 분리 회로(230-5 및/또는 230-4)를 위한 것일 수도 있다. 언급한 바와 같이, SoC의 분리 회로는 도메인을 생성하고 일단 구성된 도메인 사이의 분리를 시행한다.
블록(735)에서, 시스템은 도메인에 추가될 더 많은 리소스가 더 있는지의 여부를 결정한다. 예를 들면, 유저는 도메인이 완료되었다는 것을 나타내는 입력을 제공할 수도 있다. 다른 예에서, 유저는 추가적인 리소스가 도메인에 추가될 것이다는 것을 나타내는 입력을 제공할 수도 있다. 더 많은 리소스가 도메인에 추가될 것이다는 것을 결정하는 것에 응답하여, 방법(700)은 도메인에 더 많은 리소스를 추가하기 위해 블록(725)으로 루프백한다. 어떠한 추가적인 리소스도 도메인에 추가되지 않는다는 것을 결정하는 것에 응답하여, 방법(700)은 블록(740)으로 계속 진행한다.
블록(740)에서, 시스템은 도메인의 오퍼레이팅 시스템을 구성한다. 예를 들면, 시스템은 도메인에 대한 RAM(예를 들면, 메모리 컨트롤러를 통해 액세스 가능한 오프 칩 RAM)을 구획할 수 있다. 한 예로서, 구성되고 있는 현재의 도메인의 경우, 오퍼레이팅 시스템은 리눅스일 수도 있다. 현재의 도메인에 대해 사용되는 리눅스의 버전은 최대 4GB의 RAM에 액세스할 수도 있다. 유저는 하드웨어 디스크립션 파일에서 명시되는 이용 가능한 RAM의 것을 명시하는 입력을 제공할 수도 있으며, 블록(710 및 715)에서 생성되는 도메인은 1GB의 RAM을 할당받을 것이다. 상이한 도메인을 구성할 때 방법(700)의 추가적인 반복 동안, RAM의 추가적인 부분은 상이한 프로세서 및/또는 오퍼레이팅 시스템을 갖는 그러한 다른 도메인에게 할당될 수도 있다.
블록(740)의 일부로서, 시스템은 도메인에 추가된 디바이스를 결정할 수 있고 각각의 특정한 디바이스에 대한 드라이버를 포함할 수 있다. 예를 들면, 도메인이 UART(예를 들면, UART0), 다른 UART(예를 들면, UART1), 및 USB 인터페이스를 포함하는 경우, 시스템은 도메인에서의 포함을 위해 선택되는 디바이스의 각각의 특정한 타입(및 인스턴스)에 대한 그리고 도메인에 대해 선택된 특정한 오퍼레이팅 시스템에 대한 드라이버를 선택할 수 있다. 리눅스가 도메인에 대한 오퍼레이팅 시스템인 이전 예를 참조하면, 시스템은 도메인에 추가되는 각각의 디바이스에 대한 드라이버의 리눅스 버전을 선택한다.
블록(740)의 일부로서, 시스템은 도메인의 오퍼레이팅 시스템에 대한 이미지 파일을 추가로 생성할 수도 있다. 이전 예에서 계속하면, 시스템은 단지 1GB의 RAM에만 액세스하도록 구성되며 도메인에 포함되는 디바이스의 각각에 대한 리눅스 드라이버를 포함하는 리눅스 이미지 파일을 생성한다.
블록(745)에서, 시스템은 SoC에 대해 다른 도메인을 추가할지의 여부를 결정한다. 예를 들면, 유저는 다른 도메인의 생성을 요청하는 유저 입력을 제공할 수도 있다. 유저 입력은, GUI를 통하든, 마법사를 통하든, 및/또는 커맨드 라인을 통하든 간에, 본원에서 설명되는 메커니즘 중 임의의 것을 통해 제공될 수도 있다. 유저는, 어떠한 추가적인 도메인도 생성되지 않을 것이다는 것을 나타내는 입력을 또한 제공할 수도 있다. 다른 도메인이 추가될 경우, 방법(700)은 추가적인 도메인이 생성되고 프로세싱이 계속되는 블록(710)으로 루프백한다. 어떠한 추가적인 도메인도 생성되지 않을 경우, 방법(700)은 블록(750)으로 계속된다.
블록(750)에서, 시스템은 플랫폼을 생성할 수 있다. 플랫폼은 SoC에 대해 생성되는 도메인을 지원하는 하나 이상의 소프트웨어 아티팩트를 포함할 수도 있다. 하나 이상의 실시형태에서, 플랫폼은 제1 단계 부트 로더 타입의 소프트웨어 아티팩트를 포함한다. 제1 단계 부트 로더는 부팅시 SoC로 로딩될 수도 있는 프로그램이다. 예를 들면, 제1 단계 부트 로더는 SoC로 로딩될 수도 있는 부트 이미지에 포함될 수도 있다. 시스템은 제1 단계 부트 로더를 생성할 수 있고 생성되는 도메인의 각각에 대해 블록(730)에서 생성되는 구성 데이터를 포함할 수 있다.
SoC의 부트 시퀀스는, 제1 단계 부트 로더 및/또는 부트 이미지를 SoC로 로딩하는 것에 응답하여 제1 단계 부트 로더를 실행할 수 있다. 제1 단계의 부트 로더는, SoC 내에서의 실행에 응답하여, 여러 가지 상이한 기능을 수행할 수 있다. 하나의 양태에서, 제1 단계 부트 로더는 SoC의 프로세서 시스템 내에서 하드웨어 리소스 및 구성 레지스터를 초기화할 수 있다.
다른 양태에서, 제1 단계 부트 로더는 SoC의 아키텍쳐를 구성할 수 있다. 예를 들면, 제1 단계 부트 로더는, 프로세서 시스템에 대한 구성 데이터를 SoC의 적절한 구성 레지스터에 기록하는 것에 의해 SoC의 프로세서 시스템을 구성할 수 있다. 구성 데이터는, 도메인의 각각을 동시에 구현하기 위해 프로세서 시스템에 포함되는 다양한 하드웨어 리소스에 대한 동작 설정을 명시한다. 게다가, 구성 데이터는 프로세서 시스템의 분리 회로에 대한 구성 데이터를 포함한다. 그러한 만큼, 제1 단계 부트 로더는, 이종 SoC로 로딩되면, 도메인을 구현하고 정의된 도메인을 분리한다.
다른 양태에서, 제1 단계 부트 로더는 부트 이미지에 포함될 수도 있는 구성 비트스트림을 SoC의 구성 메모리로 로딩할 수 있다. 설명되는 바와 같이 구성 비트스트림을 로딩하는 것은, 구성 비트스트림에 의해 정의되는 SoC의 프로그래밍 가능한 회로부 내에서 물리적 회로부를 구현한다.
하나 이상의 실시형태에서, 시스템에 의해 생성되는 소프트웨어 아티팩트는 프로세서 초기화 파일을 포함한다. 특정한 실시형태에서, 프로세서 초기화 파일은 "C 구성 파일"일 수도 있다. 프로세서 초기화 파일은 프로세서 시스템에 대한 시스템 초기화 코드를 포함할 수도 있다. 프로세서 초기화 파일은, 예를 들면, mask_write, mask_poll, mask_read와 같은 레지스터 시퀀스를 포함할 수도 있다. 프로세서 초기화 파일은 프로세서 시스템 구성을 명시하는 유저 입력에 기초하여 생성될 수도 있다. 프로세서 초기화 파일은 제1 단계 부트 로더 애플리케이션에 포함된다. 유저가 도메인을 생성하고 메모리, UART, 등등과 같은 하드웨어 리소스를 도메인에게 할당하는 경우, 분리 회로부는 재구성될 필요가 있다. 분리 회로부에 대한 구성 레지스터 시퀀스는 변경될 것이다. 이들 변경, 예를 들면, 분리 회로부에 대한 구성 레지스터 시퀀스는 프로세서 초기화 파일의 일부일 수도 있다.
하나 이상의 실시형태에서, 플랫폼은 하나 이상의 오퍼레이팅 시스템 타입 소프트웨어 아티팩트를 포함한다. 예를 들면, 시스템은, 플랫폼에 대해 생성된 도메인의 각각에 대해 하나 이상의 오퍼레이팅 시스템 아티팩트를 생성할 수 있다. 오퍼레이팅 시스템 아티팩트를 생성함에 있어서, 예를 들면, 도메인에 추가되는 리소스에 대한 블록(725) 내에서 명시되는 임의의 설정 및/또는 속성이 지켜진다.
블록(750)의 일부로서 생성될 수도 있는 오퍼레이팅 시스템 아티팩트의 예는 디바이스 트리이다. 시스템은, 생성된 그리고 디바이스 트리를 활용하는 도메인의 각각의 오퍼레이팅 시스템에 대한 디바이스 트리를 생성할 수 있다. 생성되는 디바이스 트리는 블록(725)에서 명시되는 설정, 어드레스 범위, 및/또는 속성을 지킨다. 주어진 도메인에 대한 디바이스 트리는, 그 도메인에게 할당되는(allocated) 또는 할당되는(assigned) 하드웨어 리소스만을 포함할 것이다. 그러한 만큼, 오퍼레이팅 시스템은, 도메인에서 이용 가능한 디바이스에 대응하는 디바이스 트리에서 나열되는 디바이스만을 "볼" 것이다.
하나 이상의 실시형태에서, 플랫폼은, SoC 및 그 안에 포함되는 도메인의 구성에 대한 정보를 명시하는 하나 이상의 데이터 구조 및/또는 파일과 같은 소프트웨어 아티팩트를 포함한다. 플랫폼 또는 특정한 소프트웨어 아티팩트는, 예를 들면, 애플리케이션 개발 환경(예를 들면, 컴퓨팅 시스템에서 실행되는 애플리케이션)으로 로딩될 수도 있다. 애플리케이션 개발 환경은, SoC의 도메인 상에서 실행되도록 의도되는 애플리케이션 및/또는 프로그램을 개발하도록 구성될 수도 있다. 그 경우, 소프트웨어 개발자가 그 도메인에 대한 프로그램을 생성하기 위해 애플리케이션 개발 환경을 사용하는 경우, 구성에 대한 정보를 명시하는 소프트웨어 아티팩트는 애플리케이션 개발 목적을 위해 가져오기되어 사용될 수도 있다.
애플리케이션 개발 환경으로 가져오기될 수도 있는 소프트웨어 아티팩트의 한 예는 링커 스크립트(linker script)이다. 시스템은 도메인의 각각에 대한 링커 스크립트를 생성할 수 있고 링커 스크립트 및 소프트웨어 아티팩트를 출력할 수 있다. 일반적으로, 각각의 링커 스크립트는 SoC의 특정한 도메인에 대한 실행 가능한 애플리케이션을 생성하기 위한 링커의 동작을 제어한다. 예를 들면, 특정한 도메인에 대한 링커 스크립트는 입력 파일을 출력 파일에 매핑할 수 있고, 도메인의 확립된 속성, 예를 들면, 도메인의 주소 지정 가능한 메모리 및 등등이 주어지면, 출력 파일의 메모리 레이아웃을 제어할 수 있다. 링커 스크립트를 사용함에 있어서, 예를 들면, 취합되고(assembled) 있는 애플리케이션은, 개발되고 있는 애플리케이션을 실행하는 도메인이 이용 가능하지 않은 메모리의 어떠한 부분도 볼 수 없다. 애플리케이션은 도메인에게 할당되는 메모리(예를 들면, RAM) 부분만을 보거나 또는 액세스할 수 있다.
예를 들면, 소프트웨어 개발자가 애플리케이션 개발 환경을 열고 플랫폼을 로딩할 때, 소프트웨어 개발자는 애플리케이션이 개발될 플랫폼의 특정한 도메인을 명시할 수도 있다. 애플리케이션 개발 환경은 명시된 도메인에 대한 임의의 소프트웨어 아티팩트를 소프트웨어 개발자가 이용 가능하게 만들 수 있다. 예시적이고 비제한적인 예로서, 각각의 상이한 오퍼레이팅 시스템은, 도메인의 오퍼레이팅 시스템 및 도메인에 포함되는 디바이스에 기초하여 특정한 드라이버 호출을 활용할 것이다. FreeRTOS를 사용하는 도메인에 대한 애플리케이션을 개발함에 있어서, 예를 들면, 소프트웨어 개발 환경은 특정한 디바이스를 대상으로 하는 특정한 명령문(statement)(예를 들면, "인쇄" 명령문)을 그 디바이스에 대한 드라이버 호출로 변환할 수도 있다. 예를 들면, 도메인에 대한 애플리케이션이 UART0을 통해 데이터를 기록하려고 시도하고, UART0이 도메인의 일부인 경우, 애플리케이션 개발 환경은 UART0에 액세스하는 명령문, 예를 들면, "인쇄" 명령문을, UART0에 대한 디바이스 드라이버 호출로 대체할 수 있다. 애플리케이션이 도메인에 포함되지 않은 디바이스에 액세스하려고 시도하는 명령문을 포함하는 경우, 그러면, 애플리케이션의 빌드가 실패할 것이다. 예를 들면, 애플리케이션이 UART0를 대상으로 하는 인쇄 명령문을 포함하지만, 그러나 UART0이 도메인에 포함되지 않는 경우, 애플리케이션의 빌드 동작은 실패할 것이다.
다른 경우에, 소프트웨어 개발자가 애플리케이션이 개발되고 있는 도메인 내에 있지 않은 디바이스의 어드레스를 알고 그 어드레스에 액세스하기 위한 프로그램 코드를 작성하는(예를 들면, 그러한 어드레스를 수동으로 명시하는) 경우, 애플리케이션이 SoC에서 실행될 때, 그 안 포함되는 분리 회로(들)는, 애플리케이션의 도메인의 일부가 아닌 하드웨어 리소스를 대상으로 하는 그러한 트랜잭션을 거부할 것이다.
독창적인 배열은, 소프트웨어 개발자가, 주어진 이종 SoC에 대한 도메인을 재정의하기 위해 하드웨어 개발 도구를 활용해야 할 필요 없이, 프로세서, 디바이스, 및/또는 오퍼레이팅 시스템의 상이한 조합을 시도하는 것을 허용한다. 본원에서 설명되는 바와 같은 도구를 사용하여, 소프트웨어 개발자는, 하드웨어 설계 애플리케이션으로부터 생성되는 동일한 하드웨어 디스크립션 파일을 사용하면서, 도메인을 정의할 수 있고 또한 도메인을 재정의할 수 있다. 하드웨어 레벨(예를 들면, 하드웨어 설계 애플리케이션을 사용함)에서가 아닌 소프트웨어 레벨에서 도메인을 명시하는 능력은, 소프트웨어 개발자가, 그렇지 않은 경우에 그러할 것보다 훨씬 더 적은 시간에 도메인을 수정 및/또는 재정의하는 것을 허용한다. 소프트웨어 개발자가 도메인(들)에 대한 수정을 할 때마다, 도메인 생성 도구는 플랫폼의 업데이트된 버전을 출력할 수 있다.
애플리케이션 개발자는, 예를 들면, GUI를 통해 및/또는 커맨드 라인 인터페이스를 통해 플랫폼을 수정할 수도 있다. 애플리케이션 개발자는, 예를 들면, 도메인 사이의 메모리 구획을 조정할 수도 있고, 도메인의 오퍼레이팅 시스템을 변경할 수도 있고, 및/또는 도메인 사이에서 디바이스를 재할당할 수도 있다. 수정을 완료하면 및/또는 플랫폼을 생성하기 위한 커맨드에 응답하여, 도메인 생성 애플리케이션은 수정을 구현하는 업데이트된 플랫폼을 생성한다. 업데이트된 플랫폼은, 하드웨어 설계 애플리케이션에서 재생성되는 수정된 하드웨어 디스크립션 파일이 아니라, 원래의 하드웨어 디스크립션 파일에 기초하여 생성된다.
결과적으로 나타나는 플랫폼, 예를 들면, 제1 단계 부트 로더는 부트 이미지 내에 포함될 수도 있다. 부트 이미지는, 하나 이상의 구성 비트스트림 및/또는 도메인에서의 실행을 위한 다른 실행 가능한 프로그램 코드를 또한 포함할 수도 있다. 논의되는 바와 같이, 실행 가능한 프로그램 코드(예를 들면, 도메인에 대한 오퍼레이팅 시스템 및/또는 애플리케이션)는 본원에서 설명되는 독창적인 배열을 사용하여 및/또는 본원에서 설명되는 독창적인 배열을 사용하여 생성되는 소프트웨어 아티팩트를 사용하여 생성될 수도 있다.
부트 이미지는 타겟 SoC로 로딩되어 타겟 SoC를 구성하기 위해 사용될 수도 있다. 부트 이미지를 로딩하는 것에 응답하여, 제1 단계 부트 로더는 설명되는 바와 같이 실행될 수도 있다. 게다가, 프로그래밍 가능한 회로부는 부트 이미지로부터 구성 비트스트림을 로딩하는 것에 의해 구성될 수도 있다. 부트 이미지에 포함될 수도 있는 실행 가능한 프로그램 코드(예를 들면, 오퍼레이팅 시스템 및/또는 애플리케이션)는, 각각의 도메인에 대한 적절한 메모리 영역 또는 파티션으로 로딩되어 실행될 수도 있다.
도 8은 IC에 대한 예시적인 아키텍쳐(800)를 예시한다. 하나의 양태에서, 아키텍쳐(800)는 프로그래밍 가능한 IC 내에서 구현될 수도 있다. 예를 들면, 아키텍쳐(800)는 현장 프로그래밍 가능 게이트 어레이(FPGA)를 구현하기 위해 사용될 수도 있다. 아키텍쳐(800)는 또한 IC의 SoC 타입(예를 들면, 이종 SoC)를 나타낼 수도 있다.
도시되는 바와 같이, 아키텍쳐(800)는 몇몇 상이한 타입의 프로그래밍 가능한 회로, 예를 들면, 로직 블록을 포함한다. 예를 들면, 아키텍쳐(800)는, 멀티 기가비트 트랜스시버(multi-gigabit transceiver; MGT)(801), 구성 가능한 로직 블록(configurable logic block; CLB)(802), 랜덤 액세스 메모리 블록(random-access memory block; BRAM)(803), 입력/출력 블록(input/output block; IOB)(804), 구성 및 클록킹 로직(configuration and clocking logic)(CONFIG/CLOCKS)(805), 디지털 신호 프로세싱 블록(digital signal processing block; DSP)(806), 특수 I/O 블록(807)(예를 들면, 구성 포트 및 클록 포트), 및 기타 프로그래밍 가능한 로직(808), 예컨대 디지털 클록 매니저, 아날로그 대 디지털 컨버터, 시스템 모니터링 로직, 및 등등을 포함하는 많은 수의 상이한 프로그래밍 가능한 타일을 포함할 수도 있다.
몇몇 IC에서, 각각의 프로그래밍 가능한 타일은, 각각의 인접한 타일 내의 대응하는 프로그래밍 가능한 인터커넥트 엘리먼트(programmable interconnect element)(INT)(811)로의 그리고 그로부터의 표준화된 연결을 갖는 INT(811)를 포함한다. 따라서, INT(811)는, 함께 취해져서, 예시된 IC에 대한 프로그래밍 가능한 인터커넥트 구조체를 구현한다. 각각의 INT(811)는, 도 8의 상단에 포함되는 예에 의해 도시되는 바와 같이, 동일한 타일 내의 프로그래밍 가능한 로직 엘리먼트로의 그리고 그 프로그래밍 가능한 로직 엘리먼트로부터의 연결을 또한 포함한다.
예를 들면, CLB(802)는, 단일의 INT(811)를 더한 유저 로직을 구현하도록 프로그래밍될 수도 있는 구성 가능한 로직 엘리먼트(CLE)(812)를 포함할 수도 있다. BRAM(803)은, 하나 이상의 INT(811)에 더하여, BRAM 로직 엘리먼트(BRAM logic element; BRL)(813)를 포함할 수도 있다. 통상적으로, 타일에 포함되는 INT(811)의 수는 타일의 높이에 의존한다. 묘사되는 바와 같이, BRAM 타일은 다섯 개의 CLB와 동일한 높이를 가지지만, 그러나 다른 숫자(예를 들면, 네 개)도 또한 사용될 수도 있다. DSP 타일(806)은, 적절한 수의 INT(811)에 더하여, DSP 로직 엘리먼트(DSP logic element; DSPL)(814)를 포함할 수도 있다. IOB(804)는, 예를 들면, INT(811)의 하나의 인스턴스에 더하여, I/O 로직 엘리먼트(I/O logic element)(IOL)(815)의 두 개의 인스턴스를 포함할 수도 있다. IOL(815)에 연결되는 실제 I/O 패드는 IOL(815) 영역으로 제한되지 않을 수도 있다.
도 8에서 묘사되는 예에서, 예를 들면, 영역(805, 807, 및 808)으로 형성되는 다이의 중심 근처의 칼럼 영역(columnar area)은 구성, 클록 및 다른 제어 로직을 위해 사용될 수도 있다. 이 칼럼으로부터 연장되는 수평 영역(809)은 프로그래밍 가능한 IC의 폭에 걸쳐 클록 및 구성 신호를 분배하기 위해 사용될 수도 있다.
도 8에서 예시되는 아키텍쳐를 활용하는 몇몇 IC는, IC의 큰 부분을 구성하는 일반적인 칼럼 구조체(columnar structure)를 분열시키는 추가적인 로직 블록을 포함한다. 추가적인 로직 블록은 프로그래밍 가능한 블록 및/또는 전용 회로부일 수도 있다. 예를 들면, PROC(810) 및 PROC(816)로서 묘사되는 두 개 이상의 프로세서 블록은 CLB 및 BRAM의 여러 칼럼에 걸쳐 있다.
하나의 양태에서, PROC(810) 및/또는 PROC(816)는 IC의 프로그래밍 가능한 회로부를 구현하는 다이의 일부로서 제조되는 전용 회로부, 예를 들면, 하드웨어에 내장된 프로세서로서 구현될 수도 있다. PROC(810) 및/또는 PROC(816)는, 복잡도에서, 개개의 프로세서, 예를 들면, 프로그램 코드를 실행할 수도 있는 단일의 코어로부터, 하나 이상의 코어, 모듈, 코프로세서(co-processor), 인터페이스, 또는 등등을 구비하는 전체 프로세서 시스템까지의 범위에 이르는 여러 가지 상이한 프로세서 타입 및/또는 시스템 중 임의의 것을 나타낼 수도 있다.
다른 양태에서, PROC(810) 및/또는 PROC(816)는 아키텍쳐(800)로부터 생략될 수도 있고 설명되는 프로그래밍 가능한 블록의 다른 변종 중 하나 이상으로 대체될 수도 있다. 게다가, 그러한 블록은, PROC(810) 및/또는 PROC(816)에서 그러한 것처럼, 프로그램 코드를 실행할 수 있는 프로세서를 형성하기 위해 프로그래밍 가능한 회로부의 다양한 블록이 사용될 수도 있다는 점에서 "소프트 프로세서(들)"를 형성하기 위해 활용될 수도 있다.
어구 "프로그래밍 가능한 회로부"는, IC 내의 프로그래밍 가능한 회로부 엘리먼트, 예를 들면, 본원에서 설명되는 다양한 프로그래밍 가능한 또는 구성 가능 회로 블록 또는 타일뿐만 아니라, IC로 로딩되는 구성 데이터에 따라 다양한 회로 블록, 타일, 및/또는 엘리먼트를 선택적으로 커플링하는 인터커넥트 회로부를 가리킨다. 예를 들면, CLB(802) 및 BRAM(803)과 같은 PROC(810) 외부에 있는 도 8에서 도시되는 회로 블록은 IC의 프로그래밍 가능한 회로부로서 간주된다.
본원에서 논의되는 바와 같이, PROC(810)는 제1 오퍼레이팅 시스템을 실행할 수 있고, 한편, PROC(816)는 제2 및 상이한 오퍼레이팅 시스템을 실행할 수 있다. 게다가, PROC(810) 및 PROC(816)의 각각이 이용 가능한 디바이스는 상이할 수도 있고 부팅시에 아키텍쳐(800) 내에서 실행되는 제1 단계 부트 로더에 의해 생성되는 도메인에 의해 정의될 수도 있다.
일반적으로, 프로그래밍 가능한 회로부의 기능성은 구성 데이터가 IC에 로딩될 때까지 확립되지 않는다. 구성 비트의 세트는 FPGA와 같은 IC의 프로그래밍 가능한 회로부를 프로그래밍하기 위해 사용될 수도 있다. 구성 비트(들)는, 통상적으로, "구성 비트스트림"으로 지칭된다. 일반적으로, 프로그래밍 가능한 회로부는, 먼저 구성 비트스트림을 IC로 로딩하지 않고는, 동작하지 않거나 또는 기능하지 않는다. 구성 비트스트림은 프로그래밍 가능한 회로부 내에서 특정한 회로 설계를 효과적으로 구현한다. 회로 설계는, 예를 들면, 프로그래밍 가능한 회로 블록의 기능적 양태 및 다양한 프로그래밍 가능한 회로 블록 사이의 물리적 연결성을 명시한다.
"하드웨어에 내장되는"또는 "경화되는", 즉, 프로그래밍 가능하지 않은 회로부가 IC의 일부로서 제조된다. 프로그래밍 가능한 회로부와는 달리, 하드웨어에 내장된 회로부 또는 회로 블록은 구성 비트스트림의 로딩을 통해 IC 제조 이후에 구현되지 않는다. 하드웨어에 내장된 회로부는, 예를 들면, 구성 비트스트림을 IC, 예를 들면, PROC(810) 및/또는 PROC(816)에 먼저 로딩하지 않고도 기능하는 전용 회로 블록 및 인터커넥트를 갖는 것으로 일반적으로 간주된다.
몇몇 경우에, 하드웨어에 내장된 회로부는, IC 내의 하나 이상의 메모리 엘리먼트에 저장되는 레지스터 설정 또는 값에 따라 설정 또는 선택될 수 있는 하나 이상의 동작 모드를 가질 수도 있다. 동작 모드는, 예를 들면, IC로의 구성 데이터의 로딩을 통해 설정될 수도 있다. 이 능력에도 불구하고, IC의 일부로 제조될 때 하드웨어에 내장된 회로부가 동작 가능하고 특정한 기능을 가지기 때문에, 하드웨어에 내장된 회로부는 프로그래밍 가능한 회로부로 간주되지 않는다.
도 8은, 프로그래밍 가능한 회로부, 예를 들면, 프로그래밍 가능한 패브릭(fabric)을 포함하는 IC를 구현하기 위해 사용될 수도 있는 예시적인 아키텍쳐를 예시하도록 의도된다. 예를 들면, 칼럼에서의 로직 블록의 수, 칼럼의 상대적 폭, 칼럼의 수와 순서, 칼럼에 포함되는 로직 블록의 타입, 로직 블록의 상대적 사이즈, 도 8의 상단에 포함되는 인터커넥트/로직 구현은 순전히 예시적인 것이다. 실제 IC에서, 예를 들면, 유저 회로 설계의 효율적인 구현을 용이하게 하기 위해, CLB가 나타나는 곳마다 CLB의 하나보다 더 많은 인접한 칼럼이 통상적으로 포함된다. 그러나, 인접한 CLB 칼럼의 수는 IC의 전체 사이즈에 따라 변할 수도 있다. 게다가, IC 내에서의 PROC(810)와 같은 블록의 사이즈 및/또는 위치 결정은 예시의 목적만을 위한 것이며 제한으로서 의도되는 것은 아니다.
설명의 목적을 위해, 본원에서 개시되는 다양한 독창적인 개념의 철저한 이해를 제공하기 위해 특정한 명명법(nomenclature)이 기술된다. 그러나, 본원에서 사용되는 전문 용어는 독창적인 배열의 특정한 양태를 설명하기 위한 것이며 제한이 되도록 의도되는 것은 아니다.
본원에서 정의되는 바와 같이, 단수 형태 "a(한)", "an(한)" 및 "the(그)"는, 문맥이 명백하게 달리 나타내지 않는 한, 복수의 형태도 역시 포함하도록 의도된다.
본원에서 정의되는 바와 같이, 용어 "적어도 하나", "하나 이상" 및 " 및/또는"은, 달리 명시적으로 언급되지 않는 한, 동작에서 연접적인(conjunctive) 것 및 이접적인(disjunctive) 것 둘 모두인 개방형 표현이다. 예를 들면, 표현 "A, B, 및 C 중 적어도 하나", "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 또는 플래시 메모리), 전자적으로 소거 가능한 프로그래밍 가능한 리드 온리 메모리(electronically erasable programmable read-only memory; EEPROM), 정적 랜덤 액세스 메모리(static random-access memory; SRAM), 휴대용 컴팩트 디스크 리드 온리 메모리(compact disc read-only memory; CD-ROM), 디지털 다기능 디스크(digital versatile disk; DVD), 메모리 스틱, 플로피 디스크, 또는 등등.
본원에서 정의되는 바와 같이, 용어 "~하면(if)"은, 문맥에 따라, "~하는 경우(when)" 또는 "~하면(upon)" 또는 "~에 응답하여(in response to)" 또는 "~에 응답하여(responsive to)"을 의미한다. 따라서, 어구 "결정되면(if it is determined)" 또는 "[명시된 조건 또는 이벤트]가 검출되면(if [a stated condition or event] is detected)"은, 문맥에 따라, "결정하면" 또는 "결정하는 것에 응답하여" 또는 "[명시된 조건 또는 이벤트]를 검출하면" 또는 "[명시된 조건 또는 이벤트]를 검출하는 것에 응답하여" 또는 "[명시된 조건 또는 이벤트]를 검출하는 것에 응답하여"를 의미하도록 해석될 수도 있다.
본원에서 정의되는 바와 같이, 용어 "~에 응답하여" 및 상기에서 설명되는 바와 같은 유사한 언어, 예를 들면, "~이면", "~하는 경우" 또는 "~하면"은, 액션 또는 이벤트에 쉽게 반응하는 것 또는 응답하는 것을 의미한다. 응답 또는 반응은 자동적으로 수행된다. 따라서, 제2 액션이 제1 액션에 "응답하여" 수행되면, 제1 액션의 발생과 제2 액션의 발생 사이에 인과 관계가 있다. 용어 "~에 응답하여"는 인과 관계를 나타낸다.
본원에서 정의되는 바와 같이, 용어 "하나의 실시형태", "한 실시형태", "하나 이상의 실시형태", "특정한 실시형태" 또는 유사한 언어는, 실시형태와 관련하여 설명되는 특정한 피쳐, 구조, 또는 특성이, 본 개시 내에서 설명되는 적어도 하나의 실시형태에 포함된다는 것을 의미한다. 따라서, 본 개시 전체에 걸친 어구 "하나의 실시형태에서", "한 실시형태에서", "하나 이상의 실시형태에서", "특정한 실시형태에서" 및 유사한 언어의 출현은, 모두 동일한 실시형태를 지칭할 수도 있지만, 그러나 반드시 그런 것은 아닐 수도 있다. 용어 "실시형태" 및 "배열(arrangement)"은 본 개시 내에서 상호 교환 가능하게 사용된다.
본원에서 정의되는 바와 같이, 용어 "프로세서"는 적어도 하나의 하드웨어 회로를 의미한다. 하드웨어 회로는 프로그램 코드에 포함되는 명령어를 실행하도록 구성될 수도 있다. 하드웨어 회로는 집적 회로일 수도 있다. 프로세서의 예는, 중앙 프로세싱 유닛(central processing unit; CPU), 어레이 프로세서, 벡터 프로세서, 디지털 신호 프로세서(digital signal processor; DSP), 프로그래밍 가능한 로직 어레이(programmable logic array; PLA), ASIC, 및 컨트롤러를 포함하지만, 그러나 이들로 제한되지는 않는다.
본원에서 정의되는 바와 같이, 용어 "출력"은, 물리적 메모리 엘리먼트, 예를 들면, 디바이스에 저장하는 것, 디스플레이 또는 다른 주변 출력 디바이스에 기록하는 것, 다른 시스템으로 전송 또는 송신하는 것, 내보내기하는 것, 또는 등등을 의미한다.
본원에서 정의되는 바와 같이, 용어 "실시간"은, 유저 또는 시스템이 특정한 프로세스 또는 결정이 이루어지도록 충분히 즉각적인 것으로서 감지하는 또는 프로세서가 몇몇 외부 프로세스와 보조를 맞추는 것을 가능하게 하는 프로세싱 응답의 레벨을 의미한다.
본원에서 정의되는 바와 같이, 용어 "실질적으로"는, 열거된 특성, 파라미터, 또는 값이 정확하게 달성될 필요는 없다는 것, 그러나 예를 들면, 공차, 측정 오차, 측정 정확도 제한, 및 기술 분야의 숙련된 자에게 알려져 있는 다른 요인을 비롯한 편차 또는 변동이, 특성이 제공하기 위해 의도하였던 효과를 배제하지 않는 양에서 발생할 수도 있다는 것을 의미한다.
용어 제1, 제2, 등등은 다양한 엘리먼트를 설명하기 위해 본원에서 사용될 수도 있다. 이들 엘리먼트는, 달리 언급되지 않거나 또는 문맥이 달리 명확하게 나타내지 않는 한, 이들 용어가 하나의 엘리먼트를 다른 엘리먼트와 구별하기 위해서만 사용되기 때문에, 이들 용어에 의해 제한되지 않아야 한다.
컴퓨터 프로그램 제품은, 프로세서로 하여금 본원에서 설명되는 독창적인 배열의 양태를 실행하게 하기 위한 컴퓨터 판독 가능 프로그램 명령어를 갖는 컴퓨터 판독 가능 저장 매체(또는 매체들)를 포함할 수도 있다. 본 개시 내에서, 용어 "프로그램 코드"는 용어 "컴퓨터 판독 가능 프로그램 명령어"와 상호 교환 가능하게 사용된다. 본원에서 설명되는 컴퓨터 판독 가능 프로그램 명령어는, 컴퓨터 판독 가능 저장 매체로부터 각각의 컴퓨팅/프로세싱 디바이스로 또는 네트워크, 예를 들면, 인터넷, LAN, WAN 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 스토리지 디바이스로 다운로딩될 수도 있다. 네트워크는, 구리 송신 케이블, 광 송신 섬유, 무선 송신, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 에지 서버를 포함하는 에지 디바이스를 포함할 수도 있다. 각각의 컴퓨팅/프로세싱 디바이스에서의 네트워크 어댑터 카드 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 판독 가능 프로그램 명령어를 수신하고 각각의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터 판독 가능 저장 매체에 저장하기 위해 컴퓨터 판독 가능 프로그램 명령어를 포워딩한다.
본원에서 설명되는 독창적인 배열에 대한 동작을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령어는, 어셈블러 명령어, 명령어 세트 아키텍쳐(instruction-set-architecture; ISA) 명령어, 머신 명령어, 머신 종속 명령어, 마이크로코드, 펌웨어 명령어, 또는 객체 지향 프로그래밍 언어 및/또는 절차형 프로그래밍 언어를 비롯한, 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성되는 소스 코드 또는 오브젝트일 수도 있다. 컴퓨터 판독 가능 프로그램 명령어는 상태 설정 데이터(state-setting data)를 포함할 수도 있다. 컴퓨터 판독 가능 프로그램 명령어는 유저의 컴퓨터 상에서 전적으로, 부분적으로는 유저의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 부분적으로는 유저의 컴퓨터 상에서 그리고 부분적으로는 원격 컴퓨터 상에서, 또는 전적으로 원격 컴퓨터 또는 서버 상에서 실행될 수도 있다. 후자의 시나리오에서, 원격 컴퓨터는, LAN 또는 WAN을 비롯한, 임의의 타입의 네트워크를 통해 유저의 컴퓨터에 연결될 수도 있거나, 또는 연결은 (예를 들면, 인터넷 서비스 공급자를 사용하는 인터넷을 통해) 외부 컴퓨터에 대해 이루어질 수도 있다. 몇몇 경우에, 예를 들면, 프로그래밍 가능한 로직 회로부, FPGA 또는 PLA를 포함하는 전자 회로부는, 본원에서 설명되는 독창적인 배열의 양태를 수행하기 위해, 컴퓨터 판독 가능 프로그램 명령어의 상태 정보를 활용하여 전자 회로부를 개인화하는 것에 의해 컴퓨터 판독 가능 프로그램 명령어를 실행할 수도 있다.
독창적인 배열의 소정의 양태는 방법, 장치(시스템), 및 컴퓨터 프로그램 제품의 플로우차트 예시 및/또는 블록도를 참조하여 본원에서 설명된다. 플로우차트 예시 및/또는 블록도의 각각의 블록, 및 플로우차트 예시 및/또는 블록도 내의 블록의 조합은, 컴퓨터 판독 가능 프로그램 명령어, 예를 들면, 프로그램 코드에 의해 구현될 수도 있다는 것이 이해될 것이다.
이들 컴퓨터 판독 가능 프로그램 명령어는, 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그래밍 가능한 데이터 프로세싱 장치의 프로세서로 제공되어 머신을 생성할 수도 있고, 그 결과, 컴퓨터 또는 다른 프로그래밍 가능한 데이터 프로세싱 장치의 프로세서를 통해 실행되는 명령어는, 플로우차트 및/또는 블록도 블록 또는 블록들에서 명시되는 기능/액트(act)를 구현하기 위한 수단을 생성한다. 컴퓨터, 프로그래밍 가능한 데이터 프로세싱 장치, 및/또는 다른 디바이스에게 특정한 방식으로 기능할 것을 지시할 수 있는 이들 컴퓨터 판독 가능 프로그램 명령어는 컴퓨터 판독 가능 저장 매체에 또한 저장될 수도 있고, 그 결과, 명령어가 저장된 컴퓨터 판독 가능 저장 매체는, 플로우차트 및/또는 블록도 블록 또는 블록들에서 명시되는 동작의 양태를 구현하는 명령어를 포함하는 제조 물품을 포함한다.
컴퓨터 판독 가능 프로그램 명령어는 또한, 컴퓨터, 다른 프로그래밍 가능한 데이터 프로세싱 장치, 또는 다른 디바이스로 로딩되어, 일련의 동작으로 하여금, 컴퓨터, 다른 프로그래밍 가능한 장치 또는 다른 디바이스 상에서 수행되게 하여, 컴퓨터 구현 프로세스를 생성할 수도 있고, 그 결과, 컴퓨터, 다른 프로그래밍 가능한 장치, 또는 다른 디바이스 상에서 실행되는 명령어는 플로우차트 및/또는 블록도 블록 또는 블록들에서 명시되는 기능/액트를 구현한다.
도면의 플로우차트 및 블록도는, 독창적인 배열의 다양한 양태에 따른 시스템, 방법, 및 컴퓨터 프로그램 제품의 가능한 구현예의 아키텍쳐, 기능성 및 동작을 예시한다. 이와 관련하여, 플로우차트 또는 블록도의 각각의 블록은, 모듈, 세그먼트, 또는 명령어의 일부를 나타낼 수도 있으며, 이들은 명시된 동작을 구현하기 위한 하나 이상의 실행 가능 명령어를 포함한다.
몇몇 대안적인 구현예에서, 블록에서 언급되는 동작은 도면에 언급되는 순서를 벗어나 발생할 수도 있다. 예를 들면, 수반되는 기능성에 따라, 연속적인 것으로 도시되는 두 개의 블록은 실질적으로 동시에 실행될 수도 있거나, 또는 블록은 때때로 역순으로 실행될 수도 있다. 다른 예에서, 블록은 일반적으로 증가하는 숫자 순서로 수행될 수도 있고, 한편, 여전히 다른 예에서, 하나 이상의 블록은 다양한 순서로 수행될 수도 있는데, 이 경우, 결과는 저장되고 후속하는 또는 바로 뒤따르지 않는 다른 블록에서 활용된다. 또한, 블록도 및/또는 플로우차트 예시의 각각의 블록, 및 블록도 및/또는 플로우차트 예시에서의 블록의 조합은, 명시된 기능 또는 액트를 수행하는 또는 특수 목적 하드웨어 및 컴퓨터 명령어의 조합을 실행하는 특수 목적 하드웨어 기반의 시스템에 의해 구현될 수도 있다는 것이 주목될 것이다.
아래의 청구범위에서 발견될 수도 있는 모든 수단 또는 단계 플러스 기능 엘리먼트(means or step plus function element)의 대응하는 구조체, 재료, 액트 및 등가물은, 구체적으로 청구되는 다른 청구된 엘리먼트와 조합하여 기능을 수행하기 위한 임의의 구조체, 재료, 또는 액트를 포함하도록 의도된다.
하나 이상의 실시형태에서, 방법은 이종 SoC 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서를 명시하는 하드웨어 디스크립션 파일(hardware description file)을 수신하는 것 및 컴퓨터 하드웨어를 사용하여, 이종 SoC에 대한 복수의 도메인을 생성하는 것을 포함할 수도 있는데, 여기서 각각의 도메인은 복수의 프로세서로부터 선택되는 프로세서 및 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함한다. 방법은, 컴퓨터 하드웨어를 사용하여, 오퍼레이팅 시스템을 각각의 도메인에게 할당하는 것 및 컴퓨터 하드웨어를 사용하여, 이종 SoC 내에서 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 것을 포함할 수도 있다.
하나의 양태에서, 플랫폼은 이종 SoC의 분리 회로를 구성하기 위한 구성 데이터를 포함한다.
다른 양태에서, 플랫폼은 이종 SoC의 프로세서 시스템을 초기화하도록 구성되는 제1 단계 부트 로더를 포함한다.
다른 양태에서, 플랫폼은, 복수의 도메인 중 선택된 도메인에 대해, 선택된 도메인에게 할당되는 오퍼레이팅 시스템에 대한 디바이스 트리를 포함하는데, 여기서 디바이스 트리는 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스에 기초하여 생성된다.
다른 양태에서, 각각의 도메인은 이종 SoC 내에서 논리적으로 시행된다.
다른 양태에서, 방법은 하드웨어 디스크립션 파일을 사용하여 이종 SoC에 대한 복수의 도메인 중 적어도 하나의 도메인을 수정하는 것을 포함할 수도 있다.
다른 양태에서, 플랫폼은 소프트웨어 개발 환경에 의한 사용을 위한 복수의 도메인에 대한 복수의 아티팩트를 포함한다. 따라서, 방법은, 선택된 도메인에 대응하는 복수의 아티팩트로부터 선택되는 아티팩트를 사용하여 복수의 도메인 중 선택된 도메인에 대한 실행 가능한 프로그램 코드를 생성하는 것을 포함할 수도 있다.
다른 양태에서, 각각의 도메인은 이용 가능한 랜덤 액세스 메모리의 일부를 할당받는다.
하나 이상의 실시형태에서, 시스템은 프로그램 코드를 저장하도록 구성되는 메모리 및 메모리에 커플링되는 프로세서를 포함한다. 프로세서는, 프로그램 코드를 실행하는 것에 응답하여, 동작을 개시하도록 구성된다. 실행 가능한 동작은, 이종 SoC 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서를 명시하는 하드웨어 디스크립션 파일을 수신하는 것 및 이종 SoC에 대한 복수의 도메인을 생성하는 것을 포함할 수도 있는데, 여기서 각각의 도메인은 복수의 프로세서로부터 선택되는 프로세서 및 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함한다. 동작은, 오퍼레이팅 시스템을 각각의 도메인에게 할당하는 것 및 이종 SoC 내에서 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 것을 포함할 수도 있다.
하나의 양태에서, 플랫폼은 이종 SoC의 분리 회로를 구성하기 위한 구성 데이터를 포함한다.
다른 양태에서, 플랫폼은 이종 SoC의 프로세서 시스템을 초기화하도록 구성되는 제1 단계 부트 로더를 포함한다.
다른 양태에서, 플랫폼은, 복수의 도메인 중 선택된 도메인에 대해, 선택된 도메인에게 할당되는 오퍼레이팅 시스템에 대한 디바이스 트리를 포함하는데, 여기서 디바이스 트리는 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스에 기초하여 생성된다.
다른 양태에서, 각각의 도메인은 이종 SoC 내에서 논리적으로 시행된다.
다른 양태에서, 프로세서는, 하드웨어 디스크립션 파일을 사용하여 이종 SoC에 대한 복수의 도메인 중 적어도 하나의 도메인을 수정하는 것을 포함할 수도 있는 실행 가능한 동작을 개시하도록 구성된다.
다른 양태에서, 플랫폼은 소프트웨어 개발 환경에 의한 사용을 위한 복수의 도메인에 대한 복수의 아티팩트를 포함한다. 따라서, 프로세서는, 선택된 도메인에 대응하는 복수의 아티팩트로부터 선택되는 아티팩트를 사용하여 복수의 도메인 중 선택된 도메인에 대한 실행 가능한 프로그램 코드를 생성하는 것을 포함할 수도 있는 실행 가능한 동작을 개시하도록 구성된다.
다른 양태에서, 각각의 도메인은 이용 가능한 랜덤 액세스 메모리의 일부를 할당받는다.
하나 이상의 실시형태에서, 컴퓨터 프로그램 제품은, 프로그램 코드를 저장한 컴퓨터 판독 가능 저장 매체를 포함한다. 프로그램 코드는 동작을 개시하기 위해 컴퓨터 하드웨어에 의해 실행 가능하다. 동작은, 이종 SoC 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서를 명시하는 하드웨어 디스크립션 파일을 수신하는 것 및 이종 SoC에 대한 복수의 도메인을 생성하는 것을 포함할 수도 있는데, 여기서 각각의 도메인은 복수의 프로세서로부터 선택되는 프로세서 및 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함한다. 동작은, 오퍼레이팅 시스템을 각각의 도메인에게 할당하는 것 및 이종 SoC 내에서 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 것을 포함할 수도 있다.
하나의 양태에서, 플랫폼은 이종 SoC의 분리 회로를 구성하기 위한 구성 데이터를 포함한다.
다른 양태에서, 플랫폼은 이종 SoC의 프로세서 시스템을 초기화하도록 구성되는 제1 단계 부트 로더를 포함한다.
다른 양태에서, 플랫폼은, 복수의 도메인 중 선택된 도메인에 대해, 선택된 도메인에게 할당되는 오퍼레이팅 시스템에 대한 디바이스 트리를 포함하는데, 여기서 디바이스 트리는 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스에 기초하여 생성된다.
다른 양태에서, 각각의 도메인은 이종 SoC 내에서 논리적으로 시행된다.
다른 양태에서, 프로그램 코드는, 하드웨어 디스크립션 파일을 사용하여 이종 SoC에 대한 복수의 도메인 중 적어도 하나의 도메인을 수정하는 것을 포함할 수도 있는 동작을 개시하도록 컴퓨터 하드웨어에 의해 실행 가능하다.
다른 양태에서, 플랫폼은 소프트웨어 개발 환경에 의한 사용을 위한 복수의 도메인에 대한 복수의 아티팩트를 포함한다. 따라서, 프로그램 코드는, 선택된 도메인에 대응하는 복수의 아티팩트로부터 선택되는 아티팩트를 사용하여 복수의 도메인 중 선택된 도메인에 대한 실행 가능한 프로그램 코드를 생성하는 것을 포함할 수도 있는 동작을 개시하도록 컴퓨터 하드웨어에 의해 실행 가능하다.
다른 양태에서, 각각의 도메인은 이용 가능한 랜덤 액세스 메모리의 일부를 할당받는다.
본원에서 제공되는 독창적인 배열의 설명은 예시의 목적을 위한 것이며, 망라적으로 되도록 또는 개시되는 형태 및 실시형태로 제한되도록 의도되지는 않는다. 본원에서 사용되는 전문 용어는, 독창적인 배열의 원리, 실용적 적용 또는 시장에서 발견되는 기술에 대한 기술적 향상을 설명하기 위해, 및/또는 기술 분야의 숙련된 다른 사람이 본원에서 개시되는 독창적인 배열을 이해하는 것을 가능하게 하기 위해 선택되었다. 기술 분야에서 통상의 지식을 가진 자에게는, 설명된 독창적인 배열의 범위 및 취지를 벗어나지 않으면서, 수정 및 변형이 명백할 수도 있다. 따라서, 그러한 피쳐 및 구현예의 범위를 나타내는 것으로, 전술한 개시보다는, 다음의 청구범위에 대해 참조가 이루어져야 한다.

Claims (15)

  1. 방법에 있어서,
    이종 시스템 온 칩(System-on-Chip; SoC) 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서를 명시하는(specify) 하드웨어 디스크립션 파일(hardware description file)을 수신하는 단계;
    컴퓨터 하드웨어를 사용하여, 상기 이종 SoC에 대한 복수의 도메인 - 각각의 도메인은 상기 복수의 프로세서로부터 선택되는 프로세서 및 상기 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함함 - 을 생성하는 단계;
    상기 컴퓨터 하드웨어를 사용하여, 오퍼레이팅 시스템을 각각의 도메인에게 할당하는 단계; 및
    상기 컴퓨터 하드웨어를 사용하여, 상기 이종 SoC 내에서 상기 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 플랫폼은 상기 이종 SoC의 분리 회로(isolation circuit)를 구성하기 위한 구성(configuration) 데이터를 포함하는 것인, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 플랫폼은 상기 이종 SoC의 프로세서 시스템을 초기화하도록 구성되는 제1 단계 부트 로더(first stage boot loader)를 포함하는 것인, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 플랫폼은, 상기 복수의 도메인 중 선택된 도메인에 대해, 상기 선택된 도메인에게 할당되는 오퍼레이팅 시스템에 대한 디바이스 트리를 포함하며, 상기 디바이스 트리는 상기 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스에 기초하여 생성되는 것인, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    각각의 도메인은 상기 이종 SoC 내에서 논리적으로 시행되는 것인, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 하드웨어 디스크립션 파일을 사용하여 상기 이종 SoC에 대한 상기 복수의 도메인 중 적어도 하나의 도메인을 수정하는 단계를 더 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 플랫폼은 소프트웨어 개발 환경에 의한 사용을 위한 상기 복수의 도메인에 대한 복수의 아티팩트(artifact)를 포함하고, 상기 방법은:
    선택된 도메인에 대응하는 상기 복수의 아티팩트로부터 선택되는 아티팩트를 사용하여 상기 복수의 도메인 중 상기 선택된 도메인에 대한 실행 가능한 프로그램 코드를 생성하는 단계를 더 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    각각의 도메인은 이용 가능한 랜덤 액세스 메모리의 일부를 할당받는 것인, 방법.
  9. 시스템에 있어서,
    프로그램 코드를 저장하도록 구성되는 메모리; 및
    상기 메모리에 커플링되는 프로세서
    를 포함하고, 상기 프로세서는, 상기 프로그램 코드를 실행하는 것에 응답하여:
    이종 시스템 온 칩(SoC) 내에서 이용 가능한 복수의 하드웨어 리소스 및 복수의 프로세서를 명시하는 하드웨어 디스크립션 파일을 수신하는 것;
    상기 이종 SoC에 대한 복수의 도메인 - 각각의 도메인은 상기 복수의 프로세서로부터 선택되는 프로세서 및 상기 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스를 포함함 - 을 생성하는 것;
    오퍼레이팅 시스템을 각각의 도메인에게 할당하는 것; 및
    상기 이종 SoC 내에서 상기 복수의 도메인을 구현하도록 구성되는 플랫폼을 생성하는 것
    을 포함하는 동작을 개시하도록 구성되는 것인, 시스템.
  10. 제9항에 있어서,
    상기 플랫폼은 상기 이종 SoC의 분리 회로를 구성하기 위한 구성 데이터를 포함하는 것인, 시스템.
  11. 제9항 또는 제10항에 있어서,
    상기 플랫폼은 상기 이종 SoC의 프로세서 시스템을 초기화하도록 구성되는 제1 단계 부트 로더를 포함하는 것인, 시스템.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 플랫폼은, 상기 복수의 도메인 중 선택된 도메인에 대해, 상기 선택된 도메인에게 할당되는 오퍼레이팅 시스템에 대한 디바이스 트리를 포함하며, 상기 디바이스 트리는 상기 복수의 하드웨어 리소스로부터 선택되는 하드웨어 리소스에 기초하여 생성되는 것인, 시스템.
  13. 제9항 내지 제12항 중 어느 한 항에 있어서,
    각각의 도메인은 상기 이종 SoC 내에서 논리적으로 시행되고 각각의 도메인은 이용 가능한 랜덤 액세스 메모리의 일부를 할당받는 것인, 시스템.
  14. 제9항 내지 제13항 중 어느 한 항에 있어서,
    상기 프로세서는:
    상기 하드웨어 디스크립션 파일을 사용하여 상기 이종 SoC에 대한 상기 복수의 도메인 중 적어도 하나의 도메인을 수정하는 것
    을 더 포함하는 동작을 개시하도록 구성되는 것인, 시스템.
  15. 제9항 내지 제14항 중 어느 한 항에 있어서,
    상기 플랫폼은 소프트웨어 개발 환경에 의한 사용을 위한 상기 복수의 도메인에 대한 복수의 아티팩트를 포함하고, 상기 프로세서는:
    선택된 도메인에 대응하는 상기 복수의 아티팩트로부터 선택되는 아티팩트를 사용하여 상기 복수의 도메인 중 상기 선택된 도메인에 대한 실행 가능한 프로그램 코드를 생성하는 것
    을 더 포함하는 동작을 개시하도록 구성되는 것인, 시스템.
KR1020207032848A 2018-04-18 2019-03-11 이종 시스템 온 칩에 대한 소프트웨어 정의 다중 도메인 생성 및 분리 KR102610567B1 (ko)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
KR20210002537A true KR20210002537A (ko) 2021-01-08
KR102610567B1 KR102610567B1 (ko) 2023-12-05

Family

ID=65911267

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207032848A KR102610567B1 (ko) 2018-04-18 2019-03-11 이종 시스템 온 칩에 대한 소프트웨어 정의 다중 도메인 생성 및 분리

Country Status (6)

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

Families Citing this family (14)

* 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 佛吉亚歌乐电子(佛山)有限公司 车辆双系统兼容控制方法、系统、存储介质和车载终端
WO2022087442A1 (en) * 2020-10-22 2022-04-28 Arizona Board Of Regents On Behalf Of Arizona State University User-space emulation framework for heterogeneous soc design
CN112562767B (zh) * 2020-12-29 2021-09-28 国家数字交换系统工程技术研究中心 一种晶上软件定义互连网络装置与方法
CN112732183B (zh) * 2020-12-30 2022-01-11 科东(广州)软件科技有限公司 异构系统存储设备的访问方法、装置、设备及存储介质
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 南京芯驰半导体科技有限公司 一种数据存储方法及装置
CN115509726B (zh) * 2022-11-17 2023-03-14 南京芯驰半导体科技有限公司 一种传感器数据访问系统
CN115983173B (zh) * 2023-03-21 2023-07-07 湖北芯擎科技有限公司 寄存器模型生成方法、装置、计算机设备及存储介质
CN116610388B (zh) * 2023-07-19 2023-09-19 成都泰格微电子研究所有限责任公司 一种快速启动ADC和linux系统的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130082152A (ko) * 2010-08-31 2013-07-18 쏘닉스, 인크. 지능형 전력 제어기
KR20170084206A (ko) * 2014-11-12 2017-07-19 자일링크스 인코포레이티드 이종 멀티프로세서 프로그램 컴파일레이션 타겟팅 프로그램가능 집적 회로

Family Cites Families (9)

* 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
US9311011B2 (en) * 2013-08-07 2016-04-12 Qualcomm Incorporated Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems
US9600384B2 (en) * 2014-10-14 2017-03-21 Cypress Semiconductor Corporation System-on-chip verification
US10394731B2 (en) * 2014-12-19 2019-08-27 Amazon Technologies, Inc. System on a chip comprising reconfigurable resources for multiple compute sub-systems
US9727679B2 (en) * 2014-12-20 2017-08-08 Intel Corporation System on chip configuration metadata
JP6438144B2 (ja) * 2015-08-18 2018-12-12 日本電信電話株式会社 リソース構成システム、リソース構成方法及びリソース構成プログラム
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130082152A (ko) * 2010-08-31 2013-07-18 쏘닉스, 인크. 지능형 전력 제어기
KR20170084206A (ko) * 2014-11-12 2017-07-19 자일링크스 인코포레이티드 이종 멀티프로세서 프로그램 컴파일레이션 타겟팅 프로그램가능 집적 회로

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102610567B1 (ko) 이종 시스템 온 칩에 대한 소프트웨어 정의 다중 도메인 생성 및 분리
US11275503B2 (en) Controlling access to previously-stored logic in a reconfigurable logic device
JP6739633B2 (ja) 構成可能論理プラットフォーム
US11182320B2 (en) Configurable logic platform with multiple reconfigurable regions
CN114816664B (zh) Gpu虚拟化
US10289785B1 (en) Platform architecture creation for a system-on-chip
US20190042329A1 (en) System with programmable multi-context accelerator circuitry
JP2019530941A (ja) マルチテナント環境のfpgaからのデバック情報の抽出
Pham et al. Zucl: A zynq ultrascale+ framework for opencl hls applications
CN117480498A (zh) 在运行时间为裸金属服务器动态提供PCIe器件
US20230289500A1 (en) Method and system for building hardware images from heterogeneous designs for eletronic systems

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant