KR102057518B1 - 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법 - Google Patents
메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR102057518B1 KR102057518B1 KR1020180058628A KR20180058628A KR102057518B1 KR 102057518 B1 KR102057518 B1 KR 102057518B1 KR 1020180058628 A KR1020180058628 A KR 1020180058628A KR 20180058628 A KR20180058628 A KR 20180058628A KR 102057518 B1 KR102057518 B1 KR 102057518B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- order
- burst
- processor
- transfers
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 SDRAM 열 블록에 정렬되지 않은 래핑 버스트에 효과적인 메모리 서브 시스템을 제공할 수 있도록 한 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법에 관한 것으로, 명령어 세트 아키텍처를 가지며 캐시 블록으로 구성되는 LLC(Last Level Caches)를 갖는 프로세서;데이터 버스를 사용하는 온칩 인터커넥트를 통해 프로세서와 연결되어 프로세서에서 실행되는 명령에 따라 메모리에 읽기 및 쓰기 동작을 수행하는 메모리 서브 시스템;을 포함하고, 상기 메모리 서브 시스템은 캐시의 래핑 버스트(burst) 처리시에, 프로세서에 의해 주어진 시작 메모리 주소를 수정하여 메모리가 과도 순서로 전송을 생성하도록 하며, 전송은 최소한의 페널티로 랩 어라운드 순서로 재 배열되도록 하고, 그런 다음 전송은 공간의 프로그램 위치에 따라 우선 순위로 전달하는 것이다.
Description
본 발명은 멀티 코어 프로세서에 관한 것으로, 구체적으로 SDRAM 열 블록에 정렬되지 않은 래핑 버스트에 효과적인 메모리 서브 시스템을 제공할 수 있도록 한 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법에 관한 것이다.
최첨단 멀티 코어 프로세서는 다양한 고품질 및 인공 지능 응용 프로그램을 수행하기 때문에 점점 더 복잡한 방식으로 SDRAM(synchronous random access memory)에 액세스한다.
이러한 최신 프로세서는 다양한 응용 프로그램을 실행할 때 점점 더 복잡한 방식으로 SDRAM을 액세스하기 위해 메모리 서브 시스템을 필요로 한다.
반면에 SDRAM은 프로세서에 높은 대역폭을 제공하기 위해 점점 더 높은 클럭 주파수에서 실행되어 유연하지 못한 동작과 타이밍 제한으로 인해 메모리 효율성이 크게 저하되고 있다.
프로세서가 SDRAM 열 블록과 정렬되지 않은 버스트를 요구하는 경우, 특히 메모리 서브 시스템은 훨씬 낮은 성능을 나타낼 수 있다.
그 이유는 SDRAM에서 프로그래밍 된 전송 순서가 버스트 내에서 프로세서가 요구하는 전송 순서와 완전히 다르기 때문이다.
따라서, 메모리 서브 시스템은 프로세서가 요구하는 순서대로 SDRAM 전송을 재 배열하여야 하는데, 전송 재배치 동작은 메모리 대기 시간을 크게 증가 시키므로 전반적인 시스템 성능을 심각하게 저하시키는 문제가 있다.
따라서, 메모리 서브 시스템에서 효과적으로 다양한 응용 프로그램을 지원할 수 있고, 메모리 효율을 높이는 것이 최근 주목을 받고 있다.
LLC(Last Level Cache)에서 캐시 미스가 발생하면 프로세서는 단일 캐시 블록을 대체하기 위해 메모리 서브 시스템으로 다중 워드(multiple words)를 요청한다.
일반적으로 워드를 수신하기 위해 버스트 기반 트랜잭션을 사용한다.
즉, 버스트는 다중 전송(multiple transfers)으로 구성되기 때문에 주어진 주소에서 첫 번째 전송을 시작한 다음 요청 길이(length) 까지 계속된다.
최신 프로세서는 프로그램 카운터(PC)를 메모리 관리 장치를 통해 시작 메모리 주소로 사용하며 캐시의 미스 페널티를 줄이기 위해 랩 어라운드 순서로 전송한다.
반면에 SDRAM은 항상 버스트 길이(BL), 버스트 유형(BT) 및 시작 열 주소 (CA)에 따라 프로그래밍 된 순서로 전송을 한다.
프로그래밍 된 전송 순서는 CA가 SDRAM 열 블록과 정렬되거나 반 정렬되지 않은 경우 프로세서가 요구하는 랩 어라운드 전송 순서와 다르다.
따라서, 정렬되지 않은 랩핑 버스트 내의 전송은 프로세서에 전달되기 전에 메모리 서브 시스템에 의해 재 배열되어야 한다.
그러나 이러한 전송 재배치 작업은 메모리 대기 시간과 효율성에 심각한 영향을 줄 수 있다.
따라서, 재배치 프로세스에 의한 메모리 대기 시간 증가 문제 및 온칩 상호 접속의 대역폭 낭비의 문제를 해결할 수 있도록 하는 새로운 기술의 메모리 서브 시스템의 개발이 요구되고 있다.
본 발명은 이와 같은 종래 기술의 멀티 코어 프로세서 및 메모리 서브 시스템의 문제를 해결하기 위한 것으로, SDRAM 열 블록에 정렬되지 않은 래핑 버스트에 효과적인 메모리 서브 시스템을 제공할 수 있도록 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 프로세서가 제공한 메모리 주소를 수정 한 다음 그 메모리 주소로 SDRAM에 액세스하므로 과도 순서로 SDRAM이 출력을 전송하여 전송 성능 저하를 최소화하면서 프로세서가 요구하는 순서로 쉽게 재 배열될 수 있도록 한 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 긴급 전송은 우선 순위 서비스로 전달되고 비 긴급 전송은 최선형 서비스로 독립적으로 전달 될 수 있도록 하여 시스템 효율성을 높일 수 있도록 한 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
이와 같은 목적을 달성하기 위한 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치는 명령어 세트 아키텍처를 가지며 캐시 블록으로 구성되는 LLC(Last Level Caches)를 갖는 프로세서;온칩 인터커넥트를 통해 프로세서와 연결되어 프로세서에서 실행되는 명령에 따라 메모리에 읽기 및 쓰기 동작을 수행하는 메모리 서브 시스템을 포함하고, 상기 메모리 서브 시스템은 캐시의 래핑 버스트(burst) 처리시에, 프로세서에 의해 주어진 시작 메모리 주소를 수정하여 메모리가 과도 순서로 전송을 생성하도록 하며, 전송은 최소한의 페널티로 랩 어라운드 순서로 재 배열되도록 하고, 그런 다음 전송은 프로그램의 공간적 지역성에 따라 우선 순위로 전달하는 것을 특징으로 한다.
여기서, 긴급 전송은 우선 순위 서비스로 전달되고 비 긴급 전송은 최선형 서비스로 독립적으로 전달 될 수 있도록 하는 것을 특징으로 한다.
그리고 메모리 요청 ri의 정보를 참조 할 때 메모리 서브 시스템은 메모리에 액세스 한 다음 전송(ti,j ∈ WBi)을 프로세서로 전달하는 것을 특징으로 한다.
여기서, WBi는 래핑 버스트를 나타내며 j는 각 전송에 추가되는 순차 번호(sequential number)이다.
그리고 메모리 서브 시스템이 8 바이트 데이터 버스를 통해 메모리에 상호 연결되는 경우에는, 주어진 40 비트 메모리 주소의 서브 3 비트는 바이트 오프셋으로 간주되고, 메모리 주소의 다음 10 서브 비트는 시작 열 주소(CAi)로 사용되는 것을 특징으로 한다.
그리고 메모리는 버스트 길이(BL), 버스트 유형(BT) 및 시작 열 주소 (CA)에 따라 프로그래밍 된 순서로 전송을 하고, 메모리의 BL 및 BT가 각각 8 및 순차 타입(sequential type)으로 설정된 경우에 메모리에 프로그래밍 된 전송 순서는 (O(CAi[2:0],j))이고, 쓰기 전송은 고정된 순서로 메모리에 전달되고, 읽기 전송은 CAi[2:0]에 따라 SDRAM에 의해 가변 순서로 생성되고, 프로세서가 요구하는 랩 어라운드(wrap-around) 순서로 재 배열되는 것을 특징으로 한다.
다른 목적을 달성하기 위한 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법은 명령어 세트 아키텍처를 가지며 캐시 블록으로 구성되는 LLC(Last Level Caches)를 갖는 프로세서 및 데이터 버스를 사용하는 온칩 인터커넥트를 통해 프로세서와 연결되어 프로세서에서 실행되는 명령에 따라 메모리에 읽기 및 쓰기 동작을 수행하는 메모리 서브 시스템을 포함하고, 상기 메모리 서브 시스템이 캐시의 래핑 버스트(burst) 처리시에,프로세서에 의해 주어진 시작 메모리 주소를 수정하여 메모리가 과도 순서로 전송을 생성하도록 하며, 전송은 최소한의 페널티로 랩 어라운드 순서로 재 배열되도록 하고, 그런 다음 전송은 공간의 프로그램 위치에 따라 우선 순위로 전달하는 것을 특징으로 한다.
여기서, 긴급 전송은 우선 순위 서비스로 전달되고 비 긴급 전송은 최선형 서비스로 독립적으로 전달 될 수 있도록 하는 것을 특징으로 한다.
그리고 메모리 요청 ri의 정보를 참조 할 때 메모리 서브 시스템은 메모리에 액세스 한 다음 전송(ti,j ∈ WBi)을 프로세서로 전달하고, 여기서, WBi는 래핑 버스트를 나타내며 j는 각 전송에 추가되는 순차 번호(sequential number)인 것을 특징으로 한다.
그리고 메모리 서브 시스템이 8 바이트 데이터 버스를 통해 메모리에 상호 연결되는 경우에는, 주어진 40 비트 메모리 주소의 서브 3 비트는 바이트 오프셋으로 간주되고, 메모리 주소의 다음 10 서브 비트는 시작 열 주소(CAi)로 사용되는 것을 특징으로 한다.
그리고 메모리는 버스트 길이(BL), 버스트 유형(BT) 및 시작 열 주소 (CA)에 따라 프로그래밍 된 순서로 전송을 하고, 메모리의 BL 및 BT가 각각 8 및 순차 타입(sequential type)으로 설정된 경우에 메모리에 프로그래밍 된 읽기 전송은 CAi[2:0]에 따라 가변 순서로 생성되어 (O(CAi[2:0],j))이고, 쓰기 전송은 고정된 순서로 메모리에 전달되고, 프로세서가 요구하는 랩 어라운드(wrap-around) 순서로 재 배열되는 것을 특징으로 한다.
그리고 메모리 서브 시스템이 프로세서의 메모리 요청을 수신한 후 메모리 액세스를 시작하고, 선택된 단일 행의 활성화를 위해 메모리에 RAS(Row Access Strobe) 명령을 발행하는 단계;CAS(Column Access Strobe) 읽기 명령을 내리는 단계;를 포함하고, CAi를 CA'i에 복사하고, CAi[2:0]이 3'h4보다 작으면 CA'i[2:0]은 3'h0로 재설정되고, 그렇지 않으면 CA'i[2:0]이 수정하지 않는 것을 특징으로 한다.
그리고 메모리 서브 시스템이 프로세서가 요구하는 임의의 랩 어라운드 순서로 전송을 재 배열하기 위하여, CAi[2:0]은 wrap_around_order에 복사되고 j는 0으로 재설정하는 단계;임의의 전송 ti,j ∈ WBi가 메모리 서브 시스템에 전달 될 때마다 전송 순서 (O(CAi[2:0],j))가 참조되고, 그 O(CAi[2:0],j)가 wrap_around_order와 같으면 프로세서로 전달하는 단계;를 포함하고, 버스트 1은 캐시 미스된 워드 및 캐시 미스 워드로부터 증가하는 어드레스 순서로 된 워드를 포함하기 때문에 우선 순위가 주어지고, 그런 다음 wrap_around_order가 BL-1과 같지 않으면 wrap_around_order가 1 씩 증가하고, 그렇지 않으면 wrap_around_order가 0으로 재설정되고 버스트 1이 종료되는 것을 특징으로 한다.
그리고 O(CAi[2:0],j)가 wrap_around_order와 같지 않으면 전송은 버퍼(B)에 저장되고, 전송에는 캐시 누락 워드에서 감소하는 주소 순서로 워드가 곧 사용할 가능성이 낮고, j는 1 씩 증가하고, 이러한 절차를 메모리 요청에 대한 모든 전송이 메모리로부터 수신 될 때까지 반복하는 것을 특징으로 한다.
그리고 버퍼의 전송을 다시 정렬한 다음 전달하기 위하여, 버퍼 내의 모든 전송들 O(CAi[2:0],j)을 wrap_around_order와 비교하는 단계;임의 전송의 O(CAi[2:0],j)가 wrap_around_order와 같으면 전송을 버스트 2에 포함시킨 다음 프로세서로 전달하는 단계;를 포함하고, 버스트 2는 캐시가 미스된 워드에서 감소하는 주소 순서로 워드를 포함하기 때문에 낮은 우선 순위가 부여되고, 그런 다음 wrap_around_order가 1 씩 증가하고, 이 절차를 버퍼에 전송이 더 이상 없을 때까지 반복하는 것을 특징으로 한다.
이와 같은 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법은 다음과 같은 효과를 갖는다.
첫째, SDRAM 열 블록에 정렬되지 않은 래핑 버스트에 효과적인 메모리 서브 시스템을 제공할 수 있다.
둘째, 재배치 프로세스에 의한 메모리 대기 시간 증가 문제 및 온칩 상호 접속의 대역폭 낭비의 문제를 해결할 수 있다.
셋째, 프로세서가 제공 한 메모리 주소를 수정 한 다음 메모리 주소로 SDRAM에 액세스하므로 과도 순서로 SDRAM 출력을 전송하여 전송 성능 저하를 최소화하면서 프로세서가 요구하는 순서로 쉽게 재 배열될 수 있도록 한다.
넷째, 긴급 전송은 우선 순위 서비스로 전달되고 비 긴급 전송은 최선형 서비스로 독립적으로 전달 될 수 있도록 하여 시스템 효율성을 높일 수 있도록 한다.
도 1은 SoC 아키텍처의 일 예를 나타낸 구성도
도 2는 래핑 버스트 처리를 위한 메모리 서브시스템의 일 예를 나타낸 구성도
도 3은 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치에 의한 래핑 버스트 처리 구성도
도 4 및 도 5는 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법에 적용되는 알고리듬
도 2는 래핑 버스트 처리를 위한 메모리 서브시스템의 일 예를 나타낸 구성도
도 3은 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치에 의한 래핑 버스트 처리 구성도
도 4 및 도 5는 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법에 적용되는 알고리듬
이하, 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법의 바람직한 실시 예에 관하여 상세히 설명하면 다음과 같다.
본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법의 특징 및 이점들은 이하에서의 각 실시 예에 대한 상세한 설명을 통해 명백해질 것이다.
도 1은 SoC 아키텍처의 일 예를 나타낸 구성도이다.
본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법은 캐시의 래핑 버스트(burst)에 효과적인 메모리 서브 시스템을 제공하기 위한 것으로, 버스트의 CA(Column Address)는 SDRAM 열 블록과 정렬되지 않는 특징을 갖는다.
본 발명에 따른 메모리 서브 시스템은 프로세서에 의해 주어진 시작 메모리 주소를 수정하여 SDRAM이 과도 순서로 전송을 생성하도록 강제한다.
본 발명은 캐시의 래핑 버스트(burst)에 효과적인 메모리 서브 시스템을 구성하기 위하여, SDRAM이 과도 순서로 전송을 생성하도록하며, 전송은 최소한의 페널티로 랩 어라운드 순서로 재 배열되도록 하고, 그런 다음 전송은 프로그램 공간적 지역성에 따라 우선 순위로 전달하는 구성을 포함할 수 있다.
이와 같은 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법이 적용되는 메모리 서브 시스템은 래핑 버스트로 인한 메모리 성능 손실을 최소화함으로써 프로그램 실행 시간을 향상시킬 수 있도록 한다.
본 발명에 따른 SDRAM 열 블록에 정렬되지 않은 래핑 버스트에 효과적인 메모리 서브 시스템은 프로세서가 제공한 메모리 주소를 수정 한 다음 메모리 주소로 SDRAM에 액세스하므로 과도 순서로 SDRAM이 출력을 전송하여 전송 성능 저하를 최소화하면서 프로세서가 요구하는 순서로 쉽게 재 배열 될 수 있도록 한다.
또한, 긴급 전송은 우선 순위 서비스로 전달되고 비 긴급 전송은 최선형 서비스로 독립적으로 전달 될 수 있도록 한다.
도 1은 SoC 아키텍처의 간단한 예를 나타낸 것이다.
프로세서(40)는 64 비트 명령어 세트 아키텍처를 가지며 LLC(Last Level Caches)는 64 바이트 캐시 블록으로 구성된다.
프로세서(40)는 64 비트 데이터 버스를 사용하는 온칩 인터커넥트(30)를 통해 메모리 서브 시스템(20)과 상호 연결된다.
메모리 서브 시스템(20)은 프로세서(40)가 실행하는 명령에 의해 메모리 즉, DDR SDRAMs에 쓰기 동작/읽기 동작을 수행한다.
프로세서 1(40)이 프로그램 1의 명령을 요구한다고 가정하면, PC는 메모리 관리 장치의 물리적 메모리 주소로 변환되는 64'h8000000000에서 시작한다.
물리적 메모리 주소가 40'h8000000000 인 첫 번째 명령어는 캐시 미스(cache miss)를 발생시킨다.
프로세서 1(40)은 메모리 서브 시스템 1(20)에서 40'h8000000000에서 시작하는 8 워드(eight words)를 랩 어라운드 순서로 요청한다.
랩 어라운드(wrap-around) 순서는 각 전송에 대한 주소가 이전 전송 주소의 증가분이라는 점에서 증가 순서와 유사하다.
그러나 랩 어라운드 순서에서는 랩 바운더리에 도달 할 때 주소가 더 낮은 주소로 랩 어라운드된다.
랩 바운더리는 각 전송의 크기에 버스트의 총 전송 수를 곱한 크기이다.
이러한 랩 어라운드 순서는 캐시 블록을 채우는 데 유용하다.
메모리 대기 구간 후, 캐시 미스된 워드 및 캐시 미스된 워드로부터 증가하는 어드레스 순서의 8 개의 워드는 프로세서 1(40)에 공급되고, 이들은 제 1 캐시 블록의 w0 내지 w7에 저장된다.
그런 다음 프로세서 1(40)은 프로그램 1의 명령 실행을 재개 할 수 있다.
PC가 64'h800000008 인 두 번째 명령은 첫 번째 캐시 블록의 두 번째 워드(도 1의 w1)에 이미 있으므로 캐시에서 히트된다.
명령어는 branch로 디코드되며 분기가 수행된다고 가정한다.
따라서, 다음 수행될 명령어는 64'h800000048에 위치하고 캐시 미스가 발생한다.
프로세서 1(40)은 메모리 서브 시스템 1(20)에 랩 어라운드(wrap around) 순서로 40'h8000000048에서 시작하는 8 워드를 요청한다.
메모리 대기 구간 후, 워드는 프로세서 1(40)에 제공되고, 이들은 두 번째 캐시 블록의 w9에서 wF까지 그리고 w8에 저장된다.
그런 다음 프로세서 1(40)은 프로그램 1의 명령 실행을 재개 할 수 있다.
래핑 버스트 처리를 위한 메모리 서브시스템의 일 예를 설명하면 다음과 같다.
도 2는 래핑 버스트 처리를 위한 메모리 서브시스템의 일 예를 나타낸 구성도이다.
메모리 요청 ri의 정보를 참조 할 때 메모리 서브 시스템은 SDRAM에 액세스 한 다음 전송(ti,j ∈ WBi)을 프로세서로 전달한다.
여기서, WBi는 래핑 버스트를 나타내며 j는 각 전송에 추가되는 순차 번호(sequential number)이다.
예를 들어, SDRAM에 의해 생성 된 첫 번째, 두 번째 및 마지막 전송의 순차 번호는 각각 0, 1 및 BL-1이다.
메모리 서브 시스템 1은 8 바이트 데이터 버스를 통해 SDRAM에 상호 연결되기 때문에 주어진 40 비트 메모리 주소의 서브 3 비트는 바이트 오프셋으로 간주된다.
메모리 주소의 다음 10 서브 비트는 시작 열 주소(CAi)로 사용된다.
표 1은 SDRAM의 BL 및 BT가 각각 8 및 순차 타입(sequential type)으로 설정된 경우에 SDRAM에 프로그래밍 된 전송 순서(O(CAi[2:0],j))를 나타낸다.
쓰기 전송은 고정된 순서로 SDRAM에 전달되어야하지만, CAi[2:0]에 따라 SDRAM에 의해 가변 순서로 읽기 전송이 생성된다.
따라서, 이러한 읽기 전송은 프로세서가 요구하는 랩 어라운드(wrap-around) 순서로 재 배열될 필요가 있다.
주어진 메모리 주소의 나머지는 뱅크(bank), 행(row), 순위(rank) 및 채널 주소(channel addresses)로 사용된다.
종래의 메모리 서브 시스템 1은 프로세서 1에서 두 개의 메모리 요청 r0 및 r1을 수신한 후 주어진 메모리 주소에서 SDRAM 액세스를 시작한다.
먼저, 선택된 단일 행의 활성화를 위해 RAS(Row Access Strobe) 명령이 SDRAM에 실행된다.
RAS-to-CAS 지연 시간(tRCD) 동안 활성화 한 후 CA0로 있는 CAS(Column Access Strobe) 읽기 명령이 SDRAM에 실행된다.
도 2는 CAi[2:0]에 따른 메모리 서브 시스템의 동작을 도시한 것이다.
메모리 요청 r0의 시작 어드레스가 40'h8000000000 인 경우, CA0[2:0]은 3'h0이다.
따라서, SDRAM은 0, 1, 2, 3, 4, 5, 6 및 7 순으로 8 개의 전송을 생성한다.
전송 0, 1, 2, 3, 4, 5, 6, 7 및 8은 40'h8000000000, 40'h8000000008, 40'h8000000010, 40'h8000000018, 40'h8000000020, 40'h8000000028, 40'h8000000030 및, 40'h8000000038에 저장된 8 바이트 워드를 각각 포함한다.
마지막으로, 도 2의 (a)에 도시 된 바와 같이, 전송은 프로세서 (1)에 메모리 서브 시스템에 도달하는 순서로 중단없이 전달 될 수 있다.
이는 SDRAM에 프로그래밍된 전송 순서가 프로세서 1에 필요한 전송 순서와 같기 때문이다.
반대로 SDRAM은 프로세서 1이 요구하는 메모리 요청 r1에 필요한 순서로 전송을 생성하지 않는다.
메모리 요청 r1의 메모리 주소는 40'h8000000048이므로 CA1[2:0]은 3'h1이다.
CAi[2:0]이 3'h0이 아닌 경우, 래핑 버스트는 SDRAM 블록에 정렬되지 않는다.
CA1[2:0]이 3'h1h 인 경우 SDRAM은 표 1에서와 같이 1, 2, 3, 0, 5, 6, 7, 4의 순서로 전송을 생성한다.
전송 1, 2, 3, 0, 5, 6, 7 및 4에는 각각 40'h8000000048, 40'h8000000050, 40'h8000000058, 40'h8000000040, 40'h8000000068, 40'h8000000070, 40'h8000000078 및 40'h8000000060에 저장된 단일 워드가 포함된다.
전송은 프로세서 1으로 전달되기 전에 재배치되는 필요하다.
그 이유는 프로세서 1이 1, 2, 3, 4, 5, 6, 7 및 0 순으로 대기하기 때문이다.
대부분의 명령은 branch 명령어가 수행될 때를 제외하고는 공간적 위치(spatial locality)에 의해 전송 1-7에 포함된 명령어는 바로 실행될 가능성이 높다.
최신 프로세서는 캐시 블록의 모든 워드가 아직 준비되지 않은 경우에도 높은 성능을 위한 명령 실행을 재개한다.
그러나 프로세서 1은 전송 1에서 3까지의 명령을 수행 한 후 다시 중단된다.
그 이유는 도 2의 (b)에서 볼 수 있듯이 4 ~ 7 전송이 4 클럭 사이클 지연되기 때문이다.
따라서, CA1[2:0]이 3'h1 인 경우에는 전송 1 ~ 7의 대기 시간을 줄이는 것이 효과적이다.
온칩 인터커넥트가 다른 버스트를 제공하기 전에 완료되거나 차단될 때까지 모든 대역폭을 단지 한 버스트에 할당하는 승자 독식(winner take all) 대역폭 할당을 채택하면 대역폭이 더 심각하게 낭비 될 수 있다.
이는 소위 버블 전송이 전송 3과 전송 4간에 전달되기 때문이다.
따라서 버스트 내 전송은 중단없이 전달되어야 한다.
도 2의 (c) ~ (h)는 CAi[2:0]이 각각 3'h2 ~ 3'h7 일 때의 메모리 서브 시스템의 동작을 나타낸 것이다.
CAi[2:0]이 3'h4 인 메모리 요청은 도 2의 (e)에서와 같이 성능 저하를 초래하지 않는다.
그러나 CAi[2:0]이 3'h2 또는 3'h3 인 메모리 요청은 도 2의 (b) 및 (c)에 각각 도시된 바와 같이, 프로그램 실행 시간 증가 및 온칩 상호 연결의 대역폭 손실을 초래한다.
또한, CAi[2:0]이 3'h5 ~ 3'h7 인 메모리 요청은 도 2의 (f) ~ (h)에 각각 도시된 바와 같이 온칩 인터커넥트의 대역폭 손실을 가져온다.
이와 같은 문제를 해결하기 위한 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법이 적용되는 메모리 서브 시스템을 구체적으로 설명하면 다음과 같다.
도 3은 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치에 의한 래핑 버스트 처리 구성도이고, 도 4 및 도 5는 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법에 적용되는 알고리듬이다.
캐시 미스가 발생하면 캐시 미스 워드가 프로세서에 신속하게 제공되어야 한다.
또한, 캐시 블록 내의 캐시 미스 워드로부터 어드레스 순서가 증가하는 워드는 곧 액세스될 가능성이 높으며, 캐시 블록 내의 캐시 미스 워드로부터 감소하는 어드레스 순서의 워드는 곧 액세스 될 가능성이 낮다.
그 이유는 branch 명령어가 수행될 때를 제외하고는 프로그램 내의 명령어가 순차적으로 실행되기 때문이다.
그러므로, 캐시 미스 워드뿐만 아니라 캐시 블록 내에 캐시 미스 워드로부터 증가하는 어드레스 순서의 워드를 포함하는 전송이 메모리 대기 시간을 단축시키도록 전달되어야 한다.
반면에 캐시 미스 워드로부터 감소하는 어드레스 순서로 워드를 포함하는 전송은 보다 높은 메모리 처리량을 달성하도록 전달되어야 한다.
이와 같은 본 발명에 따른 메모리 서브 시스템은 최소한의 성능 저하로 프로세서에 랩핑 버스트를 제공한다.
먼저, 메모리 요청을 수신 한 후 메모리 서브 시스템은 SDRAM 액세스를 시작한다.
메모리 서브 시스템은 선택된 단일 행의 활성화를 위해 SDRAM에 RAS 명령을 발행한다.
tRCD 이후에, CAS 읽기 명령을 내린다.
그러나, 제안된 메모리 서브 시스템은 주어진 CAi를 사용하지 않는다.
도 4의 알고리즘 1은 주어진 CAi가 어떻게 수정되는지 보여준다.
먼저 CAi는 CA'i에 복사된다.
CAi[2:0]이 3'h4보다 작으면 CA'i[2:0]은 3'h0로 재설정되고, 그렇지 않으면 CA'i[2:0]이 수정되지 않는다.
본 발명에 따른 메모리 서브 시스템은 도 3에서와 같이 CA'i를 SDRAM으로 보낸다.
따라서, CAi[2:0]이 3'h4보다 작으면, 메모리 서브 시스템은 0, 1, 2, 3,4, 5, 6, 및 7의 순서로 SDRAM으로부터 전송을 수신 할 것이다.
그렇지 않으면 SDRAM에 프로그래밍 된 변수 순서로 전송을 수신한다.
도 3은 CAi[2:0]에 따른 메모리 서브 시스템의 동작을 보여준다.
CAi[2:0]이 3'h4보다 작은 경우, SDRAMs 출력은 도 3의 (a) ~ (d)에서와 같이 0에서 7까지 증가하는 순서로 전송된다.
예를 들어, 메모리 요청 r1의 메모리 주소가 40'h8000000048이면 CA1[2:0]은 3'h1이다.
본 발명에 따른 메모리 서브 시스템은 알고리즘 1을 통해 CA1[2:0]을 3'h0으로 재설정하기 때문에, SDRAM은 도 3의 (b)에 도시된 바와 같이 0, 1, 2, 3, 4, 5, 6 및 7의 순서로 전송을 생성한다.
이러한 과도 순서는 프로세서(1)에 의해 요구되는 대로 1, 2, 3, 4, 5, 6, 7 및 0 순서로 재배열 될 수 있으며, 성능상의 불이익 및 설계 비용을 최소화 할 수있다.
도 5의 알고리즘 2는 본 발명에 따른 메모리 서브 시스템이 프로세서가 요구하는 임의의 랩 어라운드 순서로 전송을 재 배열하는 방법을 나타낸 것이다.
먼저, CAi[2:0]은 wrap_around_order에 복사되고 j는 0으로 재설정된다.
임의의 전송 ti,j ∈ WBi가 메모리 서브 시스템에 전달 될 때마다 표 1의 전송 순서 (O(CAi[2:0],j))가 참조된다.
그런 다음, 전송은 버스트 1에 포함될 수 있고 그 O(CAi[2:0],j)가 wrap_around_order와 같으면 프로세서로 전달 될 수 있다.
버스트 1은 캐시 미스된 워드 및 스페이스가 높은 프로그램 위치를 갖는 캐시 미스 워드로부터 증가하는 어드레스 순서로 된 워드를 포함하기 때문에 고속 서비스에 대해 자체 우선 순위가 주어진다.
그런 다음 wrap_around_order가 BL-1과 같지 않으면 wrap_around_order가 1 씩 증가한다.
그렇지 않으면 wrap_around_order가 0으로 재설정되고 버스트 1이 종료된다.
반면에 O(CAi[2:0],j)가 wrap_around_order와 같지 않으면 전송은 버퍼(B)에 저장된다.
이러한 절차는 메모리 요청 ri에 대한 모든 전송이 SDRAM으로부터 수신 될 때까지 반복된다.
그런 다음 버퍼의 전송을 다시 정렬한 다음 전달해야 한다.
버퍼 내의 모든 전송들 O(CAi[2:0],j)은 wrap_around_order와 비교된다.
임의 전송의 O(CAi[2:0],j)가 wrap_around_order와 같으면 전송을 버스트 2에 포함시킨 다음 프로세서로 전달할 수 있다.
버스트 2는 캐시가 미스된 워드에서 감소하는 주소 순서로 워드를 포함하기 때문에 최선형 서비스에 대해 낮은 우선 순위가 부여된다.
그런 다음 wrap_around_order가 1 씩 증가한다.
이 절차는 버퍼에 전송이 더 이상 없을 때까지 반복된다.
예를 들어, 도 3의 (b)에서와 같이 SDRAM 전송이 메모리 요청 r1에 대해 생성된다고 가정한다.
CA1[2:0]이 wrap_around_order로 복사되고, j는 0으로 리셋된다.
CA1[2:0]이 3'h1이고 j는 0이면 첫 번째 전송의 O(CA1[2:0],j)는 표 1에서의 0이다.
첫 번째 전송은 O(CA1[2:0],j)가 wrap_around_order와 같지 않기 때문에 버퍼에 저장된다.
다음으로, CA1[2:0]이 3'h1이고 j가 1 일 때, 두 번째 전송의 O(CA1[2:0],j)는 표 1에서 1이다.
두 번째 전송은 버스트 1에 포함되고, O(CA1[2:0],j)가 wrap_around_order와 같으므로 프로세서 1로 전달된다.
그런 다음 wrap_around_order와 j가 모두 1 씩 증가한다.
이러한 절차는 메모리 요청 r1에 대한 모든 전송이 SDRAM에서 수신될 때까지 반복된다.
결과적으로, 우선 순위를 가진 버스트 1에 포함된 전송 1에서 7까지는 프로세서 1에 전달되고 도 3의 (b)와 같이 버퍼 0에는 전송 0 만 저장된다.
이 시점에서 wrap_around_order는 3'h0으로 재설정되고 버스트 1은 종료된다.
그런 다음 버퍼의 모든 전송을 프로세서 1에 전달해야 한다.
전송 0은 우선 순위가 낮은 버스트 2에 포함될 수 있으며 그 이후 O(CA1[2:0],j)가 wrap_around_order와 같기 때문에 프로세서 1로 전달된다.
도 2의 (b)와 도 3의 (b)에서와 같이 본 발명에 따른 메모리 서브 시스템은 전송 1에서 3의 전달은 1 사이클 느리지만, 다른 전송은 기존 메모리 서브 시스템보다 3 사이클 더 빠르다.
전체적인 프로그램 실행 시간은 전송 1에서 3까지의 대기 시간뿐만 아니라 전송 4에서 7까지의 대기 시간에도 달려 있기 때문에 본 발명에 따른 메모리 서브 시스템에 의해 크게 향상될 수 있다.
특히, 캐시 미스 워드와, 캐시 미스 워드로부터 어드레스 순서가 증가하는 워드를 모두 포함하는 전송 1 내지 7이 중단없이 전달된다.
온 칩 인터커넥트는 버블 전송을 더 이상 제공하지 않기 때문에 결과적으로 유효 대역폭이 향상 될 수 있다.
주어진 CAi[2:0]이 3'h0보다 크고 3'h4보다 작으면, 본 발명에 따른 메모리 서브 시스템은 캐시 미스된 워드 및 증가된 어드레스 순서의 일부 워드를 포함하는 전송의 지연을 야기하지만, 종래 기술의 메모리 서브 시스템과 비교하여 캐시 미스된 워드로부터 증가하는 어드레스 순서로 전체 전송의 짧은 대기 시간을 달성한다.
그러나 일부 전송의 대기 시간이 길어지면 메모리 서브 시스템의 모든 전송 지연이 증가한다. 그 이유는 branch 명령어를 포함하는 경우를 제외하고, 전체 프로그램 실행 시간이 프로그램의 공간적 지역성으로 인해 미스된 워드의 대기 시간과 캐시 미스된 워드의 어드레스 순서가 증가하는 모든 워드에 달려 있기 때문이다.
본 발명에 따른 메모리 서브 시스템은 메모리 대기 시간을 최대 1 ~ 3 사이클만큼 향상시킬 수 있으며 온칩 인터커넥트의 대역폭을 최대 4 사이클까지 절약 할 수 있다.
주어진 CAi[2:0]이 3'h4보다 크거나 같을 때, 본 발명에 따른 메모리 서브 시스템은 도 3의 (e) ~ (h)에서와 같이 CAi를 수정하지 않고 SDRAM을 액세스 한다.
예를 들어, 주어진 CAi[2:0]이 3'h5인 경우, 도 3의 (f)에 도시 된 바와 같이 3'h0로 리셋되지 않는다.
따라서, SDRAM은 표 1에서와 같이 5, 6, 7, 4, 1, 2, 3 및 0 순으로 전송을 생성한다.
전송 5에서 7은 버스트 1에 포함되고, O(CA1[2:0],j)가 wrap_around_order와 동일하므로 전달된다.
캐시 미스 워드와 캐시 미스 워드로부터 증가하는 어드레스 순서의 워드를 포함하는 전송 5 내지 7은 곧 사용될 가능성이 높기 때문에, 버스트 1은 우선 순위로 전달된다.
반대로, 전송 4, 1, 2, 3 및 0은 버퍼에 저장된다.
그 전송은 버스트 2에 포함될 수 있으며 O(CA1[2:0],j)가 wrap_around_order와 같을 때 전달된다.
캐시 미스 워드로부터 어드레스 순서가 감소하는 워드를 포함하는 0 내지 4의 전송은 곧 사용될 가능성이 낮기 때문에, 버스트 2는 낮은 우선 순위로 전달된다.
온 칩 인터커넥트는 버블 전송을 제공하는 대신 버스트 1과 버스트 2 사이에 다른 긴급 버스트를 제공할 수 있다.
온칩 인터커넥트가 긴급한 버스트로 바쁘지 않을때 버스트 2가 전달된다.
따라서, 본 발명에 따른 메모리 서브 시스템은 CAi[2:0]이 3'h5 인 경우 온칩 인터커넥트의 대역폭을 메모리 요청 당 최대 4 사이클까지 절약 할 수 있다.
주어진 CAi[2:0]이 3'h4보다 크거나 같을 경우, 본 발명에 따른 메모리 서브 시스템은 미스된 워드와 캐시 미스된 워드로부터 증가하는 주소에 있는 워드 모두를 성능 페널티가 없이 전달할 수 있다.
본 발명에 따른 메모리 서브 시스템은 캐시 누락 된 워드에서 감소하는 주소 순서의 워드를 포함하는 전송에 낮은 우선 순위를 할당하므로 다른 긴급 전송은 우선 순위가 낮은 전송에 의해 차단되지 않는다.
따라서, 본 발명에 따른 메모리 서브 시스템은 특히 다수의 어플리케이션을 동시에 수행하는 멀티 코어 프로세서에서 전체 프로그램 실행 시간을 크게 향상시킬 수 있다.
이상에서 설명한 본 발명에 따른 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법이 적용되는 메모리 서브 시스템은 래핑 버스트로 인한 메모리 성능 손실을 최소화함으로써 프로그램 실행 시간을 향상시킬 수 있도록 한다.
본 발명에 따른 SDRAM 열 블록에 정렬되지 않은 래핑 버스트에 효과적인 메모리 서브 시스템은 프로세서가 제공한 메모리 주소를 수정 한 다음 메모리 주소로 SDRAM에 액세스하므로 과도 순서로 SDRAM 출력을 전송하여 전송은 성능 저하를 최소화하면서 프로세서가 요구하는 순서로 쉽게 재 배열 될 수 있도록 한다.
이상에서의 설명에서와 같이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명이 구현되어 있음을 이해할 수 있을 것이다.
그러므로 명시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하고, 본 발명의 범위는 전술한 설명이 아니라 특허청구 범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
10. SDRAM 20. 메모리 서브시스템
30. 온칩 인터커넥트 40. 프로세서
30. 온칩 인터커넥트 40. 프로세서
Claims (14)
- 명령어 세트 아키텍처를 가지며 캐시 블록으로 구성되는 LLC(Last Level Caches)를 갖는 프로세서;
데이터 버스를 사용하는 온칩 인터커넥트를 통해 프로세서와 연결되어 프로세서에서 실행되는 명령에 따라 메모리에 읽기 및 쓰기 동작을 수행하는 메모리 서브 시스템을 포함하고,
상기 메모리 서브 시스템은 캐시의 래핑 버스트(burst) 처리시에,
프로세서에 의해 주어진 시작 메모리 주소를 수정하여 메모리가 과도 순서로 전송을 생성하도록 하며, 전송은 최소한의 페널티로 랩 어라운드 순서로 재 배열되도록 하고, 그런 다음 전송은 프로그램 공간적 지역성에 따라 우선 순위로 전달하고, 메모리 요청 ri의 정보를 참조 할 때 메모리 서브 시스템은 메모리에 액세스 한 다음 전송(ti,j ∈ WBi)을 프로세서로 전달하고, 여기서, WBi는 래핑 버스트를 나타내며 j는 각 전송에 추가되는 순차 번호(sequential number)인 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치. - 제 1 항에 있어서, 긴급 전송은 우선 순위 서비스로 전달되고 비 긴급 전송은 최선형 서비스로 독립적으로 전달 될 수 있도록 하는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치.
- 삭제
- 제 1 항에 있어서, 메모리 서브 시스템이 8 바이트 데이터 버스를 통해 메모리에 상호 연결되는 경우에는,
주어진 40 비트 메모리 주소의 서브 3 비트는 바이트 오프셋으로 간주되고, 메모리 주소의 다음 10 서브 비트는 시작 열 주소(CAi)로 사용되는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치. - 제 4 항에 있어서, 메모리는 버스트 길이(BL), 버스트 유형(BT) 및 시작 열 주소 (CA)에 따라 프로그래밍 된 순서로 전송을 하고,
메모리의 BL 및 BT가 각각 8 및 순차 타입(sequential type)으로 설정된 경우에 메모리에 프로그래밍 된 전송 순서는 (O(CAi[2:0],j))이고,
쓰기 전송은 고정된 순서로 메모리에 전달되고, 읽기 전송은 CAi[2:0]에 따라 SDRAM에 의해 가변 순서로 생성되고, 프로세서가 요구하는 랩 어라운드(wrap-around) 순서로 재 배열되는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치. - 명령어 세트 아키텍처를 가지며 캐시 블록으로 구성되는 LLC(Last Level Caches)를 갖는 프로세서 및 데이터 버스를 사용하는 온칩 인터커넥트를 통해 프로세서와 연결되어 프로세서에서 실행되는 명령에 따라 메모리에 읽기 및 쓰기 동작을 수행하는 메모리 서브 시스템을 포함하고,
상기 메모리 서브 시스템이 캐시의 래핑 버스트(burst) 처리시에,
프로세서에 의해 주어진 시작 메모리 주소를 수정하여 메모리가 과도 순서로 전송을 생성하도록 하며, 전송은 최소한의 페널티로 랩 어라운드 순서로 재 배열되도록 하고, 그런 다음 전송은 프로그램 공간적 지역성에 따라 우선 순위로 전달하고, 메모리 요청 ri의 정보를 참조 할 때 메모리 서브 시스템은 메모리에 액세스 한 다음 전송(ti,j ∈ WBi)을 프로세서로 전달하고, 여기서, WBi는 래핑 버스트를 나타내며 j는 각 전송에 추가되는 순차 번호(sequential number)인 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법. - 제 6 항에 있어서, 긴급 전송은 우선 순위 서비스로 전달되고 비 긴급 전송은 최선형 서비스로 독립적으로 전달 될 수 있도록 하는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법.
- 삭제
- 제 6 항에 있어서, 메모리 서브 시스템이 8 바이트 데이터 버스를 통해 메모리에 상호 연결되는 경우에는,
주어진 40 비트 메모리 주소의 서브 3 비트는 바이트 오프셋으로 간주되고, 메모리 주소의 다음 10 서브 비트는 시작 열 주소(CAi)로 사용되는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법. - 제 9 항에 있어서, 버스트 길이(BL), 버스트 유형(BT) 및 시작 열 주소 (CA)에 따라 프로그래밍 된 순서로 전송을 하고,
메모리의 BL 및 BT가 각각 8 및 순차 타입(sequential type)으로 설정된 경우에 메모리에 프로그래밍 된 읽기 전송은 CAi[2:0]에 따라 가변 순서로 생성되어 (O(CAi[2:0],j))이고, 쓰기 전송은 고정된 순서로 메모리에 전달되고, 프로세서가 요구하는 랩 어라운드(wrap-around) 순서로 재 배열되는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법. - 제 10 항에 있어서, 메모리 서브 시스템이 프로세서의 메모리 요청을 수신한 후 메모리 액세스를 시작하고, 선택된 단일 행의 활성화를 위해 메모리에 RAS(Row Access Strobe) 명령을 발행하는 단계;
RAS-to-CAS 지연 시간(tRCD) 이후에 CAS(Column Access Strobe) 읽기 명령을 내리는 단계;를 포함하고,
CAi를 CA'i에 복사하고, CAi[2:0]이 3'h4보다 작으면 CA'i[2:0]은 3'h0로 재설정되고, 그렇지 않으면 CA'i[2:0]이 수정하지 않는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법. - 제 11 항에 있어서, 메모리 서브 시스템이 프로세서가 요구하는 임의의 랩 어라운드 순서로 전송을 재 배열하기 위하여,
CAi[2:0]은 wrap_around_order에 복사되고 j는 0으로 재설정하는 단계;
임의의 전송 ti,j ∈ WBi가 메모리 서브 시스템에 전달 될 때마다 전송 순서 (O(CAi[2:0],j))가 참조되고, 그 O(CAi[2:0],j)가 wrap_around_order와 같으면 프로세서로 전달하는 단계;를 포함하고,
버스트 1은 캐시 미스된 워드 및 캐시 미스 워드로부터 증가하는 어드레스 순서로 된 워드를 포함하기 때문에 우선 순위가 주어지고, 그런 다음 wrap_around_order가 BL-1과 같지 않으면 wrap_around_order가 1 씩 증가하고, 그렇지 않으면 wrap_around_order가 0으로 재설정되고 버스트 1이 종료되는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법. - 제 12 항에 있어서, O(CAi[2:0],j)가 wrap_around_order와 같지 않으면 전송은 버퍼(B)에 저장되고,
그 전송에는 캐시 누락 워드에서 감소하는 주소 순서로 워드는 곧 사용할 가능성이 낮고, 이러한 절차를 메모리 요청에 대한 모든 전송이 메모리로부터 수신 될 때까지 반복하는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법. - 제 13 항에 있어서, 버퍼의 전송을 다시 정렬한 다음 전달하기 위하여,
버퍼 내의 모든 전송들 O(CAi[2:0],j)을 wrap_around_order와 비교하는 단계;
임의 전송의 O(CAi[2:0],j)가 wrap_around_order와 같으면 전송을 버스트 2에 포함시킨 다음 프로세서로 전달하는 단계;를 포함하고,
버스트 2는 캐시가 미스된 워드에서 감소하는 주소 순서로 워드를 포함하기 때문에 낮은 우선 순위가 부여되고, 그런 다음 wrap_around_order가 1 씩 증가하고, 이 절차를 버퍼에 전송이 더 이상 없을 때까지 반복하는 것을 특징으로 하는 메모리 버스트에 정렬되지 않은 요청 제어를 위한 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180058628A KR102057518B1 (ko) | 2018-05-23 | 2018-05-23 | 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180058628A KR102057518B1 (ko) | 2018-05-23 | 2018-05-23 | 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190133549A KR20190133549A (ko) | 2019-12-03 |
KR102057518B1 true KR102057518B1 (ko) | 2019-12-19 |
Family
ID=68838159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180058628A KR102057518B1 (ko) | 2018-05-23 | 2018-05-23 | 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102057518B1 (ko) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6233199B1 (en) | 1999-02-26 | 2001-05-15 | Micron Technology, Inc. | Full page increment/decrement burst for DDR SDRAM/SGRAM |
WO2013095437A1 (en) | 2011-12-21 | 2013-06-27 | Intel Corporation | System and method for intelligently flushing data from a processor into a memory subsystem |
US9110795B2 (en) | 2012-12-10 | 2015-08-18 | Qualcomm Incorporated | System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components |
-
2018
- 2018-05-23 KR KR1020180058628A patent/KR102057518B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20190133549A (ko) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4933837A (en) | Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories | |
JP3765586B2 (ja) | 多重プロセッサコンピューターシステムのアーキテクチャ | |
EP1110151B1 (en) | Buffering system bus for external-memory accesses | |
US10203878B2 (en) | Near memory accelerator | |
JP5787629B2 (ja) | マシンビジョン用マルチプロセッサシステムオンチップ | |
US20060179277A1 (en) | System and method for instruction line buffer holding a branch target buffer | |
US5761708A (en) | Apparatus and method to speculatively initiate primary memory accesses | |
US20060218332A1 (en) | Interface circuit, system, and method for interfacing between buses of different widths | |
JP2007073052A (ja) | 集積回路から外部メモリへのアクセス | |
US9971524B1 (en) | Scatter-gather approach for parallel data transfer in a mass storage system | |
US4949247A (en) | System for transferring multiple vector data elements to and from vector memory in a single operation | |
US5829010A (en) | Apparatus and method to efficiently abort and restart a primary memory access | |
KR102057518B1 (ko) | 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법 | |
US6633927B1 (en) | Device and method to minimize data latency and maximize data throughput using multiple data valid signals | |
JPH03189843A (ja) | データ処理システムおよび方法 | |
WO2021075076A1 (ja) | 情報処理装置、及び情報処理方法 | |
US6836823B2 (en) | Bandwidth enhancement for uncached devices | |
US7028142B2 (en) | System and method for reducing access latency to shared program memory | |
JP3789937B2 (ja) | ベクトルプロセッサのためのチャンク連鎖 | |
US10489318B1 (en) | Scatter-gather approach for parallel data transfer in a mass storage system | |
US7788448B2 (en) | Sequencer cache and method for operating the same | |
KR100266883B1 (ko) | 데이타 버퍼가 부착된 smp 메모리 제어기에 있어서의 대기시간이 짧은 제1 데이타 억세스 | |
US8234452B2 (en) | Device and method for fetching instructions | |
US10339080B2 (en) | System and method for operating the same | |
JP2009037639A (ja) | ストリーミングidメソッドによるdmac発行メカニズム |
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 |