KR101779545B1 - 메모리 인터리빙을 위한 구성가능한 확산 함수 - Google Patents
메모리 인터리빙을 위한 구성가능한 확산 함수 Download PDFInfo
- Publication number
- KR101779545B1 KR101779545B1 KR1020167010742A KR20167010742A KR101779545B1 KR 101779545 B1 KR101779545 B1 KR 101779545B1 KR 1020167010742 A KR1020167010742 A KR 1020167010742A KR 20167010742 A KR20167010742 A KR 20167010742A KR 101779545 B1 KR101779545 B1 KR 101779545B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- address bits
- memory channels
- binary values
- round
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
메모리의 어드레스 비트들을, 연속적인 라운드들에서 반복적으로 N개의 메모리 채널들로 맵핑하는 단계에 의해 메모리를 인터리빙하는 방법이 개시되며, 맵핑하는 단계는, 마지막 라운드를 제외한 각각의 라운드에서: 어드레스 비트들의 고유 서브셋을 선택하는 단계, 선택된 어드레스 비트들의 서브셋에 기초하여 가능한 최대 수(L)의 고유 조합들을 결정하는 단계, N개의 메모리 채널들 각각이 동일한 수의 조합들로 맵핑되는 경우 가능한 최대 횟수(F)로 조합들의 N개의 메모리 채널들로 맵핑하는 단계, 및 일 대 N개의 메모리 채널들 각각의 맵핑될 수 없는 조합들의 수가 (K, N보다 작음)인 상태로 남아 있는 경우이고 그러할 때, 다음 라운드로 진입하는 단계를 포함한다. 이 방법은, 마지막 라운드에서, 앞의 라운드들의 서브셋들에서 사용되지 않은 나머지 최상위 어드레스 비트들을 N개 메모리 채널들 각각으로 맵핑하는 단계를 포함한다.
Description
35 U.S.C.§119에 의한 우선권 주장
[0001]본 특허 출원은, 2013년 9월 27일 출원되고, 명칭이 "CONFIGURABLE SPREADING FUNCTION FOR MEMORY INTERLEAVING"이며, 본원의 양수인에게 양도되었으며, 이로써 인용에 의해 명시적으로 본원에 포함되는, 가출원 제61/883,833호를 우선권으로 주장한다.
[0002]개시된 실시예들은 2개 이상의 메모리 채널에 걸친 메모리 인터리빙에 관한 것이다. 보다 구체적으로, 예시적인 실시예들은 임의의 수의 메모리 채널들에 걸친 균일한 메모리 인터리빙을 위해 스케일러블(scalable)하고 구성가능한 확산 기능들에 관한 것이다.
[0003]메모리 공간을 2개 이상의 메모리 뱅크들로 분배하기 위한 메모리 인터리빙이 컴퓨터 프로세싱 시스템들 및 애플리케이션에서 공지되어 있다. 이러한 인터리빙은 2개 이상의 메모리 뱅크들을 동시적 및/또는 연속적 액세스를 가능하게 하여, 메모리 어드레스들 모두가 통합된 넌-인터리브드(non-interleaved) 메모리 구조에 맵핑되었던 경우 발생할 수 있는 판독/기록 대기 시간 지연들을 방지한다. 따라서, 메모리 인터리빙은 메모리 액세스 대역폭과 메모리 액세스 속도 면에서 상당한 이점들을 제공할 수 있다.
[0004]도 1을 참조하면, 2개의 메모리 뱅크들에 대한 단순한 양방향(two-way) 메모리 인터리빙 방식이 예시된다. 32 비트 어드레스(102)(A [31:0])가 메모리(미도시)를 어드레싱하기 위해 사용될 수 있으며, 홀수 어드레스는, 예를 들어, 제 1 메모리 채널(channel Ch0 108_0)을 통해 제 1 메모리 뱅크(미도시)로 디렉팅되며, 모든 짝수 어드레스들은 제 2 메모리 채널(channel Ch1 108_1)을 통해 제 2 메모리 뱅크(미도시)로 디렉팅된다. 이를 성취하기 위해서, 특정 어드레스를 라우팅할 채널이 어느 채널인지를 결정하기 위해 어드레스(102)의 최하위 비트(즉, 비트 A[0])가 사용될 수 있는 단순한 채널 확산 함수(104)가 예시된다. 예를 들어, 짝수 값이 어드레스(102)에 표시되는 경우, 비트 A[0]는 "0"일 것이며, 이는 (예를 들어, 제 1 메모리 채널 Ch0 108_0로의 액세스를 가능하게 하기 위해서 선택 신호 CS0을 포함하는 단순 채널 확산 함수(104)(값 ~A[0]로 설정됨)에 기초하여) 제 1 메모리 채널(Ch0 108_0)로 관련 메모리 액세스를 디렉팅하기 위해 사용될 수 있다. 마찬가지로, (예를 들어, 채널 확산 함수(104)가, 제 2 메모리 채널 Ch1 108_1을 선택하기 위해 A[0]에 기초하게 되도록 선택 신호 CS1을 더 포함하는 경우) 비트 A[0]가 "1"인 것에 기초하는 어드레스(102)의 홀수 값이 제 2 메모리 채널 Ch1 108_1로의 관련 메모리 액세스를 위해 사용될 수 있다. 어드레스(102)의 나머지 상위 비트들(higher order bits)은, 인트라-채널 어드레싱 함수(106), 즉, 제 1 및 제 2 메모리 채널들 Ch0 108_0 및 Ch1 108_1에 관한 제 1 및 제 2 메모리 뱅크들 각각에 내에 포함된 메모리 공간을 어드레싱하는 것을 위해 사용될 수 있다.
[0005]상기 간단한 방식은 양방향 인터리빙에 잘 작동하는 한편(또는, 일반적으로, 2의 제곱과 동일한 다수의 메모리 채널들에 대한 인터리빙), 이러한 방식들은 용이하게 또는 효율적으로 스케일러블하지 않다. 예를 들어, 3방향(three-way) 인터리빙이 특정 메모리 아키텍처에서 3개의 메모리 채널들 사이에 요구되는 경우, 종래의 메모리 인터리빙 기술들은, 양방향 인터리빙에 대해 도 1에서 도시된 바와 같은 단순한 기술을 이용하여 3개의 메모리 채널들에 걸친 균일한 인터리빙을 성취할 수 없다. 이는, 3방향 인터리빙을 위한 유사한 채널 확산 함수가, 예를 들어, 3개의 메모리 채널들 중에서의 선택을 위해서, 어드레스(102)의 2개의 최하위 비트들을 요구할 수 있기 때문이다. 그러나, 2 비트들이 4개의 이진 비트 조합들(즉, "00", "01", "10" 및 "11")을 생성하고, 3개의 메모리 채널들 중 하나로 추가 비트 조합에 관계된 어드레스들을 단순히 리맵핑하는 것은 3개의 매모리 채널들 사이에의 어드레스들의 분할 시, 균일성의 결여로 이어질 것이며, 이는 바람직하지 않다.
[0006]특히 3방향 인터리빙과 관련된 상기 결점들을 극복하기 위한 시도로서, 종래의 접근법은, 동시에 3개의 메모리 채널들 모두에 액세스하기에 충분히 폭이 넓은, 더 넓은 데이터 버스의 사용을 포함한다. 예를 들어, 192-비트 폭 데이터 버스는 32-비트 메모리 공간에 속하는 3개의 메모리 채널들 모두에 대한 판독 및 기록 액세스들을 커버할 수 있다. 그러나, 이러한 종래의 접근법들은 낭비적이고 인터리빙의 장점들을 활용하지 않는다; 이들은 전력 및 면적의 관점에서 비효율적인 경향이있다. 또한, 이러한 접근들은 3방향 인터리빙을 위해 면밀하게 맞춰지므로, 따라서, 다른 수의 메모리 채널들에 걸친 인터리빙에 대해서는 스케일러블하지 않다.
[0007]3방향 인터리빙을 위한 또 다른 종래의 접근법은, 어드레스들의 디렉팅을 위한 3개의 채널들 중에서의 선택을 위해 테이블 룩 업과 함께 모드-3 (3의 계수) 채널 확산 함수를 사용한다. 그러나, 이 접근법은, 모드-3 확산 함수를 이용하여 효율적으로 맵핑되지 않은, 모듈러스 함수의 어색한(inelegant) 사용을 포함한다. 모드-3 함수를 구현하는 것은, 당업자가 이해하는 바와 같이 값 비싼 하드웨어 분할기를 구현하기 위한 것과 유사한 하드웨어를 필요로 한다. 따라서, 이러한 접근법 또한 바람직하지 않다.
[0008]당업계에 공지된 다른 이러한 접근법들은 마찬가지로, 확산 함수들에 있어서 확장성, 단순성, 및 균일성이 부족하며 비효율적이다. 따라서, (예를 들어, 단지 3을 초과하는, 5, 7, 13 등과 같은 다른 수의 채널들로) 스케일러블하고; 그들의 확산 정도에 있어서 (예를 들어, 보다 덜 공격적으로/보다 더 공격적으로) 구성가능하고; 그리고 그들의 구현에 대하여 단순하고, 저렴하고, 신속한 확산 함수들을 필요로 한다.
[0009]예시적인 실시예들은, 임의의 수의 메모리 채널들에 걸쳐 균일한 인터리빙을 구현할 수 있는 저비용의, 고도로 구성가능하며, 용이하게 스케일러블한 메모리 인터리빙 함수들을 위한 시스템들 및 방법들에 관한 것이다.
[0010]예를 들어, 예시적인 실시예는 메모리를 인터리빙하는 방법에 관한 것이며, 이 방법은, 메모리의 어드레스 비트들을, 연속적인 라운드들에서 반복적으로 N개의 메모리 채널들로 맵핑하는 단계를 포함하며, 맵핑하는 단계는, 마지막 라운드를 제외한 각각의 라운드에서: 어드레스 비트들의 고유 서브셋을 선택하는 단계, 선택된 어드레스 비트들의 서브셋에 기초하여 가능한 최대 수(L)의 고유 조합들을 결정하는 단계, N개의 메모리 채널들 각각이 동일한 수의 조합들로 맵핑되는 경우 가능한 최대 횟수(F)로 조합들을 N개의 메모리 채널들로 맵핑하는 단계, 및 만약 N개의 메모리 채널들 각각에 같은 식으로 맵핑될 수 없는 조합들의 수가 (K, N보다 작음)인 상태로 남아 있을 때는, 다음 라운드로 진입하는 단계를 포함한다. 이 방법은, 마지막 라운드에서, 앞의 라운드들의 서브셋들에서 사용되지 않은 나머지 최상위 어드레스 비트들을 N개 메모리 채널들 각각으로 맵핑하는 단계를 포함한다. 위의 예시적인 방법에서, N, L, K 및 F는 식 N=(L-K)/F를 만족한다.
[0011]다른 예시적인 실시예는 메모리 인터리빙 방법에 관한 것이며, 이 방법은: 메모리 제어기에 의해, 메모리의 어드레스 비트들을, 미리결정된 수(G_total)의 연속적인 라운드들에서 반복적으로 N개의 메모리 채널들로 맵핑하는 단계를 포함하며, 마지막 라운드를 제외한 각각의 라운드는: N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 미리결정된 수(n)의 최하위 어드레스 비트들을 포함하는 어드레스 비트들의 서브셋을 선택하는 단계; (n)어드레스 비트들의 선택된 서브셋에 의해
[0012]나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하는 단계; 최대 수 이내의 동일할 수의 2진 값들을 N개의 메모리 채널들의 각각으로 맵핑하는 단계; 및 만약 N개의 메모리 채널들의 각각으로 동일한 횟수로 맵핑될 수 없는 2진 값들의 수가 (K<N)인 상태로 남아 있을 때에는, 다음 라운드로 진입하는 단계를 포함한다. 마지막 라운드에서, 메모리 제어기에 의해, 최상위 어드레스 비트들의 마지막 수(min_bits)에 의해 나타내어진 2진 값들을 N개의 메모리 채널들로 맵핑하는 단계를 포함한다. 한번 더, N, L, K 및 F는 식 N=(L-K)/F를 만족한다.
[0013]다른 예시적인 실시예는 프로세싱 시스템에 관한 것이며, 프로세싱 시스템은: N개의 메모리 채널들을 포함하는 메모리를 포함한다. 프로세싱 시스템은 메모리의 어드레스 비트들을, 미리결정된 수(G_total)의 연속적인 라운드들에서 반복적으로 N개의 메모리 채널들로 맵핑하기 위한 수단을 포함하며, 마지막 라운드를 제외한 각각의 라운드에 대해: N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 미리결정된 수(n)의 최하위 어드레스 비트들을 포함하는 어드레스 비트들의 서브셋을 선택하기 위한 수단; (n) 어드레스 비트들의 선택된 서브셋에 의해 나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하기 위한 수단; 최대 수 이내의 동일할 수의 2진 값들을 N개의 메모리 채널들의 각각으로 맵핑하기 위한 수단; 및 만약 N개의 메모리 채널들의 각각으로 동일한 횟수로 맵핑될 수 없는 2진 값들의 수가 (K<N)인 상태로 남아 있을 때는, 다음 라운드로 진입하기 위한 수단을 포함한다. 프로세싱 시스템은, 마지막 라운드에서, 메모리 제어기에 의해, 최상위 어드레스 비트들의 마지막 수(min_bits)에 의해 나타내어진 2진 값들을 N개의 메모리 채널들로 맵핑하기 위한 수단을 더 포함한다. 한번 더, N, L, K 및 F는 식 N=(L-K)/F를 만족한다.
[0014]또 다른 예시적인 실시예는 프로세싱 시스템에 관한 것이며, 이 프로세싱 시스템은: 프로세서 및 프로세서에 통신가능하게 결합된 메모리를 포함하며, 메모리는 N개의 메모리 채널들을 포함한다. 메모리 제어기는, 메모리의 어드레스 비트들을, 미리결정된 수(G_total)의 연속적인 라운드들에서 반복적으로 N개의 메모리 채널들로 맵핑하도록 구성되고, 마지막 라운드를 제외한 각각의 라운드에 대해, 메모리 제어기는, N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 미리결정된 수(n)의 최하위 어드레스 비트들을 포함하는 어드레스 비트들의 서브셋을 선택하고; (n) 어드레스 비트들의 선택된 서브셋에 의해 나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하고; 최대 수 이내의 동일할 수의 2진 값들을 N개의 메모리 채널들의 각각으로 맵핑하고; 만약 N개의 메모리 채널들의 각각으로 동일한 횟수로 맵핑될 수 없는 2진 값들의 수가 (K<N)인 상태로 남아 있을 때에는, 다음 라운드로 진입하도록 구성된다. 이 메모리 제어기는 추가로, 마지막 라운드에서, 메모리 제어기에 의해, 최상위 어드레스 비트들의 마지막 수(min_bits)에 의해 나타내어진 2진 값들을 N개의 메모리 채널들로 맵핑하도록 구성된다. 한번 더, N, L, K 및 F는 식 N=(L-K)/F를 만족한다.
[0015]또 다른 예시적인 실시예는 코드를 포함하는 비일시적 컴퓨터 판독가능 저장 매체에 관한 것이며, 이 코드는, 프로세서에 의해 실행될 경우, 프로세서로 하여금, 프로세서에 결합된 메모리를 인터리빙하기 위한 동작들을 수행하게 하고, 이 메모리는 N개의 메모리 채널들을 포함하고, 이 비일시적 컴퓨터 판독가능 저장 매체는: 메모리의 어드레스 비트들을, 미리결정된 수(G_total)의 연속적인 라운드들에서 반복적으로 N개의 메모리 채널들로 맵핑하기 위한 코드, ―마지막 라운드를 제외한 각각의 라운드에 대해, N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 미리결정된 수(n)의 최하위 어드레스 비트들을 포함하는 어드레스 비트들의 서브셋을 선택하기 위한 코드; (n) 어드레스 비트들의 선택된 서브셋에 의해 나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하기 위한 코드; 최대 수 이내의 동일할 수의 2진 값들을 N개의 메모리 채널들의 각각으로 맵핑하기 위한 코드; 및 만약 N개의 메모리 채널들의 각각으로 동일한 횟수로 맵핑될 수 없는 2진 값들의 수가 (K<N)인 상태로 남아 있을 때에는, 다음 라운드로 진입하기 위한 코드를 포함함―; 및 마지막 라운드에서, 메모리 제어기에 의해, 최상위 어드레스 비트들의 마지막 수(min_bits)에 의해 나타내어진 2진 값들을 N개의 메모리 채널들로 맵핑하기 위한 코드를 포함한다. 한번 더, N, L, K 및 F는 식 N=(L-K)/F를 만족한다.
[0016]첨부 도면들은 본 발명의 실시예들의 설명을 돕기 위해 제시되고, 실시예들의 한정이 아닌 오로지 실시예들의 예시를 위해 제공된다.
[0017]도 1은 종래의 용어 설명이 있는 메모리 인터리빙을 도시한다.
[0018]도 2는 완전(fully) 구성가능한 확산 함수를 이용하는 예시적인 인터리빙 기술들을 도시한다.
[0019]도 3은 3개 채널에 대한 예시적인 확산 함수를 도시한다.
[0020]도 4a 내지 도 4c는 N=5 채널들인 경우에 대한 예시적인 확산 함수를 도시하며, N은 (L-K)/F로 나타내어진다.
[0021]도 5a 내지 도 5d는 N=13 채널들인 경우에 대한 예시적인 확산 함수를 도시하며, N은 (L-K)/F로 나타내어진다.
[0022]도 6은 N방향 확산 및 R방향 확산의 결합에 의한 예시적인 N*R방향 확산을 도시한다.
[0023]도 7a 및 도 7b는 예시적인 실시예들에서 인터리빙 비트들의 수치의 선택을 위한 트래픽 불균형 인자를 도시한다.
[0024]도 8은 예시적인 실시예들에 따른 메모리 인터리빙의 메모리에 관한 흐름도이다.
[0017]도 1은 종래의 용어 설명이 있는 메모리 인터리빙을 도시한다.
[0018]도 2는 완전(fully) 구성가능한 확산 함수를 이용하는 예시적인 인터리빙 기술들을 도시한다.
[0019]도 3은 3개 채널에 대한 예시적인 확산 함수를 도시한다.
[0020]도 4a 내지 도 4c는 N=5 채널들인 경우에 대한 예시적인 확산 함수를 도시하며, N은 (L-K)/F로 나타내어진다.
[0021]도 5a 내지 도 5d는 N=13 채널들인 경우에 대한 예시적인 확산 함수를 도시하며, N은 (L-K)/F로 나타내어진다.
[0022]도 6은 N방향 확산 및 R방향 확산의 결합에 의한 예시적인 N*R방향 확산을 도시한다.
[0023]도 7a 및 도 7b는 예시적인 실시예들에서 인터리빙 비트들의 수치의 선택을 위한 트래픽 불균형 인자를 도시한다.
[0024]도 8은 예시적인 실시예들에 따른 메모리 인터리빙의 메모리에 관한 흐름도이다.
[0025]본 발명의 양상들이 본 발명의 특정 실시예들에 관한 다음의 설명 및 관련 도면들에 개시되어 있다. 대안적인 실시들이 본 발명의 범위를 벗어나지 않고 고안될 수 있다. 또한, 발명의 공지된 엘리먼트들은 본 발명의 관련된 세부 사항을 불명료하게 하지 않도록 상세하게 설명되지 않거나, 생략될 것이다.
[0026]"예시적인"이라는 단어는 예시, 실례 또는 예증"의 역할을 의미하는 것으로 사용된다. "예시"로서 본 명세서에 기술된 임의의 실시예가, 반드시 다른 실시예들에 비해 바람직하거나 유리한 것으로 해석되는 것은 아니다. 마찬가지로, "본 발명의 실시예들"이라는 용어는 본 발명의 모든 실시예들이 논의된 특징, 장점 또는 동작 모드를 포함하는 것을 필요하지 않는다.
[0027]본원에서 사용된 용어는 특정 실시예만을 설명하기 위한 목적이며 본 발명의 실시예들을 한정하려는 의도는 아니다. 본 명세서에 사용된 바와 같이 단수 형태는 문맥상 명백하게 다르게 지시하지 않는 한, 복수의 형태를 또한 포함하도록 의도된다. 본 명세서에서 사용될 때, "구비한다", "구비하는", "포함한다" 및/또는 "포함하는"이라는 용어는 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않고, 명시된 특징들, 정수들, 단계들, 동작들, 엘리먼트들 및/또는 컴포넌트의 존재를 명시한다는 것이 추가로 이해될 것이다.
[0028]또한, 많은 실시예들이 예를 들어, 컴퓨팅 디바이스의 엘리먼트들에 의해 수행될 동작들의 시퀀스들의 견지에서 설명된다. 본 명세서에 개시된 다양한 동작들이 특정 회로들(예컨대, 주문형 집적 회로(ASIC))에 의해, 하나 이상의 프로세서들에 의해 실행되는 프로그램 명령들에 의해, 또는 이 둘의 조합에 의해 수행될 수 있다는 것이 인식될 것이다. 또한, 본 명세서에 개시된 동작들의 이러한 시퀀스는, 실행시, 연관된 프로세서가 본 명세서에 개시된 기능을 수행하게 하는 대응하는 컴퓨터 명령들의 세트가 저장되어 있는 임의의 형태의 컴퓨터 판독가능 저장 매체 내에 완전히 구현되는 것으로 고려될 수 있다. 따라서, 본 발명의 다양한 양상들은 다수의 상이한 형태들로 구현될 수 있으며, 이들 모두는 청구 요지의 범위 내에 있는 것으로 고려된다. 이외에도, 본 명세서에 설명된 실시예들 각각에 대해, 임의의 이러한 실시예들의 대응하는 형태는 예를 들어, 설명된 동작을 수행"하도록 구성된 로직"으로서 본 명세서에서 설명될 수 있다.
[0029]개시된 솔루션들은 전술한 문제점들을 해결한다. 보다 구체적으로, 예시적인 실시예는 저렴하고 빠른 완벽하게 구성가능하고 스케일러블한 메모리 인터리빙 기술들을 포함한다. 예시적인 메모리 인터리빙 기술들은 또한, 2 이상의 원하는 메모리 채널들 중 임의의 수의 메모리 채널에 걸친 매우 균일한 분포를 보장하고 이용가능한 메모리 셀들의 낭비/불충분한 활용(under-utilization)을 없앤다.
[0030]도 2를 참조하면, 예시적인 프로세싱 시스템(200)의 특정 양상들의 개략도가 제공된다. 도시된 바와 같이, 프로세싱 시스템(200)은 하나 이상의 프로세서들 또는 중앙 처리 유닛들(CPU들)(202a-d)을 포함할 수 있다. 일반적인 L2 캐시(204)가 CPU(202a-d)에 의해 액세스가능한 것으로 도시되며, L2 캐시가 시스템 버스(214)에 통신가능하게 결합된다. 추가적으로, 그래픽스 프로세싱 유닛(GPU)(206), 디지털 신호 프로세서(DSP)(208), 및 비디오 코더/디코더(codec)(214) 또한 시스템 버스(214)에 결합되는 것으로 도시된다. 시스템 버스(214)는, 32 비트 어드레스(212)(A[31:0])에 의해 어드레스가능한, 3개의 메모리 채널들(Ch0 222_0, Ch1 222_1, 및 Ch2 222_2)에 걸쳐 인터리빙되는 32-비트 어드레스가능한 메모리를 인터페이싱한다. 채널 확산 블록(216)은 예를 들어, 메모리 제어기(미도시)의 일부일 수 있으며, 3개의 메모리 채널들의 예시적인 인터리빙 액세스를 위해서, 이러한 3개의 메모리 채널들(Ch0 222_0, Ch1 222_1, 또는 Ch2 222_2) 중 하나를 각각 선택적으로 인에이블링하기 위한 선택 라인(CS0-CS2)을 제공할 수 있는 예시적인 채널 확산 함수를 구현하도록 구성될 수 있다. 인트라-채널 어드레싱 블록(218)은, 3개 메모리 채널들(Ch0 222_0, Ch1 222_1, 및 Ch2 222_2) 각각 내의 메모리 셀들 또는 엔트리들에 액세스하기 위해 인트라-채널 어드레스들을 제공하도록 구성될 수 있다. 일반적으로, 실시예들은 도 2에 도시된 상술한 엘리먼트들과 배열들로 제한되지 않으며 프로세싱 시스템(200)의 다양한 대안적인 구성들은 본 개시물의 범위를 벗어나지 않고 가능하다는 것을 이해할 것이다.
[0031]예시적인 양상들에 따라, 세대(G) 블록(220)이 또한, 변수 "G"로 표시되는, 하나 이상의 세대들에서 채널 확산 함수와 인트라-채널 어드레싱을 구현하기 위해서 프로세싱 시스템(200)에 제공된다. 예시적인 채널 확산 함수가 구현될 수 있는, 프로그램가능한 상수 "G_total"로 표시되는 세대들의 총수는, 예를 들어, 레지스터(미도시)를 통해 프로그래밍될 수 있다. G_total은, 예를 들면, 프로세싱 시스템(200)의 시스템 부트 업 동안에 레지스터에 프로그래밍되거나 또는 구성될 수 있다. 또한, 채널의 확산 함수에 이용될 수 있는 어드레스 비트들의 수치는 또한, 예를 들어, 레지스터(미도시)를 통해 G 블록(220)에서 프로그래밍될 수 있다. 개별 블록으로서 도시되지만, G 블록(220)에 속하는 논리/함수들은, 채널 확산 블록(216) 및/또는 인트라-채널 어드레싱 블록(218)과 같은 프로세싱 시스템(200)의 다른 논리 블록들 내에 융합되거나 또는 통합될 수 있다. 일부 양상들에서, G 블록, 채널 확산 블록(216), 및 인트라-채널 어드레싱 블록(218)은 메모리 컨트롤러(미도시)의 일부일 수 있다.
[0032]이제, "N"개의 메모리 채널들(또는 "N방향 인터리빙")에 걸친 예시적인 채널 확산 함수가, 도 2의 3개 메모리 채널들(Ch0 222_0, Ch1 222_1, 및 Ch2 222_2)에 걸친 메모리 인터리빙의 베이스라인 예시를 이용하여, 채널 확산 함수를 적용하는 선택가능한 총수(G_total)의 세대들에 대하여 설명될 것이다. 채널 확산 함수는, 예를 들면, G 블록(220)에서 얻은 G_total의 값을 이용하여, 채널 확산 블록(216)에서 구현될 수 있다. 보다 구체적으로, 세대들/라운드들 각각에서, G가 1 내지 G_total까지 변하는 경우, N(=3)개의 메모리 채널들 중 어느 것이 선택된 어드레스 비트들의 특정 조합으로 맵핑될 것인지를 결정하기 위해서 32-비트 어드레스(212)(A[31:0])의 하나 이상의 비트들이 선택된다.
[0033]예를 들어, 도 3을 참고하면, 제 1 세대, 즉, G=1에서, 어드레스(212)의 비트들 A[8:7]이 선택될 수 있으므로, 비트 조합들 A[8:7]=00에 속하는 2진 값이 Ch0 222_0으로 맵핑될 수 있고; A[8:7]=01이 Ch1 222_1으로 맵핑될 수 있고; 그리고 A[8:7]=10이 Ch2 222_2로 맵핑될 수 있다(이 경우, 어드레스 비트들 A[6:0]이, 예를 들어, 인트라-채널 어드레싱 블록(218)에 의해, 메모리 채널들(Ch0 222_0, Ch1 222_1, 및 Ch2 222_2)의 인트라-채널 어드레싱을 위해 사용될 수 있다). 그러나, 비트 조합 A[8:7] = 11에 관한 이진 값이, 균일성을 방해하지 않고 3개의 메모리 채널들(Ch0 222_0, Ch1 222_1, 및 Ch2 222_2) 중 하나로 맵핑될 수 없는 상태로 남아 있게 될 것이다. 이와 같이, 예시적인 기술들은, 선택된 비트들에 대해 맵핑되지 않은 비트 조합들과 관련된 이러한 나머지 2진 값들에 도달되는 경우 제 2 세대에 진입하는 것을 포함한다. 따라서, 후속 라운드 또는 세대 G=2인 경우, 선행 라운드의 어드레스 비트들 A[8:7]에 인접하고 더 최상위인 상위 비트들 A[10:9]가 선택되고 어드레스(212)의 인터리빙 또는 메모리 채널들(Ch0 222_0, Ch1 222_1, 및 Ch2 222_2)로의 맵핑은 A[10:9]의 비트 조합들에 관한 2진 값들에 기초한다. 다시 한번, 비트 조합 A[10:9]=11에 관한 2진 값이 남을 것이고, 따라서, 제 3 세대, G=3(미도시)를 트리거링한다. 이 프로세스는, G=G_total에 관한 최종 세대에 도달될 때까지 되풀이하여 반복된다.
[0034]일반적으로, G = G_total인 최종 세대에서, 인터리빙이 수행되는 메모리 채널들의 수를 나타내는 데에 필요하게 될 어드레스 비트들의 최소 수를 결정함으로써 어드레스(212)의 비트들의 수치가 획득될 수 있다. 메모리 채널들의 수 N을 나타내는 데에 필요하게 될 어드레스 비트들(이하, "min_bits")의 이 최소 수가 수학식, "min_bits = ceiling(log2N)"에 의해 결정될 수 있다. "ceiling" 함수는, 실수를 가장 큰 다음 정수로 맵핑하는 잘 알려진 수학 함수이다. 예를 들어, 실수 "x"와 관련하여, ceiling(X)은 "x" 이상인 최소 정수이다. 따라서, N=3 메모리 채널들을 이용한 주어진 예의 경우, min_bits = ceiling(log23) =2이다. 따라서, 두 개의 최상위 비트들, 즉, 비트 A[31:30]이, G=G_total인 최종 세대에서 채널들을 맵핑하기 위해 선택된다. 이 최종 세대에서, 일단, A[31:30]=00이 채널(Ch0 222_0)로 맵핑되면, A[31:30] = 01 이 채널(Ch1 222_1)로 맵핑되고, A[31:30] = 10이 채널(Ch2 222_2)로 맵핑되면, 비트 조합과 관련된 나머지 2진 값, A[31:30] = 11이 유효 어드레스와 관련되지 않을 것이거나, 오히려, 파퓰레이트되지 않은 메모리를 포인팅할 것이라는 것을 인식할 것이다. 따라서, 맵핑 또는 인터리빙의 이러한 최종 세대가 완료되면, 모든 유효 어드레스 비트 조합들이 소진될 것이고, 3개의 메모리 채널들(Ch0 222_0, Ch1 222_1, 및 Ch2 222_2)에 걸친 균일한 인터리빙이 완료되었을 것이다.
[0035]상술한 예시적인 인터리빙 기술의 유리한 양상들이 종래 기술들과 예시적인 양상들을 대조시킴으로써 이해될 수 있다. 예를 들어, 3방향 인터리빙을 위한 종래의 3방향 해시 함수에서, 어드레스들을 3개의 메모리 채널들로 맵핑하기 위해서, 2개의 어드레스 비트들이 유사하게 선택될 수 있다. 다시 한번, 2개의 선택된 어드레스 비트들의 4개의 가능한 비트 조합들 중 3개와 관련되는 2진 값들이 3개의 메모리 채널들로 맵핑될 수 있다. 그러나, 상술된 예시적인 기술들과 대조적으로, 선택된 2개의 어드레스 비트 중 비트 조합과 관련된 나머지 이진 값들, 예를 들어, "11"이 3개의 메모리 채널들 중 하나로 재할당되는 경우, 3개의 메모리 채널들 중 하나, 이를 테면, 제 1 메모리 채널로 재할당되는 경우, 2개의 다른 채널들에 비해, 통계적으로 제 1 메모리 채널로 더 많은 액세스가 디렉팅될 것이라는 것을 용이하게 알 수 있을 것이다. 제 1 메모리 채널로 디렉팅되는 메모리 액세스들의 이러한 불균형한 수치 이외에도, 더 높은 비율의 전체 물리적 메모리 공간이 또한 제 1 메모리 채널로 할당될 필요가 있을 것이다. 전술한 바와 같이, 물리적 메모리 공간의 이러한 불균일한 할당은 바람직하지 않은 효과로 이어질 것이다. 반면에, 비트 조합들과 관련된 나머지 2진 값들이 맵핑을 위한 상이한 어드레스 비트들의 선택을 트리거링하는 예시적인 기술들에 따라 인터리빙 프로세스가 반복적으로 실시되는 경우, 종래의 기술들의 메모리 공간의 불균형적인 액세스들과 불균일한 할당이 방지된다. 예를 들어, 예시적인 기술들은, 메모리 공간을 낭비하거나 메모리 채널들을 불균일하게 파퓰레이트하지 않고 동일 크기의 동적 랜덤 액세스 메모리 구조들(DRAM들)의 사용을 허용할 수 있다. 특히, 3개 채널들(Ch0 222_0, Ch1 222_1, 및 Ch2 222_2) 모두가 정확히 동일한 수의 DRAM 셀들로 파퓰레이팅될 수 있다. 즉, 실시예들은 통계적 액세스 불균형뿐만 아니라 어드레스 공간 불균형과 연관된 문제들을 극복한다(특히, 참된(true) 물리적 메모리, 이를 테면, 메인 메모리이지만 캐시는 아닌 경우, 캐시들의 파퓰레이션은 물리적 메모리 어드레스 공간의 조직화에 대응하지 않을 수 있는 애플리케이션 특정 액세스 패턴들을 따를 수 있기 때문임).
[0036]N = 3인 메모리 채널들에 대한 상술된 예시적인 확산 함수는 이제, 임의의 수의 메모리 채널들까지 확장될 것이다. 예시적인 기술들의 기능적 정확성을 증명하기 위해서, 귀납적 추리 과정이 사용될 수 있다. 일반적으로, 귀납적 추리 또는 수학적 귀납법은 함수 또는 수학식을 증명하는 방법을 포함하며, 주어진 스테이트먼트 또는 제안은, 제 1 단계에서 주어진 스테이트먼트가 제 1 자연수에 대해 참이라는 것을 증명하고; 스테이트먼트가 제 1 자연수에 대해 참이라는 것을 증명한 것에 기초하여, 제 2 단계에서 주어진 스테이트먼트가 다음 또는 제 2 자연수에 대해 참이라는 것을 증명하고; 그리고 이로써, 주어진 스테이트먼트가 수학적 귀납법의 이론에 의해, 모든 자연수들에 대해 반드시 참이어야 한다는 것을 제 1 단계 및 제 2 단계로부터 추론함으로써 모든 자연수들에 대해 참인 것으로 증명된다.
[0037]보다 구체적으로 예시적인 실시예들에 대하여, 제 1 단계는 예시적인 실시예들에 따라 제 1 수의 메모리 채널들에 걸쳐 균일한 메모리 인터리빙을 확립하는 것을 포함할 수 있다. 이 제 1 단계의 경우, 제 1 수는 2의 거듭제곱일 수 있다(예를 들어, N=2^M이며, M은 정수임). 이 경우의 메모리 인터리빙은 간단하다(예를 들어, N = 2 또는 4이며, 예를 들어, n=1 또는 2 선택 어드레스 비트들을 이용하여, 각각, 2개 또는 4개의 메모리 채널들에 걸쳐 어드레스들을 균일하게 분배하는 것이 용이하다).
[0038]다음 또는 제 2 단계에서, N=2^M-1 메모리 채널들에 걸친 메모리 인터리빙의 경우가 고려된다. 이러한 제 2 단계는 3개의 메모리 채널들에 걸쳐 상술된 메모리 인터리빙에 대응할 수 있다(예를 들어, 여기서, M=2, N=2^2-1=3). 이러한 제 2 단계의 기능적 정확성은 이미 전술한 섹션들에서 상세하게 논의되었다.
[0039]따라서, 예시적인 기술들은, 2개의 자연수들에 대해 확립될 것 (즉, N = 2^M 및 N=2^M -1)으로 이해되며, 이는 수학적 귀납법들에 의한 증명의 필요한 제 1 및 제 2 단계들을 만족한다. 따라서, 예시적인 기술들이 이제, 수학적 귀납법의 이론에 기초하여, 모든 자연수의 메모리 채널들에 걸친 메모리 인터리빙에 대해 확립될 것이고 효과적이라는 것이 증명될 수 있다.
[0040]상술된 기술들의 수학적 공식이 이제, 예시적인 실시예들을 임의의 일반적인 수(N)의 메모리 채널들까지 연장시키는 것에 대해 논의될 것이다. 이를 달성하기 위해서, 메모리 인터리빙이 수행될 메모리 채널들의 수(N)가, 수학 공식, N =(L-K)/F로 표현된다. 본원에 사용된 바와 같이, L, K, 및 F는 자연수들이고, 여기서, 제 1 세대, 또는 G=1에서, L방향 확산(즉, L개의 메모리 채널들을 걸친 확산임)이 하나 이상의 어드레스 비트들의 선택된 세트를 이용하여 F번 적용된다. 예시적인 확산 함수를 적용하는 이 제 1 세대 이후, K방향들에 대응하는 비트 조합들관 관련된 2진 값들이 남아있게 될 수 있다. G=2인 제 2 세대에서, 상기 확산 프로세스가 반복되며, 즉, L방향 확산이 수행된다. 유사하게, L방향 확산을 포함하는 세대들의 수가, 오직 어드레스의 최상위 비트(MSB들)의 수치가 마지막 세대, G=G_total에 대응하게 남아있게 될 때까지 반복적으로 반복된다.
[0041]이제 (도 4a 내지 도 4c를 포함한) 도 4를 참고하면, N=5인 메모리 채널들(즉, Ch0-4)인 수치적 예시가 도시된다. 보다 구체적으로, N은 수학식 N =(1 - K)/F로 표현되며, L=16, K=1 및 F=3이므로, N=(16-1)/3=5이다. 이론적으로, L방향들 또는 16방향들이 4개의 선택된 어드레스 비트들, A[10:7]를 이용하여 획득될 수 있다. 제 1 세대, G=1에서, 5개의 메모리 채널들로의 비트들 A[10:7]의 어드레스 맵핑들과 관련된 2진 값들은 F=3회 랩어라운딩된다(wraparound). 즉, 어드레스 비트들 A[10:7]은, 값들(0-15)의 십진 범위로 나타내어지는 이진 비트 조합들과 관련된 16가지 가능한 2진 값들을 생성한다. 도 4a를 참고하면, 십진 값들 0, 5, 10에 대응하는 비트 조합들이 5개의 메모리 채널들 중 제 1 메모리 채널, Ch0으로 맵핑될 수 있고; 십진 값들 1, 6, 11을 제 2 메모리 채널 Ch1으로; 십진 값들 2, 7, 12를 제 3 메모리 채널 Ch2로; 십진 값 3, 8, 13을 제 4 메모리 채널 Ch3으로; 그리고 십진 값들 4, 9, 14를 제 5 메모리 채널 Ch4로 맵핑될 수 있다.
[0042]십진 값(15)에 대응하는 2진 비트 조합(즉, 2진 비트 조합 "1111")이 도달되면, 상기 맵핑 프로세스가, 도 4b에 도시된 바와 같이, 다음 세대, G=2에서, 다음 상위 어드레스 비트들, A [14:11]에 대해 반복된다. 상기 프로세스가, 마지막 세대, G=G_total까지 연속적인 세대들에서 반복적으로 반복된다. N=5의 경우, 마지막 세대에서 사용되는 가장 높은 차수의 비트들(min_bits)의 수치는, ceiling(log25)=3으로 주어진다.
[0043]도 4c에 도시된 바와 같이, 3 어드레스 비트들 A[31:29]이, 5개의 메모리 채널들에 걸친 인터리빙을 위해 마지막 세대, G=G_total에서 사용된다. 이러한 3개의 어드레스 비트들이 8개의 가능한 이진 비트 조합들을 생성할 수 있다. 그러나, 이러한 가능한 8개의 이진 비트 조합들 중 5개만이 대응하는 5개의 메모리 채널들로 맵핑되고; 나머지 3개의 이진 비트 조합들이 유효 맵핑에 대응하지 않고, 따라서, 어드레스 비트들 A [31:29]에 대한 이러한 최종적으로 남아 있는 조합들의 맵핑은 수행되지 않는다. 5개의 메모리 채널들에 대한 32 비트 어드레스 공간의 맵핑이 이제 완료된다. 따라서, 예시적인 실시예가, 연속 세대들에서 선택된 어드레스 비트들의 수치(N) 및 대응 반복적 맵핑의 상기 수학 공식에 기초하여 임의의 무작위적인 수 N의 메모리 채널들에 걸친 메모리 인터리빙으로 연장될 수 있다.
[0044](L-K)/F 방향들을 이용한 상기 케이스들에서의 인트라-채널 어드레싱과 관련하여, 각각의 라운드 또는 세대에서, 더 낮은 차수의 어드레스 비트들이 인트라-채널 어드레싱을 위해 사용된다. 보다 구체적으로, F>=1인 경우, 채널들에 걸친 인터리빙을 위해 사용된 선택된 어드레스 비트들이, 마지막 세대를 제외하고, 인트라-채널 어드레싱 비트들에 대해 선택된 어드레스 비트 + 최고(top) MSB 비트들(log2의 상위 라운드(L))로 대체된다. 마지막 세대에서, 마지막 세대가 사용되기 전의 것과 동일한 인트라-채널 어드레싱 함수가 사용된다. F=1인 경우, 단순화된 알고리즘이 사용되며, 여기서, 메모리 채널에 걸쳐 인터리빙하기 위한 어드레스 비트들이, 인트라-채널 어드레싱을 위한 마지막 세대를 제외하고, 최고 MSB 비트들로 대체된다. 마지막 세대에서, 최고 MSB 어드레스 비트들을 제외한 어드레스 비트들이 인트라-채널 어드레싱을 위해 사용된다.
[0045](도 5a 내지 도 5d를 포함한) 도 5를 참고하면, N=13개 메모리 채널들인 예시적인 인터리빙의 또 다른 예가 도시되며, 여기서, N은 (L - K)/F의 항으로 표현되며, 값들은 L = 16, K = 3, 및 F = 1이다. 이 경우, 제 1 세대에서, 도 5a에 도시된 바와 같이, 2진 비트 조합들관 관련된 16개의 가능한 2진 값들과 함께, 어드레스 비트들 A[10:7]이 제 1 세대, G=1에서 선택된다. 이들 중, 비트 조합들과 관련되는 13개의 이진 값들이 13개의 메모리 채널들(Ch0-Ch12)로 맵핑된다. 수치, min_bits=ceiling(log213)=3, 최상위 어드레스 비트들, 즉, 어드레스 비트들 A[31:29]가, 도 5b 내지 도 5d에 도시된 바와 같이, 마지막 세대, G=G_total에 사용된다.
[0046]또 다른 실시예들에서, 채널 확산 함수들이 조합될 수 있다. 예를 들어, 확산 함수들이 N방향 메모리 인터리빙(즉, N개의 메모리 채널들에 걸침)에 대해 그리고 유사하게, R방향들에 대해 계산되거나 또는 미리결정되는 경우, N방향 및 R방향 확산 함수들을 결합함으로서 N*R방향 메모리 인터리빙에 대한 결합 확산 함수가 획득될 수 있다.
[0047]도 6을 참조하면, 결합된 채널 확산 함수에 관한 실시예가 도시된다. 도시된 바와 같이, 세대 G=1에서, N=3에 대한 예시적인 메모리 인터리빙, 즉, 3개의 메모리 채널들에 걸친 인터리빙이, 앞서 설명된 바와 같이, 어드레스 비트들 A[7:8] 내지 A[31:30]를 이용하여 수행될 수 있다. 추가로, 양방향 인터리빙 또는 수치 R(=2)개의 메모리 채널들에 걸친 인터리빙이 어드레스 비트 A를 이용하여 수행될 수 있다. N 및 R방향들에 걸친 상기 인터리빙 기술들은, 어드레스 비트들 A[9:7]를 이용하여, 6개의 메모리 채널들(Ch0-Ch5)에 걸친 N*R=3*2 = 6방향 인터리빙을 수행하기 위해 결합될 수 있다.
[0048]추가로, 일부 예시적인 실시예들은 또한 "확산의 정도"를 제어하는 것에 관한 것일 수 있다. 본원에 사용된 바와 같이, 용어 "확산 정도"는 메모리 채널들에 걸친 메모리 트래픽 분산의 균일성을 지칭한다. 예를 들어, 확산 정도가 더 높은 것은 메모리 채널들에 걸친 트래픽의 분배에 있어서 균일성이 더 큰 것에 해당한다. 일부 양상들에서, 확산 정도는, 선택된 비트들의 비트 조합들을, 인터리빙이 요구되는 메모리 채널들로 맵핑하기 위해서, 최종 세대(즉, G=G_total)를 제외한, 모든 세대들 G에 걸쳐 선택되는 어드레스 비트들의 수치와 관련되는 것을 알 수 있다. 일반적으로, 더 큰 수의 선택된 어드레스 비트들을 이용하는 것은 메모리 채널들 걸친 확산에 있어서 불균일성을 감소시킬 수 있다. 선택된 어드레스 비트들의 수치는 메모리 공간의 어드레스 비트들(예를 들면, 상술된 실시예들에서, 32 비트)의 전체 수 및 확산이 요구되는 메모리 채널들의 수에 기초할 수 있다.
[0049](도 7a 및 도 7b를 포함하는) 도 7을 참고하면, 예시적인 채널 확산 함수들에서의 확산의 정도와 관련된 예시적인 양상들이 도시된다. 이러한 맥락에서, "트래픽 불균형 팩터"는, 주어진 수의 메모리 채널들 사이에 균일하게 분배되지 않을 메모리 액세스 트랜잭션들의 백분율에 관한 것이다. 보다 구체적으로, 트래픽 불균형 팩터는, 인터리빙을 위해 선택되는 어드레스 비트들의 수치, 또는 인터리빙의 정도를 증가시킴으로써 감소될 수 있다. 예를 들어, 트래픽 불균형 팩터는, 각각의 라운드 또는 세대에서 인터리빙을 위해 사용되는 어드레스 비트들의 서브셋의 비트들의 수치(또는 인터리빙 정도)가 2배인 경우, 절반까지 감소된다. N개의 메모리 채널들에 걸친 N방향 인터리빙의 경우(여기서, N은 (L - K)/F로 표현됨), 인터리빙의 정도는 "n"이다(즉, 각각의 세대에서 N개의 메모리 채널들에 걸쳐 인터리빙하기 위해서 "n"개의 어드레스 비트들이 선택된다). 도 7a에 도시된 바와 같이, 여기서, 3방향 메모리 인터리빙을 위해 도 3을 참고로하여 상술된 예에서 n=2이며, 어드레스 비트들 A[8:7]이 세대 G=1에서 선택되며, 선형 액세스 패턴을 위한 트래픽 불균형 인자가 식 K/2^n = 1/2^2 = 1/4로 제공된다. 인터리빙의 정도가 2배인, 즉, 2n인 경우, 도 7b에 도시된 바와 같이, 즉, 4 비트 A[10:7]가 세대 G=1에서 선택되며, 선형 액세스 패턴을 위한 트래픽 불균형 팩터가 K/2^(2n) = 1/2^4 = 1/16로 극적으로 감소된다. 따라서, 인터리빙의 정도, 또는 각각의 세대에서 인터리빙을 위해 선택될 어드레스 비트들의 수치 및 세대들의 총 수(G_total)는, 관련 실시예들에서 원하는 트래픽 불균형 인자를 고려함으로써 결정될 수 있다. 더 구체적으로, 예를 들어, 도 7에서, 트래픽 불균형 팩터를 결정하기 위해서, 어드레스 비트들의 수치는 G=G_total과 관련된 최종 세대를 제외한 각각의 세대 G에서 선택된 어드레스 비트들의 수치이다.
[0050]실시예들은 본원에 개시된 프로세스들, 함수들 및/또는 알고리즘들을 수행하기 위한 다양한 방법들을 포함한다는 것을 인식할 것이다. 예를 들어, 도 8에 도시된 바와 같이, 실시예는 메모리 인터리빙의 방법을 포함할 수 있다. 예시의 편의상, 동작들 중 일부는 도 2 내지 도 5의 엘리먼트들과 관련될 것이다. 그러나, 실시예들은 도 2 내지 도 5의 엘리먼트들로 제한되지 않는다. 방법은, 메모리 어드레스 비트들을, 연속적인 라운드들의 미리결정된 수(G_total)로 N개의 메모리 채널들로 반복적으로 맵핑하기 위한 블록(802)에서 시작한다. 각각의 라운드에서, 마지막 라운드(즉, 블록(804)에서 결정된 바와 같이, 즉, G=G_total)를 제외하고: N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 최하위 어드레스 비트들의 미리결정된 수(n)를 포함하는 어드레스 비트들의 서브셋을 선택하고(블록 806); (n) 어드레스 비트들의 선택된 서브셋에 의해 나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하고(블록 808); 최대 수 이내의 2진 값들의 동일할 수를 N개의 메모리 채널들 각각으로 맵핑하고(블록 810); 및 만약 N개의 메모리 채널들 각각으로 동일한 횟수(F)로 맵핑될 수 없는 2진 값들의 수가 (K<N)인 상태로 남아 있을 때에는, 다음 라운드로 진입한다(블록 812). 마지막 라운드는, 최상위 비트 어드레스 비트들의 서브셋을 N개의 메모리 채널들 각각으로 맵핑하는 것을 포함한다(마지막 수는 공식, 또는 수학식, ceiling(log2N)에 의해 획득됨)(블록 814). 도시된 흐름도는 단지 다양한 실시예들의 논의를 용이하게 하기 위한 것이라는 것을 인식할 것이다. 그러나 본원에 개시된 추가적인 요지/기능은 본 명세서에 개시된 다양한 실시예들 내에 포함되는, 명시적으로 예시되지 않은 다양한 방법들로 감소될 수 있다.
[0051]당업자는, 정보 및 신호들이 다양한 상이한 기술들 및 기법들을 이용하여 표현될 수 있다는 것을 이해할 것이다. 예를 들어, 전술한 설명을 통해 참조될 수 있는 데이터, 명령들, 코멘드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장 또는 자기 입자들, 광학장 또는 광학 입자들, 또는 이들의 임의의 조합으로 표현될 수 있다.
[0052]또한, 본원에 개시된 실시예와 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은, 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로 구현될 수 있다는 것을 당업자는 이해할 것이다. 하드웨어와 소프트웨어의 상호 교환 가능성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 이들의 기능성의 관점에서 일반적으로 상술되었다. 이러한 기능이 하드웨어 또는 소프트웨어로 구현되는지 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약들에 의존한다. 당업자는 각각의 특정 애플리케이션마다 다양한 방식들로 설명된 기능을 구현할 수 있지만, 이러한 구현 결정은 본 발명의 범위를 벗어나게 하는 것으로 해석되어서는 안 된다.
[0053]본원에 개시된 실시예들과 관련하여 설명된 방법들, 시퀀스들 및/또는 알고리즘들은 직접 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 당업계에 공지된 저장 매체의 임의의 다른 형태에 상주할 수 있다. 예시적인 저장 매체가 프로세서에 커플링되어, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기록할 수 있다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다.
[0054]따라서, 본 발명의 실시예가 2 이상의 메모리 채널들을 통해 메모리 어드레스들을 인터리빙하기 위한 방법을 구현하는 컴퓨터 판독가능 매체를 포함할 수 있다. 따라서, 본 발명은 도시된 예들에 한정되지 않으며, 본 명세서에 설명된 기능을 수행하기 위한 임의의 수단은 본 발명의 실시예들에 포함된다.
[0055]전술한 개시는 본 발명의 예시적인 실시예들을 나타내지만, 첨부된 청구항들에 의해 정의된 본 발명의 범위를 벗어나지 않고, 다양한 변경 및 수정이 본 명세서에서 이루어질 수 있다는 것을 주목해야 한다. 본 명세서에 기재된 본 발명의 실시예들에 따른 방법 청구항들의 기능들, 단계들 및/또는 동작들이 임의의 특정 순서로 수행될 필요는 없다. 또한, 본 발명의 엘리먼트들이 단수로 설명되거나 청구될 수 있지만, 단수에 대한 제한이 명시적으로 언급되지 않는 한 복수가 고려된다.
Claims (23)
- 메모리 인터리빙 방법으로서,
메모리 제어기에 의해, 메모리의 어드레스 비트들에 의해 나타내어지는 2진 값들을, 미리결정된 수(G_total)의 연속적인 라운드들에서 반복적으로 N개의 메모리 채널들로 맵핑하는 단계 ― 마지막 라운드를 제외한 각각의 라운드는:
상기 N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 미리결정된 수(n)의 최하위 어드레스 비트들을 포함하는 어드레스 비트들의 서브셋을 선택하는 단계;
(n) 어드레스 비트들의 선택된 서브셋에 의해 나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하는 단계;
상기 최대 수 이내의 동일한 수의 2진 값들을 상기 N개의 메모리 채널들의 각각으로 맵핑하는 단계; 및
만약 상기 N개의 메모리 채널들의 각각으로 동일한 횟수들로 맵핑될 수 없는 2진 값들의 수(K)가 N 미만으로 남아 있을 때에는, 다음 라운드로 진입하는 단계를 포함함 ―; 및
상기 마지막 라운드에서, 상기 메모리 제어기에 의해, 최상위 어드레스 비트들의 마지막 수(min_bits)에 의해 나타내어지는 2진 값들을 상기 N개의 메모리 채널들로 맵핑하는 단계를 포함하는, 메모리 인터리빙 방법. - 제 1 항에 있어서,
N, L, K 및 F는 식 N=(L-K)/F를 만족하고, F는 자연수이고 그리고 L개의 메모리 채널들에 걸친 L-방향 확산은 상기 미리결정된 수의 연속적인 라운드들의 각각의 라운드 동안 F번 적용되는, 메모리 인터리빙 방법. - 제 1 항에 있어서,
연속적인 라운드들에서의 반복적인 N*R 방향들로의 상기 메모리의 결합된 맵핑을 이용하여, 어드레스 비트들의 상이한 서브셋에 의해 나타내어지는 2진 값들을 제 2 수(R개)의 메모리 채널들로 맵핑하는 단계를 더 포함하는, 메모리 인터리빙 방법. - 제 1 항에 있어서,
후속 라운드에서 상기 어드레스 비트들의 서브셋은, 선행하는 라운드의 어드레스 비트들에 인접하고 그리고 상기 선행하는 라운드의 어드레스 비트들보다 더 상위(more significant) 어드레스 비트들인, 메모리 인터리빙 방법. - 제 1 항에 있어서,
상기 어드레스 비트들의 서브셋 내 비트들의 수가 증가되는 경우 트래픽 불균형 팩터가 감소되는, 메모리 인터리빙 방법. - 제 5 항에 있어서,
상기 어드레스 비트들의 서브셋 내 비트들의 수가 2배인 경우 상기 트래픽 불균형 팩터가 절반까지 감소되는, 메모리 인터리빙 방법. - 제 1 항에 있어서,
상기 미리결정된 수(G_total)는 프로그래밍가능한 상수인, 메모리 인터리빙 방법. - 제 1 항에 있어서,
상기 마지막 수는 수학식 ceiling(log2N)에 의해 결정되는, 메모리 인터리빙 방법. - 프로세싱 시스템으로서,
N개의 메모리 채널들을 포함하는 메모리;
상기 메모리의 어드레스 비트들에 의해 나타내어지는 2진 값들을, 미리결정된 수(G_total)의 연속적인 라운드들에서 반복적으로 상기 N개의 메모리 채널들로 맵핑하기 위한 수단 ― 상기 N개의 메모리 채널들로 맵핑하기 위한 수단은, 마지막 라운드를 제외한 각각의 라운드에 대해:
상기 N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 미리결정된 수(n)의 최하위 어드레스 비트들을 포함하는 어드레스 비트들의 서브셋을 선택하기 위한 수단;
(n) 어드레스 비트들의 선택된 서브셋에 의해 나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하기 위한 수단;
상기 최대 수 이내의 동일한 수의 2진 값들을 상기 N개의 메모리 채널들의 각각으로 맵핑하기 위한 수단; 및
만약 상기 N개의 메모리 채널들의 각각으로 동일한 횟수들로 맵핑될 수 없는 2진 값들의 수(K)가 N 미만으로 남아 있을 때에는, 다음 라운드로 진입하기 위한 수단을 포함함 ―; 및
상기 마지막 라운드에서, 최상위 어드레스 비트들의 마지막 수(min_bits)에 의해 나타내어지는 2진 값들을 상기 N개의 메모리 채널들로 맵핑하기 위한 수단을 포함하는, 프로세싱 시스템. - 제 9 항에 있어서,
N, L, K 및 F는 식 N=(L-K)/F를 만족하고, F는 자연수이고 그리고 L개의 메모리 채널들에 걸친 L-방향 확산은 상기 미리결정된 수의 연속적인 라운드들의 각각의 라운드 동안 F번 적용되는, 프로세싱 시스템. - 제 9 항에 있어서,
연속적인 라운드들에서의 반복적인 N*R 방향들로의 상기 메모리의 결합된 맵핑을 이용하여, 어드레스 비트들의 상이한 서브셋에 의해 나타내어지는 2진 값들을 제 2 수(R개)의 메모리 채널들로 맵핑하기 위한 수단을 더 포함하는, 프로세싱 시스템. - 프로세싱 시스템으로서,
프로세서;
상기 프로세서에 통신가능하게 연결된 메모리 ― 상기 메모리는 N개의 메모리 채널들을 포함함 ―; 및
상기 메모리의 어드레스 비트들에 의해 나타내어지는 2진 값들을, 미리결정된 수(G_total)의 연속적인 라운드들에서 반복적으로 상기 N개의 메모리 채널들로 맵핑하도록 구성된 메모리 제어기를 포함하고,
상기 메모리 제어기는, 마지막 라운드를 제외한 각각의 라운드에 대해:
상기 N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 미리결정된 수(n)의 최하위 어드레스 비트들을 포함하는 어드레스 비트들의 서브셋을 선택하고;
(n) 어드레스 비트들의 선택된 서브셋에 의해 나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하고;
상기 최대 수 이내의 동일한 수의 2진 값들을 상기 N개의 메모리 채널들의 각각으로 맵핑하고;
만약 상기 N개의 메모리 채널들의 각각으로 동일한 횟수들로 맵핑될 수 없는 2진 값들의 수(K)가 N 미만으로 남아 있을 때에는, 다음 라운드로 진입하고; 그리고
상기 마지막 라운드에서, 최상위 어드레스 비트들의 마지막 수(min_bits)에 의해 나타내어지는 2진 값들을 상기 N개의 메모리 채널들로 맵핑하도록
구성되는, 프로세싱 시스템. - 제 12 항에 있어서,
N, L, K 및 F는 식 N=(L-K)/F를 만족하고, F는 자연수이고 그리고 L개의 메모리 채널들에 걸친 L-방향 확산은 상기 미리결정된 수의 연속적인 라운드들의 각각의 라운드 동안 F번 적용되는, 프로세싱 시스템. - 제 12 항에 있어서,
상기 메모리 제어기는 추가로, 연속적인 라운드들에서의 반복적인 N*R 방향들로의 상기 메모리의 결합된 맵핑을 이용하여, 어드레스 비트들의 상이한 서브셋에 의해 나타내어지는 2진 값들을 제 2 수(R개)의 메모리 채널들로 맵핑하도록 구성되는, 프로세싱 시스템. - 제 12 항에 있어서,
후속 라운드에서 상기 어드레스 비트들의 서브셋은, 선행하는 라운드의 어드레스 비트들에 인접하고 그리고 상기 선행하는 라운드의 어드레스 비트들보다 더 상위 어드레스 비트들인, 프로세싱 시스템. - 제 12 항에 있어서,
상기 어드레스 비트들의 서브셋 내 비트들의 수가 증가되는 경우 트래픽 불균형 팩터가 감소되는, 프로세싱 시스템. - 제 16 항에 있어서,
상기 어드레스 비트들의 서브셋 내 비트들의 수가 2배인 경우 상기 트래픽 불균형 팩터가 절반까지 감소되는, 프로세싱 시스템. - 제 12 항에 있어서,
상기 미리결정된 수(G_total)는 프로그래밍가능한 상수인, 프로세싱 시스템. - 제 18 항에 있어서,
상기 미리결정된 수(G_total)는 상기 프로세서에 연결된 레지스터를 통해 프로그래밍가능한, 프로세싱 시스템. - 제 12 항에 있어서,
상기 메모리 제어기는 추가로, 수학식 ceiling(log2N)에 기초하여 상기 마지막 수를 결정하도록 구성되는, 프로세싱 시스템. - 코드를 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서,
상기 코드는, 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금, 상기 프로세서에 연결된 메모리를 인터리빙하기 위한 동작들을 수행하게 하고,
상기 메모리는 N개의 메모리 채널들을 포함하고,
상기 비일시적 컴퓨터 판독가능 저장 매체는:
상기 메모리의 어드레스 비트들에 의해 나타내어지는 2진 값들을, 미리결정된 수(G_total)의 연속적인 라운드들에서 반복적으로 상기 N개의 메모리 채널들로 맵핑하기 위한 코드 ― 상기 맵핑하기 위한 코드는, 마지막 라운드를 제외한 각각의 라운드에 대해,
상기 N개의 메모리 채널들에 걸쳐 인터리빙하기 위해 사용되지 않았던 미리결정된 수(n)의 최하위 어드레스 비트들을 포함하는 어드레스 비트들의 서브셋을 선택하기 위한 코드;
(n) 어드레스 비트들의 선택된 서브셋에 의해 나타내어질 수 있는 고유 2진 값들의 최대 수(L)를 결정하기 위한 코드;
상기 최대 수 이내의 동일할 수의 2진 값들을 상기 N개의 메모리 채널들의 각각으로 맵핑하기 위한 코드; 및
만약 상기 N개의 메모리 채널들의 각각으로 동일한 횟수들로 맵핑될 수 없는 2진 값들의 수(K)가 N 미만으로 남아 있을 때에는, 다음 라운드로 진입하기 위한 코드를 포함함 ―; 및
상기 마지막 라운드에서, 최상위 어드레스 비트들의 마지막 수(min_bits)에 의해 나타내어지는 2진 값들을 상기 N개의 메모리 채널들로 맵핑하기 위한 코드를 포함하는, 코드를 포함하는 비일시적 컴퓨터 판독가능 저장 매체. - 제 21 항에 있어서,
N, L, K 및 F는 식 N=(L-K)/F를 만족하고, F는 자연수이고 그리고 L개의 메모리 채널들에 걸친 L-방향 확산은 상기 미리결정된 수의 연속적인 라운드들의 각각의 라운드 동안 F번 적용되는, 코드를 포함하는 비일시적 컴퓨터 판독가능 저장 매체. - 제 21 항에 있어서,
연속적인 라운드들에서의 반복적인 N*R 방향들로의 상기 메모리의 결합된 맵핑을 이용하여, 어드레스 비트들의 상이한 서브셋에 의해 나타내어지는 2진 값들을 제 2 수(R개)의 메모리 채널들로 맵핑하기 위한 코드를 포함하는, 코드를 포함하는 비일시적 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361883833P | 2013-09-27 | 2013-09-27 | |
US61/883,833 | 2013-09-27 | ||
US14/251,626 | 2014-04-13 | ||
US14/251,626 US9495291B2 (en) | 2013-09-27 | 2014-04-13 | Configurable spreading function for memory interleaving |
PCT/US2014/055449 WO2015047753A1 (en) | 2013-09-27 | 2014-09-12 | Configurable spreading function for memory interleaving |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160061387A KR20160061387A (ko) | 2016-05-31 |
KR101779545B1 true KR101779545B1 (ko) | 2017-09-18 |
Family
ID=52741322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167010742A KR101779545B1 (ko) | 2013-09-27 | 2014-09-12 | 메모리 인터리빙을 위한 구성가능한 확산 함수 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9495291B2 (ko) |
EP (1) | EP3049935B1 (ko) |
JP (1) | JP6105814B2 (ko) |
KR (1) | KR101779545B1 (ko) |
CN (1) | CN105518632B (ko) |
WO (1) | WO2015047753A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102464801B1 (ko) * | 2015-04-14 | 2022-11-07 | 삼성전자주식회사 | 반도체 장치의 동작 방법 및 반도체 시스템 |
CN107180001B (zh) * | 2016-03-10 | 2020-02-21 | 华为技术有限公司 | 访问动态随机存储器dram的方法和总线 |
US10140223B2 (en) | 2016-06-27 | 2018-11-27 | Qualcomm Incorporated | System and method for odd modulus memory channel interleaving |
US10037306B2 (en) * | 2016-09-01 | 2018-07-31 | Qualcomm Incorporated | Approximation of non-linear functions in fixed point using look-up tables |
US10642733B1 (en) * | 2018-07-12 | 2020-05-05 | Lightbits Labs Ltd. | System and method for memory interface load balancing |
EP3822796B1 (en) * | 2018-07-31 | 2023-01-18 | Huawei Technologies Co., Ltd. | Memory interleaving method and device |
US10990517B1 (en) * | 2019-01-28 | 2021-04-27 | Xilinx, Inc. | Configurable overlay on wide memory channels for efficient memory access |
CN112395216A (zh) | 2019-07-31 | 2021-02-23 | 北京百度网讯科技有限公司 | 用于存储管理的方法、装置、设备和计算机可读存储介质 |
KR20210079894A (ko) * | 2019-12-20 | 2021-06-30 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
JP2024044793A (ja) * | 2022-09-21 | 2024-04-02 | キオクシア株式会社 | メモリシステム、制御装置および方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110047346A1 (en) | 2009-08-19 | 2011-02-24 | Sun Microsystems, Inc. | Efficient interleaving between a non-power-of-two number of entities |
US20110161782A1 (en) | 2009-12-30 | 2011-06-30 | Nxp B.V. | N-way parallel turbo decoder architecture |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6097446A (ja) * | 1983-10-31 | 1985-05-31 | Mitsubishi Electric Corp | 記憶装置 |
US5341486A (en) * | 1988-10-27 | 1994-08-23 | Unisys Corporation | Automatically variable memory interleaving system |
US5479624A (en) * | 1992-10-14 | 1995-12-26 | Lee Research, Inc. | High-performance interleaved memory system comprising a prime number of memory modules |
US5924111A (en) * | 1995-10-17 | 1999-07-13 | Huang; Chu-Kai | Method and system for interleaving data in multiple memory bank partitions |
US6381669B1 (en) * | 1999-12-27 | 2002-04-30 | Gregory V. Chudnovsky | Multi-bank, fault-tolerant, high-performance memory addressing system and method |
JP2003228517A (ja) * | 2002-02-01 | 2003-08-15 | Matsushita Electric Ind Co Ltd | メモリ装置 |
US6941438B2 (en) | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
US20050172091A1 (en) | 2004-01-29 | 2005-08-04 | Rotithor Hemant G. | Method and an apparatus for interleaving read data return in a packetized interconnect to memory |
US8190809B2 (en) * | 2004-11-23 | 2012-05-29 | Efficient Memory Technology | Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines |
KR100699491B1 (ko) * | 2005-07-19 | 2007-03-26 | 삼성전자주식회사 | 인터리빙 방법 및 그 장치 |
EP1967955A4 (en) * | 2005-12-28 | 2009-10-21 | Fujitsu Ltd | METHOD, PROGRAM AND DEVICE FOR MEMORY CONTROL |
US20080250212A1 (en) | 2007-04-09 | 2008-10-09 | Ati Technologies Ulc | Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information |
US8078791B1 (en) * | 2007-04-16 | 2011-12-13 | Juniper Networks, Inc. | Ordering refresh requests to memory |
US8051239B2 (en) * | 2007-06-04 | 2011-11-01 | Nokia Corporation | Multiple access for parallel turbo decoder |
US8438320B2 (en) | 2007-06-25 | 2013-05-07 | Sonics, Inc. | Various methods and apparatus for address tiling and channel interleaving throughout the integrated system |
US8751769B2 (en) * | 2007-12-21 | 2014-06-10 | Qualcomm Incorporated | Efficient address generation for pruned interleavers and de-interleavers |
US20120054455A1 (en) | 2010-08-31 | 2012-03-01 | Qualcomm Incorporated | Non-Uniform Interleaving Scheme In Multiple Channel DRAM System |
US20120137090A1 (en) * | 2010-11-29 | 2012-05-31 | Sukalpa Biswas | Programmable Interleave Select in Memory Controller |
-
2014
- 2014-04-13 US US14/251,626 patent/US9495291B2/en active Active
- 2014-09-12 KR KR1020167010742A patent/KR101779545B1/ko active IP Right Grant
- 2014-09-12 EP EP14786552.1A patent/EP3049935B1/en not_active Not-in-force
- 2014-09-12 WO PCT/US2014/055449 patent/WO2015047753A1/en active Application Filing
- 2014-09-12 JP JP2016516553A patent/JP6105814B2/ja not_active Expired - Fee Related
- 2014-09-12 CN CN201480049360.9A patent/CN105518632B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110047346A1 (en) | 2009-08-19 | 2011-02-24 | Sun Microsystems, Inc. | Efficient interleaving between a non-power-of-two number of entities |
US20110161782A1 (en) | 2009-12-30 | 2011-06-30 | Nxp B.V. | N-way parallel turbo decoder architecture |
Also Published As
Publication number | Publication date |
---|---|
US9495291B2 (en) | 2016-11-15 |
JP6105814B2 (ja) | 2017-03-29 |
EP3049935A1 (en) | 2016-08-03 |
CN105518632A (zh) | 2016-04-20 |
KR20160061387A (ko) | 2016-05-31 |
CN105518632B (zh) | 2019-07-09 |
US20150095595A1 (en) | 2015-04-02 |
WO2015047753A1 (en) | 2015-04-02 |
EP3049935B1 (en) | 2018-05-30 |
JP2016536658A (ja) | 2016-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101779545B1 (ko) | 메모리 인터리빙을 위한 구성가능한 확산 함수 | |
US11487676B2 (en) | Address mapping in memory systems | |
EP3176688B1 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
US9223693B2 (en) | Memory system having an unequal number of memory die on different control channels | |
US9465731B2 (en) | Multi-layer non-volatile memory system having multiple partitions in a layer | |
US8873284B2 (en) | Method and system for program scheduling in a multi-layer memory | |
US9734911B2 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
US20100082917A1 (en) | Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method | |
US8848445B2 (en) | System and method for minimizing write amplification while maintaining sequential performance using logical group striping in a multi-bank system | |
EP1653364A2 (en) | System and method for dynamic memory interleaving and de-interleaving | |
CN110175086B (zh) | 存储器件、半导体器件、半导体系统及耗损均衡设备 | |
CN106055495B (zh) | 用于控制半导体装置的方法 | |
US20170109090A1 (en) | System and method for page-by-page memory channel interleaving | |
CN104102586B (zh) | 一种地址映射处理的方法、装置 | |
KR20070101340A (ko) | 뱅킹된 메모리를 동적으로 관리하는 방법 및 장치 | |
US20170108914A1 (en) | System and method for memory channel interleaving using a sliding threshold address | |
US10083120B2 (en) | Memory system, and address mapping method and access method thereof | |
TW201907288A (zh) | 記憶體系統及使用其的耗損均衡方法 | |
US9921969B2 (en) | Generation of random address mapping in non-volatile memories using local and global interleaving | |
TWI473014B (zh) | 增強型微處理器或微控制器 | |
WO2017065926A1 (en) | System and method for page-by-page memory channel interleaving | |
US20080301400A1 (en) | Method and Arrangement for Efficiently Accessing Matrix Elements in a Memory | |
JP5958195B2 (ja) | 仮想記憶管理システム、仮想記憶管理装置、仮想記憶初期化方法および仮想記憶初期化プログラム | |
CN105373491A (zh) | 多通道存储器 | |
US12008248B2 (en) | Systems, methods, and devices for utilization aware memory allocation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
GRNT | Written decision to grant |