KR102424238B1 - 프로그래밍가능 논리부를 위한 메모리의 가상화 - Google Patents
프로그래밍가능 논리부를 위한 메모리의 가상화 Download PDFInfo
- Publication number
- KR102424238B1 KR102424238B1 KR1020177007400A KR20177007400A KR102424238B1 KR 102424238 B1 KR102424238 B1 KR 102424238B1 KR 1020177007400 A KR1020177007400 A KR 1020177007400A KR 20177007400 A KR20177007400 A KR 20177007400A KR 102424238 B1 KR102424238 B1 KR 102424238B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- memory address
- circuits
- access request
- address
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3215—Monitoring of peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
프로세싱 서브시스템(110/412)은, 프로그램의 변수를 저장하기 위한 메모리 위치를 참조하기 위해 가상 메모리 주소들의 세트을 사용하는 프로그램을 실행하도록 구성된다. 프로그래밍가능 논리 서브시스템(120/420)은, 구성 데이터 스트림 내에 명시된 I/O 회로들(124/126/426/428)의 세트를 구현하도록 구성되고, I/O 회로들(124/126/426/428) 각각은 각자의 ID를 가지며 변수들 중 하나를 액세스하도록 구성된다. 메모리 관리 회로(170/470)는, 가상 메모리 주소를 메모리의 물리적 메모리 주소에 매핑하고, ID를, 대응하는 변수를 저장하기 위해 사용되는 물리적 주소에 매핑하도록 구성된다. TLB(144/146/442/444/446)는, I/O 회로들(124/126/426/428)로부터 메모리 액세스 요청 - 각각의 요청은 ID를 표시함 - 을 수신하고, ID에 매핑되는 물리적 메모리 주소를 표시하는 메모리 액세스 요청을 메모리에 제공하도록 구성된다.
Description
본 개시는 일반적으로 집적 회로(integrated circuit; IC)에 대한 것이고, 보다 구체적으로는 메모리 가상화에 대한 것이다.
프로그래밍가능 집적 회로(IC)는, 명시된 논리 기능을 수행하도록 프로그래밍될 수 있는 장치이다. 한 유형의 프로그래밍가능 IC인 필드 프로그래밍가능 게이트 어레이(field programmable gate array; FPGA)는 통상적으로 프로그래밍가능 타일들의 어레이를 포함한다. 이 프로그래밍가능 타일들은, 예를 들어, 입출력 블록(input/output blocks lOB)들, 구성 가능한 논리 블록(configurable logic block; CLB)들을 포함할 수 있는 다양한 유형들의 논리 블록들, 전용 랜덤 액세스 메모리 블록(dedicated random access memory block; BRAM)들, 승산기들, 디지털 신호 프로세싱 블록(digital signal processing block; DSP)들, 프로세서들, 클록 관리자들, 지연 동기 루프(delay lock loop; DLL)들, 예컨대, PCI(Peripheral Component Interconnect Express)와 같은 버스 또는 네트워크 인터페이스, 및 이더넷등을 포함한다.
각각의 프로그래밍가능 타일은 프로그래밍가능 상호연결부 및 프로그래밍가능 논리부 둘 다를 포함할 수 있다. 프로그래밍가능 상호연결부는, 통상적으로 프로그래밍가능 상호연결 지점(programmable interconnect point; PIP)들에 의해 상호연결되는 가변 길이들의 매우 큰 수의 상호연결 라인들을 포함한다. 프로그래밍가능 논리부는 예를 들어, 함수 생성기들, 레지스터들, 산술 논리부 등을 포함할 수 있는 프로그래밍 가능 엘리먼트들을 이용하여 사용자 설계의 논리부를 구현한다.
프로그래밍 가능 상호연결부 및 프로그래밍 가능 논리부는 통상적으로 프로그래밍 가능 엘리먼트들이 어떻게 구성되는지를 규정하는 내부 구성 메모리 셀들 내로 구성 데이터의 스트림을 로딩함으로써 프로그래밍된다. 구성 데이터는 외부 장치에 의해 메모리로부터(예컨대, 외부 PROM으로부터) 판독되거나 FPGA 내에 기록될 수 있다. 개별 메모리 셀들의 집합적 상태들은 이어서 FPGA의 기능을 결정한다.
일부 프로그래밍가능 IC는 프로그램 코드를 실행할 수 있는 내장된 프로세서를 포함한다. 프로세서는, 통칭해서 IC의 “프로그래밍가능 회로”라고 또한 지칭되는, 프로그래밍가능 논리 회로와 프로그래밍가능 상호연결 회로를 포함하는 동일 다이의 일부로서 제조될 수 있다. 프로세서 내에서 프로그램 코드의 실행이, IC상에서 이용가능할 수 있는 프로그래밍가능 회로를 “프로그래밍” 하거나 “구성”하는 것과는 구별된다는 것이 인식되어야 한다. IC의 프로그래밍가능 회로를 프로그래밍하거나 구성하는 동작은, 프로그래밍가능 회로 내에서 구성 데이터에 의해 명시되는 상이한 물리적 회로의 구현을 초래한다.
일부 구현에서, 프로그래밍가능 IC의 프로세서는 보다 유용한 메모리를 프로그램에게 제공하도록 메모리 가상화를 활용할 수 있다. 프로세서상에서 실행되는 각 프로그램은, 예컨대, 랜덤 액세스 메모리(random access memory; RAM)와 같은 연속적 컴퓨터 메모리의 큰 부분으로의 액세스를 가지고 있는 것처럼 동작한다. 비록 프로그램에 의해 사용되는 물리적 메모리가 단편화되고 그리고/또는 디스크 저장부상으로 오버플로(overflow)될 수 있지만, 프로그램은, 자신이 메모리 주소의 연속적 집합(collection)을 액세스하고 있는 것처럼 동작하도록 가상 메모리 주소를 사용할 수 있다. 가상 메모리는, 각각의 실행 프로그램이, 물리적 메모리의 단지 일부분으로만 액세스를 가지고 있음에도 불구하고, 자신이 임의의 주어진 시간에 호스트 컴퓨터의 물리적 메모리 전체로의 액세스를 가지고 있는 것처럼 기능하는 것을 또한 허용한다.
가상 메모리의 구현은, 프로세서가, 프로그램을 대신하여 메모리를 판독하고 메모리에 기록하기 위해, 프로그램에 의해 활용되는 가상 메모리 주소(가상 주소)를, 하드웨어에 의해 사용되는 물리적 메모리 주소(물리적 주소)로 변환(translate)하는 것을 돕는 하드웨어 컴포넌트를 필요로 한다. 메모리 관리 유닛은, 가상 메모리 주소를 물리적 메모리 주소로 변환하는 임무를 가진다. 메모리 관리 유닛은, 프로세서에 의해 요청되는 메모리 액세스를 다룬다.
프로세싱 서브시스템 및 프로그래밍가능 논리 서브시스템을 포함하는 시스템이 개시된다. 프로세싱 서브시스템은, 프로그램의 변수(variable)를 저장하기 위한 메모리 위치를 참조하기 위해 가상 메모리 주소들의 세트를 사용하는 프로그램을 실행하도록 구성된다. 프로그래밍가능 논리 서브시스템은, 구성 데이터 스트림에서 명시되는 회로들의 세트를 구현하도록 구성된다. 회로들의 세트 중 각 회로는 복수의 입출력(input/output; I/O) 회로들을 포함하고, 각 회로는 제각기의 식별자(identifier; ID)를 가지며, 변수들 각각을 액세스하도록 구성된다. 시스템은 메모리와, 가상 메모리 주소들의 세트를 메모리의 물리적 메모리 주소들에 매핑하도록 구성된 메모리 관리 회로를 또한 포함한다. 복수의 I/O 회로들 각각에 대해, 메모리 관리 회로는, I/O 회로의 ID를, I/O 회로가 액세스하도록 구성되는 각자의 변수의 가상 메모리 주소에 매핑되는 물리적 주소에 또한 매핑한다. 시스템은, I/O 회로들 중 적어도 하나에 결합된 적어도 하나의 변환 룩어사이드 버퍼(translation look-aside buffer; TLB)를 또한 포함한다. ID를 표시하는 메모리 액세스 요청을 수신하는 것에 응답해서, TLB는, ID에 매핑되는 물리적 메모리 주소를 표시하는 메모리 액세스 요청을, 메모리에 제공하도록 구성된다.
프로세싱 서브시스템 및 프로그래밍가능 논리 서브시스템을 구비한 프로그래밍가능 IC를 동작시키기 위한 방법이 또한 개시된다. 프로그램은, 프로그램의 변수의 저장을 위해 메모리의 위치를 참조하도록 가상 메모리 주소들의 세트를 사용해서 프로세싱 서브시스템상에서 실행된다. 프로그래밍가능 논리 서브시스템은, 구성 데이터 스트림에서 명시되는 회로들의 세트를 구현하도록 프로그래밍된다. 회로들의 세트는 복수의 I/O) 회로들을 포함하고, 각 회로는 각자의 ID를 가지며, 변수들 중 각자의 변수를 액세스하도록 구성된다. I/O 회로들 각각에 대해, 입출력 회로로부터 메모리에 연결된 복수의 TLB들 중 하나로, I/O 회로의 ID와 가상 메모리 주소를 표시하는 메모리 액세스 요청을 제공함으로써, 대응하는 주소가 액세스된다. TLB들 하나를 사용해서, 대응 변수가 저장되는 물리적 메모리 주소는, ID 및 가상 메모리 주소에 기초해서 결정된다. 결정된 물리적 메모리 주소를 포함하느 메모리 액세스 요청은, TLB들 중 하나로부터 메모리에 제공된다.
다른 특징들은, 이하에 기재된 구체적인 내용 및 청구항들을 고려하면 인식될 것이다.
개시된 방법 및 회로의 다양한 양상 및 특징은, 이하의 상세한 설명을 검토할 때 그리고 도면들을 참조할 때 명백해질 것이다.
도 1은, 하나 이상의 구현에 따라, 프로세싱 서브시스템을 위해 그리고 프로그래밍가능 논리 서브시스템을 위해 주소 변환을 수행하도록 구성된 예시적인 프로그래밍가능 IC를 도시한다.
도 2는, 하나 이상의 구현에 따라 프로그래밍가능 IC의 시동시에 프로세싱 서브 시스템 및 프로그래밍가능 서브시스템을 구성하기 위한 프로세스를 도시한다.
도 3은, 하나 이상의 구현에 따라 프로그래밍가능 논리 서브시스템에 의해 발부(issue)되는 메모리 액세스 요청에 포함되는 가상 메모리 주소를 변환하기 위한 프로세스를 도시한다.
도 4는, 하나 이상의 구현에 따라, 프로세싱 서브시스템을 위해 그리고 프로그래밍가능 논리 서브시스템을 위해 주소 변환을 수행하도록 구성된 다른 예시적인 프로그래밍가능 IC를 도시한다.
도 5는 하나 이상의 구현에 따라 구성될 수 있는 다른 프로그래밍가능 IC를 도시한다.
도 1은, 하나 이상의 구현에 따라, 프로세싱 서브시스템을 위해 그리고 프로그래밍가능 논리 서브시스템을 위해 주소 변환을 수행하도록 구성된 예시적인 프로그래밍가능 IC를 도시한다.
도 2는, 하나 이상의 구현에 따라 프로그래밍가능 IC의 시동시에 프로세싱 서브 시스템 및 프로그래밍가능 서브시스템을 구성하기 위한 프로세스를 도시한다.
도 3은, 하나 이상의 구현에 따라 프로그래밍가능 논리 서브시스템에 의해 발부(issue)되는 메모리 액세스 요청에 포함되는 가상 메모리 주소를 변환하기 위한 프로세스를 도시한다.
도 4는, 하나 이상의 구현에 따라, 프로세싱 서브시스템을 위해 그리고 프로그래밍가능 논리 서브시스템을 위해 주소 변환을 수행하도록 구성된 다른 예시적인 프로그래밍가능 IC를 도시한다.
도 5는 하나 이상의 구현에 따라 구성될 수 있는 다른 프로그래밍가능 IC를 도시한다.
가상 메모리 주소의 사용은, 프로그래밍가능 IC의 프로세싱 서브시스템 내에서 실행되는 회로 설계의 소프트웨어 부분과, 프로그래밍가능 논리 서브시스템 내에 구현되는 회로 설계의 하드웨어 부분간에 데이터를 전달하기 위한 도전을 제기할 수 있다. 예를 들면, 프로세싱 서브시스템 내에서 실행되는 프로그램의 변수는, 변수가 저장되는 메모리 주소를 액세스함으로써, 프로그래밍가능 논리부에 의해 액세스될 수 있다. 하지만, 가상 메모리 주소가 프로세싱 서브시스템에 의해 사용될 때, 액세스될 주소에 어느 물리 주소가 대응하는지를 프로그래밍가능 논리 서브시스템이 결정하는 것은 어려울 수 있다. 일부 접근법에서, 소프트웨어는, 가상 메모리 주소 변환을 수행하기 위해 프로세싱 서브시스템상에서 실행될 수 있다. 하지만, 이 접근법은, 비효율적이고, 소프트웨어 복잡도를 증가시켜며, 소프트웨어 이식성(portability)을 감소시킬 수 있다.
프로그래밍가능 논리 서브시스템에 의해 발부되는 메모리 액세스 요청을, 액세스될 프로그램 변수에 대응하는 물리적 메모리 주소에 효율적으로 매핑하고 경로지정(route)하기 위한 방법 및 회로가 개시된다. 일부 구현에서, 프로그래밍가능 IC는, 프로그램의 변수를 저장하기 위한 메모리 위치를 참조하기 위해 가상 메모리 주소들의 세트를 사용하는 프로그램을 실행하도록 구성된 프로세싱 서브시스템을 포함한다. 프로그래밍가능 IC는 또한, 프로그램의 하나 이상의 변수로의 액세스를 통해 프로그램과 상호 동작하는, 구성 데이터 스트림에 명시된 회로들의 세트를 구현하도록 구성된 프로그래밍가능 논리 서브시스템을 또한 포함한다. 예들 들면, 회로들의 세트는 복수의 입출력(input/output; I/O) 회로들을 포함할 수 있고, 각각의 입출력 회로는 각자의 식별자(identifier; ID)를 가지며, 프로그램 변수들 중 각자의 프로그램 변수를 판독 및/또는 수정하도록 구성된다.
프로그래밍가능 IC는, 프로세싱 서브시스템이 프로그램을 실행하도록 초기화될 때, 가상 메모리 주소들의 세트를 메모리의 물리적 메모리 주소들에 매핑하도록 구성된 메모리 관리 회로를 포함한다. 메모리 관리 회로는 또한, I/O 회로의 ID를, 액세스될 변수에 대응하는 기초(base) 물리적 메모리 주소에 매핑한다. 프로그래밍가능 IC의 후속 동작 동안에, 프로그래밍가능 논리 서브시스템으로부터의 메모리 액세스 요청은, 주소 변환을 위해 하나 이상의 변환 룩어사이드 버퍼(translation look-aside buffer; TLB)에 제공된다. 각각의 TLB는, 수신 메모리 액세스 요청에 표시된 ID 및/또는 가상 메모리 주소에 대응하는 물리적 메모리 주소를 결정하도록 구성된다. 물리적 메모리 주소를 결정한 후에, TLB는 I/O 회로를 대신해서 물리적 메모리 주소를 표시하는 메모리 액세스 요청을 메모리에 제공한다.
일부 구현에서, TLB는, I/O 및/또는 가상 메모리 주소를 표시하는 메모리 액세스 요청의 제1 인스턴스에 응답해서, I/D 및/또는 가상 메모리 주소의, 물리적 메모리 주소로의 매핑을 검색하도록 구성된다. 예를 들면, 매핑은 메모리 관리 회로로부터 요청될 수 있다. TLB는 나중 사용을 위해 I/D 및/또는 가상 메모리 주소의, 물리적 메모리 주소로의 검색된 매핑을 캐싱할 수 있다. 주소 매핑의 캐싱은, 메모리 관리 회로에 의해 수행되어야 하는 주소 변환 부하를 감소시키는 것을 돕는다. 일부 다른 구현에서, 메모리 관리 회로는, 메모리 주소 요청이 프로그래밍가능 논리 서브시스템에 의해 생성되기 전에, 시동시에 주소 매핑 테이블을 TLB들 각각에 제공하도록 구성될 수 있다.
TLB들은 다양한 회로들을 사용해서 구현될 수 있다. 일부 구현에서, TLB는 내용 주소화 메모리(content addressable memory; CAM)를 사용해서 주소 매핑 엔트리를 캐싱할 수 있다. 메모리 주소를 사용해서 데이터가 액세스되는 랜덤 액세스 메모리(random access memory; RAM)와는 달리, CAM은 명시된 가상 메모리 주소 및/또는 ID를 포함하는 엔트리에 대해 저장된 데이터를 검색(search)할 수 있다. 명시된 ID 및/또는 가상 메모리 주소가 CAM에서 발견되지 않으면, 메모리 매핑 회로부터 물리적 메모리 주소가 검색되게 하는 예외가 생성될 수 있다.
일부 구현에서, TLB는 프로그래밍가능 IC 상의 프로그래밍가능 논리부 및 메모리에 결합된 고정 배선된(hardwired) 회로이다. 대안적으로 또는 추가적으로, 프로그래밍가능 논리 서브시스템 내의 프로그래밍가능 자원은 TLB들 중 일부 또는 전부를 형성하도록 프로그래밍될 수 있다. TLB를 구현하기 위한 프로그래밍 자원의 사용은, 설계자가, 사용자 설계의 요건을 충족하도록 프로그래밍가능 IC를 구체적으로 구성하게 할 수 있다. 예를 들면, 일부 응용에서, 단지 적은 수의 메모리 액세스 요청들만이, 프로세싱 논리 서브시스템과 프로그래밍가능 논리 서브시스템간에 데이터를 교환하도록 생성될 수 있다. 이러한 응용을 위해, 단일 TLB를 사용해서 메모리 액세스 요청을 위한 주소 변환을 수행하는 것이 가능할 수 있다. 일부 다른 응용에서, 많은 수의 TLB들이, 많은 수의 메모리 액세스 요청들을 위한 주소 변환을 수행하도록 요구될 수 있다.
이제 도면들을 참조하면, 도 1은 하나 이상의 구현에 따라 주소 변환을 수행하도록 구성된 예시적인 프로그래밍가능 IC를 도시한다. 프로그래밍가능 IC(100)는 프로세싱 서브시스템(110), 프로그래밍가능 논리 서브시스템(120), 및 메모리(190)를 포함한다. 프로세싱 서브시스템(110)은, 소프트웨어 프로그램의 변수를 저장하기 위한 메모리(190)의 위치를 참조하기 위해 가상 메모리 주소들의 세트를 사용해서 프로그램(112)을 실행하도록 구성될 수 있다. 프로그래밍가능 논리 서브시스템(120)은, 프로그램의 변수를 저장하기 위해 사용되는 메모리(190)의 물리적 위치를 액세스함으로써, 프로그램(112)과 데이터를 교환하도록 구성된 다수의 I/O 회로들(124 및 126)을 포함하는 회로 설계(122)를 구현하도록 또한 구성될 수 있다.
프로그래밍가능 IC는, 프로그램 변수가 저장되는, 메모리(190)의 물리적 메모리 주소에, 프로그램에 의해 사용된 가상 메모리 주소를 매핑하도록 구성된 메모리 관리 회로(170)를 포함한다. 메모리 관리 회로(170)는 또한, I/O 회로들(124 및 126)의 ID들을, 액세스될 변수들에 대응하는 물리적 메모리 주소에 매핑하도록 구성된다.
동작 동안에, I/O 회로들(124 및 126)은, 판독 요청 또는 기록 요청과 같은, 메모리 액세스 요청을 사용해서 메모리(190) 내에 저장된 변수를 액세스한다. 메모리 액세스 요청은, 예를 들면, I/O 회로의 ID를 소스 주소로서, 그리고 프로그램 변수에 대응하는 가상 메모리 주소를 목적지 주소로서 표시할 수 있다. I/O 회로들(124 및 126))에 의해 발부되는 메모리 액세스 요청은, 주소 변환을 위해 TLB들(144 및 146)에 제공된다. 이 예시에서, 프로그래밍가능 IC는, 프로그램(112)의 실행 동안 프로세싱 서브시스템(110)에 의해 발부되는 메모리 액세스 요청을 위해 가상 메모리 주소를 변환하도록 구성된 TLB(140)를 또한 포함한다.
메모리 액세스 요청이 수신될 때, TLB들(140, 144 및 146)은, 메모리 액세스 요청에서 표시된 가상 메모리 주소 및/또는 ID에 대응하는 물리적 메모리 주소를 결정한다. 예를 들면, 가상 메모리 주소 및/또는 ID에 대응하는 물리적 메모리 주소는 메모리 관리 회로로부터 요청될 수 있다. 다양한 구현들에서, 물리적 메모리 주소는 ID, 가상 메모리 주소, 또는 둘 다의 함수로서 결정될 수 있다. 그런 다음, 메모리 액세스 요청은 결정된 물리적 메모리 주소를 목적지 주소로서 사용해서 메모리에 제공된다. 위에서 표시된 바와 같이, ID 및 가상 메모리 주소를 위한 물리적 메모리 주소를 결정한 후에, TLB는, 물리적 메모리 주소의, ID 및/또는 가상 메모리 주소로의 매핑을 표시하는 엔트리를 캐싱할 수 있다. 캐싱된 엔트리는, 메모리 관리 회로(170)를 접촉하지 않고, ID 및/또는 가상 메모리 주소에 대응하는 물리적 메모리 주소를 결정하기 위해 나중에 사용될 수 있다.
도 2는, 하나 이상의 구현에 따라 프로그래밍가능 IC의 시동시에 프로세싱 서브 시스템 및 프로그래밍가능 서브시스템을 구성하기 위한 프로세스를 도시한다. 프로그래밍가능 IC의 시동시(202)에, 운영 체제(operating system; OS)는 블록(204)에서 프로세싱 서브시스템 내에서 부팅된다. 블록(206)에서, 프로그래밍가능 논리 서브시스템은, 구성 데이터 스트림에서 명시되는 회로들을 구현하도록 프로그래밍된다. 블록(208)에서, 프로그램의 인스턴스가 OS 내로 로딩된다. 프로그램의 인스턴스의 로딩의 일부로서, 실행하기 위해 프로그램에 의해 사용된 가상 메모리 주소가 물리적 메모리 주소에 매핑된다. 블록(210)에서, 프로세스는, 프로그래밍가능 논리 서브시스템 내에 구현된 회로에 의해 액세스되는 프로그램의 변수를 결정한다. 일부 구현에서, 예를 들면, 구성 데이터 스트림은, 프로그래밍가능 논리 서스시스템 내에 형성된 회로에 의해 액세스되는 가상 메모리 주소 또는 변수를 명시할 수 있다. 블록(212)에서, 변수에 액세스하는 회로를 위한 ID는, 변수가 저장되는 대응하는 기초 물리적 메모리 주소에 매핑된다.
도 3은, 하나 이상의 구현에 따라 프로그래밍가능 논리 서브시스템에 의해 발부되는 메모리 액세스 요청에 포함되는 가상 메모리 주소를 변환하기 위한 프로세스를 도시한다. TBL가 메모리 액세스 요청(302)를 수신할 때 프로세스가 개시된다. 물리적 메모리 주소가 메모리 액세스 요청(302)에서 표시된 ID 및/또는 가상 메모리 주소를 위해 캐싱되면, 결정 블록(304)은 프로세스를 블록(306)으로 안내한다. 블록(306)에서, 메모리 액세스 요청은 캐싱된 물리적 메모리 주소를 목적지 주소로서 사용해서 메모리에 제공된다. 그렇지 않으면, 변환 요청은 블록(308)에서 메모리 관리 회로에 보내진다. 일단 물리적 메모리 주소가 메모리 관리 회로로부터 수신되면, 프로세스는, 물리적 메모리 주소의, 가상 메모리 주소 및 ID로의 매핑이 캐싱되는 블록(310)으로 진행한다. 블록(312)에서, 메모리 액세스 요청은 캐싱된 물리적 메모리 주소를 목적지 주소로서 사용해서 메모리에 제공된다.
도 4는, 하나 이상의 구현에 따라, 프로세싱 서브시스템을 위해 그리고 프로그래밍가능 논리 서브시스템을 위해 주소 변환을 수행하도록 구성된 다른 예시적인 프로그래밍가능 IC를 도시한다. 프로그래밍가능 IC(400)는, 소프트웨어 프로그램의 변수를 저장하기 위한 메모리(490)의 위치를 참조하기 위해 가상 메모리 주소들의 세트를 사용해서 사용자 프로그램(414)을 실행하도록 구성될 수 있는 프로세싱 서브시스템(410)을 포함한다. 이 예시에서 도시된 바와 같이, 프로세싱 서브시스템(410)은, 프로그램(414)의 실행을 위해 하나 이상의 프로세서(412)를 포함할 수 있다. 이 예시에서, 프로세싱 서브시스템(410)은, 프로그램(414)에 의해 사용된 메모리 위치의 로컬 복사본을 저장하기 위한 캐시(416)를 또한 포함한다. 일부 구현에서, 프로그래밍가능 IC(400)는, 캐시(416) 내에 저장된 캐싱된 메모리 위치의 값과 메모리(490) 내에 저장된 값 사이에 일관성을 유지하도록 구성된 캐시 코히어런트(coherent) 상호연결부(450)를 포함한다.
프로그래밍가능 IC(400)는 또한, 회로 설계(424)를 구현하도록 구성될 수 있는 프로그래밍가능 논리 서브시스템(420)을 포함한다. 회로 설계(424)는, 프로그램의 변수를 저장하기 위해 사용되는 메모리(490)의 위치를 액세스함으로써, 프로그램(112)과 데이터를 교환하는, 다수의 I/O 회로들(426 및 428)을 포함한다.
도 1에 도시된 프로그래밍가능 IC와 유사하게, IC(400)는, 프로그램 변수가 저장되는, 메모리(490)의 물리적 메모리 주소에, 프로그램에 의해 사용된 가상 메모리 주소를 매핑하도록 구성된 메모리 관리 회로(470)를 포함한다. 메모리 관리 회로(470)는 또한, I/O 회로들(426 및 428)의 ID들을, 액세스될 변수들에 대응하는 기초 물리적 메모리 주소에 매핑한다. 동작 동안에, I/O 회로들(426 및 428)은, 판독 요청 또는 기록 요청과 같은, 메모리 액세스 요청을 사용해서 메모리(490) 내에 저장된 변수를 액세스한다.
이 예시에서, 프로그래밍가능 논리 서브시스템(420)은 인터페이스 회로들(430, 432, 434, 및 436)의 세트를 포함한다. 인터페이스 회로들(430, 432, 434, 및 436) 각각은, 스위칭 네트워크(460) 또는 다른 데이터 버스를 통해, I/O 회로들(426 및 428) 중 하나 이상으로 그리고/또는 I/O 회로들(426 및 428) 중 하나 이상으로부터 데이터를 전달할도록 구성될 수 있다. 일 예시에서, 인터페이스 회로는, AXI 통신 프로토콜에 따라 데이터를 버퍼링하고 전달하도록 구성된 AFI(AXI Fabric interface)일 수 있다.
일부 구현에서, I/D 회로들(426 및 428)의 ID들은, 인터페이스 회로들(430, 432, 434, 및 436) 중 어느 인터페이스 회로가 데이터를 전달하기 위해 사용되는지를 또한 식별할 수 있다. 하나의 예시적인 구현에서, 4개의 최상위 비트들(xxxx)에서 인터페이스 회로를 고유하게 식별하는 10 비트 ID(xxxxyyyyyy)가 사용될 수 있다. 6개의 최하위 비트들(yyyyyy)은, 각각의 인터페이스 회로를 통해 통신하는, 사용자 설계의 최대 64개의 상이한 회로들을 고유하게 식별할 수 있다. 이러한 ID들은, 프로그래밍가능 IC 내의 다른 회로들을 식별하도록 또한 사용될 수 있다. 예를 들면, 4개의 최상의 비트들(xxxx)은, 프로세싱 서브시스템에 포함된 프로세서(예컨대, 412)를 고유하게 식별하도록 사용될 수 있다. 6개의 최하위 비트들(yyyyyy)은, 프로세서 상에서 실행되는 상이한 프로그램 인스턴스들간에 구별하도록 사용될 수 있다.
이 예시에서, 인터페이스 회로들(430, 432, 434, 및 436)은 TLB들(442, 444, 및 446)에 의해 스위칭 네트워크에 연결된다. 도 1에서 TLB들(144 및 146)을 참조해서 이전에 설명된 바와 같이, TLB들(442, 444, 및 446)은, 인터페이스 회로들(430, 432, 434, 및 436)로부터 수신된 메모리 액세스 요청에 대한 주소 변환을 수행하도록 구성된다. 주소 변환은, 예를 들면, 도 3에 도시된 프로세스를 사용해서 TLB들과 메모리 관리 회로(470)를 사용해 수행될 수 있다. 물리적 메모리 주소가 주소 변환을 통해 메모리 액세스 요청을 위해 결정된 후에, TLB(442, 444, 또는 446)는 결정된 물리적 메모리 주소를 목적지 주소로서 사용하기 위해 메모리 액세스 요청을 수정한다. TLB(442, 444, 또는 446)는, 원하는 메모리 위치를 액세스하도록, 수정된 메모리 액세스 요청을 (스위칭 네트워크(460)를 통해) 메모리(490) 및/또는 캐시 코히어런트 상호연결부(450)에 제공한다. 위에서 설명된 바와 같이, 일부 구현에서, 하나 이상의 TLB(예컨대, 422)는, 프로그래밍가능 논리 서브시스템(420)의 프로그래밍가능 자원을 사용해서 구현될 수 있다.
이 예시에서, 프로그래밍가능 IC(400)는 또한, 프로그래밍가능 IC(400)의 하나 이상의 외부 데이터 포트들을 통해 데이터를 전달하기 위해 사용될 수 있는, 하나 이상의 외부 I/O 회로(480)를 포함한다. 데이터는, 코어 스위칭 네트워크(462)를 통해 프로세싱 서브시스템(410) 및/또는 프로그래밍가능 논리 서브시스템(420) 사이에 전달될 수 있다. 일부 구현에서, 외부 I/O 회로(480)는 또한, 가상 메모리 주소를 표시하는 메모리 액세스 요청을 사용해서 프로그램의 변수를 액세스함으로써, 프로세싱 서브시스템(410)과 통신할 수 있다. TLB(440)는, TLB들(442, 444, 및 446)을 참조해서 설명된 바와 같이, 그러한 메모리 액세스 요청을 위한 주소 변환을 수행하도록 구성된다.
도 5는 하나 이상의 구현에 따라 구성될 수 있는 프로그래밍가능 IC(502)를 도시한다. 프로그래밍가능 IC는, 프로세싱 서브시스템(510)과 프로그래밍가능 논리 서브시스템(530)을 포함하는, 시스템 온 칩(System On Chip; SOC)이라고 또한 지칭될 수 있다. 프로세싱 서브시스템(510)은, 사용자 프로그램의 실행을 통해 사용자 설계의 소프트웨어 부분을 구현하도록 프로그래밍될 수 있다. 프로그램은, 구성 데이터 스트림의 일부로서 명시될 수 있거나, 온-칩 또는 오프-칩 데이터 저장 장치로부터 검색될 수 있다. 프로세싱 서브시스템(510)은, 하나 이상의 소프트웨어 프로그램을 실행하기 위한 다양한 회로들(512, 514, 516, 및 518)을 포함할 수 있다. 회로들(512, 514, 516, 및 518)은 예를 들면, 하나 이상의 프로세서 코어, 부동 소숫점 유닛(floating point unit; FPU), 인터럽트 프로세싱 유닛, 온 칩-메모리, 메모리 캐시, 및/또는 캐시 코히어런트 상호연결부를 포함할 수 있다.
프로그래밍가능 IC(502)의 프로그래밍가능 논리 서브시스템(530)은, 사용자 설계의 하드웨어 부분을 구현하도록 프로그래밍될 수 있다. 예를 들면, 프로그래밍가능 논리 서브시스템은, 구성 데이터 스트림 내에 명시된 회로들의 세트를 구현하도록 프로그래밍될 수 있는, 다수의 프로그래밍가능 자원들(532)을 포함할 수 있다. 프로그래밍가능 자원(532)은, 프로그래밍가능 상호연결 회로, 프로그래밍가능 논리 회로, 및 구성 메모리 셀을 포함한다. 프로그래밍가능 논리부는 예를 들어, 함수 생성기들, 레지스터들, 산술 논리부 등을 포함할 수 있는 프로그래밍가능 엘리먼트들을 이용하여 사용자 설계의 논리를 구현한다. 프로그래밍가능 상호연결 회로는, 프로그래밍가능 상호연결 지점(programmable interconnect point; PIP)들에 의해 상호연결되는 가변 길이들의 많은 상호연결 라인들을 포함할 수 있다.
프로그래밍 자원(532)은, 프로그래밍가능 상호연결 회로 및 프로그래밍가능 논리 회로가 어떻게 구성되는지를 규정하는, 구성 데이터 스트림을 구성 메모리 셀 내로 로딩함으로써 프로그래밍될 수 있다. 그런 다음, 개별 메모리 셀들의 집합적 상태들은 프로그래밍가능 자원들(532)의 기능을 결정한다. 구성 데이터는, 외부 장치에 의해 메모리로부터(예컨대, 외부 PROM으로부터) 판독되거나 프로그래밍가능 IC(502) 내로 기록될 수 있다. 일부 구현에서, 구성 데이터는, 프로그래밍가능 논리 서브시스템(530) 내에 포함되는 구성 제어기(534)에 의해 구성 메모리 셀 내로 로딩될 수 있다. 일부 다른 구현에서, 구성 데이터는, 프로세서 서브시스템(510)에 의해 실행되는 시동 프로세스에 의해 구성 메모리 셀 내로 로딩될 수 있다.
프로그래밍가능 IC(502)는, 프로세싱 서브시스템(510)을, 프로그래밍가능 논리 서브시스템(530) 내에 구현된 회로와 상호연결하기 위한 다양한 회로들을 포함할 수 있다. 이 예시에서, 프로그래밍가능 IC(502)는, 프로세싱 서브시스템(510)과 프로그래밍가능 논리 서브시스템(530)의 다양한 데이터 포트들간에 데이터 신호를 경로지정할 수 있는, 코어 스위치(526)를 포함한다. 코어 스위치(526)는 또한, 프로그래밍가능 논리부 또는 프로세싱 서브시스템들(510 및 530) 중 하나와, 내부 데이터 버스와 같은 프로그래밍가능 IC의 다양한 다른 회로들간에 데이터 신호를 경로 지정할 수 있다. 대안적으로 또는 추가적으로, 프로세싱 서브시스템(510)은, 코어 스위치(526)를 우회하면서 프로그래밍가능 논리 서브시스템과 직접적으로 연결하기 위한 인터페이스를 포함할 수 있다. 이러한 인터페이스는, 예를 들면, ARM에 의해 발표된 AMBA AXI 프로토콜 사양(AMBA AXI Protocol Specification; AXI)을 사용해서 구현될 수 있다.
일부 구현에서, 프로세싱 서브시스템(510)과 프로그래밍가능 논리 서브시스템(530)은 또한, 메모리 제어기(521)를 통해 온-칩 메모리(522) 또는 오프-칩 메모리(미도시됨)의 메모리 위치를 판독하거나, 이 메모리 위치에 기록할 수 있다. 메모리 제어기(521)는, 16 비트, 32 비트, ECC를 갖는 16 비트 등에 상관 없이, 이중 데이터 레이트(Dual Data Rate; DDR) 2, DDR3, 저전력(Low Power; LP) DDR2 유형의 메모리를 포함하는(이것들에만 제한되지는 않음), 하나 이상의 상이한 유형의 메모리 회로와 통신하도록 구현될 수 있다. 메모리 제어기(521)가 통신할 수 있는 상이한 메모리 유형들의 목록은, 예증만을 위해 제공되는 것이지, 제한하거나 전수적인(exhaustive) 것으로 의도되지는 않는다. 도 5에 도시된 바와 같이, 프로그래밍가능 IC(502)는, 메모리 관리 유닛(520)과, 서브시스템들(510 및 530)에 의해 사용되는 가상 메모리 주소를, 특정 메모리 위치에 액세스하기 위해 메모리 제어기(521)에 의해 사용되는 물리적 메모리 주소로 변환하기 위한 변환 룩-어사이드 버퍼(524)를 포함할 수 있다.
프로그래밍가능 IC는, 외부 회로와의 데이터 전달을 위한 입출력(I/O) 서브시스템(550)을 포함할 수 있다. I/O 서브시스템(550)은, 예를 들면, 플래시 메모리 유형 I/O 장치, 고성능 I/O 장치, 저성능 인터페이스, 디버깅 I/O 장치, 및/또는 RAM I/O 장치를 포함하는, 다양한 유형들의 I/O 장치들 또는 인터페이스들을 포함할 수 있다.
I/O 서브시스템(550)은, 560A 및 560B로서 예증된 하나 이상의 플래시 메모리 인터페이스(560)를 포함할 수 있다. 예를 들면, 하나 이상의 플래시 메모리 인터페이스(560)는, 4 비트 통신을 위해 구성된 QSPI(Quad-Serial Peripheral Interface)로서 구현될 수 있다. 하나 이상의 플래시 메모리 인터페이스(560)는 병렬 8 비트 NOR/SRAM 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 플래시 메모리 인터페이스(560)는, 8 비트 및/또는 16 비트 통신을 위해 구성된 NAND 인터페이스로서 구현될 수 있다. 설명된 특정 인터페이스는 예증 목적을 위해 제공된 것이지 제한을 위한 것이 아니라는 것을 인식해야 한다. 상이한 비트 폭들을 가진 다른 인터페이스들이 사용될 수 있다.
I/O 서브시스템(550)은, 메모리 인터페이스(560)보다 높은 레벨의 성능을 제공하는 하나 이상의 인터페이스(562)를 포함할 수 있다. 인터페이스들(562A-562C) 각각은, 제각기 DMA 제어기(564A-564C)에 결합될 수 있다. 예를 들면, 하나 이상의 인터페이스(562)는 범용 직렬 버스(Universal Serial Bus; USB) 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 인터페이스(562)는 기가비트 이더넷 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 인터페이스(562)는 SD(Secure Digital) 유형의 인터페이스로서 구현될 수 있다.
I/O 서브시스템(550)은 또한, 인터페이스(562)보다 낮은 레벨의 성능을 제공하는, 인터페이스들(566A-566D)과 같은 하나 이상의 인터페이스(566)를 포함할 수 있다. 예를 들면, 하나 이상의 인터페이스(566)는 범용 I/O(General Purpose I/O; GPIO) 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 인터페이스(566)는 범용 비동기화 송수신기(Universal Asynchronous Receiver/Transmitter; UART) 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 인터페이스(566)는 직렬 주변 장치 인터페이스(Serial Peripheral Interface; SPI) 버스 유형의 인터페이스로서 구현될 수 있다. 하나 이상의 인터페이스(566)는, 제어기-지역-네트워크(Controller-Area-Network; CAN) 유형의 인터페이스 및/또는 l2C 유형의 인터페이스의 형태로 구현될 수 있다. 하나 이상의 인터페이스(566)는 또한, TTC(Triple Timer Counter) 및/또는 WDT(Watchdog Timer) 유형의 인터페이스의 형태로 구현될 수 있다.
I/O 서브시스템(550)은, 프로세서 JTAG(PJTAG) 인터페이스(568A) 및 트레이스 인터페이스(568B)와 같은 하나 이상의 디버그 인터페이스(568)를 포함할 수 있다. PJTAG 인터페이스(568A)는 프로그래밍가능 IC(502)를 위한 외부 디버그 인터페이스를 제공할 수 있다. 트레이스 인터페이스(568B)는, 프로세싱 서브시스템(510) 또는 프로그래밍가능 논리 서브시스템(530)으로부터 디버그, 예컨대, 트레이스 정보를 수신하기 위한 포트를 제공할 수 있다.
도시된 바와 같이, 인터페이스들(560, 562, 566, 및 568) 각각은 멀티플렉서(570)에 결합될 수 있다. 멀티플렉서(570)는, 프로그래밍가능 IC(502)의 외부 핀으로 직접 경로지정되거나 이 핀에 직접 결합될 수 있는 복수의 출력단들(프로그래밍가능 IC(502)가 내부에 배치되는 패키지의 볼들)을 제공한다. 예를 들면, 프로그래밍가능 IC(502)의 I/O 핀이 인터페이스들(560, 562, 566, 및 568) 중에 공유될 수 있다. 사용자는, 인터페이스들(560 내지 568) 중 어느 인터페이스가 사용될 것이고, 따라서, 멀티플렉서(570)를 통해 프로그래밍가능 IC(502)의 I/O 핀에 결합될지를 선택하기 위해 구성 데이터 스트림을 통해 멀티플레서(570)를 구성할 수 있다. I/O 서브시스템(550)은 또한, 프로그래밍가능 논리 서브시스템의 프로그래밍가능 논리 회로에 인터페이스(562 내지 568)를 연결하기 위한 FMIO(fabric multiplexer I/O) 인터페이스(미도시됨)를 포함할 수 있다. 추가적으로 또는 대안적으로, 프로그래밍가능 논리 서브시스템(530)은, 프로그래밍가능 논리부 내에 하나 이상의 I/O 회로를 구현하도록 구성될 수 있다. 일부 구현에서, 프로그래밍가능 IC(502)는, 전력 및/또는 안전 관리를 위한 다양한 회로를 갖는 서브시스템(540)을 또한 포함할 수 있다. 예를 들면, 서브시스템(540)은, 프로그래밍가능 IC(502)의 다양한 서브시스템들을 구동하기 위해 사용된 하나 이상의 전압 도메인(domain)을 모니터링하고 유지하도록 구성된 전력 관리 유닛(546)을 포함할 수 있다. 일부 구현에서, 전력 관리 유닛(546)은, 유휴 상태일 때, 사용 중인 서브시스템으로의 전력을 불능화시키지 않고, 전력 소모를 감소시키도록 개별 서브시스템들의 전력을 불능화시킬 수 있다.
서브시스템(540)은 또한, 정확한 동작을 보장하도록 서브시스템의 상태를 모니터링하기 위한 안전 회로를 포함할 수 있다. 예를 들면, 서브시스템(540)은, 다양한 서브시스템들의 상태(예컨대, 상태 레지스터(544)에서 표시된 바와 같은 상태)를 모니터링하도록 구성된 하나 이상의 실시간 프로세서(542)를 포함할 수 있다. 실시간 프로세서(542)는, 에러를 검출한 것에 응답해서 다수의 작업들을 수행하도록 구성될 수 있다. 예를 들면, 일부 에러에 대해, 실시간 프로세서(542)는 에러를 검출한 것에 응답해서 경고(alert)를 생성할 수 있다. 다른 예시로서, 실시간 프로세서(542)는, 서브시스템을 정확한 동작으로 복원하도록 시도하기 위해 서브시스템을 리셋할 수 있다. 서브시스템(540)은, 다양한 서브시스템들을 상호연결하도록 사용될 수 있는 스위치 네트워크(548)를 포함한다. 예를 들면, 스위치 네트워크(548)는, 다양한 서브시스템들(510, 530, 및 540)을 I/O 서브시스템(550)의 다양한 인터페이스들에 연결시키도록 구성될 수 있다. 일부 응용에서, 스위치 네트워크(548)는 또한, 모니터링될 서브시스템으로부터 실시간 프로세서(542)를 격리시키도록 사용될 수 있다. 이러한 격리는, 실시간 프로세서(542)가 다른 서브시스템에서 발생하는 에러에 의해 영향을 받지 않는 것을 보장하도록, 특정 응용 표준(예컨대, IEC-61508 SIL3 또는 ISO-26262 표준)에 의해 요구될 수 있다.
일부 추가적인 예시가 제공된다.
일 예시에서, 프로세싱 서브시스템 및 프로그래밍가능 논리 서브시스템을 포함하는 전자 시스템이 개시된다.
이러한 전자 시스템은, 프로그램의 변수를 저장하기 위한 메모리 위치를 참조하기 위해 가상 메모리 주소들의 세트를 사용하는 프로그램을 실행하도록 구성된 프로세싱 서브시스템; 구성 데이터 스트림에 명시된 회로들의 세트를 구현하도록 구성된 프로그래밍가능 논리 서브시스템으로서, 상기 회로들의 세트 각각은 복수의 입출력 회로들을 포함하고, 각각의 입출력 회로는 각자의 식별자(identifier; ID)를 가지며 상기 변수들 중 각자의 변수를 액세스하도록 구성된 것인, 상기 프로그래밍가능 논리 서브시스템; 메모리; 메모리 관리 회로로서, 상기 메모리 관리 회로는, 가상 메모리 주소들의 세트를 상기 메모리의 물리적 메모리 주소에 매핑하고, 상기 복수의 입출력 회로들 각각에 대해, 상기 입출력 회로의 ID를, 상기 입출력 회로가 액세스하도록 구성되는 상기 각자의 변수의 가상 메모리 주소에 매핑되는 물리적 메모리 주소에 매핑하도록 구성된 것인, 상기 메모리 관리 회로; 및 상기 복수의 입출력 회로들 중 적어도 하나의 입출력 회로에 결합된 적어도 하나의 변환 룩어사이드 버퍼(translation look-aside buffer; TLB)를 포함하고, 상기 적어도 하나의 변환 룩어사이드 버퍼는, ID를 표시하는 메모리 액세스 요청을 수신하는 것에 응답해서, 상기 ID에 매핑되는 상기 물리적 메모리 주소를 표시하는 메모리 액세스 요청을, 상기 메모리에 제공하도록 구성된다.
일부 이러한 전자 시스템에서, 상기 적어도 하나의 TLB는, 하나 이상의 ID에 대해, 상기 ID의, 상기 물리적 메모리 주소로의 매핑을 저장하도록 구성된 캐시를 포함하고, 상기 적어도 하나의 TLB는 또한, 상기 캐시 내에 저장된 가상 메모리 주소와 ID를 표시하는 메모리 액세스 요청을 수신하는 것에 응답해서, 상기 캐시로부터 상기 가상 메모리 주소와 상기 ID에 매핑되는 상기 물리적 메모리 주소를 검색하도록 구성된다.
일부 이러한 전자 시스템에서, 상기 적어도 하나의 TLB는 또한, 상기 캐시 내에 포함된 가상 메모리 주소와 ID를 표시하는 메모리 액세스 요청을 수신하는 것에 응답해서, 상기 메모리 관리 회로로부터 상기 가상 메모리 주소와 상기 ID에 매핑되는 상기 물리적 메모리 주소를 검색하도록 구성된다.
일부 이러한 전자 시스템에서, 상기 적어도 하나의 TLB는 또한, 상기 메모리 관리 회로로부터 상기 가상 메모리 주소 및 상기 ID에 매핑되는 상기 물리적 메모리 주소를 검색하는 것에 응답해서, 상기 ID 및 상기 가상 메모리 주소의, 상기 검색된 물리적 메모리 주소로의 매핑을 캐싱하도록 구성된다.
일부 이러한 전자 시스템에서, 상기 적어도 하나의 TLB는, 상기 프로그래밍가능 논리 서브시스템의 프로그래밍가능 회로를 사용해서 구현된다.
일부 이러한 전자 시스템에서, 적어도 하나의 TLB는 복수의 TLB들을 포함하고, 메모리 액세스 요청을 상기 복수의 TLB들로부터 상기 메모리까지 경로지정하도록 구성된 스위치 네트워크를 더 포함한다.
일부 이러한 전자 시스템은, 상기 메모리의 하나 이상의 물리적 메모리 위치의 값을 저장하도록 구성된, 상기 프로세싱 서브시스템 내의 캐시; 및 상기 캐시 내에 저장된 값과 상기 메모리 내에 저장된 값간의 일관성을 유지하도록 구성된 캐시 코히어런트 상호연결부를 더 포함할 수 있고, 상기 캐시 코히어런트 상호연결부는, 상기 복수의 TLB들 중 적어도 하나로부터 메모리 액세스 요청을 수신하도록 구성된다.
일부 이러한 전자 시스템에서, 프로그래밍가능 논리 서브시스템은 복수의 인터페이스 회로들을 포함하고, 상기 복수의 인터페이스 회로들 각각은, 상기 복수의 입출력 회로들 중 하나 이상으로부터의 메모리 액세스 요청을 상기 적어도 하나의 TLB에 전달하도록 구성된다.
일부 이러한 전자 시스템에서, 상기 복수의 인터페이스 회로들 중 적어도 하나는, 상기 복수의 입출력 회로들 중 다수의 입출력 회로들로부터의 메모리 액세스 요청을 상기 적어도 하나의 TLB에 전달하도록 구성된다.
일부 이러한 전자 시스템에서, 복수의 입출력 회로들 각각에 대해, ID는, 입출력 회로로부터의 메모리 액세스 요청을 적어도 하나의 TLB에 전달하는 복수의 인터페이스 회로들 중 하나를 고유하게 식별하는 비트들의 제1 서브세트를 포함한다.
일부 이러한 전자 시스템에서, 복수의 입출력 회로들 각각에 대해, ID는, 복수의 인터페이스 회로들 중 하나를 통해 메모리 액세스 요청을 전달하는, 복수의 입출력 회로들의 서브세트 내의 입출력 회로를 고유하게 식별하는 비트들의 제2 서브세트를 포함한다.
프로세싱 서브시스템 및 프로그래밍가능 논리 서브시스템을 구비한 프로그래밍가능 IC를 동작시키기 위한 방법이 또한 개시된다.
프로세싱 서브시스템 및 프로그래밍가능 논리 서브시스템을 구비한 프로그래밍가능 IC를 동작시키기 위한 이러한 방법은, 프로그램의 변수를 저장하기 위해 메모리의 위치를 참조하도록, 가상 메모리 주소들의 세트를 사용해서 프로세싱 서브시스템상에서 상기 프로그램을 실행시키는 단계; 구성 데이터 스트림에 명시된 회로들의 세트를 구현하도록 상기 프로그래밍가능 논리 서브시스템을 프로그래밍하는 단계로서, 상기 회로들의 세트는 복수의 입출력 회로들을 포함하고, 각각의 입출력 회로는 각자의 식별자(identifier; ID)를 가지며 상기 변수들 중 각자의 변수를 액세스하도록 구성된 것인, 상기 프로그래밍하는 단계; 상기 입출력 회로들 각각에 대해, 상기 입출력 회로로부터, 상기 입출력 회로의 ID와 가상 메모리 주소를 표시하는 메모리 액세스 요청을, 상기 메모리에 연결된 복수의 변환 룩어사이드 버퍼(translation look-aside buffer; TLB)들 중 하나에 제공하는 동작; 상기 복수의 TLB들 중 하나를 사용하는 동작; 및 상기 대응하는 변수가 저장되는 물리적 메모리 주소를, 상기 ID 및 상기 가상 메모리 주소에 기초해서 결정하는 동작; 및 상기 결정된 물리적 메모리 주소를 포함하는 메모리 액세스 요청을 상기 메모리에 제공하는 동작을 포함하는 동작들을 수행함으로써 상기 대응하는 변수를 액세스하는 단계를 포함할 수 있다.
일부 이러한 방법은, 메모리 관리 회로를 사용하는 단계; 가상 메모리 주소들의 세트를 물리적 메모리 주소들의 세트에 매핑시키는 단계; 및 상기 ID를, 상기 입출력 회로가 액세스하도록 구성되는 상기 주소에 대응하는 상기 가상 메모리 주소에 의해 매핑되는 상기 물리적 메모리 주소에 매핑시키는 단계를 더 포함할 수 있다.
일부 이러한 방법에서, 상기 대응하는 변수가 상기 ID 및 상기 가상 메모리 주소에 기초해서 저장되는 상기 물리적 메모리 주소의 결정은, 상기 ID를 표시하는 상기 복수의 TLB들 중 하나에 의해 수신되는 제1 메모리 액세스 요청에 대해, 상기 메모리 관리 회로로부터 상기 ID 및 상기 가상 메모리 주소에 대응하는 상기 물리적 메모리 주소를 검색하고, 상기 TLB의 캐시 내에 상기 검색된 물리적 메모리 주소를 저장하는 것; 및 상기 ID를 표시하는 상기 TLB에 의해 수신되는 제2 메모리 액세스 요청에 대해, 상기 TLB의 캐시로부터 상기 ID 및 상기 가상 메모리 주소에 대응하는 상기 물리적 메모리 주소를 검색하는 것을 포함한다.
일부 이러한 방법에서, 상기 프로그래밍가능 논리 서브시스템의 프로그래밍은, 상기 복수의 TLB들 중 적어도 하나를 구현하도록 상기 프로그래밍가능 논리 서브시스템을 프로그래밍하는 것을 포함한다.
일부 이러한 방법은, 스위치 네트워크를 사용해서, 복수의 TLB들로부터의 메모리 액세스 요청을 메모리에 경로지정하는 단계를 더 포함할 수 있다.
일부 이러한 방법은, 상기 복수의 인터페이스 회로들을 구현하도록 상기 프로그래밍가능 논리 서브시스템을 프로그래밍하는 단계를 더 포함할 수 있고, 상기 복수의 인터페이스 회로들 각각은, 상기 복수의 입출력 회로들 중 하나 이상으로부터의 메모리 액세스 요청을 상기 복수의 TLB들 중 각자의 TLB에 전달하도록 구성된다.
일부 이러한 방법에서, 복수의 입출력 회로들 각각에 대해, ID는, 입출력 회로로부터의 메모리 액세스 요청을 복수의 TLB들 중 각자의 TLB에 전달하는 복수의 인터페이스 회로들 중 하나를 고유하게 식별하는 비트들의 제1 서브세트를 포함한다.
일부 이러한 방법에서, 복수의 입출력 회로들 각각에 대해, ID는, 복수의 인터페이스 회로들 중 하나를 통해 메모리 액세스 요청을 전달하는, 복수의 입출력 회로들의 서브세트 내의 입출력 회로를 고유하게 식별하는 비트들의 제2 서브세트를 포함한다.
일부 이러한 방법은, 메모리의 물리적 메모리 위치들 중 하나 이상의 물리적 메모리 위치의 값을 캐시 내에 저장하는 단계; 및 상기 복수의 TLB들 중 적어도 하나로부터의 메모리 액세스 요청을, 상기 캐시에 연결되고 상기 캐시에 저장된 값과 상기 메모리에 저장된 값간의 일관성을 유지시키도록 구성된 캐시 코히어런트 상호연결부에 제공하는 단계를 더 포함할 수 있다.
본 방법 및 회로는, 다양한 시스템들 및 응용들에 적용가능하다고 생각된다. 그 밖의 양상 및 피처(feature)는 본 명세서를 고려함으로써 당업자에게 명백해질 것이다. 예를 들면, 일부 경우에서 양상 및 피처는 개별 도면에서 설명되지만, 비록 한 도면으로부터의 피처와 다른 도면의 피처와의 조합이 조합으로서 명시적으로 도시되거나 명시적으로 설명되지 않을지라도, 한 도면으로부터의 피처가 다른 도면의 피처와 조합될 수 있다는 것이 인식될 것이다. 본 명세서 및 도면은 단지 예시적인 것으로서 간주되어야 하며, 본 발명의 진정한 범위는 첨부된 청구항들에 의해 표시된다.
Claims (15)
- 전자 시스템에 있어서,
프로그램의 변수들을 저장하기 위한 메모리 위치를 참조하기 위해 가상 메모리 주소들의 세트를 사용하는 상기 프로그램을 실행하도록 구성된 프로세싱 서브시스템;
구성 데이터 스트림에 명시된 회로들의 세트를 구현하도록 구성된 프로그래밍가능 논리 서브시스템으로서, 상기 회로들의 세트는 복수의 입출력 회로들을 포함하고, 각각의 입출력 회로는 각자의 식별자(identifier; ID)를 가지며 상기 변수들 중 각자의 변수를 액세스하도록 구성된 것인, 상기 프로그래밍가능 논리 서브시스템;
메모리; 및
메모리 관리 회로로서, 상기 메모리 관리 회로는,
가상 메모리 주소들의 세트를 상기 메모리의 물리적 메모리 주소들에 매핑하고,
상기 프로그램의 변수들 중 각자의 변수를 액세스하는 상기 복수의 입출력 회로들 각각에 대해, 상기 입출력 회로의 각자의 ID를, 상기 변수들 중 각자의 변수에 대응하는 물리적 메모리 주소에 매핑하도록
구성된 것인, 상기 메모리 관리 회로
를 포함하고,
상기 프로그래밍가능 논리 서브시스템에 의해 구현된 회로들의 세트는 상기 복수의 입출력 회로들 중 적어도 하나의 입출력 회로에 결합된 적어도 하나의 변환 룩어사이드 버퍼(translation look-aside buffer; TLB)를 포함하고,
상기 적어도 하나의 변환 룩어사이드 버퍼는, ID를 표시하는 메모리 액세스 요청을 수신하는 것에 응답해서, 상기 메모리 액세스 요청에서 표시된 ID에 기초해서 물리적 메모리 주소를 결정하고, 상기 ID에 매핑되는 상기 물리적 메모리 주소를 표시하는 메모리 액세스 요청을 상기 메모리에 제공하도록 구성되는 것인, 전자 시스템. - 제1항에 있어서,
상기 적어도 하나의 TLB는, 하나 이상의 ID에 대해, 상기 ID의, 상기 물리적 메모리 주소로의 매핑 정보를 저장하도록 구성된 캐시를 포함하고,
상기 적어도 하나의 TLB는 또한, 상기 캐시 내에 저장된 가상 메모리 주소와 ID를 표시하는 메모리 액세스 요청을 수신하는 것에 응답해서, 상기 캐시로부터 상기 가상 메모리 주소와 상기 ID에 매핑되는 상기 물리적 메모리 주소를 검색하도록 구성되는 것인, 전자 시스템. - 제2항에 있어서, 상기 적어도 하나의 TLB는 또한, 상기 캐시 내에 포함되지 않은 가상 메모리 주소와 ID를 표시하는 메모리 액세스 요청을 수신하는 것에 응답해서, 상기 메모리 관리 회로로부터 상기 가상 메모리 주소와 상기 ID에 매핑되는 상기 물리적 메모리 주소를 검색하도록 구성되는 것인, 전자 시스템.
- 제3항에 있어서, 상기 적어도 하나의 TLB는 또한, 상기 메모리 관리 회로로부터 상기 가상 메모리 주소와 상기 ID에 매핑되는 상기 물리적 메모리 주소를 검색하는 것에 응답해서, 상기 ID와 상기 가상 메모리 주소의, 상기 검색된 물리적 메모리 주소로의 매핑 정보를 캐싱(caching)하도록 구성되는 것인, 전자 시스템.
- 제1항에 있어서,
적어도 하나의 TLB는 복수의 TLB들을 포함하고,
메모리 액세스 요청을 상기 복수의 TLB들로부터 상기 메모리까지 경로지정(route)하도록 구성된 스위치 네트워크를 더 포함하는, 전자 시스템. - 제5항에 있어서,
상기 메모리의 하나 이상의 물리적 메모리 주소를 저장하도록 구성된, 상기 프로세싱 서브시스템 내의 캐시; 및
상기 캐시 내에 저장된 상기 물리적 메모리 주소와 상기 메모리 내에 저장된 상기 프로그램의 변수들 간의 일관성을 유지하도록 구성된 캐시 코히어런트(coherent) 상호연결부
를 더 포함하고,
상기 캐시 코히어런트 상호연결부는, 상기 복수의 TLB들 중 적어도 하나의 TLB로부터 메모리 액세스 요청을 수신하도록 구성되는 것인, 전자 시스템. - 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 프로그래밍가능 논리 서브시스템은,
복수의 인터페이스 회로들을 포함하고, 상기 복수의 인터페이스 회로들 각각은, 상기 복수의 입출력 회로들 중 하나 이상으로부터의 메모리 액세스 요청을 상기 적어도 하나의 TLB에 전달하도록 구성되는 것인, 전자 시스템. - 제7항에 있어서,
상기 복수의 인터페이스 회로들 중 적어도 하나는, 상기 복수의 입출력 회로들 중 다수로부터의 메모리 액세스 요청을 상기 적어도 하나의 TLB에 전달하도록 구성되는 것인, 전자 시스템. - 프로세싱 서브시스템 및 프로그래밍가능 논리 서브시스템을 구비한 프로그래밍가능 IC를 동작시키기 위한 방법에 있어서,
프로그램의 변수들을 저장하기 위해 메모리의 위치를 참조하도록, 가상 메모리 주소들의 세트를 사용해서 상기 프로세싱 서브시스템 상의 상기 프로그램을 실행시키는 단계;
구성 데이터 스트림에 명시된 회로들의 세트를 구현하도록 상기 프로그래밍가능 논리 서브시스템을 프로그래밍하는 단계로서, 상기 회로들의 세트는 복수의 입출력 회로들을 포함하고, 각각의 입출력 회로는 각자의 식별자(identifier; ID)를 가지며 상기 변수들 중 각자의 변수를 액세스하도록 구성된 것인, 상기 프로그래밍하는 단계;
메모리 관리 회로에 의해 상기 가상 메모리 주소들의 세트를 물리적 메모리 주소들의 세트에 매핑하는 단계;
상기 메모리 관리 회로에 의해, 각각의 각자의 ID를, 상기 변수들의 각자의 변수에 대응하는 상기 물리적 메모리 주소에 매핑하는 단계; 및
상기 입출력 회로들 각각에 대해,
상기 입출력 회로로부터, 상기 입출력 회로의 ID와 가상 메모리 주소를 표시하는 메모리 액세스 요청을, 상기 메모리 및 상기 메모리 관리 회로에 연결된 복수의 변환 룩어사이드 버퍼(translation look-aside buffer; TLB)들 중 하나에 제공하는 동작; 및
상기 복수의 TLB들 중 상기 하나를 사용하여:
상기 ID 및 상기 가상 메모리 주소에 기초해서 상기 대응하는 변수가 저장되는 물리적 메모리 주소를 결정하고,
상기 결정된 물리적 메모리 주소를 포함하는 메모리 액세스 요청을 상기 메모리에 제공하는 동작
을 포함하는 동작들을 수행함으로써 상기 대응하는 변수를 액세스하는 단계
를 포함하며,
상기 프로그래밍가능 논리 서브시스템을 프로그래밍하는 단계는, 상기 복수의 TLB들 중 적어도 하나를 구현하기 위해 상기 프로그래밍가능 논리 서브시스템을 프로그래밍하는 단계를 포함하는 것인, 프로그래밍가능 IC를 동작시키기 위한 방법. - 제9항에 있어서,
상기 ID 및 상기 가상 메모리 주소에 기초해서 상기 대응하는 변수가 저장되는 상기 물리적 메모리 주소를 결정하는 것은,
상기 ID를 표시하는 상기 복수의 TLB들 중 상기 하나에 의해 수신되는 제1 메모리 액세스 요청에 대해, 상기 메모리 관리 회로로부터 상기 ID 및 상기 가상 메모리 주소에 매핑되는 상기 물리적 메모리 주소를 검색하고, 상기 TLB의 캐시 내에 상기 검색된 물리적 메모리 주소를 저장하는 것; 및
상기 ID를 표시하는 상기 TLB에 의해 수신되는 제2 메모리 액세스 요청에 대해, 상기 TLB의 캐시로부터 상기 ID 및 상기 가상 메모리 주소에 매핑되는 상기 물리적 메모리 주소를 검색하는 것
을 포함하는 것인, 프로그래밍가능 IC를 동작시키기 위한 방법. - 제9항에 있어서,
복수의 인터페이스 회로들을 구현하도록 상기 프로그래밍가능 논리 서브시스템을 프로그래밍하는 단계를 더 포함하고, 상기 복수의 인터페이스 회로들 각각은, 상기 복수의 입출력 회로들 중 하나 이상으로부터의 메모리 액세스 요청을 상기 복수의 TLB들 중 각자의 TLB에 전달하도록 구성되는 것인, 프로그래밍가능 IC를 동작시키기 위한 방법. - 제9항에 있어서,
상기 메모리의 상기 물리적 메모리 주소들 중 하나 이상의 물리적 메모리 주소를 캐시에 저장하는 단계; 및
상기 복수의 TLB들 중 적어도 하나로부터의 메모리 액세스 요청을, 상기 캐시에 연결되고 상기 캐시에 저장된 상기 물리적 메모리 주소와 상기 메모리에 저장된 상기 프로그램의 변수들 간의 일관성을 유지시키도록 구성된 캐시 코히어런트 상호연결부에 제공하는 단계
를 더 포함하는, 프로그래밍가능 IC를 동작시키기 위한 방법. - 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/462,460 US9495302B2 (en) | 2014-08-18 | 2014-08-18 | Virtualization of memory for programmable logic |
US14/462,460 | 2014-08-18 | ||
PCT/US2015/045571 WO2016028711A1 (en) | 2014-08-18 | 2015-08-17 | Virtualization of memory for programmable logic |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170042764A KR20170042764A (ko) | 2017-04-19 |
KR102424238B1 true KR102424238B1 (ko) | 2022-07-21 |
Family
ID=54015223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177007400A KR102424238B1 (ko) | 2014-08-18 | 2015-08-17 | 프로그래밍가능 논리부를 위한 메모리의 가상화 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9495302B2 (ko) |
EP (1) | EP3183657B1 (ko) |
JP (1) | JP6660374B2 (ko) |
KR (1) | KR102424238B1 (ko) |
CN (1) | CN106663061B (ko) |
WO (1) | WO2016028711A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160147667A1 (en) * | 2014-11-24 | 2016-05-26 | Samsung Electronics Co., Ltd. | Address translation in memory |
US10402332B2 (en) | 2016-05-24 | 2019-09-03 | Xilinx, Inc. | Memory pre-fetch for virtual memory |
CN107783912A (zh) | 2016-08-26 | 2018-03-09 | 北京中科寒武纪科技有限公司 | 一种支持多数据流的tlb装置和tlb模块的更新方法 |
US11232037B2 (en) * | 2017-10-23 | 2022-01-25 | Seagate Technology Llc | Using a first-in-first-out (FIFO) wraparound address lookup table (ALT) to manage cached data |
US11709624B2 (en) * | 2018-02-15 | 2023-07-25 | Xilinx, Inc. | System-on-chip having multiple circuits and memory controller in separate and independent power domains |
CN110392084B (zh) * | 2018-04-20 | 2022-02-15 | 伊姆西Ip控股有限责任公司 | 在分布式系统中管理地址的方法、设备和计算机程序产品 |
US10719452B2 (en) * | 2018-06-22 | 2020-07-21 | Xilinx, Inc. | Hardware-based virtual-to-physical address translation for programmable logic masters in a system on chip |
US11023397B2 (en) * | 2019-03-25 | 2021-06-01 | Alibaba Group Holding Limited | System and method for monitoring per virtual machine I/O |
CN113111017B (zh) * | 2021-03-24 | 2024-09-17 | 联想(北京)有限公司 | 一种信息处理方法和电子设备 |
CN114218153B (zh) * | 2021-12-06 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 用于存储管理的方法、介质、程序产品、系统和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110055515A1 (en) | 2009-09-02 | 2011-03-03 | International Business Machines Corporation | Reducing broadcasts in multiprocessors |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560689B1 (en) * | 2000-03-31 | 2003-05-06 | Intel Corporation | TLB using region ID prevalidation |
US7009618B1 (en) | 2001-07-13 | 2006-03-07 | Advanced Micro Devices, Inc. | Integrated I/O Remapping mechanism |
US7614056B1 (en) * | 2003-09-12 | 2009-11-03 | Sun Microsystems, Inc. | Processor specific dispatching in a heterogeneous configuration |
US8314024B2 (en) * | 2008-12-19 | 2012-11-20 | Unity Semiconductor Corporation | Device fabrication |
JP4160589B2 (ja) * | 2005-10-31 | 2008-10-01 | 富士通株式会社 | 演算処理装置,情報処理装置,及び演算処理装置のメモリアクセス方法 |
US7739474B2 (en) * | 2006-02-07 | 2010-06-15 | International Business Machines Corporation | Method and system for unifying memory access for CPU and IO operations |
US7689806B2 (en) | 2006-07-14 | 2010-03-30 | Q | Method and system to indicate an exception-triggering page within a microprocessor |
US8122229B2 (en) * | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US8015386B1 (en) * | 2008-03-31 | 2011-09-06 | Xilinx, Inc. | Configurable memory manager |
WO2010095182A1 (ja) | 2009-02-17 | 2010-08-26 | パナソニック株式会社 | マルチスレッドプロセッサ及びデジタルテレビシステム |
US9405700B2 (en) | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
US8667192B2 (en) | 2011-02-28 | 2014-03-04 | Xilinx, Inc. | Integrated circuit with programmable circuitry and an embedded processor system |
US9218289B2 (en) * | 2012-08-06 | 2015-12-22 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
US10310973B2 (en) * | 2012-10-25 | 2019-06-04 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
-
2014
- 2014-08-18 US US14/462,460 patent/US9495302B2/en active Active
-
2015
- 2015-08-17 JP JP2017509754A patent/JP6660374B2/ja active Active
- 2015-08-17 KR KR1020177007400A patent/KR102424238B1/ko active IP Right Grant
- 2015-08-17 EP EP15757082.1A patent/EP3183657B1/en active Active
- 2015-08-17 WO PCT/US2015/045571 patent/WO2016028711A1/en active Application Filing
- 2015-08-17 CN CN201580044730.4A patent/CN106663061B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110055515A1 (en) | 2009-09-02 | 2011-03-03 | International Business Machines Corporation | Reducing broadcasts in multiprocessors |
Also Published As
Publication number | Publication date |
---|---|
JP2017528821A (ja) | 2017-09-28 |
US20160048454A1 (en) | 2016-02-18 |
US9495302B2 (en) | 2016-11-15 |
WO2016028711A1 (en) | 2016-02-25 |
EP3183657A1 (en) | 2017-06-28 |
CN106663061B (zh) | 2021-03-02 |
EP3183657B1 (en) | 2019-11-06 |
KR20170042764A (ko) | 2017-04-19 |
CN106663061A (zh) | 2017-05-10 |
JP6660374B2 (ja) | 2020-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102424238B1 (ko) | 프로그래밍가능 논리부를 위한 메모리의 가상화 | |
US9229730B2 (en) | Multi-chip initialization using a parallel firmware boot process | |
US9652252B1 (en) | System and method for power based selection of boot images | |
CN106970864B (zh) | 片上系统、移动终端和用于操作片上系统的方法 | |
TWI470435B (zh) | 為本地與遠端實體記憶體間之共用虛擬記憶體提供硬體支援 | |
CN105938466B (zh) | 用于处理器间通信的电路和方法 | |
US10289785B1 (en) | Platform architecture creation for a system-on-chip | |
JP6382446B2 (ja) | デッドロック回避のための方法及び回路 | |
CN111209247A (zh) | 一种集成电路计算设备及计算处理系统 | |
US10275259B1 (en) | Multi-stage booting of integrated circuits | |
US10176131B1 (en) | Controlling exclusive access using supplemental transaction identifiers | |
US9448937B1 (en) | Cache coherency | |
US20130326539A1 (en) | Semiconductor device | |
EP4272081A1 (en) | Migrating pages of memory accessible by input-output devices | |
US9330024B1 (en) | Processing device and method thereof | |
US9589088B1 (en) | Partitioning memory in programmable integrated circuits | |
US10922226B1 (en) | Scratchpad memory management in a computing system | |
US11327899B1 (en) | Hardware-based virtual-to-physical address translation for programmable logic masters in a system on chip | |
WO2023113942A1 (en) | Cache probe transaction filtering | |
CN210955072U (zh) | 一种集成电路计算设备及计算处理系统 | |
Zhang et al. | Design of the Main Control RISC-V Processor in Chiplet Applications | |
CN114661639A (zh) | 地址转换技术 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |