KR20130101504A - 스레드-당 및 태그-당 메모리 액세스를 동시에 수행하기 위한 장치 및 방법 - Google Patents
스레드-당 및 태그-당 메모리 액세스를 동시에 수행하기 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR20130101504A KR20130101504A KR1020137005676A KR20137005676A KR20130101504A KR 20130101504 A KR20130101504 A KR 20130101504A KR 1020137005676 A KR1020137005676 A KR 1020137005676A KR 20137005676 A KR20137005676 A KR 20137005676A KR 20130101504 A KR20130101504 A KR 20130101504A
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- tag
- memory
- logic
- per
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
Abstract
집적 회로가 개시기 지적 재산권(IP) 코어, 타겟 IP 코어, 상호접속 및 태그 및 스레드 로직을 포함하는 방법, 장치 및 시스템이 개시된다. 타겟 IP 코어는 개시기 IP 코어에 결합된 메모리를 포함할 수 있다. 부가적으로, 상호접속은 상호접속에 결합된 하나 이상의 개시기 지적 재산권(IP) 코어들 과 하나 이상의 타겟 IP 코어들 간의 트랜잭션을 집적 회로가 통신하도록 허용할 수 있다. 태그 및 스레드 로직은 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하도록 구성될 수 있어서, 태그 및 스레드 로직은 개시기 IP 코어로부터의 메모리 액세스 요청들의 초기 발행 순서로부터의 순서에서 벗어나서 개시기 IP 코어로부터의 메모리 액세스 요청들의 태그-당 및 스레드-당 스케줄링을 허용하도록 태그들 및 스레드들을 관리한다.
Description
저작권 알림
[001] 본 특허 문서의 개시의 일부는 저작권 보호되는 자료를 포함한다. 저작권 소유자는 소프트웨어 엔진 및 그의 모듈들 중 임의의 것에 의한 팩시밀리 복제에 대해 반대하지 않는데, 그 이유는 그것이 특허청 파일 또는 기록에 나타나지만, 다른 방식으로 모든 저작권 등등을 보존하기 때문이다.
발명의 분야
본 발명의 실시예들은 일반적으로 메모리 스케줄링에 관한 것이다. 보다 구체적으로는, 본 발명의 실시예의 일 양상은 스레드-당 및 태그-당 메모리 액세스 스케줄링에 관한 것이다.
[003] 무작위(Out-of-Order) 프로세싱은 프로세서가 동작을 수생할 필요가 있는 데이터가 이용 가능하지 않을 때 발생하는 스톨링(stalling)을 방지하도록 허용한다. 예를 들어, 무작위 프로세서는 실행된 준비가 된 다른 명령들로, 그렇지 않았다면 채워지지 않았을 것을 채움으로써 누락 데이터(missing data)에 기인하여 명령이 프로세싱된 준비가 완전히 되지 않았을 때 스톨을 방지할 수 있다. 몇몇 경우들에서, 결과들은 명령들이 보통 때처럼 프로세싱되었다고 보이도록 실행 이후에 재-순서화될 수 있다.
[004] 몇몇 컴퓨터 시스템들에서, 프로세서는 실질적으로 메모리보다 빠르게 실행한다. 이에 따라, 데이터가 도달하도록 순차적 프로세서(in-order processor) 대기하는데 소비한 시간은 무작위 프로세서를 이용하여 많은 수의 명령들을 프로세싱하는데 이용될 수 있다.
[005] 하나 이상의 지적 재산권(IP) 코어, 하나 이상의 타겟 IP 코어를 포함하는 집적 회로에 대한 다양한 방법들 및 장치들이 기술된다. 집적 회로에 대한 상호접속은 상호접속에 결합된 하나 이상의 개시기 지적 재산권(IP) 코어들 및 하나 이상의 타겟 IP 코어들 간의 트랜잭션들을 통신한다. 이에 따라, 상호접속은 예를 들어, 프로세서와 메모리 간의 접속을 제공할 수 있다. 다양한 실시예들에서, 태그 및 스레드 로직은 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하도록 구성될 수 있어서, 태그 및 스레드 로직은 개시기 IP 코어로부터의 메모리 액세스 요청들의 초기 발행 순서로부터의 순서에서 벗어나서 개시기 IP 코어로부터의 메모리 액세스 요청들의 태그-당 및 스레드-당 스케줄링을 허용하도록 태그들 및 스레드들을 관리한다. 태그 및 스레드 로직은 메모리 스케줄러의의 부분에, 타겟 에이전트에 위치될 수 있거나, 또는 태그 및 스레드 로직의 부분들은 메모리 스케줄러 및 타겟 에이전트에 위치될 수 있다.
[006] 도면은 본 발명의 실시예들을 참조하며;
도 1은 상호접속을 통해 판독 및 기록 요청들, 버스트 요청들과 같은 트랜잭션들은 물론 이들 트랜잭션들에 대한 응답들을 통신하는 다수의 개시기 IP 코어들 및 다수의 타겟 IP 코어들을 갖는 시스템-온-어-칩의 실시예의 블록도를 예시하는 도면.
도 2는 태그 및 스레드 아비터들의 실시예의 블록도를 예시하는 도면.
도 3은 커맨드 버퍼 풀 아키텍처의 실시예의 블록도를 예시하는 도면.
도 4는 클록 도메인 크로싱의 실시예 블록도를 예시하는 도면.
도 5는 도메인 크로싱에서 클록 게이팅의 실시예의 블록도를 예시하는 도면.
도 6은 어드레스 오버랩 구조의 실시예의 블록도를 예시하는 도면.
도 7은 헤딩 요청 간의 어드레스 오버랩핑 검사의 실시예의 블록도를 예시하는 도면.
도 8은 FIFO 기반 커맨드 버퍼와 버퍼 풀 기반 커맨드 버퍼 간의 비교의 실시예의 블록도를 예시하는 도면.
도 9는 태그 아비터 및 스레드 아비터의 실시예의 블록도를 예시하는 도면.
도 10은 시스템 온 어 칩과 같은 디바이스를 생성하기 위한 프로세스의 예의 실시예의 흐름도를 예시하는 도면.
도 1은 상호접속을 통해 판독 및 기록 요청들, 버스트 요청들과 같은 트랜잭션들은 물론 이들 트랜잭션들에 대한 응답들을 통신하는 다수의 개시기 IP 코어들 및 다수의 타겟 IP 코어들을 갖는 시스템-온-어-칩의 실시예의 블록도를 예시하는 도면.
도 2는 태그 및 스레드 아비터들의 실시예의 블록도를 예시하는 도면.
도 3은 커맨드 버퍼 풀 아키텍처의 실시예의 블록도를 예시하는 도면.
도 4는 클록 도메인 크로싱의 실시예 블록도를 예시하는 도면.
도 5는 도메인 크로싱에서 클록 게이팅의 실시예의 블록도를 예시하는 도면.
도 6은 어드레스 오버랩 구조의 실시예의 블록도를 예시하는 도면.
도 7은 헤딩 요청 간의 어드레스 오버랩핑 검사의 실시예의 블록도를 예시하는 도면.
도 8은 FIFO 기반 커맨드 버퍼와 버퍼 풀 기반 커맨드 버퍼 간의 비교의 실시예의 블록도를 예시하는 도면.
도 9는 태그 아비터 및 스레드 아비터의 실시예의 블록도를 예시하는 도면.
도 10은 시스템 온 어 칩과 같은 디바이스를 생성하기 위한 프로세스의 예의 실시예의 흐름도를 예시하는 도면.
[007] 본 발명이 다양한 수정들 및 대안적인 형태들의 대상이 될지라도, 본 발명의 특정한 실시예들은 도면들에서의 예에 의해 도시되고 여기서 상세히 기술될 것이다. 본 발명은 개시된 특정한 형태들로 제한되는 것으로 이해되는 것이 아니라, 반대로 본 발명의 사상 및 범위 내에 있는 모든 수정들, 등가물들 및 대안물들을 커버하도록 의도된다.
[008] 다음의 기술에서, 특정한 데이터 신호들, 이름있는(named) 컴포넌트들, 접속들, 어그리게이트 타겟(aggregate target)에서의 메모리 채널들의 수 등과 같은 다수의 특정한 상세들은 본 발명의 완전한 이해를 제공하기 위해 기술된다. 그러나 본 발명이 이들 특정한 상세들 없이 실시될 수 있다는 것이 당업자에게 자명할 것이다. 다른 예들에서, 잘 알려진 컴포넌트들 또는 방법들은 본 발명의 불필요하게 모호하게 하는 것을 방지하기 위해 상세기 기술되는 것이 아니라 블록도로 기술된다. 또한, 제 1 타겟과 같은 특정한 수의 기준들이 만들어질 수 있다. 그러나 특정한 숫자 참조는 글자 그대로의 순차적인 순서로서 해석되는 것이 아니라, 오히려 제 1 타겟이 제 2 타겟과 상이하다고 해석되어야 한다. 따라서 기술되는 특정한 상세들은 단순히 예시적이다. 특정한 상세들은 변할 수 있으며 여전히 본 발명의 사상 및 범위 내에 있는 것으로 기도된다.
[009] 몇몇 실시예들은 스레드-당 및 태그-당 메모리 액세스 스케줄링(per-thread and per-tag memory access scheduling)을 동시에 수행하기 위한 시스템들, 방법들, 및 장치를 포함한다. 일 예에서, 방법은 제 1 메모리 동작이 제 2 메모리 동작보다 더 적은 클록 사이클들에서 수행될 수 있는지를 결정하기 위해 효율적인 알고리즘을 적용하는 것을 포함할 수 있다. 레이턴시 알고리즘이 각각의 메모리 동작의 시작과 각각의 메모리 동작의 완료 간의 레이턴시를 결정하도록 적용될 수 있다. 부가적으로, 제 1 메모리 동작과 제 2 메모리 동작의 순서는 전체 메모리 효율 액세스 및 스레드-당 서비스 품질 레이턴시 요건들(per-thread Quality-of-Service latency requirements)에 기초하여 최적화될 수 있다.
[0010] 예를 들어, 몇몇 실시예들에서, 시스템, 방법 또는 장치는 요청된 메모리 동작들이 발행 순서로 수행될 수 있도록 최적화에 기초하여 제 1 메모리 동작 및 제 2 메모리 동작의 서비스 순서를 재순서화할 수 있다. 이는 제 1 메모리 동작의 태그 및 스레드 및 제 2 메모리 동작의 태그 및 스레드에 기초하여 다수의 스레드들에 걸쳐서 및 스레드 내의 스레드-당 및 태그-당 메모리 액세스 스케줄링에 기초하여 수행될 수 있다.
[0011] 하나의 예시적인 방법은 다운스트림 메모리에 의해 서비스될, 스레드 식별 및 태그 식별이 할당된 메모리 동작을 송신하는 것을 포함한다. 부가적으로, 태그 및 스레드 로직내로 들어가는 메모리 동작들은 각각의 태그 내의 스레드-당 요청들 및 태그-당 요청들로 분리될 수 있다. 이는 전체 메모리 효율 액세스들을 최적화하기 위해 태그 및 스레드 로직이 이들 스레드들 내의 태그 레벨 병행을 이용하도록 허용할 수 있다.
[0012] 다양한 실시예들에서, 방법은 개시기 상에서 명령들을 실행함으로써 수행될 수 있다. 예를 들어, 시스템 내의 태그 및 스레드 로직은 개시기를 포함할 수 있다. 부가적으로 다양한 시스템들은 다수의 스레드들에 걸쳐서 그리고 스레드 내의 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행할 수 있어서, 태그 및 스레드 로직이 초기 발행 순서로 메모리 액세스들의 태그-당 및 스레드-당 스케줄링을 허용하도록 태그들 및 스레드들을 관리한다.
[0013] 또한, 개시기 IP 코어로부터의 스레드로부터의 트랜잭션은, 트랜잭션 트래픽이 비-채널-분할 요청들 및 채널-분할 요청들 둘 다로 구성되는 다수의 채널 어그리게이트 메모리 타겟 IP 코어로 라우팅될 수 있다. 다수의 채널 어그리게이트 메모리 타겟 IP 코어는 그 다수의 채널 어그리게이트 메모리 타겟 IP 코어에 할당된 어드레스 공간을 파퓰레이팅(populate)하는 2개 이상의 메모리 채널들을 포함한다. 다수의 채널 어그리게이트 메모리 타겟 IP 코어는 하나 이상의 개시기 IP 코어들에 대한 단일 타겟으로서 나타난다. 태그 로직은 다수의 채널 어그리게이트 메모리 타겟 IP 코어에 라우팅되는 정해진 개시기 IP 코어로부터의 동일한 스레드로부터 제 1 상호접속 태그 ID 번호를 제 1 트랜잭션에, 그리고 제 2 상호접속 태그 ID 번호를 제 2 트랜잭션에 할당할 수 있다. 이어서, 태그 로직은 스레드로부터의 제 1 트랜잭션의 요청이 다수의 채널 어그리게이트 메모리 타겟 IP 코어에서 적어도 제 1 및 제 2 메모리 채널에 걸쳐 있는지(span)를 검출한다. 만약 그렇다면, 태그 로직은 정확도의 견지에서, 제 1 트랜잭션 및 제 2 트랜잭션의 응답들 모두가 상호접속을 통해 예상되는 실행 순서로 제 2 개시기 IP 코어에 역으로(back) 라우팅되도록 인터록들(interlocks)을 적용한다.
[0014] 본 발명의 대부분의 양상들은 대부분의 네트워킹 환경들에서 적용될 수 있고, 시스템-온-어-칩(System-on-a-Chip) 환경과 같은 예시적인 집적 회로는 본 발명의 이들 양상들을 발현(flush out)시키는데 이용될 것이다.
[0015] 도 1은 상호접속을 통해 판독 및 기록 요청들과 같은 트랜잭션은 물론 이들 트랜잭션들에 대한 응답을 통신하는 다수의 개시기 IP 코어들 및 다수의 타겟 IP 코어들을 갖는 시스템-온-어-칩의 실시예의 블록도를 예시한다. CPU IP 코어(102), 온칩 보안 IP 코어(104), 디지털 신호 프로세서(DSP)(106) IP 코어, 멀티미디어 IP 코어(108), 그래픽 IP 코어(110), 스트리밍 입력/출력(I/O) IP 코어(112), 칩 외부의 디바이스들 또는 컴포넌트들과의 무선 전송 및 수신 IP 코어 등과 같은 통신 IP 코어(114), 다른 유사한 IP 코어들과 같은 각각의 개시기 IP 코어는 그 IP 코어를 상호접속(118) 중 나머지들에 인터페이싱하기 위해 그 자신의 개시기 에이전트(116)를 가질 수 있다. 제 1 DRAM IP 코어(120) 내지 제 4 DRAM IP 코어(126)는 물론 플래시 메모리 IP 코어(128)와 같은 각각의 타겟 IP 코어는 그 IP 코어를 상호접속(118) 중 나머지들에 인터페이싱하기 위해 그 자신의 타겟 에이전트(130)를 가질 수 있다. 각각의 IP 코어(120-126)는 연관된 메모리 스케줄러(132)는 물론 DRAM 제어기(134)를 가질 수 있다.
[0016] 지적 재산권 코어들(intellectual Property cores)(IP)은 그 매크로 기능을 시스템에 제공하기 위한 자가-포함 설계된 기능(self-contained designed functionality)을 갖는다. 개시기 IP 코어의 예들은 프로세서, 마이크로프로세서, 기능의 MPEG 디코더 블록들, 로직의 무선 통신 블록들, 또는 다른 제어 로직을 포함한다. 몇몇 실시예들에서, 개시기 IP 코어는 집적 회로에서 구현될 수 있다. 다른 구현들에서, 개시기 IP 코어는 프로그래밍 가능한 로직에서 구현될 수 있다. 부가적으로, 몇몇 실시예들에서, 개시기는 필드 프로그래밍 가능한 게이트 어레이, 프로그래밍 가능한 로직 어레이, 시스템 온 어 칩 등과 같은 프로그래밍 가능한 로직 디바이스를 포함하는 집적 회로에서 구현될 수 있다. 타겟 IP 코어는 메모리를 포함하고 개시기 IP 코어에 결합될 수 있다. 예를 들어, 개시기 IP 코어 및 타겟 IP 코어는 메모리에 결합된 프로세서를 포함할 수 있다. 메모리는 다양한 기능들을 수행하기 위해 데이터 및 명령을 판독하고 명령들을 실행할 수 있는 프로세서용 명령들 및 데이터를 저장할 수 있다.
[0017] 예를 들어, 개시기 프로퍼티 코어들 중앙 처리 장치(102), 멀티-미디어 코어(108), 통신 코어(114) 모두는 매크로 기능을 상호접속에 제공하도록 구성된 로직 및 소프트웨어를 갖는다. 마찬가지로, 타겟 IP 코어 동적 랜덤 액세스 메모리(DRAM)(126)는 그 기능을 시스템에 제공한다. 상호접속(118)은 타겟 IP 코어들(120 내지 128)에 대한, 그리고 잠재적으로 요청들을 라우팅하기 위한 시스템 내의 개시기 IP 코어들(102 내지 114)에 대한 할당된 어드레스를 갖는 어드레스 맵(136) 및 잠재적으로는 집적 회로에서 타겟 IP 코어들(120 내지 128)과 개시기 IP 코어들(102 내지 114) 간의 응답들을 구현한다. 특유의 IP 코어들 대부분은 칩 상에서 및 칩 밖에서, 메모리 IP 코어들(120 내지 126)을 통해서는 물론 상호접속(118)을 통해 서로 통신한다. 각각의 개시기 에이전트(116) 및 타겟 에이전트(130)의 어드레스 맵(136) 및 DRAM 제어기(134)는 어드레스 맵을 관리하고 물리적 IP 어드레스로의 어드레스 맵의 할당된 논리적 어드레스들의 어드레스 치환을 수행함으로써 다른 온-칩 코어들로부터 각각의 DRAM IP 코어(120 내지 126)의 실제 IP 코어 어드레스들을 추출한다.
[0018] 어드레스 맵핑 하드웨어 로직은 또한 개시기 에이전트 내부에 위치될 수 있다. DRAM 스케줄러(132) 및 제어기(134)는 타겟 에이전트의 다운스트림에 접속되고 상호접속(118) 내에 위치될 수 있다. 이에 따라, 개시기들로부터 타겟들로의 요청들의 라우팅을 결정하기 위한 하나의 방법은 인입하는 개시기 어드레스들을 특정한 타겟 IP 코어들과 연관시키는 어드레스 맵핑 장치를 구현하는 것이다.
[0019] 상호접속(118)은 시스템의 IP 코어 서브-시스템들(120 내지 128 및 102 내지 114) 간의 공유 통시 버스를 제공한다. 공유 통신 버스 내의 모든 통신 경로들은 단일의 초크 포인트(choke point)를 통해 전달할 필요가 없고, 오히려 다수의 분배된 통로들이 공유 통신 버스에 존재할 수 있다. 온-칩 상호접속(118)은 다수의 지적 재산권 코어들(102 내지 114 및 120 내지 128) 간의 어드레스-맵핑된 및 임의의 통신을 용이하게 하는 상호접속 배선들과 함께 어댑터들 및/또는 다른 논리적 모듈들일 수 있는 메커니즘들의 모음(collection of mechanisms)일 수 있다.
[0020] 상호접속(118)은 시스템-온-어-칩을 통한 스테이지들에서 요청들 및 응답들을 저장 및 이동시키기 위해 버퍼링과 함께 파이프라인(pipeline)되는 시스템-온-어-칩과 같은 집적 회로의 부분일 수 있다. 상호접속(118)은 시스템-온-어-칩을 통한 스테이지들에서 요청들 및 응답들을 저장 및 이동시키기 위해 버퍼링과 함께 파이프라인되는 시스템-온-어-칩과 같은 집적 회로의 부분일 수 있다. 상호접속(118)은 1) 다른 스레드로부터의 요청들에 관해서는 물론 동일한 스레드로부터 후속 요청을 발행하기 이전에 초기 요청에 대한 응답에 관해서 비-차단하고, 2) 파이프라인 프로토콜(pipelined protocol)을 구현하고, 및 3) 각각의 스레드의 예상되는 실행 순서를 유지하는 흐름 제어 로직을 가질 수 있다. 상호접속(118)은 또한 2D 및 어드레스 타일링 특징들( address tiling features ), 응답 흐름 제어, 개별 버스트 요청들의 쵸핑( chopping ) 및 채널 라운드 순서( channel round order )로 선형 또는 비-선형 순차적 패턴에서 그 어그리게이트 타겟으로 헤딩되는 ( headed ) 요청들의 분배를 갖는, 단일의 어그리게이트 타겟에서 다수의 메모리 채널 모듈들을 지원한다. 각각의 개시기 IP 코어는 상호접속과의 인터페이스를 위해 그 자신의 개시기 에이전트를 가질 수 있다. 각각의 타겟 IP 코어는 상호접속과의 인터페이스를 위해 그 자신의 타겟 에이전트를 가질 수 있다.
[0021] OCP 슬래이브와 같은 타겟 코어는 보통 요청들이 OCP 마스터에 의해 발행되었던 동일 순서로 OCP 마스터와 같은 개시기 코어에 의해 행해진 요청 트랜잭션들에 대한 응답을 반환해야 한다. 그러나 때때로 OCP 슬래이브가 OCP 마스터에 그들의 예상된 순서에 벗어난 서비스된 응답을 반환하고 상호접속 내의 로직이 트랜잭션의 순서화를 핸들링하게 하는 것을 더 자주 볼 수 있다. 태그 식별 번호들은 OCP 슬래브로부터 응답을 트리거한 트랜잭션 요청을 생성하는 원(original) 스레드와 응답을 직접 링크하는데 이용될 수 있다. 다수의 경우들에서, 에이전트에 위치된 것과 같이 상호접속 내의 태그 로직의 이용은 동시에 2개 이상의 상이한 타겟들에 대한 상호접속을 통해 다수의 스레딩된 개시기의 동일한 스레드로부터의 다수의 트랜잭션들이 미해결(outstanding) 되도록 허용함으로써 전체 시스템 성능을 개선하기 위해 태그들을 할당한다.
[0022] 개시기 IP 코어는 관련된 트랜잭션들의 스레드를 생성할 수 있다. 태그 로직은 트랜잭션들이 태깅(tagged)되도록 그리고 그 태그를 토대로 상이하게 취급되도록 허용한다. 이는 상이한 개시기 IP 코어들/마스터들로부터의 데이터 흐름들 또는 심지어 동일한 개시기로부터의 상이한 스레드들이 타겟/슬래이브에 의해 식별되도록 허용하고, 특유의 데이터 스트림들에 대해 상이한 서비스 품질을 용이하게 하며 종종 전달 재순서화가 서브시스템 타이밍 제약들에 맞추도록 허용함으로써(예를 들어, DRAM 제어기들에서) 성능을 개선한다. 동일한 스레드로부터의 트랜잭션들에 대한 태그 ID들은 스레드 당 전용 버퍼 공간 및 로직을 최소화하면서, 동일한 소스로부터의 다수의 트랜잭션들(버스트 요청들, 요청들 등)이 미해결/동시에 프로세싱되도록 허용한다. 다수의 스레딩된 개시기는 다수의 트랜잭션들을 병렬로 프로세싱하기 위해 스레드들을 이용한다. 그러나 독립적인 스레드 스트림들 중 하나 이상에 대해 동일한 스레드로부터의 다양한 태그 식별 번호들을 할당하는 조합은 예상되는 실행 순서로 재할당된 개시기 IP 코어에 역으로(back) 반환하면서, 개시기 트랜잭션들이 병렬로 그리고 발행 순서를 벗어나서 잠재적으로 서비스되도록 허용하기 위해 집적 회로 상에서 점유되는 스레드 당 전용 저장 공간 영역 및 로직의 최소치 또는 적어도 더 낮은 양을 갖고 다수의 트랜잭션들이 병렬로 프로세싱되도록 허용하며, 개시기 코어 당 스레드마다 재-순서화 버퍼에 대한 임의의 필요성을 제거한다. 태그들은 응답이 예상된 실행 순서로 재할당된 개시기 IP 코어에 역으로 반환되는 것을 보장하면서 타겟 코어로부터 무작위 응답들을 제공하기 위한 스레드들보다 더 "경량의(lightweight)"인 것으로 간주될 수 있다. 특히, 다수의 스레드들은 각각의 스레드에 대한 독립적인 흐름 제어를 제공하는 반면에, 태그들은 모든 태그들에 대해 단일의 공유 흐름을 이용한다. 또한, 태그 로직은 동일한 스레드로부터의 할당된 최초의 내부 상호접속 태그 ID 번호를 갖는 특정한 트랜잭션들이 재순서화되지 않거나, 또는 동일한 타겟 IP 코어로 헤딩될 때 다른 상호접속 태그 ID 번호들에 앞서 서비스되도록 허용되지 않을 수 있을 수 있음을 규제하면서, 상이한 스레드들 상의 트랜잭션들에 대해 어떠한 순서화 규칙들도 적용하지 않도록 추가로 구성된다. 마지막으로, 독립적인 버퍼링이 각각의 스레드에 대해 요구되는 반면에, 태그들에 대한 버퍼링 요건들은 흐름 제어가 모든 태그들 사이에서 공유된 이래로 발생할 수 있다. 또한, 대부분의 주요한(major) 프로토콜들이 현재 스레드들에 대해 설정된 트랜잭션 흐름들과 달리 태그 관련 트랜잭션 흐름들에 대해 세팅된 흐름 제어 메커니즘을 갖지 않는다.
[0023] 각각의 메모리 채널 모듈은 IP 코어 또는 64비트들 또는 128비트들과 같은 데이터 워드의 폭에 매칭하기 위해 단일의 어그리게이트 메모리로서 작용하도록 함께 집단화되는 다수의 외부 DRAM 칩들일 수 있다. 각각의 메모리 IP 코어 및 DRAM 칩은 그 IP 코어/칩 내부에 다수의 뱅크들을 가질 수 있다. 메모리 채널 모듈의 각각의 채널은 채널과 연관된 요청들 및/또는 응답들을 저장할 수 있는 하나 이상의 버퍼들을 포함할 수 있다. 이들 버퍼들은 요청 어드레스들을 보유하고 데이터 워드들을 기록하고, 데이터 워드들 및 채널 트랜잭션들과 연관된 다른 제어 정보를 판독할 수 있고 메모리에 요청들 및 기록 데이터를 공급하고 파이프라인 방식으로 메모리로부터 판독 데이터를 수신함으로써 메모리 쓰루풋을 개선하는데 도움을 줄 수 있다. 버퍼들은 또한 동일한 메모리 뱅크 내의 상이한 페이지를 개방(open)하기 위해, 그 페이지가 폐쇄되게 강제하는 상이한 요청들을 서비스하는 것과 대조적으로, 이미 개방된 메모리 페이지를 타겟팅하는 요청들을 장려(favor)하기 위해 메모리 스케줄러가 어드레스 국부성(address locality)을 이용하도록 허용함으로써 메모리 쓰루풋을 개선할 수 있다.
[0024] DRAM 스케줄러(132)에 위치된 태그 로직, 태그 에이전트(130), 또는 둘 다에 위치된 부분들이 최적화에 기초하여 메모리 동작들의 서비스 순서를 재순서화하도록 구성되어서, 요청된 메모리 동작들은 발행 순서를 벗어나서 수행되고 이는 하나의 스레드 내의 그리고 제 1 메모리 동작의 태그 및 스레드 및 제 2 메모리 동작의 태그 및 스레드에 기초하여 다수의 스레드들에 걸친 스레드-당 및 태그-당 메모리 액세스에 기초할 수 있다. 최적화된 결정들은 동일한 스레드 내의 태그-당 요청들 및 메모리 액세스들 요청들의 서비스의 서비스 순서를 재순서화하기 위해 전체 메모리 효율 액세스 및 스레드-당 서비스 품질 레이턴시 요건들에 기초할 수 있다.
[0025] 도 2는 태그 및 스레드 아비터들(200)의 실시예의 블록도를 예시한다. 도 2에서 예시되는 바와 같이, 각각의 태그 아비터의 출력 사이에서 중재할 수 있는 동일한 스레드 아비터와 동일한 스레드의 IFIFO들 사이에서 중재하도록 스레드(202, 204 및 206) 당 태그-아비터가 존재할 수 있다.
[0026] 몇몇 실시예들에서, 로직 회로는 요청이 스케줄링될 수 있기 전에 요청의 데이터 위상들이 이용 가능하다는 것을 보장할 수 있다. 이 로직 회로는 또한 각각의 스레드를 토대로 태그마다 적용될 수 있다. 예를 들어, 로직 회로는 요청의 스레드 ID 및 태그 ID 둘 다를 저장할 수 있다.
[0027] 집적 회로는 개시기 지적 재산권(IP) 코어, 메모리를 갖는 타겟 IP 코어 및 상호접속을 이용하여 개시기 IP 코어에 결합되는 타겟 IP 코어를 포함할 수 있다. 상호접속은 집적 회로가 상호접속에 결합된 하나 이상의 개시기 지적 재산권(IP) 코어들 및 하나 이상의 타겟 IP 코어들 사이에서 트랜잭션들 통신하도록 허용할 수 있다.
[0028] 몇몇 실시예들은 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하도록 구성될 수 있는 태그 및 스레드 로직을 포함한다. 태그 및 스레드 로직은 개시기 IP 코어로부터의 메모리 액세스 요청들의 초기 발행 순서로부터의 순서를 벗어나서 초기 IP 코어로부터의 메모리 액세스 요청들의 태그-당 및 스레드- 당 스케줄링을 허용하도록 태그들 및 스레드들을 관리한다. 메모리 스케줄러는 몇몇 실시예들에서 메모리에 결합될 수 있다. 부가적으로, 메모리 스케줄러 또는 시스템 내의 다른 디바이스가 태그 및 스레드 로직을 포함할 수 있다.
[0029] 몇몇 실시예들에서, 태그 및 스레드 로직은 결정들을 최적화하기 위해 효율 및 레이턴시 알고리즘들을 적용함으로써 태그들 및 스레드들의 서비스를 동시에 핸들링한다. 이러한 최적화는 전체 메모리 효율 액세스들 및 스레드-당 서비스 품질 레이턴시 요건들에 기초할 수 있다. 부가적으로, 시스템은 개시기 IP 코어로부터의 메모리 액세스들 요청들의 서비스 순서를 동일한 스레드 내의 태그-당 요청들 및 잠재적으로 발행 순서로부터 벗어난 순서가 되게 재순서화할 수 있다.
[0030] 다양한 실시예들에서, 메모리 스케줄러 또는 타겟 에이전트와 같은 태그 및 스레드 로직은 다운스트림 DRAM 메모리에 의해 서비스되도록 스레드 식별들(thread identifications) 및 태그 식별들이 할당된 요청들을 송신하고 메모리 스케줄러는 스레드-당 및 태그-당 스케줄링을 수행한다. 몇몇 예들에서, 태그 및 스레드 로직, 예를 들어, 메모리 스케줄러 또는 타겟 에이전트에 라우팅된 요청들은 우선 스레드-당 요청들 및 이어서 각각의 스레드 내에서 태그-당 요청들로 분리되어서, 태그 및 스레드 로직은 전체 메모리 효율 액세스들을 최적화하기 위해 이들 스레드들 내에서 태그 레벨 병행(tag level parallelism)을 이용할 수 있다.
[0031] 몇몇 실시예들에서, 태그 및 스레드 로직은 메모리 스케줄러의 부분으로서 위치될 수 있고, 메모리 스케줄러는 AXI 프로토콜 기반 상호접속과 함께 동작하는 태그-기반 메모리 스케줄러를 포함하는 임의의 환경 내로 통합될 수 있다. AXI 프로토콜 기반 상호접속들은 요청의 서비스 동안 상호접속의 비-차단 이용을 허용하는 OCP 프로토콜 기반 상호접속들과 함께 추가로 동작하는 태그 기반 메모리 스케줄러는 물론, 요청의 서비스 동안 상호접속의 이용을 차단한다.
[0032] 따라서 동일한 로직 및 흐름 제어 로직은 AXI 프로토콜 클래스 또는 OCP 프로토콜 클래스와 같이 이용되는 프로토콜 클래스에 독립적인 메모리 스케줄러 및/또는 상호접속을 위해 이용될 수 있다. 주요한 차이는 인터페이스에서 예시되는 하드웨어의 양에 있을 것이다. OCP 프로토콜 클래스는 단일의 OCP 인터페이스를 통해 전달되는 각각의 스레드에 대한 비-차단 흐름 제어를 허용하기 위해 단일의 인터페이스로 예시되는 하드웨어 및 로직을 갖는다. 프로토콜의 AXI 클래스는 스레드 당 토대로 예시되는 하드웨어 및 로직을 가지며, 각각의 스레드는 그 인터페이스 상의 그 자신의 포트를 통해 전달되고 그 스레드에 전용되는 로직에 의해 서비스될 것이다. AXI 프로토콜 클래스에 대한 인터페이스는 다중 포트가 될 것이고 그 스레드에 전용되는 로직을 통해 스레드의 서비스를 제어하지만, 그 인터페이스를 이용하는 AXI 스레드들의 수와 동일한 시간의 양을 예시한다.
[0033] 태그 및 스레드 로직이 AXI 및 OCP 경우들에 이용된다. 동작에 있어서 위의 하드웨어 차이들과 관련하여, 태그 재순서화 유닛들은 공유 흐름 제어 도메인 내에서 여전히 살아 있으며 단지 여기서 언급된 재순서화에 관한 제약들을 갖는다. 각각의 스레드는 스레드가 발생하지만 독립적인 흐름 제어가 스레드들 사이에서 차단을 방지하도록 시스템의 스레드들에 대해 발생할 수 있는 요청들의 재순서화를 예사한다.
[0034] 다른 실시예들에서, 태그 및 스레드 로직은 타겟 에이전트에 위치될 수 있으며, 여기서 타겟 에이전트는 또한 내부 FIFO들의 세트를 포함한다. 각각의 타겟 에이전트는 또한 내부 FIFO들 각각에 요청들을 할당하기 위한 제어기를 포함할 수 있다. 또한, 다양한 실시예들에서, 메모리 스케줄러는 스레드-당 및 태그-당 스케줄링을 수행하고, 다운스트림 메모리에 의한 스레드 당 및 태그 당 요청의 서비스의 동시성 스케줄링이 발행 순서에 벗어나서 발생하도록 허용한다. 제-순서(in-order) 서비스 대신, 요청들은 최적의 메모리 효율 및 레이턴시 인자들에 기초하여 서비스될 수 있다. 예를 들어, 메모리 스케줄러에 이르는 요청들은 우선 스레드-당 요청들로 분리되고, 각각의 스레드 내에서, 메모리 스케줄러는 이들 스레드들 내에서 태그 레벨 병행을 이용할 수 있다.
[0035] 일 실시예에서, 태그 및 스레드 로직은 타겟 에이전트 및 메모리 스케줄러의 부분 둘 다를 포함하고, 여기서 태그 기반 메모리 스케줄러는 별개의 스레드 식별들 상에서 QoS 레이턴시 민감성 트래픽을 송신할 수 있다.
[0036] FIFO 버퍼들이 정해진 저장된 요청 엔트리가 다른 저장된 요청 엔트리보다 앞서 또는 늦게 도달하는지를 트래킹하기 위한 로직을 가질 수 있지만, 서비스 로직은 일반적으로 아래에서 기술될 몇 개의 조건들 하에서를 제외하고 엔트리가 FIFO에 배치된 상대적 시간에 기초하여 FIFO에 저장된 요청 엔트리들을 선택하지 않는다. 도 2에서, 스레드(T0)의 커맨드 버퍼 풀(CBP)(208) 내의 박스들은 동일한 스레드 내의 모든 태그들에 대한 공유된 저장소이며 임의의 특정한 태그에 동적으로 할당되지 않는다. 공유된 저장소 버퍼들은 인입하는 요청들 또는 특별한 핸들링 요건들이 마킹된 요청들의 임시 저장소를 위해 이용된다. 스레드(T0)(202)에 대해 도 2에서 예시되는 바와 같이, 동시성 스레드 및 태그 로직 및 그의 버퍼들은 스레드(T0)에 대해 예시된 컴포넌트들을 복제하는 스레드들(T1)(206) 및 T2(204)에 대해 유사하게 존재한다. R1 및 R0으로 라벨링된 박스들은 블록(210) 내의 T0 태그 아비터에 접속된 레지스터들을 표시한다.
[0037] 몇몇 실시예들은 판독 로킹 요청(read locking request)들을 핸들링하는 특별한 방법을 포함할 수 있다. 예를 들어, 어드레스 콘텐츠 로킹 로직은 자신의 콘텐츠를 로킹하도록 메모리 어드레스의 섹션에 대해 개시기가 바라는 태그 식별 또는 스레드 식별을 위해 개시기 IP 블록이 특별히 마킹된 판독 요청을 송신할 때를 지원하도록 구성될 수 있다. 이러한 판독은 새로운 클리어링 기록 요청(new clearing write request)이 전송되거나 개시기로부터 송신되고 로킹 로직에 의해 수신될 때까지 메모리 어드레스를 로킹할 수 있다.
[0038] 부가적으로, 몇몇 실시예들에서, 로직 및 연관된 크로스오버 큐(associated crossover queue)는 서비스 순서화 제한들이 이들 2개 이상의 상이한 요청 태그 식별들에 걸쳐서 관찰된다는 것을 보장하도록 데이터를 마킹함으로써 일련의 요청들을 순서대로 수행하도록 구성될 수 있다. 크로스오버 큐는 스레드 식별, 태그 식별 및 발행되었던 요청이 순서화 제약과 함께 발행되었다는 표시를 저장할 수 있다.
[0039] 예를 들어, 몇몇 실시예들은 태그들이 크로스오버 큐의 도움으로 순서대로 실행되도록 요구하는 기록 요청들을 핸들링하는 특별한 방식을 포함할 수 있다. 일반적으로 동일한 스레드로부터 그리고 동일한 개시기로부터 별개의 태그 ID들을 갖는 요청들은 상이한 태그 ID들에 걸쳐서 서비스-순서화 요건을 갖지 않는다. 로직은 상이한 태그 식별로부터의 요청들이 메모리 효율 및 QoS 레이턴시 요건들을 최대화할 수 있는 방식으로 발행된 순서를 벗어나서 서비스되도록 허용할 수 있다. 그러나 태그들이 순서대로 실행되도록 요구하는 로직("태그인오더 로직(TagInorder logic)")은 개시기 IP 블록이 태그 ID에 대한 특별히 마킹된 판독 또는 기록 요청을 송신할 때를 지원할 수 있다.
[0040] 제 1 태그 ID의 마킹된 인입하는 요청들과 제 2 태그 ID의 마킹된 인입하는 요청들 사이에 서비스-순서화 요건이 존재하는 것을 개시기가 바란다는 것을 태그인오더(TagInOrder)가 표시할 수 있다. 태그인오더 로직 및 기록 요청들 연관 데이터 보단 판독 요청 및/또는 기록 요청을 수행하도록 구성된 연관된 크로스오버 큐는 이들 2개 이상의 상이한 요청 태그 ID들에 걸쳐서 서비스 순서화 제약들이 관찰된다는 것을 보장하도록 마킹된다. RTIDQ 크로스오버 큐는 스레드 ID, 태그 ID, 및 MTagInorder 표시와 더불어 발행된 요청의 MTagInorder(인에이블되는 경우)를 저장할 수 있다. 응답을 위해, SThreadID를 응답에 할당하는 것 외에, STagID 및 STagInorder(인에이블되는 경우)가 또한 할당되어야 한다.
[0041] 도 3은 커맨드 버퍼 풀 아키텍처의 일 실시예의 블록도(300)를 예시한다. 커맨드 버퍼 풀(302)은 순차적 할당(in-order allocation) 무작위 할당해제(out-of order de-allocation)를 위해 구성될 수 있다. 또한, 몇몇 실시예들에서, 커맨드 버퍼 풀(302)은 동일한 사이클에서 다수의 디-큐들(de-queues)을 위해 구성될 수 있으며, 여기서 커맨드 버퍼 풀은 병행을 핸들링하기 위해 동적으로 할당 가능한 저장 버퍼들인 내부 FIFO 버퍼들(304, 306 및 308)의 세트를 갖는다. 커맨드 버퍼 풀(302)은 또한 내부 FIFO들(304, 306 및 308) 각각에 요청들을 할당하기 위한 로직을 또한 포함할 수 있고, 집적 회로는 시간의 기간 동안 정해진 태그 식별을 갖는 요청에 의해 이용될 내부 FIFO 버퍼들(304, 306, 308)의 할당을 로킹하는 로직을 더 포함하여서, 동적으로 할당 가능한 버퍼들은, 스레드의 특정한 태그에 할당되었을 때이지만 집적 회로의 동작 동안 시간에 걸쳐서 단일의 스레드로 로직에 의해 로킹되며, 상기 로직은 정해진 스레드를 구성하는 태그 ID들의 세트 사이에서 정해진 버퍼를 할당한다.
[0042] 도 4는 클록 도메인 크로싱의 실시예의 블록도(400)를 예시한다. 몇몇 실시예들에서, 커맨드 버퍼 풀은 비동기식 크로싱 성능(asynchronous crossing capability)을 포함할 수 있다. 예를 들어, 클록 도메인 크로싱은 경계 크로싱(404) 이전의 엔트리 할당 로직(402) 및 경계 크로싱(404) 이후의 엔트리 할당해제 로직(406)을 제공할 수 있다. 비동기식 크로싱 성능은 태그 식별들에 대한 요청 내의 기존의 비트 필드를 이용할 수 있는 클록 도메인 로직을 포함할 수 있다. 스레드 식별들은 클록 도메인들을 동기화시킬 목적들을 위해 이용될 수 있어서, 클록 도메인 로직은 버스 상호접속 클록 도메인과 메모리 스케줄러 클록 도메인 간의 클록 도메인들을 동기화시킬 목적을 위해 태그 식별들 및 스레드 식별들에 대한 요청 내의 기존의 비트 필드를 이용한다. 이러한 기존의 비트 필드의 예는 V 유효 필드이다.
[0043] 도 5는 도메인 크로싱(500)의 클록 게이팅의 실시예의 블록도를 예시한다. 예를 들어, 비동기식 설계들에서, 모든 포인트들 및 엔트리들의 유효 플래그들은 도 5에서 예시된 동기화기를 이용하여 동기화될 수 있다. 이러한 동기화는 시스템 도메인(502)을 기록할 때 유효 플래그를 세팅하고 이어서 경계 크로싱(504) 이후에 이를 판독 메모리 도메인(506)에 대해 동기화시킬 수 있다. 몇몇 실시예들에서, 플래그를 크리어링할 때, 플래그는 먼저 판독 도메인 상에서 클리어링되고 이어서 기록 도메인에 대해 동기화될 수 있다. 비동기식 설계들에서, 게이팅된 클록은 유효 비트들을 동기화하고 게이팅된 클록킹을 가능하게 하도록 이용될 수 있다.
[0044] 도 6은 어드레스 오버랩 구조의 실시예의 블록도를 예시한다. 몇몇 실시예들은 예를 들어, 컴패어(602)를 이용하여 요청들 간의 어드레스 오버랩을 검사하기 위해 특별한 어드레스 오버랩 검사 회로(600)를 이용할 수 있다. 몇몇 실시예들은 어드레스 오버랩이 존재하는 경우 순서를 강제할 수 있다.
[0045] 어드레스 오버랩 검사 회로(600)는 어드레스 오버랩 검사 회로의 입력 레지스터로의 인입하는 요청의 헤더 정보(604)가 오버랩이 존재한다고 표시할 때 스레드의 별개의 태그 식별들의 요청들 간의 서비스 순서를 시행할 수 있다. 검사 회로(600)는 양 태그들이 오버랩핑 메모리 어드레스들에 대해 기록 또는 판독하고자 할 때 태그들의 재-순서화를 허용하는 절대 금지(absolute ban)를 제공할 수 있다. 검사 회로(600)는 대안적으로 단지 동일한 태그로부터의 양 요청들이 양 판독 요청들일 때의 경우에서 동일한 태그 ID들을 갖는 요청들의 서비스의 재순서화를 허용할 수 있다. 이 경우에, 임의의 이러한 어드레스들에 대해 어떠한 개입하는 기록 요청도 없이 메모리의 콘텐츠들의 단순한 판독은 임의의 문제들을 야기하지 않아야 한다. 그러나 다른 실시예에서, 검사 회로(600)는, 요청이 다운스트림 메모리에서 1) 오버랩핑 어드레스의 콘텐츠를 판독하거나 2) 오버랩하는 어드레스에 새로운 콘텐츠를 기록하기 위한 것임을 어드레스 오버랩 검사 회로의 입력 레지스터로의 인입하는 요청의 헤더 정보(604)가 표시되고, 요청이 다운스트림 메모리에서 1) 오버랩하는 어드레스의 콘텐츠를 판독하거나 2) 오버랩하는 어드레스에 새로운 콘텐츠를 기록하기 위한 것이고 하나 이상의 저장된 요청들이 메모리 위치 내에서 인입하는 요청과 동일한 콘텐츠 상에서 수행될 대향하는 기능을 위한 것임을 대기 서비스 버퍼에 이미 저장된 요청이 또한 표시할 때 스레드의 별개의 태그 식별들의 요청들 간에 서비스 순서를 시행할 수 있다.
[0046] 몇몇 실시예들에서, 중재는 2개의 스테이지들: FIFO들 사이에서 스레드 내 태그 중재 그리고 스레드 간 중재로 행해질 수 있다. 스레드 내 태그 아비터는 도 6에서 예시되는 바와 같이 요청-유효(request-valid), 중간-비트, 페이지 히트, 방향 및 우선순위로 구성된 가중치-벡터를 가질 수 있다. QoS 대신, 태그-아비터는 IFIFO의 결핍 카운터가 0인 경우 1로 세팅되는 우선순위 비트로 구성된다. IFIFO들 사이에서, 세팅된 우선순위 비트를 갖는 IFIFO들은 우선순위가 세팅되지 않은 IFIFO들보다 선호도가 주어진다.
[0047] 도 7은 헤딩 요청 사이에서 어드레스 오버랩핑 검사 회로(700)의 실시예의 블록도를 예시한다. 몇몇 실시예들에서, 로직(702 및 704)은 저장된 요청들 모두가 동일한 오버랩핑 메모리 어드레스들로부터 콘텐츠를 판독하기를 원하는 경우 순서화 제약을 서빙하지 않도록 허용할 수 있다. 그러나 새로운 인입하는 요청이 그 오버랩핑 메모리 어드레스들에 새로운 콘텐츠를 기록하고자 할 때, 로직은 그 스레드의 2개 이상의 상이한 태그들로부터 잠재적으로 먼저 저장된 판독 요청들 모두는 인입하는 기록 요청이 메모리에 의해 서비스되도록 허용하기 이전에 서비스될 수 있다는 것을 시행할 수 있다. 부가적으로, 몇몇 실시예들은 메모리의 오버랩핑 어드레스 내에 새로운 콘텐츠를 기록할 수 있다. 로직(702 및 704)은 먼저 저장된 기록에 이어서 추후에 수신된 인입하는 판독 요청에 대해 동일한 제약을 시행할 수 있다. 그러나 로직(702 및 704)은 오버랩핑 어드레스들의 콘텐츠에 대해 대향하는 기능을 수행하고자 하는 태그 ID들의 저장된 요청에 대한 표시된 어드레스 오버랩이 존재하지 않는 메모리의 영역들에 대한 메모리 효율 및 레이턴시에 기초하여 상이한 태그들로부터 저장된 요청들의 서비스 순서를 여전히 적용할 것이다. 동일한 파라미터들은 집적 회로의 설계자로부터의 입력 파라미터들에 기초하여 포함되지 않거나 선택적으로 예시될 수 있다.
[0048] 도 8은 FIFO 기반 커맨드 버퍼(802)와 버퍼 풀 기반 커맨드 버퍼(804 및 806) 간의 비교의 실시예의 블록도를 예시한다. 커맨드 버퍼 풀(804 및 806)은 FIFO의 "선입선출" 어레인지먼트 대신 스레드 당 엔트리들의 풀을 유지하는데 이용될 수 있다.
[0049] 몇몇 실시예들에서, 커맨드 버퍼 풀(804 및 806)은 각각의 스레드 T에 대해 몇몇 실시예들에서 "request_buffers" 파라미터로 프로그래밍될 수 있는 미리 결정된 크기의 버퍼 풀을 유지할 수 있다. 그 크기의 범위는 몇몇 실시예들에서 1 내지 32일 수 있다. 몇몇 예들에서, 버퍼 풀의 모든 엔트리들은 "플로팅(floating)"될 수 있고, 스레드 상에서 sys 인터페이스에서 도달하는 요청들에 기초하여 할당 또는 할당 해제될 수 있다.
[0050] 레지스터들은 일 실시예에서, 시스템 인터페이스로부터의 각각의 요청을 2개의 ?(deep) FIFO RIN 내로 저장하는데 이용될 수 있다. 다음 사이클에서, 이 요청에는 커맨드 버퍼 풀("버퍼 풀") 내로의 엔트리가 할당될 수 있고, 포인터들의 수가 업데이트될 수 있다. RIN은 시스템 OCP 인터페이스 타이밍 경로로부터 버퍼 풀 할당의 타이밍 경로로부터 격리하는데 이용된다는 것에 주의한다.
[0051] 여기서 기술되는 다양한 시스템들 및 방법들은 각각의 스레드 상의 0 내지 태그들 - 1의 각각의 태그 식별(identification)을 고유한 내부 FIFO(IFIFO)에 맵핑한다. 스레드 당 NT(사용자 프로그래밍 가능한)개의 IFIFO들이 존재하는 몇몇 실시예들에서, 스레드 상의 태그는 동적으로 스레드 내의 IFIFO들 중 하나에 맵핑될 수 있다.
[0052] IFIFO로의 태그의 맵핑은 다음과 같이 행해질 수 있다: IFIFO가 할당된 동일한 태그 식별(태그 ID)을 갖는 계류중인 요청(CBP의 요청, R1 또는 R0)이 존재할 때, 동일한 IFIFO가 새로운 요청에 또한 할당된다. 따라서 동일한 태그에 속하는 요청들의 순서화가 보존된다. 동일한 태그 ID를 갖는 계류중인 요청이 존재하지 않고, 동일한 태그 ID를 갖는 기록 데이터 버퍼에 계류중인 데이터 워드들이 존재하지 않는 경우, 요청은 자유로운(free) 최저의 넘버링된 IFIFO에 할당된다. 어떠한 IFIFO도 자유롭지 않은 경우, 플래그(SThreadbusy)는 IFIFO들 중 하나가 자유롭게 될 때까지 시스템 OCP 인터페이스에서 어써트(assert)될 수 있다. 현재 요청은 결국 RIN에서 대기한다. 어떠한 MTagID도 IFIFO에 맵핑되지 않은 경우 IFIFO가 자유롭다는 것에 주의한다.
[0053] 태그 당 내부 FIFO들의 할당을 구현하기 위해, 각각의 IFIFO는 "자유로운(free)" 비트를 유지할 수 있다. 초기에, 자유로운 비트는 IFIFO가 MTagID에 할당될 수 있다고 표시하는 "1"로 리셋될 수 있다. 내부 FIFO들은 또한 이들이 현재 맵핑되는 태그 ID를 유지할 수 있다. 정해진 MTagID = T를 갖는 요청이 수락될 때, 그것은 IFIFO가 할당될 수 있다. 1과 동일한 자유 비트를 갖는 모든 IFIFO들 사이에서, 최저 ID를 갖는 것이 선택되고, 요청의 IFIFO-ID는 IFIFO의 IF로 세팅된다. 그러면, IFIFO의 자유 비트 엔트리는 0으로 업데이트될 수 있고, 그의 태그 ID 필드는 요청의 MTagID로 업데이트된다.
[0054] MTagID == 1을 갖는 요청이 스케줄링될 때, MemMax는 동일한 MTagID를 갖는 커맨드 버퍼 풀에서 계류중인 임의의 다른 요청(R1 또는 R0)이 존재하지를 검사한다. 이러한 요청이 존재하지 않는 경우, MemMax는 IFIFO의 자유 비트를 1로 업데이트하고 그의 MTagID가 리셋된다. 이 지점에서, 새로운 태그ID는 이 FIFO에 할당될 수 있다.
[0055] 몇몇 실시예들은 2 계층 레벨 아비터를 이용하는 것을 포함하며, 여기서 제 1 레벨은 스레드 내의 태그들을 중재하고, 2 레벨은 다수의 메모리들에 걸쳐서 태그들 및 스레드들을 동시에 관리하도록 스레드들을 중재하고, 아비터들 내의 로직은 정해진 요청과 연관된 서비스 품질 레이턴시 요건들을 참작하고 메모리 액세스 효율을 증가시키기 위해 동일한 또는 상이한 태그 ID들을 갖는 정해진 스레드와 연관된 저장된 요청들의 서비스 순서에 대해 재-배열을 참작한다.
[0056] 도 9는 태그 아비터 및 스레드 아비터의 실시예의 블록도를 예시한다. 예시되는 실시예에서, 태그 및 스레드 로직은 2 계층 레벨 아비터를 포함한다. 제 1 레벨은 스레드 내의 태그들을 중재하고, 제 2 레벨은 다수의 메모리들에 걸쳐서 태그들 및 스레드들을 동시에 관리하도록 스레드들을 중재한다. 아비터들을 위한 태그 및 스레드 로직은 정해진 요청과 연관된 서비스 품질 레이턴시 요건들을 참작하고 메모리 액세스 효율을 증가시키기 위해 동일한 또는 상이한 태그 ID들을 갖는 정해진 스레드와 연관된 저장된 요청들의 서비스 순서에 대해 재-배열을 참작한다.
[0057] 몇몇 실시예들은 2 계층 레벨 아비터 즉, 스레드 내의 태그 중재를 위한 하나 및 스레드 중재를 위한 하나를 포함할 수 있다. 메모리 스케줄러는 동일한 태그 ID를 갖는 요청들 사이에서 중재하고 최대 메모리 효율을 획득하기 위해 이들을 재배열할 수 있다. 아비터는 스레드 내의 태그들 사이에서 먼저 중재하고 이어서 동일한 개시기 지적 재산권 블록으로부터 오는 스레드들 사에서 중재하도록 진행할 수 있다.
[0058] 도 9에서 예시되는 바와 같이, 중재는 2 스테이지들, 즉 IFIFO들 사이에서 스레드 내 태그 중재 및 스레드 간 중재로 행해질 수 있다. 스레드 내 태그 아비터는 요청-유효, 중앙-비트, 페이지 히트, 방향 및 우선순위로 구성된 가중치-벡터를 가질 수 있다. QoS 대신, 태그-아비터는 IFIFO의 결핍 카운터가 0인 경우 1로 세팅될 수 있는 우선순위 비트를 포함할 수 있다. IFIFO들 사이에서 다양한 실시예들에서, 세팅된 우선순위 비트를 갖는 것들은 세팅된 우선순위 비트를 갖지 않는 것보다 선호도가 주어진다.
[0059] 몇몇 실시예들은 추가로 페이지 히트, 메모리 액세스 방향 및 메모리 칩에 기초하여 메모리 액세스들을 우선순위화하기 위한 알고리즘을 추가로 포함할 수 있다. 페이지 히트들은 메모리 칩이 액세스되는 보다 높은 우선순위일수 있는 버스 방향보다 높은 우선순위일 수 있다. 예를 들어, 동일한 시스템들은 하나 이상의 동적 랜덤 액세스 메모리들(DRAM들)을 포함할 수 있다. 이러한 DRAM 메모리와 같은 메모리의 판독 또는 기록 효율들은 메모리 페이지들을 변경하고, '판독 - 기록'으로부터 또는 '기록-판독'으로부터 메모리 버스 방향을 변경하거나, 또는 DRAM 코어 내의 어느 DRAM 메모리 칩이 현재 판독되거나 기록되고 있는지를 변경함으로써 영향을 받을 수 있다. 이에 따라, 몇몇 실시예들은 새로운 페이지가 판독되거나 기록될 때, 방향 변경이 일어날 때, 또는 상이한 메모리 칩이 액세스될 때 우선순위가 더 낮을 수 있다. 동일한 페이지를 재이용하는 것은 이미 캐시 내의 데이터를 이용하는 것을 허용하고 페이지 캐시 내로 그 정보를 로딩하기 위해 원하는 데이터의 어드레스를 룩업(loop up)할 필요가 없다. 메모리 버스 액세스 방향을 반전시키는 것은 시간이 걸리고 이에 따라 그것이 원하는 방향에 할당될 때 버스를 액세스하는 것은 효율을 증가시킨다. 부가적으로, 새로운 페이지 상의 판독들 또는 기록들은 방향을 반전하는 것을 포함하는 판독들 또는 기록들에 비해 더 높은 우선순위를 가질 수 있고, 방향을 반전시키는 것을 포함하는 판독 또는 기록들은 칩들을 변경하는 것에 비해 더 높은 우선순위를 가질 수 있다.
[0060] 여기서 기술된 시스템들, 방법들, 및 장치의 몇몇 실시예들은 명령들을 저장하는 기계-판독 가능한 저장 매체를 포함할 수 있다. 이들 명령들은 기계에 의해 실행될 때, 기계로 하여금 전자 설계 자동화 프로세스에서 사용될 수 있는 집적 회로를 위한 모델 표현들(model representations)을 생성하게 할 수 있다.
[0061] 결핍을 방지하기 위해, 몇몇 실시예들은 내부 FIFO를 위해 8-비트와 같은 다중 비트의 결핍 카운터를 유지할 수 있어서, 각각의 사이클에서, 대응하는 내부 FIFO가 그의 R2에 판독 또는 기록 요청을 갖는 경우(존재하는 경우), R1 또는 R0 레지스터 및 내부 FIFO는 태그 아비터의 승리자가 아니다. 예를 들어, 결핍 카운터 값이 0에 도달하는 경우, 결핍 카운터 값은 추가로 감소되지 않고, 레지스터 내의 판독 또는 저장 요청이 수행될 수 있고, 시스템 요청의 마지막 서브-버스트가 내부 FIFO로부터 스케줄링되었을 때, 결핍 카운터는 그의 프로그래밍된 값으로 리셋된다.
[0062] 몇몇 실시예들은 스레드 당 및 태그 당 메모리 액세스 스케줄링을 동시에 수행하는 방법을 포함한다. 방법은 제 1 메모리 동작이 제 2 메모리 동작보다 더 적은 클록 사이클들에서 수행될 수 있는지를 결정하기 위해 효율 알고리즘을 적용하는 것 및 각각의 메모리 동작의 시작과 각각의 메모리 동작의 완료 간의 레이턴시를 결정하기 위해 레이턴시 알고리즘을 적용하는 것을 포함할 수 있다. 다양한 실시예들은 전체 메모리 효율 액세스들 및 스레드-당 서비스 품질 레이턴시 요건들에 기초하여 제 1 메모리 동작 및 제 2 메모리 동작의 순서를 최적화할 수 있다. 부가적으로, 제 1 메모리 동작 및 제 2 메모리 동작의 서비스 순서는 요청된 메모리 동작들이 발행 순서를 벗어나서 수행되도록 최적화에 기초하여 재순서화될 수 있으며, 이는 제 1 메모리 동작의 태그 및 스레드, 및 제 2 메모리 동작의 태그 및 스레드에 기초하여 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링에 기초할 수 있다.
[0063] 몇몇 실시예들은 다운스트림 메모리에 의해 서비스될, 스레드 식별 및 태그 식별이 할당된 메모리 동작을 송신하는 것을 포함할 수 있다. 부가적으로, 태그 및 스레드 로직내로 들어오는 메모리 동작들은 우선 스레드-당 요청들로 그리고 이어서 각각의 스레드 내에서 태그 당 요청들로 분리된다. 이는 태그 및 스레드 로직이 전체 메모리 효율 액세스를 최적화하기 위해 이들 스레드 내의 태그 레벨 병행을 이용할 수 있도록 행해질 수 있다.
[0064] 여기서 기술된 방법들은 개시기 상에서 명령들을 실행함으로써 수행될 수 있다. 예를 들어, 시스템 내의 태그 및 스레드 로직은 하나의 스레드 내에서 및 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행할 수 있다. 이는 초기 발행 순서로부터 벗어나서 메모리 액세스들의 태그-당 및 스레드-당 스케줄링을 허용하도록 태그들 및 스레드들을 관리하기 위한 태그 및 스레드 로직을 제공할 수 있다.
[0065] 몇몇 실시예들은 다수의 개시기 IP 코어들, 하나 이상의 메모리 IP 코어들을 포함하는 다수의 타겟 IP 코어들 및 상호접속에 결합된 다수의 개시기 IP 코어들과 다수의 타겟 IP 코어들 간의 트랜잭션들을 통신하기 위한 상호접속을 포함하는 집적 회로 및 개시키 IP, 코어에 결합된 메모리를 포함하는 타겟을 포함한다. 집적 회로는 또한 상호접속 및 메모리 IP 코어들 중 하나 이상에 결합된 메모리 스케줄러를 포함할 수 있다. 부가적으로 태그 및 스레드 로직은 하나의 스레드 내에서 및 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하도록 구성될 수 있다. 태그 및 스레드 로직은 초기 발행 순서로부터 벗어나서 메모리 액세스들의 태그-당 및 스레드-당 스케줄링을 허용하도록 태그들 및 스레드들을 관리할 수 있다. 부가적으로, 태그 및 스레드 로직은 다음들, 즉 메모리 스케줄러 내에 또는 타겟 에이전트 내에 위치되거나 또는 이들 둘의 일부에서 발견될 수 있다. 몇몇 예들에서, 다수의 개시기 IP 코어들, 다수의 타겟 IP 코어들, 상호접속 및 태그 및 스레드 로직은 시스템 온 칩을 포함한다.
[0066] 몇몇 예시적인 태그 및 스레드 로직은 전체 메모리 효율 액세스 및 스레드-당 서비스 품질 레이턴시 요건들에 기초하여 결정들을 최적화하기 위해 효율 및 레이턴시 알고리즘을 적용함으로써 태그들 및 스레드들의 서비스를 동시에 핸들링할 수 있다. 이는 발행 순서에 벗어나서 동일한 스레드 내의 태그-당 요청들의 서비스 순서를 재-순서화할 수 있다. 부가적으로, 태그 및 스레드 로직은 다운스트림 메모리에 의해 서비스될 스레드 식별들 및 태그 식별들이 할당된 요청을 송신할 수 있다. 태그 및 스레드 로직 내로 들어오는 요청들은 우선 스레드-당 요청들로 그리고 각각의 스레드 내의 태그 당 요청들로 분리될 수 있다. 몇몇 실시예들에서, 태그 및 스레드 로직은 전체 메모리 효율 액세스를 최적화하기 위해 이들 스레드들 내에서 태그 레벨 평행을 이용할 수 있다. 부가적으로, 몇몇 실시예들은 기계에 의해 실행될 때, 기계로 하여금 전자 설계 자동화 프로세스에서 사용되는 집적 회로를 위한 모델 표현들(model representations)을 생성하게 하는 명령들을 저장하는 기계-판독 가능한 저장 매체를 포함한다.
[0067] 도 10은 여기서 기술된 시스템들 및 방법들에 따라 시스템 온 칩과 같은 디바이스를 생성하기 위한 프로세스의 예의 실시예의 흐름도이다. 상호접속 및 메모리 스케줄러의 설계들을 갖는 디바이스를 생성하기 위한 예시적인 프로세스는 전자 설계 자동화(EDA) 툴 세트의 부분을 형성하기 위해 시스템 온 칩 컴파일러와 같은 전자 회로 설계 생성기를 활용할 수 있다. 하드웨어 로직, 코딩된 소프트웨어 및 이들 둘의 조합은 EDA 툴 세트의 실시예를 이용하여 다음의 설계 프로세스 단계들을 구현하는데 이용될 수 있다. 이러한 EDA 툴 세트는 단일의 툴 또는 2개 이상의 이산 툴들의 편집물일 수 있다. 호접속, 메모리 스케줄러 등의 회로를 위한 장치들 및/또는 방법들을 표현하는 방법은 셀 라이브러리와 같은 인스턴스(instance)에 포함되거나, 또는 전자 회로 설계 생성기 또는 이 정보를 저장하는 유사한 기계-판독 가능한 저장 매체의 소프트 명령들일 수 있다. 기계-판독 가능한 저장 매체 상에 저장된 장치들 및/또는 방법들을 표현하는 방법은 장치, 시뮬레이션 및 리소그라피 마스크들과 같은 장치들의 모델 표현들, 및/또는 여기서 기술된 방법들을 생성하는 프로세스에서 이용될 수 있다.
[0068] 위의 설계의 양상들은 스케줄러 및 상호접속 및 연관된 부분들을 구성하는 컴포넌트들을 위한 설계의 세트를 포함하는 소프트웨어라이브러리의 부분일 수 있다. 라이브러리 셀들은 산업 표준들에 따라 개발된다. 설계 에이전트들을 포함하는 파일들의 라이브러리는 EDA 툴 세트의 부분은 불론 그 자신에 의한 독립형 프로그램일 수 있다.
[0069] EDA 툴 세트는 입력 및 출력 데이터, 제어, 디버그 및 테스트 흐름들은 물론 다른 기능들을 통합적으로 관리하는 고도로 구성 가능한, 스케일러블 시스템-온-어-칩(SOC) 블록간 통신 시스템을 제조하기 위해 이용될 수 있다. 일 실시예에서, 예시적인 EDA 툴 세트는 그래픽 사용자 인터페이스, 프로세싱 엘리먼트들의 공통 세트 및 회로들, 제어 로직 및 EDA 툴 세트를 정의하는 셀 어레이들과 같은 설계 엘리먼트들을 포함하는 파일들의 라이브러리를 포함할 수 있다. EDA 툴 세트는 다수의 알고리즘들 및 회로 설계를 생성하고, 설계를 테스트하고 및/또는 타겟 칩 상에서 이용 가능한 공간 내에 설계의 레이아웃을 배치할 목적을 위한 설계로 구성된 하나 이상의 소프트웨어프로그램들일 수 있다. EDA 툴 세트는 실행 가능한 소프트웨어프로그램들의 세트 내의 객체 코드를 포함할 수 있다. EDA 툴 세트의 인터페이스들 및 애플리케이션-특정 알고리즘들의 세트는 특정한 애플리케이션을 위한 IP 코어들의 전체 시스템 또는 개별 IP 코어를 빠르게 생성하기 위해 시스템 집적 회로(IC) 통합기들에 의해 이용될 수 있다. EDA 툴 세트는 각각의 컴포넌트의 타이밍 다이어그램, 전력 및 영역 양상들을 제공하고 실제 동작 및 구성 시뮬레이션을 실행하기 위해 컴포넌트들을 표현하도록 코딩된 모델들을 통해 시뮬레이팅한다. EDA 툴 세트는 타겟 칩 상에서 이용가능한 공간에 맞추도록 타겟팅된 레이아웃 및 넷리스트(Netlist)를 생성할 수 있다. EDA 툴 세트는 또한 기계-판독 가능한 저장 매체 상의 로직 회로 및 상호접속을 표현하는 데이터를 저장할 수 있다.
[0070] 일반적으로, EDA 툴 세트는 SOC의 2개의 주요한 스테이지들; 즉 프론트-엔드 프로세싱 및 백-엔드 프로그래밍에서 이용된다. EDA 툴 세트는 RTL 생성기, 로직 합성 스크립트들, 완전 검증 테스트벤치(full verification testbench) 및 SystemC 모델들을 포함할 수 있다.
[0071] 프론트-엔드 프로세싱은 SOC 개략도의 설계를 포함하는 설계 및 아키텍처 스테이지들을 포함한다. 프론트-엔드 프로세싱은 모델들을 연결, 설계의 구성, 시뮬레이팅, 테스트, 및 아키텍처 검사(architectural exploration) 동안 설계의 조절을 포함할 수 있다. 설계는 통상적으로 시뮬레이팅되고 테스트된다. 프론트-엔드 프로세싱은 전통적으로 이들이 올바르게 작동해야 하는 검증 및 SOC 내의 회로들의 시뮬레이션을 포함한다. 테스트되고 검증된 컴포넌트들은 이어서 독립형 라이브러리의 부분 또는 칩 상의 IP 블록들의 부분으로서 저장될 수 있다. 프론트-엔드 뷰들은 문서화, 시뮬레이션, 디버깅 및 테스트를 지원한다.
[0072] 블록(1105)에서, EDA 툴 세트는 하나의 스레드 및 다수의 스레드들에 걸친 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하도록 구성된 태그 로직의 적어도 부분을 위한 설계 및 구성 파라미터들을 기술하는 데이터를 갖는 사용자-제공 텍스트 파일을 수신할 수 있다. 데이터는 그 IP 블록에 대한 하나 이상의 구성 파라미터들을 포함할 수 있다. IP 블록 기술은 상호접속, 메모리 스케줄러 등과 같은 그 IP 블록의 전체 기능일 수 있다. 상호접속 IP 블록 및 스케줄러에 대한 구성 파라미터는 앞서 기술된 바와 같은 파라미터들을 포함할 수 있다.
[0073] EDA 툴 세트는 그 블록의 컴포넌트 레벨 제조를 구현하기 위한 제조 프로세스, 그 기술에서 셀에 의해 점유되는 크기의 추정, 그 기술에서 구현되는 컴포넌트 레벨 로직의 동작 전압, 그 기술에서 표준 셀들에 대한 평균 게이트 지연 등과 같은 사용자-제공 구현 기술 파라미터들을 수신한다. 기술 파라미터들은 의도된 구현 기술의 요약(abstract)을 기술한다. 사용자-제공 기술 파라미터들은 텍스트 기술 또는 단순히 알려진 가능성의 범위에 응답하여 제출되는 값일 수 있다.
[0074] EDA 툴 세트는 IP 블록 설계를 구성하는 각각의 IP 서브 컴포넌트에 대한 요약 실행 가능한 표현(abstract executable representation)을 생성함으로써 IP 블록 설계를 분할할 수 있다. 요약 실행 가능한 표현은 실제 IP 블록 설계의 것과 유사한 모방 특성들 및 각각의 IP 서브 컴포넌트에 대한 TAP 특성들을 모델링한다. 모델은 그 IP 블록의 하나 이상의 행위적 특성들에 집중할 수 있다. EDA 툴 세트는 IP 블록 설계의 부분 또는 모두 다의 모델들을 실행한다. EDA 툴 세트는 그 IP 블록의 모델링된 행위적 특성들의 결과들을 개괄하고 리포팅한다. EDA 툴 세트는 또한 애플리케이션의 성능을 분석하고 사용자가 IP 블록 설계의 새로운 구성 또는 새로운 기술 파라미터들을 갖는 기능적 기술을 제공하도록 허용할 수 있다. 사용자가 실행된 IP 설계 파라미터들 및 기술 파라미터들의 제공된 구성의 반복들 중 하나의 성능 경과에 만족한 이후, 사용자는 그의 연관된 기술 파라미터들로 결과적인 IP 코어 설계를 정할 수 있다.
[0075] EDA 툴 세트는 IP 블록에 대한 합성 스크립트들을 생성하기 위해 요약 실행 가능한 표현들로부터의 결과들을 잠재적으로 부가적인 정보와 통합한다. EDA 툴 세트는 전체 성능 및 영역 추정들의 결과가 사용자에게 제시된 이후 IP 블록에 대한 다양한 성능 및 영역 목표들을 설정하도록 합성 스크립트들을 제공할 수 있다.
[0076] EDA 툴 세트는 또한 사용자 제공 구성 파라미터들 및 구현 기술 파라미터들에 기초하여 로직 합성을 위한 그 IP 블록 설계의 RTL 파일을 생성할 수 있다. 논의된 바와 같이, RTL 파일은 레지스터들의 모음, 불 공식들, "if-then-else" 문들(statements)과 같은 제어 로직 및 복합 이벤트 시퀀스들을 갖는 전자 회로들을 기술하는 고-레벨 하드웨어 기술일 수 있다.
[0077] 블록(1110)에서, ASIC 또는 SOC 칩 설계에서 별개의 설계 경로가 통합 스테이지로 불린다. IP 블록들의 시스템의 통합은 그 IP 블록에 대한 합성 스크립트 및 IP 블록의 RTL 파일의 생성과 병렬로 발생할 수 있다.
[0078] EDA 툴 세트는 설계 작업들의 동작을 올바르게 시뮬레이팅 및 검증하기 위한 회로들 및 로직 게이트들의 설계들을 제공한다. 시스템 설계자는 함께 작동하도록 IP 블록들의 시스템을 코딩한다. EDA 툴 세트는 기능적으로 테스트되고, 타이밍 테스트되고, 디버깅되고 확인될 수 있는, 위에서 기술된 회로들의 표현들의 시뮬레이션들을 생성한다. EDA 툴 세트는 IP 블록의 행위의 시스템을 시뮬레이팅한다. 시스템 설계자는 IP 블록들의 행위의 시스템을 검증 및 디버깅한다. EDA 툴 세트 툴은 IP 코어를 패키징한다. 기계-판독 가능한 저장 매체는 또한 여기서 기술된 테스트들에 대한 테스트 시퀀스들을 실행하기 위해 상호접속 및 외부 테스터에 대한 명령들을 생성하도록 테스트 생성 프로그램을 위한 명령들을 저장할 수 있다. 전자 설계 자동화의 당업자는 설계 엔지니어가 유형의 유용한 정보 및/또는 결과들의 생성을 돕도록 소프트웨어 코딩된 모델들과 같은 상이한 표현들을 생성 및 이용한다는 것을 인지한다. 이들 표현들 대부분은 고-레벨(요약되거나 덜 상세함) 또는 탑-다운 뷰들일 수 있고 시스템 레벨로부터 시작하는 전자 설계를 최적화하는데 돕도록 이용될 수 있다. 또한, 설계 프로세스는 보통 페이즈들로 분할될 수 있고, 각각의 페이즈의 단부에서, 페이즈에 대해 맞춤-제작 표현이 보통 출력으로서 생성되고 다음 페이즈에 의한 입력으로서 이용된다. 숙련된 엔지니어들은 이들 표현들을 이용하고 최종 페이즈에서 발생하는 최종 결과들의 품질을 개선하기 위해 발견적(heuristic) 알고리즘들을 적용할 수 있다. 이들 표현들은 전자 설계 자동화 세계가 회로들을 설계하고, 회로들을 테스트 및 검증하고 회로의 넷리스트(Netlist)들 및 다른 유사한 유용한 결과들로부터 리소그라피 마스크를 유도하도록 허용한다.
[0079] 블록(1115)에서, 이어서, 시스템 통합은 집적 회로 설계 프로세스에서 발생할 수 있다. 백-엔드 프로그래밍은 일반적으로 컴포넌트들 간의 모든 금속 라인들의 라우팅은 물론, 칩 레이아웃 상의 회로 엘리먼트들의, 배치(placing) 및 라우팅 또는 플로어 플래닝(floor planning)과 같은 SOC의 물리적 레이아웃의 프로그래밍을 포함한다. 레이아웃, LEF(Library Exchange Format) 등과 같은 백-엔드 파일들은 레이아웃 및 제조를 위해 생성된다.
[0080] 생성된 디바이스 레이아웃은 칩에 대한 레이아웃의 리셋과 더불어 통합될 수 있다. 로직 합성 툴은 IP 코어에 대한 합성 스크립트들 및 IP 코어들의 RTL 설계 파일을 수신한다. 로직 합성 툴은 또한 셀 라이브러리로부터의 설계에 이용되는 로직 게이트들의 특성들을 수신한다. RTL 코드는 IP 블록들의 시스템을 포함하는 SOC를 예시하도록 생성될 수 있다. 고정된 RTL 및 합성 스크립트들들 갖는 IP 블록들의 시스템은 시뮬레이팅 및 검증될 수 있다. 설계와 RTL(Register Transfer Level)의 합성이 발생할 수 있다. 로직 합성 툴은 게이트 레벨 넷리스트 회로 설계(즉, 모든 IP 서브 컴포넌트 블록들을 구성하는 개별 트랜잭션들 및 로직 게이트들의 기술(description))를 생성하기 위해 RTL 설계를 합성한다. 설계는 Verilog, VHDL(Very-High-Speed Integrated Circuit Hardware Description Language) 또는 SPICE(Simulation Program for Integrated Circuit Emphasis)와 같은 하나 이상의 HDL(hardware design languages)의 넷리스트 내로 출력될 수 있다. 넷리스트는 또한 설계에 포함되는 컴포넌트들, 각각의 컴포넌트의 속성들 및 컴포넌트들 간의 상호접속과 같은 전자 설계의 접속을 기술할 수 있다. EDA 툴 세트는 칩 상의 XY 좌표들과 같이 칩 상에서 이용가능한 공간의 컴포넌트 배치를 위한 제약들의 부가를 포함하는 컴포넌트들의 플로어 플래닝을 용이하게 하고, 이들 컴포넌트들에 대한 금속 접속을 라우팅한다. EDA 툴 세트는 제조 동안 칩 상의 회로 설계, 또는 위에서 기술된 회로들의 다른 유사한 유용한 유도물들을 전달하기 위해 IP 코어의 이들 표현으로부터 생성되도록 리소그라피 마스크들에 대한 정보를 제공한다. 이에 따라, 백-엔드 프로그래밍은 추가로 그것이 물리적으로 제조 가능하고 결과적인 SOC가 어떠한 기능-방해 물리적 결함들을 갖지 않는다는 것을 검증하도록 레이아웃의 물리적 검증을 추가로 포함할 수 있다.
[0081] 블록(1120)에서, 제조 설비는 EDA 툴 세트의 회로 설계 및 레이아웃으로부터 생성된 리소그라피 마스크들을 활용하는 신호 생성 회로를 갖는 하나 이상의 칩들을 제조할 수 있다. 제조 설비들은 칩들을 제조하기 위해 1.0um, 0.25 um, 0.18 um, 0.13 um, 0.10 um, 90 nm, 65 nm 또는 그 미만과 같은 최소 라인 폭들을 갖는 표준 CMOS 로직 프로세스를 이용할 수 있다. 이용되는 CMOS 로직 프로세스의 크기는 통상적으로 리소그라피 마스크들을 이용하여 칩 상에서 제조될 수 있는 가장 작은 최소 리소그라피 치수를 정의하며, 이는 결국 최소 컴포넌트 크기를 결정한다. 일 실시예에 따라, X-선 및 극 자외선 방사(extreme ultraviolet radiation)를 포함하는 광은 테스트 회로에 대한 레이아웃 및 회로 설계를 칩 그 자체 상에 전사하기 위해 이들 리소그라피마스크들을 칩 상에 전달할 수 있다.
[0082] EDA 툴 세트는 그래픽 사용자 인터페이스를 위한 구성 다이얼로그 플러그-인들을 가질 수 있다. EDA 툴 세트는 SocComp에 대한 RTL 생성기 플러그-인을 가질 수 있다. EDA 툴 세트는 SocComp에 대한 SystemC 생성기 플러그-인을 가질 수 있다. EDA 툴 세트는 RTL 시뮬레이션에 포함될 수 있는 컴포넌트들 상에서 유닛-레벨 검증을 수행할 수 있다. EDA 툴 세트는 테스트 확인 테스트벤치 생성기를 가질 수 있다. EDA 툴 세트는 가상 및 하드웨어 디버그 포트 트래이스 파일들에 대한 디스-어셈블러(dis-assembler)를 가질 수 있다. EDA 툴 세트는 개방 코어 프로토콜 표준들과 순응할 수 있다. EDA 툴 세트는 트랜스섹터 모델들(Transactor models), 번들 프로토콜 검사기들, 소켓 활동을 디스플레이하기 위한 OCPDis2, 번들의 성능은 물론 다른 유사함 프로그램들을 분석하기 위한 OCPPerf2를 가질 수 있다.
[0083] 논의된 바와 같이, EDA 툴 세트는 기계-판독 가능한 매체 상에 저장된, 하나의 프로그램의 소프트웨어 셀 라이브러리를 갖는 실행 가능한 프로그램으로 구성된 EDA 툴 세트 또는 다른 프로그램들에 대해 호출 가능한 소프트웨어 라이브러리의 인스턴스와 같이 데이터 및 명령들의 세트로서 소프트웨어에서 구현될 수 있다. 기계-판독 가능한 저장 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함할 수 있다. 예를 들어, 기계-판독 가능한 매체는 ROM(read only memory), RAM(random access memory), 자기 디스크 저장 매체들, 광학 저당 매체들, 플래시 메모리 디바이스들, DVD들, EPROM들, EEPROM들, 플래시, 자기 또는 광학 카드들, 또는 전자 명령들을 저장하기에 적합한 임의의 다른 타입의 매체들을 포함(그러나 이들로 제한되지 않음)할 수 있다. 명령들 및 동작들은 또한 기계-판독 가능한 매체들이 2대 이상의 컴퓨터 시스템에 의해 실행되거나 및/또는 그 상에 저장된 분배된 컴퓨팅 환경에서 실시될 수 있다. 또한, 컴퓨터 시스템들 간에 전달된 정보는 컴퓨터 시스템들에 접속하는 통신 매체들을 통해 풀링(pull) 또는 푸쉬(push)될 수 있다.
[0084] 위의 상세한 설명들 중 몇몇 부분들은 컴퓨터 메모리 내의 데이터 비트들 상의 동작들의 기호적인 표현들 및 알고리즘들의 견지에서 제시된다. 이들 알고리즘적 기술들 및 표현들은 그들의 작업의 내용을 다른 당업자에게 가장 유효하게 전달하기 위해 데이터 프로세싱 분야에서 당업자에 의해 이용되는 수단이다. 알고리즘은 여기서, 그리고 일반적으로 원하는 결과를 야기하는 동작들의 자기-일관적 시퀀스(self-consistent sequence)라고 간주된다. 동작들은 물리적인 양들의 물리적 조작들을 요구하는 것들이다. 보통, 필수적이진 않지만, 이들 양들은 저장되고, 전달되고, 조합되고 비교되고, 및 다른 방식으로 조작 가능한 전기 또는 자기 신호들의 형태를 취한다. 이는 이따금, 대체로 공통적인 이용의 원인들로 인해, 이들 신호들을 비트들, 값들, 엘리먼트, 심볼들, 문자들, 용어들, 번호들 등으로서 지칭하는 것이 편리하다고 판명되었다.
[0085] 로직은 불 로직의 규칙들을 따른 전기 회로들, 명령들의 패턴들을 포함하는 소프트웨어, 또는 이들 둘의 임의의 조합으로 구성된다. 위에서 기술된 다양한 컴포넌트들은 하드웨어 로직, 소프트웨어 또는 이들 둘의 임의의 조합으로 구현될 수 있다.
[0086] 본 발명의 몇몇 특정한 실시예들이 도시되었지만, 본 발명은 이들 실시예들로 제한되지 않을 것이다. 예를 들어, 전자 하드웨어 컴포넌트들에 의해 수행되는 대두분의 기능들은 소프트웨어 에뮬레이션(emulation)에 의해 복제될 수 있다. 따라서 이들 동일한 기능들을 달성하기 위해 기록된 소프트웨어 프로그램은 입력-출력 회로에서 하드웨어 컴포넌트들의 기능을 에뮬레이팅할 수 있다. 본 발명은 여기서 기술된 특정한 실시예들에 의해 제한되는 것이 아니라 첨부된 청구항들의 범위에 의해서만 제한된다.
Claims (20)
- 집적 회로에 있어서,
개시기 지적 재산권(Intellectual Property; IP) 코어;
메모리를 포함하고, 상기 개시기 IP 코어에 결합된 타겟 IP 코어;
상호접속에 결합된 하나 이상의 개시기 지적 재산권(IP) 코어들과 하나 이상의 타겟 IP 코어들 간의 트랜잭션(translaction)들을 통신하기 위한 집적 회로를 위한 상호접속; 및
태그 및 스레드 로직이 상기 개시기 IP 코어로부터의 메모리 액세스 요청들의 초기 발행 순서로부터 무작위로(out of order) 상기 개시기 IP 코어로부터의 메모리 액세스 요청들의 태그-당 및 스레드-당 스케줄링을 허용하기 위해 태그들 및 스레드들을 관리하도록 하나의 스레드 내에 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링(per-thread and per-tag memory access scheduling)을 동시에 수행하도록 구성된 상기 태그 및 스레드 로직
을 포함하는,
집적 회로. - 제 1 항에 있어서,
상기 태그 및 스레드 로직은,
발행 순서로부터의 순서에 벗어나게 되는 상기 개시기 IP 코어로부터의 메모리 액세스 요청들의 서비스 및 동일한 스레드 내의 태그-당 요청들의 서비스 순서를 재-순서화하기 위해 전체 메모리 효율 액세스 및 스레드-당 서비스 품질 레이턴시 요건들에 기초하여 결정들을 최적화하도록 효율 및 레이턴시 알고리즘을 적용함으로써 태그들 및 스레드들의 서비스를 동시에 핸들링하는,
집적 회로. - 제 1 항에 있어서,
상기 태그 및 스레드 로직은,
다운스트림 메모리에 의해 서비스되는 스레드 식별들 및 태그 식별들이 할당된 요청들을 송신하고,
상기 태그 및 스레드 로직 내로 라우팅되는 요청들은 먼저 스레드-당 요청들로, 이어서 각각의 스레드 내에서 태그-당 요청들로 분할되어서 상기 태그 및 스레드 로직은 전체 메모리 효율 액세스들을 최적화하기 위해 이들 스레드들 내에서 태그 레벨 병행(tag level parallelism)을 이용할 수 있는,
집적 회로. - 제 1 항에 있어서,
상기 태그 및 스레드 로직은 상기 메모리에 결합된 메모리 스케줄러의 부분으로서 위치되고,
상기 메모리 스케줄러는 요청의 서비스 동안 상기 상호접속의 이용을 차단하지 않도록 다중 포팅된(multiple-ported) 인터페이스를 이용하는 AXI 프로토콜 기반 상호접속들과 함께 동작하는 태그 기반 메모리 스케줄러는 물론, OCP 프로토콜 기반 상호접속들과 함께 추가로 동작하는 1) 태그 기반 2) 스레드 기반 또는 3) 태그 및 스레드의 조합 기반 메모리 스케줄러 내로 통합되어 상기 인터페이스에서 요청의 서비스 동안 상기 상호접속의 이용을 차단 또는 비-차단하는 양(both) 옵션들을 허용하고,
상기 메모리 스케줄러는 상기 인터페이스를 통해 상기 상호접속에 결합되는,
집적 회로. - 제 1 항에 있어서,
상기 태그 및 스레드 로직은,
타겟 에이전트(target agent)에 위치되고,
상기 타겟 에이전트는 또한 내부 FIFO들의 세트를 포함하고, 상기 타겟 에이전트는 또한 상기 내부 FIFO들 각각에 요청들을 할당하기 위한 제어기를 포함하고,
상기 타겟 IP 코어는 상기 타겟 에이전트를 통해 그리고 버스 상호접속을 통해 상기 개시기 IP 코어에 결합되는,
집적 회로. - 제 1 항에 있어서,
상기 태그 및 스레드 로직은,
타겟 에이전트 및 상기 메모리에 결합된 메모리 스케줄러의 일부 둘 다를 포함하고,
상기 메모리 스케줄러는 별개의 스레드 식별들 상에서 QoS 레이턴시 민감성 트래픽을 송신할 수 있는,
집적 회로. - 제 1 항에 있어서,
순차적 할당(in-order allocation) 또는 무작위 할당-해제(out-of order de-allocation)를 위해 구성된 커맨드 버퍼 풀(command buffer pool)
을 더 포함하고,
상기 커맨드 버퍼 풀은 동일한 사이클에서 다수의 디-큐들(de-queues)을 위해 구성되고,
상기 커맨드 버퍼 풀은 병행(parallelism)을 핸들링하기 위해 동적으로 할당 가능한 저장 버퍼들인 내부 FIFO 버퍼들의 세트, 및 상기 내부 FIFO들 각각에 요청들을 할당하기 위한 로직을 갖고,
상기 집적 회로는,
시간 기간 동안 정해진 태그 식별을 갖는 요청에 의해 이용될 내부 FIFO 버퍼의 할당을 로킹하는 로직을 더 포함하여서, 동적으로 할당 가능한 버퍼들은, 스레드의 특정한 태그에 할당되지만, 집적 회로의 동작 동안 시간에 걸쳐 있을 때 단일 스레드로 상기 로직에 의해 로킹되고,
상기 로직은 정해진 스레드를 구성하는 태그 ID들의 세트 간에 정해진 버퍼를 할당하는,
집적 회로. - 제 1 항에 있어서,
상기 태그 및 스레드 로직은 2 계층 레벨 아비터를 포함하며, 제 1 레벨은 하나의 스레드 내의 태그들을 중재(arbitrate)하고, 제 2 레벨은 다수의 메모리들에 걸쳐서 스레드들 및 태그들을 동시에 관리하도록 스레드들을 중재하고,
상기 아비터들에 대한 태그 및 스레드 로직은 메모리 액세스 효율을 증가시키고 정해진 요청과 연관된 서비스 품질 레이턴시 요건들을 참작하기 위해 동일하거나 상이한 태그 식별들을 갖는 정해진 스레드와 연관되는 저장된 요청들의 서비스 순서에 대한 재배열을 허용하는,
집적 회로. - 제 1 항에 있어서,
클록 도메인 로직이 클록 도메인들을 동기화할 목적을 위해 태그 식별들 및 스레드 식별들에 대한 요청에서 기존의 비트 필드를 이용하여서 클록 도메인 로직이 버스 상호접속 클록 도메인과 메모리 스케줄러 클록 도메인 간의 클록 도메인들을 동기화할 목적을 위해 태그 식별들 및 스레드 식별들에 대한 요청에서 기존의 비트 필드를 이용하도록 비동기식 크로싱 성능(asynchronous crossing capability)을 갖는 커맨드 버퍼 풀
을 더 포함하는,
집적 회로. - 제 1 항에 있어서,
요청들 간의 어드레스 오버랩을 검사하고, 어드레스 오버랩이 존재하는 경우 순서를 강제하기 위한 어드레스 오버랩 검사 회로
를 더 포함하고,
상기 어드레스 오버랩 검사 회로는 스레드의 별개의 태그 식별들의 요청들 간의 서비스 순서(servicing order)를 시행하는,
집적 회로. - 제 1 항에 있어서,
새로운 클리어링(clearing) 기록 요청이 개시기로부터 전송되고 상기 로킹 로직에 의해 수신될 때까지 메모리 어드레스를 로킹하는, 태그 식별 또는 스레드 식별을 위한 판독 요청을 전송하도록 구성되는 어드레스 콘텐츠 로킹 로직; 및
서비스 순서화 제약들이 이들 2개 이상의 상이한 요청 태그 식별들에 걸쳐서 관찰된다는 것을 보장하도록 데이터를 마킹함으로써 일련의 요청들을 순차적으로 수행하도록 구성되는 로직 및 연관된 크로스오버 큐(associated crossover queue)
를 더 포함하고,
상기 크로스오버 큐는 스레드 식별, 태그 식별 및 발행된 요청이 순서화 제약을 갖고 발행되었다는 표시를 저장하는,
집적 회로. - 기계에 의해 실행될 때, 상기 기계로 하여금 제 1 항의 집적 회로에 대한 모델 표현들(model representations)을 생성하게 하는 명령들을 저장하고 전자 설계 자동화 프로세스(Electronic Design Automation process)에서 이용되는 기계-판독 가능한 저장 매체.
- 제 1 항에 있어서,
각각의 사이클에서, 대응하는 내부 FIFO가 레지스터 내의 판독 또는 기록 요청을 갖고 내부 FIFO가 태그 아비터의 승자가 아닌 경우 결핍 카운터가 1만큼 감소되도록 내부 FIFO에 대한 다중 비트 결핍 카운터를 유지하는 것을 더 포함하고,
상기 결핍 카운터 값이 0에 도달하는 경우, 결핍 카운터는 추가로 감소되지 않고, 레지스터 내의 판독 또는 기록 요청이 수행되고, 시스템 요청의 마지막 서브-버스트가 상기 내부 FIFO로부터 스케줄링될 때, 상기 결핍 카운터가 그의 프로그래밍된 값으로 리셋되는,
집적 회로. - 제 1 항에 있어서,
상기 메모리는 DRAM(Dynamic Random Access Memory)을 포함하고, 상기 액세스가 페이지 히트(page hit)인지 여부에 기초하여 메모리 액세스들을 우선순위화하기 위한 알고리즘은 상기 메모리 버스의 현재 메모리 버스 방향 판독 또는 기록 정렬(current memory bus direction read or write alignment) 및 DRAM 메모리 IP 코어의 동일한 메모리 칩이 액세스되고 있는지 여부에 매칭하는,
집적 회로. - 스레드-당 및 태그-당 메모리 액세스 스케줄링(per-thread and per-tag memory access scheduling)을 동시에 수행하는 방법으로서,
제 1 메모리 동작이 제 2 메모리 동작보다 적은 클록 사이클들에서 수행될 수 있는지를 결정하기 위한 효율 알고리즘을 적용하는 단계;
각각의 메모리 동작의 시작과 각각의 메모리 동작의 완료 간의 레이턴시를 결정하기 위한 레이턴시 알고리즘을 적용하는 단계;
전체 메모리 효율 액세스들 및 스레드-당 서비스 품질 레이턴시 요건들에 기초하여 상기 제 1 메모리 동작 및 상기 제 2 메모리 동작의 순서를 최적화하는 단계;
상기 제 1 메모리 동작의 태그 및 스레드 및 상기 제 2 메모리 동작의 태그 및 스레드에 기초하여 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링 기초할 수 있는, 요청된 메모리 동작들이 발행 순서를 벗어나서 수행되도록 하는 최적화에 기초하여 상기 제 1 메모리 동작 및 상기 제 2 메모리 동작의 서비스 순서를 재-순서화하는 단계
를 포함하고,
상기 방법은,
개시기 상에서 명령들을 실행함으로써 수행되어서, 개시기를 포함하는 시스템 내의 태그 및 스레드 로직이 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하여서 상기 태그 및 스레드 로직이 초기 발행 순서에 벗어나서 메모리 액세스들의 태그-당 및 스레드-당 스케줄링을 허용하도록 태그들 및 스레드들을 관리하게 되는,
방법. - 제 15 항에 있어서,
다운스트림 메모리에 의해 서비스될, 스레드 식별 및 태그 식별이 할당된 메모리 동작을 송신하는 단계
를 더 포함하고,
태그 및 스레드 로직 내로 들어가는 상기 메모리 동작들은 먼저 스레드-당 요청들로, 이어서 각각의 스레드 내에서 태그-당 요청들로 분할되어서, 태그 및 스레드 로직은 전체 메모리 효율 액세스를 최적화하기 위해 이들 스레드들 내에서 태그 레벨 병행(tag level parallelism)을 이용할 수 있는,
방법. - 제 16 항에 있어서,
2 계층 레벨 아비터를 이용하는 단계
를 더 포함하고,
제 1 레벨은 스레드 내의 태그들을 중재하고, 제 2 레벨은 다수의 메모리들에 걸쳐서 스레드들 및 태그들을 동시에 관리하도록 스레드들을 중재하고,
상기 아비터들 내의 로직은 메모리 액세스 효율을 증가시키고 정해진 요청과 연관된 서비스 품질 레이턴시 요건들을 참작하기 위해 동일하거나 상이한 태그 ID들을 갖는 정해진 스레드와 연관되는 저장된 요청들의 서비스 순서에 대한 재배열을 허용하는,
방법. - 집적 회로로서,
다수의 개시기 IP 코어들;
하나 이상의 메모리 IP 코어들을 포함하는 다수의 타겟 IP 코어들;
상호접속에 결합된 다수의 개시기 IP 코어들과 다수의 타겟 IP 코어들 간의 트랜잭션들(transactions)을 통신하기 위한 상기 상호접속; 및 개시기 IP 코어에 결합된, 메모리를 포함하는 타겟;
태그 및 스레드 로직
을 포함하고,
상기 태그 및 스레드 로직은 초기 발행 순서에 벗어나서 메모리 액세스들의 태그-당 및 스레드-당 스케줄링을 허용하기 위해 태그들 및 스레드들을 관리하도록 다수의 스레드들에 걸쳐서 그리고 하나의 스레드 내에서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하도록 구성되고,
상기 태그 및 스레드 로직은 메모리 스케줄러 내에, 또는 타겟 에이전트 내에 위치되거나, 또는 이들 둘의 부분에서 발견되고,
다수의 개시기 IP 코어들, 다수의 타겟 IP 코어들, 상호접속, 및 태그 및 스레드 로직은 시스템 온 어 칩(System on a Chip)을 포함하고;
상기 태그 및 스레드 로직은 발행 순서로부터 벗어나서 동일한 스레드 내의 태그-당 요청들의 서비스 순서를 재-순서화하기 위해 전체 메모리 효율 액세스 및 스레드-당 서비스 품질 레이턴시 요건들에 기초하여 결정들을 최적화하도록 효율 및 레이턴시 알고리즘을 적용함으로써 태그들 및 스레드들의 서비스를 동시에 핸들링하고,
상기 태그 및 스레드 로직은 다운스트림 메모리에 의해 서비스될 스레드 식별들 및 태그 식별들이 할당된 요청을 송신하고, 상기 태그 및 스레드 로직 내로 들어오는 요청들은 먼저 스레드-당 요청들로 그리고 이어서 각각의 스레드 내에서 태그 당 요청들로 분할되어서, 상기 태그 및 스레드 로직은 전체 메모리 효율 액세스들을 최적화하기 위해 이들 스레드들 내에서 태그 레벨 병행을 이용할 수 있는,
방법. - 기계에 의해 실행될 때, 상기 기계로 하여금 제 18 항의 집적 회로에 대한 모델 표현들(model representations)을 생성하게 하는 명령들을 저장하고 전자 설계 자동화 프로세스(Electronic Design Automation process)에서 이용되는 기계-판독 가능한 저장 매체.
- 제 18 항에 있어서,
상기 태그 및 스레드 로직은 상기 메모리에 결합된 메모리 스케줄러의 부분으로서 위치되고,
상기 메모리 스케줄러는 태그 기반 메모리 스케줄러 내로 통합되고,
상기 메모리는 DRAM이고, 상기 액세스가 페이지 히트(page hit)인지 여부에 기초하여 메모리 액세스들을 우선순위화하기 위한 알고리즘은 상기 메모리 버스의 현재 메모리 버스 방향 판독 또는 기록 정렬(current memory bus direction read or write alignment) 및 DRAM 메모리 IP 코어의 동일한 메모리 칩이 액세스되고 있는지 여부에 매칭하는,
방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/852,355 US8972995B2 (en) | 2010-08-06 | 2010-08-06 | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
US12/852,355 | 2010-08-06 | ||
PCT/US2011/042513 WO2012018465A1 (en) | 2010-08-06 | 2011-06-30 | Apparatus and methods to concurrently perform per-thread and per-tag memory access |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130101504A true KR20130101504A (ko) | 2013-09-13 |
KR101579897B1 KR101579897B1 (ko) | 2015-12-23 |
Family
ID=45557042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137005676A KR101579897B1 (ko) | 2010-08-06 | 2011-06-30 | 각각의 스레드 및 태그에 대한 메모리 액세스를 동시에 수행하기 위한 장치 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8972995B2 (ko) |
EP (1) | EP2601584A4 (ko) |
KR (1) | KR101579897B1 (ko) |
WO (1) | WO2012018465A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170118288A (ko) * | 2016-04-14 | 2017-10-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20170141468A (ko) * | 2016-06-15 | 2017-12-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
WO2022119620A1 (en) * | 2020-12-04 | 2022-06-09 | Intel Corporation | Network device intermediary for memory access requests |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9588803B2 (en) | 2009-05-11 | 2017-03-07 | Microsoft Technology Licensing, Llc | Executing native-code applications in a browser |
US9323921B2 (en) | 2010-07-13 | 2016-04-26 | Microsoft Technology Licensing, Llc | Ultra-low cost sandboxing for application appliances |
US8972995B2 (en) | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
US8601288B2 (en) * | 2010-08-31 | 2013-12-03 | Sonics, Inc. | Intelligent power controller |
CN102467408B (zh) * | 2010-11-12 | 2014-03-19 | 阿里巴巴集团控股有限公司 | 一种虚拟机数据的访问方法和设备 |
US8903705B2 (en) | 2010-12-17 | 2014-12-02 | Microsoft Corporation | Application compatibility shims for minimal client computers |
US9495183B2 (en) | 2011-05-16 | 2016-11-15 | Microsoft Technology Licensing, Llc | Instruction set emulation for guest operating systems |
US8490107B2 (en) | 2011-08-08 | 2013-07-16 | Arm Limited | Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels |
US8868941B2 (en) | 2011-09-19 | 2014-10-21 | Sonics, Inc. | Apparatus and methods for an interconnect power manager |
GB2495959A (en) | 2011-10-26 | 2013-05-01 | Imagination Tech Ltd | Multi-threaded memory access processor |
US8990490B2 (en) * | 2011-11-29 | 2015-03-24 | Rambus Inc. | Memory controller with reconfigurable hardware |
US9413538B2 (en) | 2011-12-12 | 2016-08-09 | Microsoft Technology Licensing, Llc | Cryptographic certification of secure hosted execution environments |
US9389933B2 (en) * | 2011-12-12 | 2016-07-12 | Microsoft Technology Licensing, Llc | Facilitating system service request interactions for hardware-protected applications |
US8930584B2 (en) * | 2012-08-09 | 2015-01-06 | Oracle International Corporation | System and method for providing a linearizable request manager |
US10642738B1 (en) | 2012-12-19 | 2020-05-05 | Amazon Technologies, Inc. | Distributed caching system |
US9621399B1 (en) | 2012-12-19 | 2017-04-11 | Amazon Technologies, Inc. | Distributed caching system |
US9465620B2 (en) | 2012-12-20 | 2016-10-11 | Intel Corporation | Scalable compute fabric |
US9817771B2 (en) | 2013-08-20 | 2017-11-14 | Synopsys, Inc. | Guarded memory access in a multi-thread safe system level modeling simulation |
GB2519350A (en) * | 2013-10-18 | 2015-04-22 | St Microelectronics Grenoble 2 | Method and apparatus for supporting reprogramming or reconfiguring |
US10338974B2 (en) | 2013-11-06 | 2019-07-02 | Intel Corporation | Virtual retry queue |
GB2522057B (en) | 2014-01-13 | 2021-02-24 | Advanced Risc Mach Ltd | A data processing system and method for handling multiple transactions |
US10152112B2 (en) | 2015-06-10 | 2018-12-11 | Sonics, Inc. | Power manager with a power switch arbitrator |
US9830198B2 (en) * | 2015-12-22 | 2017-11-28 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
CN107526969B (zh) * | 2016-06-20 | 2020-11-03 | 中国科学院微电子研究所 | 一种确定ip核安全级别的方法及装置 |
US10572399B2 (en) | 2016-07-13 | 2020-02-25 | Qualcomm Incorporated | Memory request arbitration |
US10339063B2 (en) * | 2016-07-19 | 2019-07-02 | Advanced Micro Devices, Inc. | Scheduling independent and dependent operations for processing |
JP2020508534A (ja) * | 2017-02-20 | 2020-03-19 | インテンシベイト インコーポレイテッドIntensivate Inc. | スーパースレッドプロセッサ、処理システム、および方法 |
US11231769B2 (en) | 2017-03-06 | 2022-01-25 | Facebook Technologies, Llc | Sequencer-based protocol adapter |
WO2018165111A1 (en) | 2017-03-06 | 2018-09-13 | Sonics, Inc. | An operating point controller for circuit regions in an integrated circuit |
GB2572158B (en) | 2018-03-20 | 2020-11-25 | Advanced Risc Mach Ltd | Random tag setting instruction |
US10678478B2 (en) * | 2018-08-24 | 2020-06-09 | Apple Inc. | Ordering memory requests based on access efficiency |
US11281810B1 (en) * | 2018-12-11 | 2022-03-22 | Xilinx, Inc. | Memory access protection in programmable logic device |
EP3673951B1 (en) | 2018-12-28 | 2022-05-04 | Heraeus Medical Components, LLC | Overmolded segmented electrode |
US11481342B2 (en) * | 2019-06-25 | 2022-10-25 | Seagate Technology Llc | Data storage system data access arbitration |
CN110399219B (zh) * | 2019-07-18 | 2022-05-17 | 深圳云天励飞技术有限公司 | 内存访问方法、dmc及存储介质 |
CN112732628A (zh) * | 2019-10-29 | 2021-04-30 | Oppo广东移动通信有限公司 | 核间数据处理方法、系统、片上系统以及电子设备 |
CN111651864B (zh) * | 2020-05-12 | 2023-03-17 | 北京华如科技股份有限公司 | 一种事件集中发射式多异构时间队列优化仿真执行方法及系统 |
JP2022018798A (ja) * | 2020-07-16 | 2022-01-27 | 富士通株式会社 | 半導体装置 |
CN113419869B (zh) * | 2021-08-25 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种乱序数据的产生方法、装置、设备及存储介质 |
CN114265872B (zh) * | 2022-02-24 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种用于总线的互联装置 |
CN115292054B (zh) * | 2022-10-08 | 2022-12-06 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统级芯片及存储介质 |
CN115328720B (zh) * | 2022-10-13 | 2023-01-17 | 深圳市楠菲微电子有限公司 | SoC验证方法、装置、设备及存储介质 |
CN115827252B (zh) * | 2023-01-10 | 2023-05-05 | 南京砺算科技有限公司 | 顶点数据处理方法、图形处理器、电子设备及存储介质 |
CN116090382B (zh) * | 2023-03-28 | 2023-06-23 | 深圳鸿芯微纳技术有限公司 | 时序报告生成方法和设备 |
CN116028141B (zh) * | 2023-03-30 | 2023-07-04 | 菲特(天津)检测技术有限公司 | 标签数据的处理方法、系统及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090130243A (ko) * | 2007-04-11 | 2009-12-21 | 콸콤 인코포레이티드 | 멀티-스레디드 프로세서를 위한 인터 스레드 트레이스 할당 방법 및 시스템 |
Family Cites Families (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0553338B1 (en) | 1991-08-16 | 1999-10-13 | Cypress Semiconductor Corp. | High-performance dynamic memory system |
US5708659A (en) | 1993-10-20 | 1998-01-13 | Lsi Logic Corporation | Method for hashing in a packet network switching system |
US6088788A (en) | 1996-12-27 | 2000-07-11 | International Business Machines Corporation | Background completion of instruction and associated fetch request in a multithread processor |
US5835741A (en) | 1996-12-31 | 1998-11-10 | Compaq Computer Corporation | Bus-to-bus bridge in computer system, with fast burst memory range |
US6092115A (en) | 1997-02-07 | 2000-07-18 | Lucent Technologies Inc. | Method for supporting per-connection queuing for feedback-controlled traffic |
US5948089A (en) | 1997-09-05 | 1999-09-07 | Sonics, Inc. | Fully-pipelined fixed-latency communications system with a real time dynamic bandwidth allocation |
US6097212A (en) | 1997-10-09 | 2000-08-01 | Lattice Semiconductor Corporation | Variable grain architecture for FPGA integrated circuits |
US6292705B1 (en) | 1998-09-29 | 2001-09-18 | Conexant Systems, Inc. | Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system |
US6286083B1 (en) | 1998-07-08 | 2001-09-04 | Compaq Computer Corporation | Computer system with adaptive memory arbitration scheme |
JP3224782B2 (ja) | 1998-08-03 | 2001-11-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 処理分担動的変更方法及びコンピュータ |
US6182183B1 (en) | 1998-11-13 | 2001-01-30 | Sonics, Inc. | Communications system and method with multilevel connection identification |
US5999435A (en) | 1999-01-15 | 1999-12-07 | Fast-Chip, Inc. | Content addressable memory device |
US6393500B1 (en) | 1999-08-12 | 2002-05-21 | Mips Technologies, Inc. | Burst-configurable data bus |
US6760337B1 (en) | 1999-08-17 | 2004-07-06 | Conexant Systems, Inc. | Integrated circuit that processes communication packets with scheduler circuitry having multiple priority levels |
US6487621B1 (en) | 1999-08-17 | 2002-11-26 | Compaq Information Technologies Group, L.P. | Architecture, system and method for ensuring an ordered transaction on at least one of a plurality of multi-processor buses that experience a hit-to-modified snoop cycle |
US6606317B1 (en) | 1999-09-09 | 2003-08-12 | Harris Corporation | Dual key controlled content addressable memory for accessing packet switch data buffer for multicasting data packets |
US6526462B1 (en) | 1999-11-19 | 2003-02-25 | Hammam Elabd | Programmable multi-tasking memory management system |
US6330225B1 (en) | 2000-05-26 | 2001-12-11 | Sonics, Inc. | Communication system and method for different quality of service guarantees for different data flows |
US6331961B1 (en) | 2000-06-09 | 2001-12-18 | Silicon Access Networks, Inc. | DRAM based refresh-free ternary CAM |
US6654860B1 (en) * | 2000-07-27 | 2003-11-25 | Advanced Micro Devices, Inc. | Method and apparatus for removing speculative memory accesses from a memory access queue for issuance to memory or discarding |
US7325221B1 (en) | 2000-08-08 | 2008-01-29 | Sonics, Incorporated | Logic system with configurable interface |
US6810470B1 (en) | 2000-08-14 | 2004-10-26 | Ati Technologies, Inc. | Memory request interlock |
US6820165B2 (en) | 2000-08-31 | 2004-11-16 | Hewlett-Packard Development Company, L.P. | System and method for increasing the count of outstanding split transactions |
US6874039B2 (en) | 2000-09-08 | 2005-03-29 | Intel Corporation | Method and apparatus for distributed direct memory access for systems on chip |
US6804815B1 (en) | 2000-09-18 | 2004-10-12 | Cisco Technology, Inc. | Sequence control mechanism for enabling out of order context processing |
US6625685B1 (en) | 2000-09-20 | 2003-09-23 | Broadcom Corporation | Memory controller with programmable configuration |
US6601145B2 (en) | 2000-12-27 | 2003-07-29 | International Business Machines Corporation | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls |
US7165094B2 (en) | 2001-03-09 | 2007-01-16 | Sonics, Inc. | Communications system and method with non-blocking shared interface |
US6662251B2 (en) | 2001-03-26 | 2003-12-09 | International Business Machines Corporation | Selective targeting of transactions to devices on a shared bus |
US6785753B2 (en) | 2001-06-01 | 2004-08-31 | Sonics, Inc. | Method and apparatus for response modes in pipelined environment |
US20030004699A1 (en) | 2001-06-04 | 2003-01-02 | Choi Charles Y. | Method and apparatus for evaluating an integrated circuit model |
US20030005396A1 (en) * | 2001-06-16 | 2003-01-02 | Chen Michael Y. | Phase and generator based SOC design and/or verification |
US20040010652A1 (en) | 2001-06-26 | 2004-01-15 | Palmchip Corporation | System-on-chip (SOC) architecture with arbitrary pipeline depth |
US6988186B2 (en) | 2001-06-28 | 2006-01-17 | International Business Machines Corporation | Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry |
US20030023794A1 (en) | 2001-07-26 | 2003-01-30 | Venkitakrishnan Padmanabha I. | Cache coherent split transaction memory bus architecture and protocol for a multi processor chip device |
US6578117B2 (en) | 2001-10-12 | 2003-06-10 | Sonics, Inc. | Method and apparatus for scheduling requests using ordered stages of scheduling criteria |
US6804738B2 (en) | 2001-10-12 | 2004-10-12 | Sonics, Inc. | Method and apparatus for scheduling a resource to meet quality-of-service restrictions |
US6961834B2 (en) | 2001-10-12 | 2005-11-01 | Sonics, Inc. | Method and apparatus for scheduling of requests to dynamic random access memory device |
US7194561B2 (en) | 2001-10-12 | 2007-03-20 | Sonics, Inc. | Method and apparatus for scheduling requests to a resource using a configurable threshold |
US20030088721A1 (en) | 2001-11-05 | 2003-05-08 | Sharma Debendra Das | Method and system for controlling flow of ordered, pipelined transactions between intercommunicating electronic devices |
US6597629B1 (en) | 2001-11-30 | 2003-07-22 | Virage Locic Corp. | Built-in precision shutdown apparatus for effectuating self-referenced access timing scheme |
CA2366397A1 (en) * | 2001-12-31 | 2003-06-30 | Tropic Networks Inc. | An interface for data transfer between integrated circuits |
US6779089B2 (en) | 2002-01-09 | 2004-08-17 | Intel Corporation | Locked content addressable memory for efficient access |
US6779084B2 (en) | 2002-01-23 | 2004-08-17 | Intel Corporation | Enqueue operations for multi-buffer packets |
US6683474B2 (en) | 2002-01-29 | 2004-01-27 | Sonic, Inc. | Method and apparatus for communication using a distributed multiplexed bus |
US7254603B2 (en) | 2002-05-03 | 2007-08-07 | Sonics, Inc. | On-chip inter-network performance optimization using configurable performance parameters |
US7035958B2 (en) | 2002-10-03 | 2006-04-25 | International Business Machines Corporation | Re-ordering a first request within a FIFO request queue to a different queue position when the first request receives a retry response from the target |
US7120765B2 (en) | 2002-10-30 | 2006-10-10 | Intel Corporation | Memory transaction ordering |
US6976106B2 (en) | 2002-11-01 | 2005-12-13 | Sonics, Inc. | Method and apparatus for speculative response arbitration to improve system latency |
AU2003280051A1 (en) | 2002-11-20 | 2004-06-15 | Koninklijke Philips Electronics N.V. | Sdram address mapping optimized for two-dimensional access |
US7003628B1 (en) | 2002-12-27 | 2006-02-21 | Unisys Corporation | Buffered transfer of data blocks between memory and processors independent of the order of allocation of locations in the buffer |
US6931497B2 (en) * | 2003-01-09 | 2005-08-16 | Emulex Design & Manufacturing Corporation | Shared memory management utilizing a free list of buffer indices |
US7149829B2 (en) | 2003-04-18 | 2006-12-12 | Sonics, Inc. | Various methods and apparatuses for arbitration among blocks of functionality |
US20040210696A1 (en) | 2003-04-18 | 2004-10-21 | Meyer Michael J. | Method and apparatus for round robin resource arbitration |
FR2857114B1 (fr) | 2003-07-04 | 2005-09-30 | Arteris | Systeme et procede de communication entre des modules |
FR2858895B1 (fr) | 2003-08-13 | 2006-05-05 | Arteris | Procede et dispositif de gestion de priorite lors de la transmission d'un message |
US8407433B2 (en) * | 2007-06-25 | 2013-03-26 | Sonics, Inc. | Interconnect implementing internal controls |
US7181556B2 (en) * | 2003-12-23 | 2007-02-20 | Arm Limited | Transaction request servicing mechanism |
FR2865334B1 (fr) | 2004-01-21 | 2006-03-03 | Arteris | Procede et systeme de transmission de messages dans un reseau d'interconnexions. |
FR2867338B1 (fr) | 2004-03-02 | 2007-08-10 | Arteris | Procede et dispositif de commutation entre des agents |
US7543088B2 (en) | 2004-03-11 | 2009-06-02 | Sonics, Inc. | Various methods and apparatuses for width and burst conversion |
KR20060123632A (ko) | 2004-04-15 | 2006-12-01 | 마쯔시다덴기산교 가부시키가이샤 | 직사각형 영역에 대한 버스트 메모리 액세스 방법 |
US7281083B2 (en) | 2004-06-30 | 2007-10-09 | Intel Corporation | Network processor with content addressable memory (CAM) mask |
DE602004019990D1 (de) | 2004-08-30 | 2009-04-23 | Magima Digital Information Co | Verfahren und system zum datentransfer |
US7116131B1 (en) | 2004-09-15 | 2006-10-03 | Xilinx, Inc. | High performance programmable logic devices utilizing dynamic circuitry |
TWI254856B (en) | 2004-10-29 | 2006-05-11 | Via Tech Inc | Memory interleave method |
US7155554B2 (en) | 2004-11-02 | 2006-12-26 | Sonics, Inc. | Methods and apparatuses for generating a single request for block transactions over a communication fabric |
US20060195663A1 (en) | 2005-02-25 | 2006-08-31 | International Business Machines Corporation | Virtualized I/O adapter for a multi-processor data processing system |
JP4820566B2 (ja) | 2005-03-25 | 2011-11-24 | パナソニック株式会社 | メモリアクセス制御回路 |
JP4314528B2 (ja) | 2005-03-29 | 2009-08-19 | 日本電気株式会社 | マルチプロセッサシステムおよびメモリアクセス方法 |
US7461190B2 (en) | 2005-08-11 | 2008-12-02 | P.A. Semi, Inc. | Non-blocking address switch with shallow per agent queues |
US7457905B2 (en) * | 2005-08-29 | 2008-11-25 | Lsi Corporation | Method for request transaction ordering in OCP bus to AXI bus bridge design |
US7616036B1 (en) | 2005-09-12 | 2009-11-10 | Virage Logic Corporation | Programmable strobe and clock generator |
GB0519981D0 (en) * | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
US7324922B2 (en) | 2005-10-26 | 2008-01-29 | International Business Machines Corporation | Run-time performance verification system |
FR2893471B1 (fr) | 2005-11-16 | 2008-01-25 | Arteris Sa | Systeme et procede de routage statique de flux de paquets de donnees dans un reseau d'interconnexion |
US20070124728A1 (en) | 2005-11-28 | 2007-05-31 | Mark Rosenbluth | Passing work between threads |
US20070162268A1 (en) | 2006-01-12 | 2007-07-12 | Bhaskar Kota | Algorithmic electronic system level design platform |
US8516418B2 (en) | 2006-06-30 | 2013-08-20 | Oracle America, Inc. | Application of a relational database in integrated circuit design |
FR2904445B1 (fr) | 2006-07-26 | 2008-10-10 | Arteris Sa | Systeme de gestion de messages transmis dans un reseau d'interconnexions sur puce |
JP2008033722A (ja) | 2006-07-31 | 2008-02-14 | Matsushita Electric Ind Co Ltd | エンディアン変換回路を備えたデータ転送制御装置 |
US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
US8032734B2 (en) * | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
US9946547B2 (en) * | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US20080086577A1 (en) | 2006-10-04 | 2008-04-10 | Mediatek Inc. | Digital Television System, Memory Controller, and Method for Data Access |
GB2443277B (en) * | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
US20080235421A1 (en) | 2007-03-22 | 2008-09-25 | Siva Shankar Jayaratnam | Technique and apparatus to optimize inter-port memory transaction sequencing on a multi-ported memory controller unit |
JP5121291B2 (ja) | 2007-04-20 | 2013-01-16 | 株式会社ニューフレアテクノロジー | データ転送システム |
US7975109B2 (en) * | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US7814243B2 (en) * | 2007-06-01 | 2010-10-12 | Sonics, Inc. | Shared storage for multi-threaded ordered queues in an interconnect |
US8108648B2 (en) | 2007-06-25 | 2012-01-31 | Sonics, Inc. | Various methods and apparatus for address tiling |
US8438320B2 (en) * | 2007-06-25 | 2013-05-07 | Sonics, Inc. | Various methods and apparatus for address tiling and channel interleaving throughout the integrated system |
US9588810B2 (en) * | 2007-08-08 | 2017-03-07 | Microsoft Technology Licensing, Llc | Parallelism-aware memory request scheduling in shared memory controllers |
US8245232B2 (en) * | 2007-11-27 | 2012-08-14 | Microsoft Corporation | Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems |
TWI385529B (zh) * | 2008-07-22 | 2013-02-11 | Realtek Semiconductor Corp | 匯流排系統以及其操作方法 |
US8032329B2 (en) * | 2008-09-04 | 2011-10-04 | Sonics, Inc. | Method and system to monitor, debug, and analyze performance of an electronic design |
US8370552B2 (en) * | 2008-10-14 | 2013-02-05 | Nvidia Corporation | Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions |
US8429386B2 (en) * | 2009-06-30 | 2013-04-23 | Oracle America, Inc. | Dynamic tag allocation in a multithreaded out-of-order processor |
US20110213949A1 (en) | 2010-03-01 | 2011-09-01 | Sonics, Inc. | Methods and apparatus for optimizing concurrency in multiple core systems |
US8972995B2 (en) | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
-
2010
- 2010-08-06 US US12/852,355 patent/US8972995B2/en active Active
-
2011
- 2011-06-30 KR KR1020137005676A patent/KR101579897B1/ko active IP Right Grant
- 2011-06-30 WO PCT/US2011/042513 patent/WO2012018465A1/en active Application Filing
- 2011-06-30 EP EP11814964.0A patent/EP2601584A4/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090130243A (ko) * | 2007-04-11 | 2009-12-21 | 콸콤 인코포레이티드 | 멀티-스레디드 프로세서를 위한 인터 스레드 트레이스 할당 방법 및 시스템 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170118288A (ko) * | 2016-04-14 | 2017-10-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20170141468A (ko) * | 2016-06-15 | 2017-12-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
WO2022119620A1 (en) * | 2020-12-04 | 2022-06-09 | Intel Corporation | Network device intermediary for memory access requests |
Also Published As
Publication number | Publication date |
---|---|
EP2601584A4 (en) | 2016-11-16 |
KR101579897B1 (ko) | 2015-12-23 |
EP2601584A1 (en) | 2013-06-12 |
WO2012018465A1 (en) | 2012-02-09 |
US20120036509A1 (en) | 2012-02-09 |
US8972995B2 (en) | 2015-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101579897B1 (ko) | 각각의 스레드 및 태그에 대한 메모리 액세스를 동시에 수행하기 위한 장치 및 방법 | |
KR101467932B1 (ko) | 상호접속부에서 멀티-쓰레드 오더링된 큐들에 대한 공유 저장기 | |
US8484397B1 (en) | Various methods and apparatus for a memory scheduler with an arbiter | |
US10664421B1 (en) | Reordering responses in a high performance on-chip network | |
US10062422B2 (en) | Various methods and apparatus for configurable mapping of address regions onto one or more aggregate targets | |
US8438306B2 (en) | Apparatus and methods for on layer concurrency in an integrated circuit | |
US20110213949A1 (en) | Methods and apparatus for optimizing concurrency in multiple core systems | |
US8438320B2 (en) | Various methods and apparatus for address tiling and channel interleaving throughout the integrated system | |
US8108648B2 (en) | Various methods and apparatus for address tiling | |
KR20200091339A (ko) | 최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식 | |
US8504992B2 (en) | Method and apparatus for establishing a quality of service model | |
Anjaiah et al. | Advanced On-Chip Bus Design with Open Core Protocol Interface | |
Chin | Reusable OpenCL FPGA Infrastructure |
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 | ||
FPAY | Annual fee payment |
Payment date: 20181115 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191202 Year of fee payment: 5 |