KR20130101504A - 스레드-당 및 태그-당 메모리 액세스를 동시에 수행하기 위한 장치 및 방법 - Google Patents

스레드-당 및 태그-당 메모리 액세스를 동시에 수행하기 위한 장치 및 방법 Download PDF

Info

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
Application number
KR1020137005676A
Other languages
English (en)
Other versions
KR101579897B1 (ko
Inventor
크리쉬난 스리니바산
루벤 카자크얀
하루트윤 아스란얀
드류 이. 윙가드
치엔-춘 초우
Original Assignee
쏘닉스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 쏘닉스, 인크. filed Critical 쏘닉스, 인크.
Publication of KR20130101504A publication Critical patent/KR20130101504A/ko
Application granted granted Critical
Publication of KR101579897B1 publication Critical patent/KR101579897B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0879Burst mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode

Abstract

집적 회로가 개시기 지적 재산권(IP) 코어, 타겟 IP 코어, 상호접속 및 태그 및 스레드 로직을 포함하는 방법, 장치 및 시스템이 개시된다. 타겟 IP 코어는 개시기 IP 코어에 결합된 메모리를 포함할 수 있다. 부가적으로, 상호접속은 상호접속에 결합된 하나 이상의 개시기 지적 재산권(IP) 코어들 과 하나 이상의 타겟 IP 코어들 간의 트랜잭션을 집적 회로가 통신하도록 허용할 수 있다. 태그 및 스레드 로직은 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하도록 구성될 수 있어서, 태그 및 스레드 로직은 개시기 IP 코어로부터의 메모리 액세스 요청들의 초기 발행 순서로부터의 순서에서 벗어나서 개시기 IP 코어로부터의 메모리 액세스 요청들의 태그-당 및 스레드-당 스케줄링을 허용하도록 태그들 및 스레드들을 관리한다.

Description

스레드-당 및 태그-당 메모리 액세스를 동시에 수행하기 위한 장치 및 방법{APPARATUS AND METHODS TO CONCURRENTLY PERFORM PER-THREAD AND PER-TAG MEMORY ACCESS}
저작권 알림
[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은 시스템 온 어 칩과 같은 디바이스를 생성하기 위한 프로세스의 예의 실시예의 흐름도를 예시하는 도면.
[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)

  1. 집적 회로에 있어서,
    개시기 지적 재산권(Intellectual Property; IP) 코어;
    메모리를 포함하고, 상기 개시기 IP 코어에 결합된 타겟 IP 코어;
    상호접속에 결합된 하나 이상의 개시기 지적 재산권(IP) 코어들과 하나 이상의 타겟 IP 코어들 간의 트랜잭션(translaction)들을 통신하기 위한 집적 회로를 위한 상호접속; 및
    태그 및 스레드 로직이 상기 개시기 IP 코어로부터의 메모리 액세스 요청들의 초기 발행 순서로부터 무작위로(out of order) 상기 개시기 IP 코어로부터의 메모리 액세스 요청들의 태그-당 및 스레드-당 스케줄링을 허용하기 위해 태그들 및 스레드들을 관리하도록 하나의 스레드 내에 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링(per-thread and per-tag memory access scheduling)을 동시에 수행하도록 구성된 상기 태그 및 스레드 로직
    을 포함하는,
    집적 회로.
  2. 제 1 항에 있어서,
    상기 태그 및 스레드 로직은,
    발행 순서로부터의 순서에 벗어나게 되는 상기 개시기 IP 코어로부터의 메모리 액세스 요청들의 서비스 및 동일한 스레드 내의 태그-당 요청들의 서비스 순서를 재-순서화하기 위해 전체 메모리 효율 액세스 및 스레드-당 서비스 품질 레이턴시 요건들에 기초하여 결정들을 최적화하도록 효율 및 레이턴시 알고리즘을 적용함으로써 태그들 및 스레드들의 서비스를 동시에 핸들링하는,
    집적 회로.
  3. 제 1 항에 있어서,
    상기 태그 및 스레드 로직은,
    다운스트림 메모리에 의해 서비스되는 스레드 식별들 및 태그 식별들이 할당된 요청들을 송신하고,
    상기 태그 및 스레드 로직 내로 라우팅되는 요청들은 먼저 스레드-당 요청들로, 이어서 각각의 스레드 내에서 태그-당 요청들로 분할되어서 상기 태그 및 스레드 로직은 전체 메모리 효율 액세스들을 최적화하기 위해 이들 스레드들 내에서 태그 레벨 병행(tag level parallelism)을 이용할 수 있는,
    집적 회로.
  4. 제 1 항에 있어서,
    상기 태그 및 스레드 로직은 상기 메모리에 결합된 메모리 스케줄러의 부분으로서 위치되고,
    상기 메모리 스케줄러는 요청의 서비스 동안 상기 상호접속의 이용을 차단하지 않도록 다중 포팅된(multiple-ported) 인터페이스를 이용하는 AXI 프로토콜 기반 상호접속들과 함께 동작하는 태그 기반 메모리 스케줄러는 물론, OCP 프로토콜 기반 상호접속들과 함께 추가로 동작하는 1) 태그 기반 2) 스레드 기반 또는 3) 태그 및 스레드의 조합 기반 메모리 스케줄러 내로 통합되어 상기 인터페이스에서 요청의 서비스 동안 상기 상호접속의 이용을 차단 또는 비-차단하는 양(both) 옵션들을 허용하고,
    상기 메모리 스케줄러는 상기 인터페이스를 통해 상기 상호접속에 결합되는,
    집적 회로.
  5. 제 1 항에 있어서,
    상기 태그 및 스레드 로직은,
    타겟 에이전트(target agent)에 위치되고,
    상기 타겟 에이전트는 또한 내부 FIFO들의 세트를 포함하고, 상기 타겟 에이전트는 또한 상기 내부 FIFO들 각각에 요청들을 할당하기 위한 제어기를 포함하고,
    상기 타겟 IP 코어는 상기 타겟 에이전트를 통해 그리고 버스 상호접속을 통해 상기 개시기 IP 코어에 결합되는,
    집적 회로.
  6. 제 1 항에 있어서,
    상기 태그 및 스레드 로직은,
    타겟 에이전트 및 상기 메모리에 결합된 메모리 스케줄러의 일부 둘 다를 포함하고,
    상기 메모리 스케줄러는 별개의 스레드 식별들 상에서 QoS 레이턴시 민감성 트래픽을 송신할 수 있는,
    집적 회로.
  7. 제 1 항에 있어서,
    순차적 할당(in-order allocation) 또는 무작위 할당-해제(out-of order de-allocation)를 위해 구성된 커맨드 버퍼 풀(command buffer pool)
    을 더 포함하고,
    상기 커맨드 버퍼 풀은 동일한 사이클에서 다수의 디-큐들(de-queues)을 위해 구성되고,
    상기 커맨드 버퍼 풀은 병행(parallelism)을 핸들링하기 위해 동적으로 할당 가능한 저장 버퍼들인 내부 FIFO 버퍼들의 세트, 및 상기 내부 FIFO들 각각에 요청들을 할당하기 위한 로직을 갖고,
    상기 집적 회로는,
    시간 기간 동안 정해진 태그 식별을 갖는 요청에 의해 이용될 내부 FIFO 버퍼의 할당을 로킹하는 로직을 더 포함하여서, 동적으로 할당 가능한 버퍼들은, 스레드의 특정한 태그에 할당되지만, 집적 회로의 동작 동안 시간에 걸쳐 있을 때 단일 스레드로 상기 로직에 의해 로킹되고,
    상기 로직은 정해진 스레드를 구성하는 태그 ID들의 세트 간에 정해진 버퍼를 할당하는,
    집적 회로.
  8. 제 1 항에 있어서,
    상기 태그 및 스레드 로직은 2 계층 레벨 아비터를 포함하며, 제 1 레벨은 하나의 스레드 내의 태그들을 중재(arbitrate)하고, 제 2 레벨은 다수의 메모리들에 걸쳐서 스레드들 및 태그들을 동시에 관리하도록 스레드들을 중재하고,
    상기 아비터들에 대한 태그 및 스레드 로직은 메모리 액세스 효율을 증가시키고 정해진 요청과 연관된 서비스 품질 레이턴시 요건들을 참작하기 위해 동일하거나 상이한 태그 식별들을 갖는 정해진 스레드와 연관되는 저장된 요청들의 서비스 순서에 대한 재배열을 허용하는,
    집적 회로.
  9. 제 1 항에 있어서,
    클록 도메인 로직이 클록 도메인들을 동기화할 목적을 위해 태그 식별들 및 스레드 식별들에 대한 요청에서 기존의 비트 필드를 이용하여서 클록 도메인 로직이 버스 상호접속 클록 도메인과 메모리 스케줄러 클록 도메인 간의 클록 도메인들을 동기화할 목적을 위해 태그 식별들 및 스레드 식별들에 대한 요청에서 기존의 비트 필드를 이용하도록 비동기식 크로싱 성능(asynchronous crossing capability)을 갖는 커맨드 버퍼 풀
    을 더 포함하는,
    집적 회로.
  10. 제 1 항에 있어서,
    요청들 간의 어드레스 오버랩을 검사하고, 어드레스 오버랩이 존재하는 경우 순서를 강제하기 위한 어드레스 오버랩 검사 회로
    를 더 포함하고,
    상기 어드레스 오버랩 검사 회로는 스레드의 별개의 태그 식별들의 요청들 간의 서비스 순서(servicing order)를 시행하는,
    집적 회로.
  11. 제 1 항에 있어서,
    새로운 클리어링(clearing) 기록 요청이 개시기로부터 전송되고 상기 로킹 로직에 의해 수신될 때까지 메모리 어드레스를 로킹하는, 태그 식별 또는 스레드 식별을 위한 판독 요청을 전송하도록 구성되는 어드레스 콘텐츠 로킹 로직; 및
    서비스 순서화 제약들이 이들 2개 이상의 상이한 요청 태그 식별들에 걸쳐서 관찰된다는 것을 보장하도록 데이터를 마킹함으로써 일련의 요청들을 순차적으로 수행하도록 구성되는 로직 및 연관된 크로스오버 큐(associated crossover queue)
    를 더 포함하고,
    상기 크로스오버 큐는 스레드 식별, 태그 식별 및 발행된 요청이 순서화 제약을 갖고 발행되었다는 표시를 저장하는,
    집적 회로.
  12. 기계에 의해 실행될 때, 상기 기계로 하여금 제 1 항의 집적 회로에 대한 모델 표현들(model representations)을 생성하게 하는 명령들을 저장하고 전자 설계 자동화 프로세스(Electronic Design Automation process)에서 이용되는 기계-판독 가능한 저장 매체.
  13. 제 1 항에 있어서,
    각각의 사이클에서, 대응하는 내부 FIFO가 레지스터 내의 판독 또는 기록 요청을 갖고 내부 FIFO가 태그 아비터의 승자가 아닌 경우 결핍 카운터가 1만큼 감소되도록 내부 FIFO에 대한 다중 비트 결핍 카운터를 유지하는 것을 더 포함하고,
    상기 결핍 카운터 값이 0에 도달하는 경우, 결핍 카운터는 추가로 감소되지 않고, 레지스터 내의 판독 또는 기록 요청이 수행되고, 시스템 요청의 마지막 서브-버스트가 상기 내부 FIFO로부터 스케줄링될 때, 상기 결핍 카운터가 그의 프로그래밍된 값으로 리셋되는,
    집적 회로.
  14. 제 1 항에 있어서,
    상기 메모리는 DRAM(Dynamic Random Access Memory)을 포함하고, 상기 액세스가 페이지 히트(page hit)인지 여부에 기초하여 메모리 액세스들을 우선순위화하기 위한 알고리즘은 상기 메모리 버스의 현재 메모리 버스 방향 판독 또는 기록 정렬(current memory bus direction read or write alignment) 및 DRAM 메모리 IP 코어의 동일한 메모리 칩이 액세스되고 있는지 여부에 매칭하는,
    집적 회로.
  15. 스레드-당 및 태그-당 메모리 액세스 스케줄링(per-thread and per-tag memory access scheduling)을 동시에 수행하는 방법으로서,
    제 1 메모리 동작이 제 2 메모리 동작보다 적은 클록 사이클들에서 수행될 수 있는지를 결정하기 위한 효율 알고리즘을 적용하는 단계;
    각각의 메모리 동작의 시작과 각각의 메모리 동작의 완료 간의 레이턴시를 결정하기 위한 레이턴시 알고리즘을 적용하는 단계;
    전체 메모리 효율 액세스들 및 스레드-당 서비스 품질 레이턴시 요건들에 기초하여 상기 제 1 메모리 동작 및 상기 제 2 메모리 동작의 순서를 최적화하는 단계;
    상기 제 1 메모리 동작의 태그 및 스레드 및 상기 제 2 메모리 동작의 태그 및 스레드에 기초하여 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링 기초할 수 있는, 요청된 메모리 동작들이 발행 순서를 벗어나서 수행되도록 하는 최적화에 기초하여 상기 제 1 메모리 동작 및 상기 제 2 메모리 동작의 서비스 순서를 재-순서화하는 단계
    를 포함하고,
    상기 방법은,
    개시기 상에서 명령들을 실행함으로써 수행되어서, 개시기를 포함하는 시스템 내의 태그 및 스레드 로직이 하나의 스레드 내에서 그리고 다수의 스레드들에 걸쳐서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하여서 상기 태그 및 스레드 로직이 초기 발행 순서에 벗어나서 메모리 액세스들의 태그-당 및 스레드-당 스케줄링을 허용하도록 태그들 및 스레드들을 관리하게 되는,
    방법.
  16. 제 15 항에 있어서,
    다운스트림 메모리에 의해 서비스될, 스레드 식별 및 태그 식별이 할당된 메모리 동작을 송신하는 단계
    를 더 포함하고,
    태그 및 스레드 로직 내로 들어가는 상기 메모리 동작들은 먼저 스레드-당 요청들로, 이어서 각각의 스레드 내에서 태그-당 요청들로 분할되어서, 태그 및 스레드 로직은 전체 메모리 효율 액세스를 최적화하기 위해 이들 스레드들 내에서 태그 레벨 병행(tag level parallelism)을 이용할 수 있는,
    방법.
  17. 제 16 항에 있어서,
    2 계층 레벨 아비터를 이용하는 단계
    를 더 포함하고,
    제 1 레벨은 스레드 내의 태그들을 중재하고, 제 2 레벨은 다수의 메모리들에 걸쳐서 스레드들 및 태그들을 동시에 관리하도록 스레드들을 중재하고,
    상기 아비터들 내의 로직은 메모리 액세스 효율을 증가시키고 정해진 요청과 연관된 서비스 품질 레이턴시 요건들을 참작하기 위해 동일하거나 상이한 태그 ID들을 갖는 정해진 스레드와 연관되는 저장된 요청들의 서비스 순서에 대한 재배열을 허용하는,
    방법.
  18. 집적 회로로서,
    다수의 개시기 IP 코어들;
    하나 이상의 메모리 IP 코어들을 포함하는 다수의 타겟 IP 코어들;
    상호접속에 결합된 다수의 개시기 IP 코어들과 다수의 타겟 IP 코어들 간의 트랜잭션들(transactions)을 통신하기 위한 상기 상호접속; 및 개시기 IP 코어에 결합된, 메모리를 포함하는 타겟;
    태그 및 스레드 로직
    을 포함하고,
    상기 태그 및 스레드 로직은 초기 발행 순서에 벗어나서 메모리 액세스들의 태그-당 및 스레드-당 스케줄링을 허용하기 위해 태그들 및 스레드들을 관리하도록 다수의 스레드들에 걸쳐서 그리고 하나의 스레드 내에서 스레드-당 및 태그-당 메모리 액세스 스케줄링을 동시에 수행하도록 구성되고,
    상기 태그 및 스레드 로직은 메모리 스케줄러 내에, 또는 타겟 에이전트 내에 위치되거나, 또는 이들 둘의 부분에서 발견되고,
    다수의 개시기 IP 코어들, 다수의 타겟 IP 코어들, 상호접속, 및 태그 및 스레드 로직은 시스템 온 어 칩(System on a Chip)을 포함하고;
    상기 태그 및 스레드 로직은 발행 순서로부터 벗어나서 동일한 스레드 내의 태그-당 요청들의 서비스 순서를 재-순서화하기 위해 전체 메모리 효율 액세스 및 스레드-당 서비스 품질 레이턴시 요건들에 기초하여 결정들을 최적화하도록 효율 및 레이턴시 알고리즘을 적용함으로써 태그들 및 스레드들의 서비스를 동시에 핸들링하고,
    상기 태그 및 스레드 로직은 다운스트림 메모리에 의해 서비스될 스레드 식별들 및 태그 식별들이 할당된 요청을 송신하고, 상기 태그 및 스레드 로직 내로 들어오는 요청들은 먼저 스레드-당 요청들로 그리고 이어서 각각의 스레드 내에서 태그 당 요청들로 분할되어서, 상기 태그 및 스레드 로직은 전체 메모리 효율 액세스들을 최적화하기 위해 이들 스레드들 내에서 태그 레벨 병행을 이용할 수 있는,
    방법.
  19. 기계에 의해 실행될 때, 상기 기계로 하여금 제 18 항의 집적 회로에 대한 모델 표현들(model representations)을 생성하게 하는 명령들을 저장하고 전자 설계 자동화 프로세스(Electronic Design Automation process)에서 이용되는 기계-판독 가능한 저장 매체.
  20. 제 18 항에 있어서,
    상기 태그 및 스레드 로직은 상기 메모리에 결합된 메모리 스케줄러의 부분으로서 위치되고,
    상기 메모리 스케줄러는 태그 기반 메모리 스케줄러 내로 통합되고,
    상기 메모리는 DRAM이고, 상기 액세스가 페이지 히트(page hit)인지 여부에 기초하여 메모리 액세스들을 우선순위화하기 위한 알고리즘은 상기 메모리 버스의 현재 메모리 버스 방향 판독 또는 기록 정렬(current memory bus direction read or write alignment) 및 DRAM 메모리 IP 코어의 동일한 메모리 칩이 액세스되고 있는지 여부에 매칭하는,
    방법.
KR1020137005676A 2010-08-06 2011-06-30 각각의 스레드 및 태그에 대한 메모리 액세스를 동시에 수행하기 위한 장치 및 방법 KR101579897B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090130243A (ko) * 2007-04-11 2009-12-21 콸콤 인코포레이티드 멀티-스레디드 프로세서를 위한 인터 스레드 트레이스 할당 방법 및 시스템

Family Cites Families (100)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090130243A (ko) * 2007-04-11 2009-12-21 콸콤 인코포레이티드 멀티-스레디드 프로세서를 위한 인터 스레드 트레이스 할당 방법 및 시스템

Cited By (3)

* Cited by examiner, † Cited by third party
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