KR20140048186A - 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법 - Google Patents

메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법 Download PDF

Info

Publication number
KR20140048186A
KR20140048186A KR1020147000010A KR20147000010A KR20140048186A KR 20140048186 A KR20140048186 A KR 20140048186A KR 1020147000010 A KR1020147000010 A KR 1020147000010A KR 20147000010 A KR20147000010 A KR 20147000010A KR 20140048186 A KR20140048186 A KR 20140048186A
Authority
KR
South Korea
Prior art keywords
entry
transaction
transactions
list
access timing
Prior art date
Application number
KR1020147000010A
Other languages
English (en)
Other versions
KR101883155B1 (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 KR20140048186A publication Critical patent/KR20140048186A/ko
Application granted granted Critical
Publication of KR101883155B1 publication Critical patent/KR101883155B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)

Abstract

불균일 액세스 타이밍 특성을 갖는 형태의 메모리 액세스에 대한 액세스를 제어하는 메모리 콘트롤러가 제공된다. 메모리 콘트롤러는 적어도 1개의 트랜잭션 소스로부터 발행된 트랜잭션들을 수신하는 인터페이스를 갖고, 각각의 트랜잭션은 이 트랜잭션에 대해 액세스될 메모리 어드레스를 명시하고 이 트랜잭션과 관련된 우선순위 표시를 포함한다. 버퍼를 사용하여 메모리 장치로 아직 발행되지 않은 인터페이스에 의해 수신된 트랜잭션들을 계류중인 트랜잭션들로서 일시적으로 기억하고, 버퍼는 적어도 1개의 우선순위 기반의 순서 목록과 적어도 1개의 액세스 타이밍 순서 목록을 포함하는 기억된 계류중인 트랜잭션들에 대한 복수의 순서 목록들을 유지한다. 각각의 수선순위 기반의 순서 목록은 다수의 엔트리를 갖고, 각각의 엔트리는 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 엔트리는 관련된 계류중인 트랜잭션의 우선순위 표시에 근거하여 그것의 우선순위 기반의 순서 목록 내에서 정렬된다. 각각의 액세스 타이밍 수서 목록은 다수의 엔트리를 갖고, 각각의 엔트리는 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 액세스 타이밍 순서 목록과 관련된 계류중인 트랜잭션들은, 트랜잭션들의 그룹에 있는 1개의 트랜잭션의의 메모리 어드레스가 액세스되면 메모리장치에 의해 효율적으로 액세스될 수 있는 메모리 어드레스들을 갖는 복수의 트랜잭션들을 구성한다, 중재회로는 중재동작을 행하고, 이 중재동작 중에 복수의 순서 목록들을 참조하여 계류중인 트랜잭션들로부터 메모리 장치에 발행될 승리 트랜잭션을 선택한다. 그후, 승리 트랜잭션에 대한 엔트리가 복수의 순서 목록으로부터 제거된다. 중재동작이 행해질 때, 이전에 선택된 승리 트랜잭션이 특정한 액세스 타이밍 순서 목록에 엔트리를 갖고 액세스 타이밍 순서 목록이 아직 비어 있지 않은 경우에, 중재동작은, 소정의 예외 상태의 부재시에, 이 액세스 타이밍 순서 목록에 엔트리를 갖는 계류중인 트랜잭션들 중에서 1개를 승리 트랜잭션으로서 선택하도록 구성된다. 이와 같은 접근방법은 트랜잭션들의 재정렬 사이에 균형이 취해질 수 있도록 하여 메모리 액세스 시간을 향상시키는 한편, 다양한 트랜잭션들의 우선순위가 고려되도록 보장한다.

Description

메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법{A MEMORY CONTROLLER AND METHOD OF OPERATION OF SUCH A MEMORY CONTROLLER}
본 발명은, 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법에 관한 것으로, 특히 메모리 어드레스를 액세스하는데 걸리는 시간이 메모리장치 내부에서의 이전의 액세스 활동에 의존하는 불균일한 액세스 타이밍 특성을 갖는 종류의 메모리장치에 대한 액세스를 제어하는 메모리 콘트롤러에 관한 것이다.
다수의 최근의 데이터 처리 시스템은 불균일한 액세스 타이밍 특성을 갖는 메모리장치를 사용한다. 예를 들어, 메모리장치 내부의 특정한 행의 메모리 어드레스를 액세스할 수 있도록 하는데 초기의 시간 오버헤드가 존재하는 일이 빈번하지만, 이 행 내부의 어드레스들에 대해 액세스들의 시퀀스가 일어나면, 다수의 액세스들에 걸쳐 이 초기 오버헤드가 줄어들 수 있다. 그러나, 시퀀스 내부의 각각의 액세스가 다른 행을 액세스하면, 각각의 액세스에 대해 행을 인에이블시키기 위한 오버헤드가 별개로 일어남으로써, 동일한 행을 모두 액세스하는 액세스들의 시퀀스에 비해, 이와 같은 액세스들의 시퀀스에 대해 더 긴 액세스 타이밍 특성이 발생한다.
전술한 특성을 나타내는 한가지 종류의 메모리장치는, 복수의 뱅크를 구비하고 각각의 뱅크가 복수의 행을 포함하며 이 행이 액세스되기 전에 각각의 행을 활성화시킬 필요가 있는 메모리장치이다. 이와 같은 메모리장치의 일례는 DRAM(Dynamic Random Access Memory) 메모리장치이다. 행이 액세스되기 전에 각각의 행을 활성화할 필요가 있다는 사실을 고려하면, 트랜잭션에 의해 명시된 특정한 메모리 어드레스에 대한 액세스 타이밍이 이 메모리 어드레스를 포함한 행이 현재 이미 활성화되었는지 아닌지에 의존하여 변하게 된다는 것을 알 수 있다.
행이 액세스되기 전에 이 행을 활성화하는 것이 필요하다는 것은, 전술한 것과 같은 성능 불이익을 일으킬 뿐만 아니라, 행 활성화 처리를 행할 때 소비되는 전력으로 인해 소비전력 불이익도 추가로 일으킨다. 따라서, 이와 같은 메모리에 발행된 트랜잭션들을 재정렬(reorder)하여, 액세스 시간을 향상시키도록 시도하고, 특히 가능한 경우에는 특정한 행이 활성화되었을 때 이 행에 대해 다수의 액세스가 일어나도록 보정하는 것이 바람직할 것으로 생각된다. Proceedings of the 27th International Symposium on Computer Architecture 2000, 14 June 2000, pages 128-138에 실린 문헌 "Memory Access Scheduling" by S Rixner et al, Computer Systems Laboratory, Stanford University, California, USA에는, DRAM 아키텍처와, DRAM의 불균일한 액세스 시간을 이용하기 위해 메모리 동작을 재정렬하는데 사용될 수 있는 다수의 메모리 액세스 스케줄링 기술이 기재되어 있다.
다양한 종류의 시스템, 예를 들어 미디어 처리 시스템에서 더 높은 성능을 달성하는데 있어서 메모리 대역폭이 제한 인자로 되기 때문에, 관찰된 액세스 시간을 줄이기 위해 메모리 동작을 재정렬하는 이와 같은 기술은 매우 유익할 수 있다. 그러나, 다수의 실제의 응용에서는, 이와 같은 메모리장치를 포함하는 시스템 내부의 다른 지표들도 고려할 필요가 있다. 특히, 메모리 액세스 타이밍을 최적화하기 위해 메모리 액세스 재정렬이 별개로 행해지는 경우에는, 이와 같은 재정렬이 용납할 수 없는 수준으로 시스템의 다른 지표에 악영향을 미칠 수도 있는 가능성이 존재한다.
일례로서, 어떤 형태의 우선순위 표시가 데이터 처리 시스템 내부에서 발행된 각각의 트랜잭션과 관련되는 것은 흔한 일이다. 이것은 트랜잭션을 내리는 마스터장치에 의해 추가된 명시적인 우선순위 표시이거나, 트랜잭션으로부터 추론된 암시적인 우선순위 표시일 수도 있다. 예를 들면, 특정한 마스터장치의 활동이 다른 마스터장치에 의해 행해지고 있는 활동에 비해 더 중요하므로(또는 적어도 대기시간을 더 잘 견디지 못하므로(latency intolerant)), 이와 같은 마스터장치에 의해 발행된 트랜잭션이 추론된 더 높은 우선순위를 갖도록 구성될 수 있다는 것을 알 수 있다. 이와 같은 우선순위 표시는 이들 트랜잭션에 필요한 서비스 품질을 나타내는 경우가 많으므로, 액세스 시간을 줄이기 위해 메모리장치에 발행된 트랜잭션들을 재정렬하려는 욕구가 이와 같은 서비스 품질 요구사항과 균형이 취해지도록 보장하는 것이 중요하다.
따라서, 이와 같은 균형이 달성될 수 있도록 하는 개량된 메모리 콘트롤러를 제공하는 것이 바람직할 것이다.
제 1 면에 따르면, 본 발명은, 메모리 어드레스를 액세스하는데 걸리는 시간이 메모리장치 내부에서의 이전의 액세스 활동에 의존하는 불균일한 액세스 타이밍 특성을 갖는 상기 메모리장치에 대한 액세스를 제어하는 메모리 콘트롤러로서, 적어도 1개의 트랜잭션 소스로부터 발행된 트랜잭션들로서, 각각의 트랜잭션이 이 트랜잭션에 대해 액세스될 메모리 어드레스를 명시하고 이 트랜잭션과 관련된 우선순위 표시를 포함하는 상기 트랜잭션들을 수신하도록 구성된 인터페이스와, 상기 메모리 콘트롤러로부터 상기 메모리장치에 아직 발행되지 않은 상기 인터페이스에 의해 수신된 트랜잭션들을 계류중인 트랜잭션들로서 일시적으로 기억하고, 적어도 1개의 우선순위 기반의 순서(ordered) 목록과 적어도 1개의 액세스 타이밍 순서 목록을 포함하는 상기 기억된 계류중인 트랜잭션들에 대한 복수의 순서 목록들을 유지하는 기억장치를 구비하고, 각각의 우선순위 기반의 순서 목록은 다수의 엔트리를 갖고, 각각의 엔트리는 상기 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 엔트리는 관련된 계류중인 트랜잭션의 우선순위 표시에 근거하여 상기 엔트리의 우선순위 기반 순서 목록 내부에 정렬되고, 각각의 액세스 타이밍 순서 목록은 다수의 엔트리를 갖고, 각각의 엔트리는 상기 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 액세스 타이밍 순서 목록과 관련된 상기 계류중인 트랜잭션들은, 트랜잭션들의 그룹 내부의 1개의 트랜잭션의 메모리 어드레스가 액세스되면, 상기 불균일 액세스 타이밍 특성을 고려하여 상기 메모리장치에 의해 효율적으로 액세스될 수 있는 메모리 어드레스들을 갖는 상기 트랜잭션들의 그룹을 구성하고, 상기 메모리 콘트롤러는, 중재(arbitration) 동작을 행하도록 구성된 중재회로를 더 구비하고, 상기 중재동작 중에 상기 복수의 순서 목록들을 참조하여 상기 계류중인 트랜잭션들로부터 상기 메모리장치에 발행될 승리 트랜잭션(winning transaction)을 선택하고, 상기 기억장치는 상기 복수의 순서 목록들로부터 상기 승리 트랜잭션에 대한 엔트리를 제거하도록 구성되고, 상기 중재동작이 행해질 때, 상기 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖고 상기 적어도 1개의 액세스 타이밍 순서 목록이 아직 비어있지 않은 경우에, 상기 중재동작은, 소정의 예외 상태가 존재하지 않으면, 상기 적어도 1개의 액세스 타이밍 순서 목록에 엔트리를 갖는 상기 계류중인 트랜잭션들 중에서 1개를 상기 승리 트랜잭션으로서 선택하도록 구성된, 메모리 콘트롤러를 제공한다.
본 발명에 따르면, 2가지 다른 종류의 순서 목록을 사용하여 메모리장치로 디스패치될 것을 대기하고 있는 계류중인 트랜잭션들을 추적하며, 이때 첫 번째 종류의 목록은 우선순위 기반의 순서 목록이고 두 번째 종류의 목록은 액세스 타이밍 순서 목록이다. 중재회로는 중재동작을 행할 때 이들 두가지 종류의 목록을 참조하여 메모리장치에 발행될 승리 트랜잭션을 선택하도록 구성된다. 액세스 타이밍 순서 목록들의 1개로부터 승리 트랜잭션이 선택되면, 중재회로는 (소정의 예외 상태가 없을 때) 이 액세스 타이밍 순서 목록으로부터 그 다음의 승리 트랜잭션들을 선택하도록 구성되는 한편, 이 액세스 타이밍 순서 목록은 계류중인 트랜잭션들에 대한 엔트리들을 계속 포함한다.
이와 같은 접근방법은, 메모리장치에서의 액세스 타이밍을 향상시키기 위한 계류중인 트랜잭션들의 재정렬과, 높은 우선순위 트랜잭션들이 지나치게 지연되지 않도록 보장하기 위해 계류중인 트랜잭션들과 관련된 우선순위 표시를 고려할 필요성 사이에서 균형이 달성될 수 있도록 한다.
일 실시예에서, 상기 중계동작이 마지막으로 행해졌을 때 선택된 상기 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록 중에서 1개에 엔트리를 갖지 않거나, 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖지만 적어도 1개의 액세스 타이밍 순서 목록이 비어 있는 경우에, 상기 중재동작은 상기 적어도 1개의 우선순위 기반의 순서 목록들 중에서 1개 내부의 선두 위치에 있는 엔트리를 갖는 상기 계류중인 트랜잭션을 상기 승리 트랜잭션으로서 선택하도록 구성된다. 이와 같은 구성은, 더 높은 우선순위의 계류중인 트랜잭션들이 시기적절하게 서비스되도록 보장한다.
일 실시예에서는, 특정한 액세스 타이밍 순서 목록에 의해 참조된 엔트리들의 수가 상당히 커지더라도, 높은 우선순위의 계류중인 트랜잭션들이 시기적절하게 서비스되도록 보장하기 위해 추가적인 단계들이 취해질 수 있다. 특히, 일 실시예에서, 상기 메모리 콘트롤러는, 상기 액세스 타이밍 순서 목록들 중에서 1개로부터 선택된 연속된 승리 트랜잭션들의 수를 적어도 모니터링하고 임계 상태의 발생시에 리미터 신호를 어서트(assert)하도록 구성된 리미터회로를 더 구비한다. 상기 리미터 신호가 어서트되면 소정의 예외 상태가 검출되고, 그후 중재회로는, 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖고 적어도 1개의 액세스 타이밍 순서 목록이 여전히 비어 있지 않더라도, 상기 리미터 신호의 어서션(assertion)에 응답하여, 다음의 중재동작의 실행이 상기 적어도 1개의 우선순위 기반의 순서 목록들 중에서 1개 내부의 선두 위치에 엔트리를 갖는 상기 계류중인 트랜잭션을 상기 승리 트랜잭션으로서 선택하게 한다.
이와 같은 일 실시예에서는, 임계 상태가 단순히 최대 계수값의 형태를 취할 수도 있으며, 이때 승리 트랜잭션이 우선순위 기반의 순서 목록으로부터 선택될 때마다 계수값이 리셋되고, 승리 트랜잭션이 액세스 타이밍 순서 목록으로부터 선택될 때마다 계수값이 증분된다. 따라서, 중재회로가 특정한 액세스 타이밍 순서 목록으로부터 승리 요청을 연속적으로 선택하는 경우에, 임계 상태에 도달하는 시점까지 계수값이 증가된다는 것을 알 수 있다. 그후, 임계 상태에 도달하면, 액세스 타이밍 순서 목록이 아직 비어 있지 않더라도, 중재회로가 관련된 우선순위 기반의 순서 목록으로부터 다음의 승리 트랜잭션을 선택한다.
변형된 실시예에서는, 리미터 회로가 단순히 카운터의 형태를 취하는 것이 아니라, 감소하는 우선순위를 특정한 액세스 타이밍 순서 목록으로부터 선택된 승리 트랜잭션들의 수의 증가와 연관시켜도 된다. 그후, 리미터 회로에 관련된 우선순위 기반의 순서 목록 내부의 최고 우선순위의 계류중인 트랜잭션의 표시가 주어지는 경우에, 리미터 회로는, 액세스 타이밍 순서 목록으로부터 승리 트랜잭션들을 선택하는 것을 중지하고 그 대신에 우선순위 기반의 순서 목록으로부터 다음의 승리 트랜잭션을 선택하는 것으로 전환하는 것이 적당한 시점을 결정할 수 있다.
우선순위 기반의 순서 목록은 다양한 방식으로 구성될 수 있다. 그러나, 일 실시예에서, 각각의 우선순위 기반의 순서 목록은 다수의 서브목록(sub-list)들을 포함하고, 각각의 엔트리가 1개의 서브목록 내에 존재하여 각각의 서브목록의 엔트리들이 동일한 우선순위 표시를 갖는 트랜잭션들과 관련되고, 상기 서브목록들은 상기 우선순위 표시에 근거하여 그들의 우선순위 기반의 순서 목록 내부에 정렬되고, 각각의 서브목록 내에서 이 서브목록의 엔트리들은 상기 인터페이스에 의한 관련된 트랜잭션들의 시간적 수신 순서에 근거하여 정렬된다. 따라서, 이와 같은 실시예에서는, 각각의 우선순위 기반의 순서 목록은 계류중인 트랜잭션과 관련된 우선순위 표시값마다 1개씩 서브목록들의 세트를 포함하고, 동일한 우선순위 표시값을 갖는 트랜잭션들 사이에서 시간적인 순서가 유지된다.
일 실시예에서는, 각각의 액세스 타이밍 순서 목록 내에서, 상기 인터페이스에 의한 관련된 계류중인 트랜잭션들의 시간적인 수신 순서에 근거하여 상기 엔트리들이 정렬된다.
메모리 장치는 다양한 형태를 취할 수 있다. 그러나, 일 실시예에서, 상기 메모리장치는 복수의 뱅크들을 구비하고, 상기 적어도 1개의 우선순위 기반의 순서 목록은, 계류중인 트랜잭션이 존재하는 각각의 뱅크에 대한 별개의 우선순위 기반의 순서 목록을 포함한다.
더구나, 일 실시예에서, 각각의 뱅크는 복수의 행들을 구비하고, 각각의 행은 이 행이 액세스되기 전에 활성화될 필요가 있어, 명시된 메모리 어드레스에 대한 액세스 타이밍이 이 명시된 메모리 어드레스를 포함하는 행이 이미 활성화되었는지 아닌지에 의존하여 변동한다. 이와 같은 구조를 갖는 한가지 종류의 메모리장치는 DRAM(Dynamic Random Access Memory) 메모리장치이다. 이와 같은 실시예에서, 상기 적어도 1개의 액세스 타이밍 순서 목록은, 계류중인 트랜잭션이 존재하는 각각의 뱅크의 각 행에 대해 별개의 액세스 타이밍 순서 목록을 포함한다.
일 실시예에서, 상기 메모리 콘트롤러는, 상기 인터페이스에 의해 수신된 각각의 트랜잭션에 응답하여, 이 트랜잭션에 대한 엔트리를 상기 복수의 순서 목록들 중에서 적어도 1개에 할당하는 할당회로를 더 구비한다. 각각의 트랜잭션이 인터페이스에 의해 수신될 때 할당을 행함으로써, 임계 경로로부터 할당처리를 제거할 수 있다. 특히, 승리 요청이 중재회로에 의해 선택될 필요가 있을 때, 단지 임시 기억장치 내부에 유지된 복수의 순서 목록들을 참조함으로써 중재동작이 신속하고도 간단히 행해진다.
특정한 일 실시예에서는, 상기 인터페이스에 의해 수신된 각각의 트랜잭션에 대해, 할당회로는 이 트랜잭션에 대한 엔트리들을 상기 적어도 1개의 우선순위 기반의 순서 목록들 중에서 1개와 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 할당하도록 구성된다. 따라서, 각각의 계류중인 트랜잭션은 보통 2개의 엔트리들, 즉 우선순위 기반의 순서 목록 내부에 1개와 액세스 타이밍 순서 목록 내부에 1개를 갖는다.
각각의 우선순위 기반의 순서 목록 내부의 엔트리들은 다양한 형태를 취할 수 있다. 그러나, 일 실시예에서는, 각각의 우선순위 기반의 순서 목록 내에서, 각각의 엔트리는 선두 표시자와 후미 표시자를 포함하고, 엔트리가 우선순위 기반의 순서 목록 내의 선두 위치에 있는 경우에는 상기 선두 표시자가 세트되고, 엔트리가 우선순위 기반의 순서 목록 내부의 후미 위치에 있는 경우에는 상기 후미 표시자가 세트된다. 각각의 엔트리는 상기 우선순위 기반의 순서 목록 내의 다음 엔트리를 가리키는 포인터를 더 포함하고, 상기 다음 엔트리는 이 다음 엔트리를 가리키는 포인터를 갖는 엔트리보다 상기 선두 위치로부터 더 멀리 떨어진 위치에 놓인다. 이와 같은 구성은, 각각의 우선순위 기반의 순서 목록 내의 다수의 엔트리들 사이에서의 상대적인 순서를 유지하면서도, 우선순위 기반의 순서 목록의 선두 및 후미 위치에 있는 엔트리에 명확하게 플래그를 표시하는 간단하고도 효율적인 메카니즘을 제공한다.
일 실시예에서, 각각의 엔트리는 상기 관련된 계류중인 트랜잭션의 상기 우선순위 표시를 더 확인한다. 이와 같은 구성은, 새로운 엔트리가 우선순위 기반의 순서 목록에 할당될 필요가 있을 때 필요한 할당처리에 도움이 된다.
특정한 일 실시예에서, 각각의 엔트리는 상기 다음의 엔트리와 관련된 상기 계류중인 트랜잭션의 우선순위 표시를 더 확인한다. 이에 따르면, 할당처리가 엔트리들을 분석하여, 그것의 관련된 계류중인 트랜잭션에 대한 우선순위 표시와 다음의 엔트리와 관련된 계류중인 트랜잭션에 대한 우선순위 표시의 특정한 조합을 갖는 특정한 엔트리를 찾을 수 있으므로, 이와 같은 구성은 할당처리에 더 도움이 된다.
특히, 일 실시예에서, 상기 메모리 콘트롤러는, 상기 인터페이스에 의해 수신된 현재의 트랜잭션에 응답하여, 상기 현재의 트랜잭션에 의해 명시된 메모리 어드레스를 고려하여 선택된 상기 적어도 1개의 우선순위 기반의 순서 목록들 중에서 선택된 1개의 우선순위 기반의 순서 목록에 상기 현재의 트랜잭션에 대한 엔트리를 할당하는 할당회로를 더 구비한다. 상기 할당회로는, 상기 현재의 트랜잭션에 대한 우선순위 표시 이상의 상기 관련된 계류중인 트랜잭션에 대한 우선순위 표시를 갖고 상기 현재의 트랜잭션에 대한 우선순위 표시보다 작은 상기 다음의 엔트리와 관련된 계류중인 트랜잭션에 대한 우선순위 표시를 갖는 상기 선택된 우선순위 기반의 순서 목록에 있는 엔트리를 확인하도록 구성된다. 이때, 상기 할당회로는, 상기 확인된 엔트리에 인접하지만 상기 확인된 엔트리보다 상기 선두 위치로부터 더 멀리 떨어지도록 정렬된 상기 현재의 트랜잭션에 대한 새로운 엔트리를 상기 선택된 우선순위 기반의 순서 목록 내에 추가하도록 더 구성된다.
상기한 분석과정 중에, 고려중인 확인된 엔트리가 다음의 엔트리를 갖지 않는 경우, 즉 확인된 엔트리가 목록의 후미 위치에 있는 경우에는, 다음 엔트리와 관련된 계류중인 트랜잭션에 대한 우선순위 표시가 현재의 트랜잭션에 대한 우선순위 표시보다 낮은 것으로 해석되는 소정의 값으로 설정되어, 적절히 목록 내부의 후미 위치에 있는 엔트리가 상기한 메카니즘을 이용하여 확인될 수 있으며, 그후 새로운 엔트리가 목록의 새로운 후미 위치를 형성하는 위치에 추가될 수 있다.
일 실시예에서, 상기 확인된 엔트리에 대한 포인터가 상기 새로운 엔트리를 가리키도록 갱신되고, 상기 새로운 엔트리에 대한 포인터는 상기 새로운 엔트리를 가리키도록 구성된다.
선택적인 개량에 따르면, 전술한 다음의 엔트리가 새로운 엔트리가 삽입될 때 변형되어, 이 다음의 엔트리와 관련된 계류중인 트랜잭션의 우선순위 표시가, 예를 들면, 이 다음의 엔트리와 관련된 계류중인 트랜잭션에 대한 증가된 우선순위를 표시하도록 갱신된다. 예를 들어, 단순히 우선순위 표시를 소정량만큼 증가시킴으로써, 이것을 행할 수 있는 다수의 방식이 존재한다. 그러나, 일 실시예에서, 상기 관련된 계류중인 트랜잭션의 우선순위 표시가 상기 새로운 엔트리와 관련된 현재의 트랜잭션의 우선순위 표시와 일치하도록 갱신된다. 이와 같은 우선순위 증가기술(본 명세서에서는 "버딩(buddying)" 기술로도 불린다)은 더 낮은 우선순위 트랜잭션들의 불명확한 블록킹(blocking)을 방지함으로써, 예측가능한 대기시간 산출을 허용한다. 일 실시예에서는 우선순위 증가기술이 새로운 엔트리에 뒤따르는 다음 엔트리에만 영향을 미치도록 구성될 수도 있지만, 다른 실시예에서는, 새롭게 삽입된 엔트리에 뒤따르는 1개보다 많은 수의 엔트리의 우선순위를 상승시키는데 사용될 수 있다.
일 실시예에서, 상기 새로운 엔트리가 상기 우선순위 기반의 순서 목록의 상기 후미 위치에 있는 경우에, 상기 할당회로는 상기 새로운 엔트리에 대한 상기 후미 지시자가 세트되도록 하고 이전에 후미 위치에 있는 엔트리에 대한 상기 후미 지시자가 소거되게 한다.
더구나, 일 실시예에서, 상기 현재의 트랜잭션에 대한 우선순위 표시 이상의 상기 관련된 계류중인 트랜잭션에 대한 우선순위 표시를 갖는 상기 선택된 우선순위 기반의 순서 목록에 엔트리가 존재하지 않는 경우에는, 상기 할당회로가 상기 현재의 트랜잭션에 대한 새로운 엔트리를 상기 선두 위치에 추가하도록 구성되고, 상기 새로운 엔트리에 대한 상기 선두 표시자가 세트되고, 상기 새로운 엔트리에 대한 포인터가 이전에 상기 선두 위치에 있었던 엔트리를 가리키도록 구성되고, 상기 이전에 선두 위치에 있었던 엔트리의 선두 표시자가 소거된다.
예를 들면, 할당될 현재의 트랜잭션이 계류중인 트랜잭션이 존재하지 않는 뱅크를 향하기 때문에, 전술한 할당처리를 행할 때, 선택된 우선순위 기반의 순서 목록이 현재 엔트리를 갖지 않는 것도 가능하다. 이 경우에, 상기 할당회로는, 상기 현재의 트랜잭션에 대해 할당된 새로운 엔트리가 선두 표시자와 후미 표시자를 세트가 되게 하도록 구성되며, 이 엔트리는 사실상 관련된 우선순위 기반의 순서 목록을 생성하며 이 목록의 유일한 엔트리에 해당한다.
액세스 타이밍 순서 목록 내부의 각각의 엔트리가 구성될 수 있는 다양한 방식이 존재한다. 그러나, 일 실시예에서는, 각각의 엔트리가 선두 표시자와 후미 표시자를 포함하고, 상기 엔트리가 상기 액세스 타이밍 순서 목록 내부의 선두 위치에 있는 경우에는 상기 선두 표시자가 세트되고, 상기 엔트리가 상기 액세스 타이밍 순서 목록 내부의 후미 위치에 있는 경우에는 상기 후미 표시자가 세트되고, 각각의 엔트리는 상기 액세스 타이밍 순서 목록 내부의 다음 엔트리를 가리키는 포인터를 더 포함하고, 상기 다음 엔트리는 이 다음 엔트리를 가리키는 포인터를 갖는 엔트리보다 상기 선두 위치로부터 더 멀리 떨어진 위치에 있다는 점에서, 각각의 엔트리는 상기 우선순위 기반의 순서 목록 내부의 엔트리들과 유사한 구성을 갖는다.
일 실시예에서는, 트랜잭션 소스에 의해 발행된 버스트 트랜잭션들이 메모리 콘트롤러에 의해 수신되어도 된다. 이와 같은 트랜잭션 소스가 버스트 트랜잭션에 대해 명시하는 버스트 크기가 메모리장치에 의해 허용된 최대 버스트 크기를 초과하는 경우가 자주 있으므로, 이와 같은 버스트 트랜잭션이 메모리장치에 대한 복수의 링크된 버스트 트랜잭션들로 변환된다. 각각의 링크된 버스트 트랜잭션은 메모리 콘트롤러에 의해 별개의 트랜잭션으로 취급된다. 일 실시예에서, 상기 메모리 콘트롤러 내부의 할당회로는, 상기 링크된 버스트 트랜잭션들 중에서 첫 번째 버스트 트랜잭션을 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개 내부의 엔트리에 할당한 후, 나머지 링크된 트랜잭션들 전체를 상기 엔트리와 관련된 스퍼리스트(spur-list)의 스퍼리스트 엔트리들에 할당하도록 구성될 수 있다.
다수의 링크된 버스트 트랜잭션들을 이와 같은 방식으로 배치함으로써, 중재회로가 링크된 버스트 트랜잭션들을 특수한 경우로서 취급할 수 있게 한다. 특히, 중재동작이 행해질 때, 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖고 이 엔트리가 상기 엔트리와 관련된 상기 스퍼리스트를 갖는 경우에, 중재동작이 상기 스퍼리스트 내부의 스퍼리스트 엔트리를 갖는 링크된 트랜잭션들 중에서 1개를 상기 승리 트랜잭션으로서 선택하도록 구성된다. 시스템 내부의 다른 곳에서, 특정한 자원이 이와 같은 버스트 트랜잭션이 완료하는 것을 대기하면서 묶여 있는 경우가 많기 때문에 이와 같은 구성은 유리하며, 따라서 메모리장치가 첫 번째 링크된 트랜잭션을 취급함으로써 이와 같은 버스트 트랜잭션을 처리하기 시작할 때, 나머지 링크된 트랜잭션들이 연속적으로 처리될 수 있다는 매우 유리하다.
일 실시예에서, 모든 링크된 트랜잭션들이 승리 요청으로서 선택되었을 때에만, 중재동작이 상기 액세스 타이밍 순서 목록에 있는 상기 다음의 엔트리와 관련된 트랜잭션을 다음의 승리 트랜잭션으로서 선택하도록 구성된다.
복수의 뱅크를 포함하고 각각의 뱅크가 복수의 행들을 포함하는 메모리장치의 전술한 예를 고려하면, 일 실시예에서는, 각각의 액세스 타이밍 순서 목록 내부에서, 각각의 엔트리가 상기 액세스 타이밍 순서 목록이 제공되는 뱅크 및 행의 표시를 포함한다.
각각의 트랜잭션과 관련된 우선순위 표시는 다양한 형태를 취할 수 있다. 이 우선순위 표시는 트랜잭션 상세로부터 유도된 암시적인 우선순위 표시(예를 들면, 트랜잭션을 발생하는 마스터장치의 표시)이어도 되지만, 일 실시예에서, 상기 우선순위 표시는 트랜잭션의 필드 내에 제공된 명시적인 우선순위 표시이다. 특정한 일 실시예에서, 상기 우선순위 표시는 서비스 품질(quality of service: QoS) 레벨 표시이다.
액세스 타이밍 순서 목록으로부터 이전의 트랜잭션이 선택되었을 때 이 액세스 타이밍 순서 목록으로부터 승리 트랜잭션들을 선택하는 중재동작의 경향을 방해하는 소정의 예외 상태는 다양한 형태를 취할 수 있다. 그러나, 일 실시예에서, 상기 소정의 예외 상태는 특정한 계류중인 트랜잭션의 우선순위 표시가 높은 우선순위를 표시하도록 변경시키는 상태이고, 상기 중재회로는, 이 소정의 예외 상태의 존재시에, 상기 특정한 계류중인 트랜잭션을 승리 트랜잭션으로서 선택하도록 구성되고, 상기 기억장치는 상기 복수의 순서 목록들로부터 이 승리 트랜잭션에 대한 엔트리를 제거하도록 구성된다.
이와 같은 상태는, 예를 들면, 특정한 트랜잭션에 대해 허용가능한 최대 대기시간이 존재하고 이 최대 대기시간이 접근하고 있을 때 기동되는 타임아웃(timeout) 상태이어도 된다. 다른 실시예에서는, 위험요소(hazard)가 소거되기 전에 특정한 트랜잭션이 처리되도록 요구하는 시스템 내부의 다른 곳에서 위험요소 상태가 검출되어도 된다.
전술한 링크된 버스트 트랜잭션들이 생성되고 액세스 타이밍 순서 목록 내부의 스퍼리스트들에 할당되는 특정한 일 실시예에서, 중재회로는 먼저, 존재하고 있는 소정의 예외 상태에 응답하기 전에 남아 있는 링크된 버스트 트랜잭션들이 승리 요청으로서 선택되도록 보장하고, 그후 최고의 우선순위의 계류중인 트랜잭션이 되도록 증가된 우선순위를 갖는 특정한 계류중인 트랜잭션을 승리 트랜잭션으로서 선택한다.
전술한 실시예들의 메모리 콘트롤러는 모든 종류의 트랜잭션들에 사용될 수 있다. 예를 들면, 이와 같은 기술은 메모리장치에 발행된 기록 트랜잭션들에 사용될 수도 있다. 그러나, 일 실시예에서는 메모리장치에 발행된 판독 트랜잭션들에 대해 이 기술을 사용한다. 다른 실시예에서는, 전술한 메카니즘들이 반복되어, 판독 트랜잭션들 및 기록 트랜잭션들 모두에 전술한 기술을 적용할 수 있다는 것을 알 수 있다.
일 실시예에서는, 중재회로가 한번에 1개의 중재동작만을 행하도록 구성되어, 한번에 단지 1개의 승리 트랜잭션을 선택하도록 구성되지만, 다른 실시예에서는, 중재회로가 다수의 중재동작을 병렬로 행하여, 한번에 복수의 승리 트랜잭션들을 선택하도록 구성되어도 된다. 메모리장치가 다수의 승리 트랜잭션들을 병렬로 처리할 수 있는 상황에서는 이와 같은 구성이 유용하다.
제 2 면에 따르면, 본 발명은,
메모리 어드레스를 액세스하는데 걸리는 시간이 메모리장치 내부에서의 이전의 액세스 활동에 의존하는 불균일한 액세스 타이밍 특성을 갖는 상기 메모리장치에 대한 액세스를 제어하는 방법으로서, 적어도 1개의 트랜잭션 소스로부터 발행된 트랜잭션들로서, 각각의 트랜잭션이 이 트랜잭션에 대해 액세스될 메모리 어드레스를 명시하고 이 트랜잭션과 관련된 우선순위 표시를 포함하는 상기 트랜잭션들을 수신하는 단계와, 적어도 1개의 우선순위 기반의 순서 목록과 적어도 1개의 액세스 타이밍 순서 목록을 포함하는 기억된 계류중인 트랜잭션들에 대한 복수의 순서 목록들을 유지하는 기억장치에, 출력 인터페이스로부터 상기 메모리장치에 아직 출력되지 않은 수신된 트랜잭션들을 상기 계류중인 트랜잭션들로서 일시적으로 기억하는 단계와, 상기 계류중인 트랜잭션들 중에서 1개와 각각 관련되고, 관련된 계류중인 트랜잭션의 상기 우선순위 표시에 근거하여 그 자신의 우선순위 기반 순서 목록 내부에 각각 정렬되는 다수의 엔트리를 갖도록 각각의 우선순위 기반의 순서 목록을 구성하는 단계와, 다수의 엔트리를 갖도록 각각의 액세스 타이밍 순서 목록을 구성하여, 각각의 엔트리가 상기 계류중인 트랜잭션들 중에서 1개와 관련되도록 하고, 각각의 액세스 타이밍 순서 목록과 관련된 상기 계류중인 트랜잭션들이, 트랜잭션들의 그룹 내부의 1개의 트랜잭션의 메모리 어드레스가 액세스되면, 상기 불균일 액세스 타이밍 특성을 고려하여 상기 메모리장치에 의해 효율적으로 액세스될 수 있는 메모리 어드레스들을 갖는 상기 트랜잭션들의 그룹을 구성하게 하는 단계와, 상기 복수의 순서 목록들을 참조하여, 상기 계류중인 트랜잭션들로부터, 상기 출력 인터페이스로부터 상기 메모리장치에 출력될 승리 트랜잭션을 선택하는 중재동작을 행하고, 상기 복수의 순서 목록들로부터 상기 승리 트랜잭션에 대한 엔트리를 제거하는 단계를 포함하고, 상기 중재동작이 행해질 때, 상기 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖고 상기 적어도 1개의 액세스 타이밍 순서 목록이 아직 비어있지 않은 경우에, 상기 중재동작은, 소정의 예외 상태가 존재하지 않으면, 상기 적어도 1개의 액세스 타이밍 순서 목록에 엔트리를 갖는 상기 계류중인 트랜잭션들 중에서 1개를 상기 승리 트랜잭션으로서 선택하도록 구성된, 액세스 제어방법을 제공한다.
제 3 면에 따르면, 본 발명은, 메모리 어드레스를 액세스하는데 걸리는 시간이 메모리장치 내부에서의 이전의 액세스 활동에 의존하는 불균일한 액세스 타이밍 특성을 갖는 상기 메모리장치에 대한 액세스를 제어하는 메모리 콘트롤러로서, 적어도 1개의 트랜잭션 소스로부터 발행된 트랜잭션들로서, 각각의 트랜잭션이 이 트랜잭션에 대해 액세스될 메모리 어드레스를 명시하고 이 트랜잭션과 관련된 우선순위 표시를 포함하는 상기 트랜잭션들을 수신하는 인터페이스수단과, 상기 메모리 콘트롤러로부터 상기 메모리장치에 아직 발행되지 않은 상기 인터페이스수단에 의해 수신된 트랜잭션들을 계류중인 트랜잭션들로서 일시적으로 기억하고, 적어도 1개의 우선순위 기반의 순서 목록수단과 적어도 1개의 액세스 타이밍 순서 목록수단을 포함하는 상기 기억된 계류중인 트랜잭션들에 대한 복수의 순서 목록수단들을 유지하는 기억수단을 구비하고, 각각의 우선순위 기반의 순서 목록수단은 다수의 엔트리를 갖고, 각각의 엔트리는 상기 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 엔트리는 관련된 계류중인 트랜잭션의 우선순위 표시에 근거하여 상기 엔트리의 우선순위 기반 순서 목록수단 내부에 정렬되고, 각각의 액세스 타이밍 순서 목록수단은 다수의 엔트리를 갖고, 각각의 엔트리는 상기 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 액세스 타이밍 순서 목록수단과 관련된 상기 계류중인 트랜잭션들은, 트랜잭션들의 그룹 내부의 1개의 트랜잭션의 메모리 어드레스가 액세스되면, 상기 불균일 액세스 타이밍 특성을 고려하여 상기 메모리장치에 의해 효율적으로 액세스될 수 있는 메모리 어드레스들을 갖는 상기 트랜잭션들의 그룹을 구성하고, 상기 메모리 콘트롤러는, 중재동작을 행하는 중재수단을 더 구비하고, 상기 중재동작 중에 상기 복수의 순서 목록수단들을 참조하여 상기 계류중인 트랜잭션들로부터 상기 메모리장치에 발행될 승리 트랜잭션을 선택하고, 상기 기억수단은 상기 복수의 순서 목록수단들로부터 상기 승리 트랜잭션에 대한 엔트리를 제거하고, 상기 중재동작이 행해질 때, 상기 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록수단들 중에서 1개에 엔트리를 갖고 상기 적어도 1개의 액세스 타이밍 순서 목록수단이 아직 비어있지 않은 경우에, 상기 중재동작은, 소정의 예외 상태가 존재하지 않으면, 상기 적어도 1개의 액세스 타이밍 순서 목록수단에 엔트리를 갖는 상기 계류중인 트랜잭션들 중에서 1개를 상기 승리 트랜잭션으로서 선택하는, 메모리 콘트롤러를 제공한다.
이하 다음의 첨부도면에 나타낸 실시예들을 참조하여 본 발명을 더욱 상세히 설명한다:
도 1은 일 실시예에 따른 메모리 콘트롤러를 포함하는 데이터 처리 시스템의 블록도이다.
도 2는 일 실시예에 따른 도 1에 도시된 DRAM 메모리의 블록도이다.
도 3은 일 실시예에 따른 도 1에 도시된 DRAM 메모리 콘트롤러의 블록도이다.
도 4a는 일 실시예에 따른 우선순위 기반의 순서 목록에 대한 엔트리를 개략적으로 나타낸 것이다.
도 4b는 우선순위 기반의 순서 목록을 구성하도록 정렬된 이와 같은 복수의 엔트리들을 개략적으로 나타낸 것이다.
도 5a는 일 실시예에 따른 액세스 타이밍 순서 목록에 대한 엔트리를 개략적으로 나타낸 것이다.
도 5b는 액세스 타이밍 순서 목록을 구성하도록 정렬된 이와 같은 복수의 엔트리들을 개략적으로 나타낸 것이다.
도 6은 일 실시예에 따른 도 3의 목록 할당회로에 의해 행해지는 단계들을 나타낸 흐름도이다.
도 7은 도 6의 스텝 365를 구현하기 위해 일 실시예에서 행해지는 단계들의 시퀀스를 나타낸 흐름도이다.
도 8은 도 7의 기술에 따라 기존의 우선순위 기반의 순서 목록 내부에 새로운 엔트리가 삽입되는 방법을 개략적으로 나타낸 것이다.
도 9는 일 실시예에 따른 도 3의 중재회로에 의해 행해지는 단계들을 나타낸 흐름도이다.
도 10a는 일 실시예에 따른 리미터회로의 동작을 개략적으로 나타낸 것이다.
도 10b 및 도 10c는 또 다른 실시예에 따른 리미터회로의 동작을 개략적으로 나타낸 것이다.
도 11a 및 도 11b는 일 실시예에 따라 우선순위 기반의 순서 목록과 액세스 타이밍 순서 목록으로부터 엔트리를 각각 팝(pop)할 때 행해지는 단계들을 나타낸 것이다.
도 12는 도 11a의 처리에 따라 우선순위 기반의 순서 목록으로부터 엔트리가 팝되는 방법을 개략적으로 나타낸 것이다.
도 13은 또 다른 실시예에 따라 도 3의 목록 할당회로에 의해 행해지는 단계들을 나타낸 흐름도이다.
도 14는 일 실시예에 따라 도 13의 판독 증가스텝들 730 및 735가 우선순위 기반의 순서 목록의 엔트리들에 영향을 미치는 방법을 개략적으로 나타낸 것이다.
도 15는 도 13의 스텝들 740 및 745가 일 실시예에 따라 액세스 타이밍 순서 목록으로부터 스퍼리스트가 발생되도록 할 수 있는 방법을 개략적으로 나타낸 것이다.
도 16은 또 다른 실시예에 따라 도 3의 중재회로에 의해 행해지는 스텝들을 나타낸 흐름도이다.
도 1은 배선회로(30)를 거쳐 다수의 슬레이브 장치들(55, 60)과 접속된 복수의 마스터 장치들(10, 20)을 구비한 데이터 처리 시스템의 블록도이다. 슬레이브 장치들 중에서 1개는 DRAM 메모리 콘트롤러(50)를 거쳐 배선(30)에 접속된 DRAM 메모리장치(55)이다.
배선회로(30)는 다수의 접속 경로들(35)을 거쳐 마스터 장치들과 슬레이브 장치들을 접속하여 트랜잭션들이 행해질 수 있도록 한다. 각각의 트랜잭션은, 마스터 장치로부터 슬레이브 장치로의 어드레스 전송과, 마스터 장치와 슬레이브 장치 사이에서의 1개 이상의 데이터 전송으로 구성된다. 배선(30) 내부에서 트랜잭션들의 처리를 위해 사용되는 다수의 공지된 프로토콜들이 존재한다. 예시를 위해, 이하에서 설명하는 실시예들에서는, 별개의 어드레스 채널들과 데이터 채널들이 제공되는 분할(split) 트랜잭션 프로토콜을 배선회로가 채용하고, 데이터 전송의 타이밍이 특정한 트랜잭션의 어드레스 전송의 타이밍에 대해 분리되어 있는 것으로 가정한다. 특정한 일 실시예에서는, 배선회로가 AXI 프로토콜에 따라 동작하고, 배선회로의 접속 경로들(35)이 5개의 채널, 즉 판독 어드레스 채널, 기록 어드레스 채널, 판독 데이터 채널, 기록 데이터 채널 및 기록 응답 채널을 제공한다.
각각의 마스터 장치가 어드레스 전송을 발행함으로써 트랜잭션을 개시할 때, 이 마스터 장치는 일반적으로 트랜잭션을 확인하기 위한 어드레스 전송을 갖는 트랜잭션 식별자를 발행하므로, 상기한 트랜잭션 식별자를 트랜잭션의 데이터 전송과 연계하여 사용함으로써 이들 데이터 전송을 어드레스 전송과 일치시킬 수 있다.
배선회로(30)의 제어회로(40) 내부에는, 서로 다른 마스터 장치들로부터의 트랜잭션들이 배선회로(30) 내부에서 교유하게 식별될 수 있도록 ID 추가/제거회로가 설치되어도 된다. 예를 들어, 관련된 마스터 장치에 의해 발생된 각각의 트랜잭션 식별자에 대해, 이와 같은 ID 추가 및 제거회로는, 이 마스터 장치로의 응답의 경로지정(routing)을 허용하는 마스터 번호를 사용하여 이 트랜잭션 식별자를 확장하도록 구성되어도 된다. 마찬가지로, 마스터 장치로 다시 전송이 경로지정될 때, ID 추가/제거회로는, 응답 전송이 관련된 마스터 장치(10, 20)로 되돌려지기 전에, 마스터 번호를 벗긴다. 적절한 마스터 장치로 다시 응답의 경로지정을 허용하는 것 이외에, 배선회로(30) 내부에 새로운 형태의 트랜잭션 식별자를 생성하기 위해 마스터 번호를 사용하여 트랜잭션 식별자를 확장하면, 서로 다른 트랜잭션 식별자들을 갖는 트랜잭션들을 재정렬할 수 있는 능력에 의해, 서로 다른 마스터 장치들이 원래 동일한 트랜잭션 식별자를 갖고 있었다고 하더라도, 이들 서로 다른 마스터 장치로부터 트랜잭션들을 재정렬할 수 있게 된다.
더구나, 배선(30)의 제어회로(40)는 추가적인 기능을 포함할 수도 있다는 것을 알 수 있다. 예를 들어, 잠재적인 교착상태를 검출하기 위해, 순화 의존성 회비 방식(cyclic dependency avoidance scheme: CDAS) 제어회로를 배선(30) 내부에 설치하여, 동시에 진행되는 것이 허용되는 경우에 교착상태를 일으킬 수도 있는 트랜잭션들의 시퀀스를 검출하고 이와 같은 교착상태의 발생을 피하기 위한 조치를 취해도 된다. 제어회로(40)는, 위험요소 상태가 올바르게 처리되도록 보장하기 위해, 다양한 위험요소 상태들, 예를 들어 기록후 판독(read after write) 위험요소를 모니터링하는 스코어보딩(scoreboarding) 및 위험요소 검출회로를 더 구비해도 된다. 이것은 예를 들면 이전의 트랜잭션이 완료할 때까지 진행중인 1개의 트랜잭션의 전파를 정지하는 것을 포함해도 된다.
DRAM 메모리 콘트롤러(50)를 고려하면, 전술한 설명으로부터, DRAM 메모리 콘트롤러(50)가 트랜잭션들의 스트림을 수신하고, 각각의 트랜잭션이 일반적으로 트랜잭션 식별자를 갖는다는 것을 알 수 있다. 이하에서 더욱 상세히 설명하는 것과 같이, 본 명세서에서 설명하는 DRAM메모리 콘트롤로의 실시예들에 따르면, DRAM 메모리 콘트롤러는 DRAM(55)에 대한 액세스 기간을 향상시키기 위해 이들 트랜잭션들을 재정렬할 수 있다. DRAM 메모리 콘트롤러는, 응답을 배선회로(30)로 출력하기 전에 이 응답이 재정렬될 수 있도록 확보함으로써 배선(30)에 의해 사용된 트랜잭션 프로토콜의 정렬 제약을 따르게 하는 내부 버퍼링을 포함한다. 예를 들면, 동일한 트랜잭션 식별자를 갖는 트랜잭션들에 대해, 슬레이브로부터 되돌아온 응답을 순서대로 되돌려져야만 하는 것이 필요할 수도 있으며, 따라서 응답 전송을 배선(30)으로 출력하기 전에, DRAM 효율을 향상시키기 위해 이와 같은 트랜잭션들에 대해 로컬하게 행해지는 재정렬이 반전될 필요가 있다.
트랜잭션들의 또 다른 특성은, 이들 트랜잭션들이 트랜잭션의 명시적인 필드로서, 또는 트랜잭션으로부터 결정될 수 있는 추론에 의해 우선순위 표시를 포함하여도 된다는 것이다(예를 들어, 마스터 1(10)에 의해 발행된 트랜잭션들이 마스터 2(20)에 의해 발행된 트랜잭션들보다 높은 우선순위를 갖는다는 것을 알 수 있다). 본 명세서에서 설명하는 특정한 일 실시예에서는, 각각의 트랜잭션이 서비스 품질(QoS) 표시의 형태를 갖는 명시적인 우선순위 표시를 포함한다. 전술한 기술에 따르면, DRAM 메모리 콘트롤러(50)는, DRAM(55)의 액세스 시간을 향상시키기 위해 트랜잭션들을 재정렬하도록 시도하는 한편, 트랜잭션들의 QoS 레벨 표시를 고려함으로써, 그들의 QoS 표시를 참조하여 트랜잭션들이 적절히 서비스되도록 보장한다.
도 2는 일 실시예에 따른 도 1의 DRAM(55)을 개략적으로 나타낸 것이다. DRAM(55)은 복수의 뱅크들(130, 135, 140)로 구성되고, 각각의 뱅크는 복수의 행으로 구성된다. 각각의 뱅크와 관련하여, 액세스회로(100, 110, 120)가 설치되며, 이들 액세스회로는 DRAM 메모리 콘트롤러(50)에 의해 발생된 액세스 명령에 응답한다. 각각의 액세스회로(100, 110, 120)는, 관련된 뱅크로부터 적어도 1개의 데이터의 행을 기억하는 행 버퍼(105, 115, 125)를 구비한다. 행에 있는 데이터 값을 액세스하기 위해서는, 이 행을 먼저 메모리 콘트롤러로부터 발행되는 RAS 명령을 통해 관련된 행 버퍼로 이동해야 하는데, 이와 같은 RAS 명령은 본 명세서에서는 활성화 명령으로도 부른다. 행이 행 버퍼에 기억되면, 이 행 내부의 개별적인 메모리 어드레스들이 메모리 콘트롤러로부터 발행된 CAS 코맨드를 통해 액세스될 수 있다. 결국, 행에 대한 액세스가 완료하거나, 새로운 행을 액세스할 필요가 있을 때에는, 메모리 콘트롤러로부터 프리차지 명령이 발행되어, 행 버퍼 내부의 행의 현재의 콘텐츠가 다시 DRAM(55) 내부의 관련된 뱅크 내에 기억되게 한다.
따라서, 행의 콘텐츠가 그후 액세스될 수 있도록 이 행을 활성화할 때 상당한 액세스 시간 불이익과, 실제로는 소비전력 불이익이 발생한다는 것을 알 수 있으며, 따라서, 행이 활성화되고 이에 따라 그것의 콘텐츠가 행 버퍼 내부에 기억되면, 그후 행의 콘텐츠가 뱅크로 되돌려지기 전에 이 행의 메모리 어드레스들에 대한 복수의 액세스가 행해지는 것이 유익할 것이다. 이하에서 더욱 상세히 설명하는 것과 같이, 전술한 실시예들의 DRAM 메모리 콘트롤러가 이것을 달성하여 액세스 시간과 소비전력을 줄이기 위해 트랜잭션들의 재정렬을 행할 수 있지만, 이와 같은 재정렬이 트랜잭션들에 대한 QoS 요건을 충족시키는데 악영향을 미치지 않도록 확보하기 위해 이 메모리 콘트롤러가 이들 트랜잭션과 관련된 우선순위 표시도 참조한다.
도 3은 일 실시예에 따른 도 1의 DRAM 메모리 콘트롤러(50)를 개략적으로 나타낸 것이다. 배선(30)으로부터 수신된 입력 트랜잭션들이 로컬 재정렬 제어회로(210)를 구비하는 입력 인터페이스(200)에 주어진다. 이 재정렬 제어회로(210)는 예를 들면 입력 트랜잭션들의 트랜잭션 식별자들을 변경함으로써, 사실상, 이들 트랜잭션들이 DRAM 메모리에 의해 순서가 뒤바뀌어 처리될 수 있도록 하기 위해, 동일한 트랜잭션 식별자를 갖는 다수의 트랜잭션들을 분리하여도 된다. 그러나, 본 실시예에서는, 동일한 트랜잭션 식별자를 갖는 트랜잭션들에 대해 DRAM으로부터의 응답이 순서대로 되돌아오는 것을 배선(30)이 요구하는 것으로 가정하기 때문에, 배선(30)으로 응답이 다시 출력되기 전에 이들 트랜잭션들이 재정렬되는 것이 필요하게 된다 따라서, 응답 데이터가 배선(30)으로 출력되기 전에 로컬 재정렬을 허용하기 위해 데이터 버퍼(215)가 재정렬 제어회로(210) 내부에 설치될 수 있다.
일 실시예에서는, 이하에서 설명하는 기술이 기록 트랜잭션들과 관련하여 사용될 수 있지만, 도 3의 예시 목적을 위해, 입력 트랜잭션들이 전체가 판독 트랜잭션들이고, 이에 따라 배선회로에 출력된 응답이 판독 데이터인 것으로 가정한다. 기록 트랜잭션에 대해서는, 응답이 기록 응답 채널을 거쳐 제공되는 상태 정보가 된다. 이들 기술을 판독 트랜잭션들과 기록 트랜잭션들 모두에 이용하는 것이 바람직한 경우에는, 도 3에 도시된 회로를 전체를 또는 일부를 복제하여, 1 세트의 회로가 판독 트랜잭션을 위해 제공되고 복제된 세트의 회로가 기록 트랜잭션들을 위해 제공될 수도 있다.
도 3에 도시된 것과 같이, 인터페이스(200)는 옵션으로 버스트 포맷팅회로(205)를 구비해도 된다. 특히, 마스터 장치들(10, 20) 중에서 1개는 DRAM 메모리에 대한 액세스에 허용된 버스트 길이를 초과하는 버스트 길이를 갖는 버스트 트랜잭션을 발행해도 된다. 따라서, 인터페이스(200)에 의해 수신된 이와 같은 버스트 트랜잭션은 버스트 포맷팅회로(205)에 의해 복수의 링크된 버스트 트랜잭션들로 변환되어도 되고, 각각의 링크된 버스트 트랜잭션은 메모리 콘트롤러에 의해 별개의 트랜잭션으로서 취급된다. 재정렬 제어회로(210)로부터 각각의 링크된 버스트 트랜잭션에 대해 내부 트랜잭션 식별자가 제공될 수 있다.
DRAM 메모리 콘트롤러(50)는, 인터페이스(200)에 의해 수신되고 메모리 콘트롤러(50)에 의해 DRAM(55)으로 아직 발행되지 않은 트랜잭션들을 계류중인 트랜잭션들로서 일시적으로 기억하는 계류중 트랜잭션 버퍼(230)를 구비한다. 각 트랜잭션의 관련된 상세를 유지하는 것 이외에, 계류중 트랜잭션 버퍼(230)는 중첩된(overlaid) 정렬 목록들의 세트(235)를 유지하며, 이들 목록은 적어도 1개의 계류중인 트랜잭션이 존재하는 각 뱅크에 대한 우선순위 기반의 순서 목록(이와 같은 우선순위 기반의 순서 목록은 본 명세서에서는 QoS 목록으로 불린다)과 적어도 1개의 계류중인 트랜잭션이 존재하는 각각의 뱅크의 각 행에 대한 액세스 타이밍 순서 목록(이와 같은 목록은 본 명세서에서는 행 히트(row-hot) 목록으로 불린다)을 포함한다. 각각의 트랜잭션이 인터페이스(200)에 의해 수신될 때, 이 트랜잭션은, 이 계류중인 트랜잭션에 순서 목록들(235) 중에서 적어도 1개의 엔트리를 할당하도록 구성된 목록 할당회로(220)에 전달된다. 특히, 일 실시예에서는, 목록 할당회로(220)는, 관련된 뺀 목록 및 관련된 행 히트 목록의 엔트리를 각각의 계류중인 트랜잭션에 할당한다. 목록과 이 목록 할당회로(22)의 동작의 더욱 상세한 내용은 나중에 나머지 도면을 참조하여 주어질 것이다.
일 실시예에서, 버퍼(230)는 복수의 버퍼 엔트리들을 포함하고, 각각의 버퍼 엔트리는 계류중인 트랜잭션의 상세를 기억하는데 사용된다. 이때, 관련된 뺀 목록 및 행 히트 목록의 관련된 트랜잭션의 위치를 기술하는데 각각의 버퍼 엔트리와 관련된 정보를 사용한다. 이때, 목록 그 자체는 가상 목록이다.
예를 들면, DRAM 메모리(55)가 새로운 트랜잭션을 처리할 수 있는 용량을 갖는 것으로 메모리 콘트롤러(50)가 판정하였기 때문에, DRAM 메모리(55)에 새로운 트랜잭션을 발행하는 것이 필요할 때에는, 중재회로(240)가 중재동작을 행하도록 구성되고, 이 중재동작 중에 복수의 순서 목록들(235)을 참조하여, 계류중인 트랜잭션들로부터 FRAM(55)으로 발행될 승리 트랜잭션을 선택한다. 중재회로의 동작은 나중에 더욱 상세히 설명하지만, 일반적으로, 중재회로에 의해 행해지는 중재동작은, 이 행 히트 목록으로부터 최종적인 승리 트랜잭션이 선택되었을 때, 행 히트 목록들 중에서 1개로부터 엔트리들을 계속 선택하는 것으로 치우쳐 있다. 그러나, 개별적인 트랜잭션들과 관련된 QoS 레벨이 고려되도록 보장하기 위해, 특정한 상태는 중재회로가 이 자연스러운 경향으로부터 벗어나게 한다.
중재회로(240)에 의해 선택된 각각의 승리 트랜잭션의 상세는, 트랜잭션들을 기억하는 로컬 버퍼(255)와, 각각의 트랜잭션을 구현하기 위해 DRAM에 대한 명령 시퀀스들을 생성하는 DRAM 스케줄러(260)를 구비한 메모리 인터페이스(250)에 출력된다. 각각의 트랜잭션에 의해 필요한 액세스를 행하기 위해 DRAM스케줄러로부터 다수의 명령을 발행하는 것이 필요할 수도 있기 때문에 버퍼(255)가 일반적으로 필요하며, 더구나 클록 사이클마다 한 개의 명령만 발행될 수 있도록 DRAM 스케줄러(260)와 DRAM(55) 사이의 인터페이스 경로가 설정된다. 따라서, DRAM의 서로 다른 뱅크들을 향하는 트랜잭션들과 같이, 메모리 인터페이스(250)에 의한 실행 처리시에 다수의 트랜잭션들이 존재할 수도 있으며, 이들 트랜잭션을 수행하는데 필요한 다수의 명령들이 필요한 액세스회로들(100, 110, 120)의 가용성을 고려하여 DRAM 스케줄러(260)에 의해 스케줄링된다.
전술한 것과 같이, DRAM 스케줄러(260)에 의해 발행된 명령들은, 행을 활성화하기 위한 RAS 명령들, 행 내부의 특정한 메모리 어드레스들을 액세스하기 위한 일련의 CAS 명령들과, DRAM의 관련된 행 내부에 다시 행 버퍼의 콘텐츠를 기억하기 위한 프리차지 명령들을 포함한다. 동일한 행을 모두 액세스하는 메모리 인터페이스에 의해 일련의 트랜잭션이 처리되도록 트랜잭션들이 재정렬되는 경우에는, 필요한 RAS 명령이 이전의 트랜잭션과 연계하여 이미 발행되었기 때문에, 이들 트랜잭션들 중에서 일부만이 필요한 액세스를 행하기 위해 DRAM 스케줄러(260)로부터 대응하는 CAS 명령들이 발행되도록 요구한다. 더구나, 다음의 트랜잭션도 동일한 행을 액세스할 수 있으면, 현재의 트랜잭션에 대해 프리차지 명령이 필요하지 않게 된다.
일 실시예에서는, 도 3에 도시된 모든 구성요소들이 (도 1에 개략적으로 나타낸) 배선회로(30)의 외부에 설치되어도 되지만, 특정한 실시예에서는, DRAM 메모리 콘트롤러(50)의 1개 이상의 구성요소들이 배선(30)의 인터페이스 블록의 일부로서 배선(30) 내부에 설치되어도 된다는 것을 알 수 있다. 예를 들어, 일 실시예에서는, 메모리 인터페이스(250)를 제외한 모든 구성요소가 배선(30) 내부에서도 되는 한편, 메모리 인터페이스(250)만 배선(30)과 DRAM(55) 사이의 인터페이스의 외부에 설치된다. 그러나, 도 3에 도시된 구성요소들이 물리적으로 데이터 처리 시스템의 정확히 어느 위치에 존재하는지에 무관하게, 이들 구성요소들은 본 명세서에서는 총괄적으로 DRAM(55)에 대한 "메모리 콘트롤러"로 부른다.
전술한 것과 같이, 계류중 트랜잭션 버퍼(230) 내부에 유지되는 한가지 종류의 목록은 QoS 목록이고, 각각의 QoS 목록은 다수의 QoS 목록 엔트리들로 구성된다. 각각의 QoS 목록은 도 4a의 엔티티(300)로 개략적으로 나타낸 형태를 갖는다. 도 4a에서 사용되는 용어는 다음과 같은 의미를 갖는다:
Ptr: 지정된 뱅크에 대한 QoS 순서 목록의 다음 항목을 가리키는 포인터
Bank: 이 엔트리에 기억된 트랜잭션이 목표로 하는 뱅크
QoS: 이 엔트리에 기억된 트랜잭션에 대한 QoS 값
pQoS: Ptr이 가리키는 엔트리("다음 엔트리")에 기억된 트랜잭션에 대한 QoS 값
V: 엔트리가 유효하다(즉, 아직 처리되지 않은 트랜잭션을 포함한다)
L: 엔트리가 지정된 뱅크 목록에 대한 최종(후미) 트랜잭션을 포함한다는 것을 표시하기 위해 세트됨
F: 엔트리가 지정된 뱅크 목록에 대한 최초의(선두) 트랜잭션을 포함한다는 것을 표시하기 위해 세트됨
더구나, 각각의 엔트리(300)의 박스(305)에 의해 식별된 번호는 트랜잭션의 상세가 버퍼(230) 내부에 기억되는 장소를 식별한다.
따라서, 뱅크 1에 대한 예시적인 밀집된(populated) QoS 목록은 도 4b의 목록 310으로 개략적으로 나타낸 형태를 취해도 된다. 도 4b에서 알 수 있는 것과 같이, QoS 목록(310)은 다수의 서브목록들(311, 312, 313, 134)로 구성되는 것으로 생각할 수 있다. 각각의 서브목록 내에서, 각각의 엔트리는 동일한 QoS 표시를 갖고, 각각의 서브목록 내에서의 엔트리들의 상대적인 순서는 메모리 콘트롤러(50)의 인터페이스(200)에 의한 이들 트랜잭션들의 시간적 수신 순서에 의존한다. 도 4b에 도시된 것과 같이, 서브목록 311 내부의 1개의 유일한 엔트리는 이것이 QoS 목록(310)에 대한 선두 트랜잭션이라는 것을 표시하기 위해 설정된 최초 플래그를 갖고, 마찬가지로 서브목록 314 내부의 최종 트랜잭션은 이것이 특정한 배S 목록에 대한 후미 트랜잭션이라는 것을 표시하기 위해 설정된 최종 필드를 갖는다.
마찬가지로 전술한 것과 같이, 계류중 트랜잭션 버퍼(230) 내부에 유지된 다른 종류의 순서 목록은 행 히트 목록으로서, 일 실시예에서 행 히트 목록 내부의 각각의 엔트리는 도 5a에 도시된 엔트리(320)의 형태를 취한다. 도 5a의 엔트리(320)에 대해 사용된 각각의 용어의 의미는 다음과 같다:
HPtr: 히트 포인터. (후술하는 것과 같은 인버스트(in-burst) 히트를 제외한) 행 히트 목록의 다음 항목을 가리킨다.
Bank: 이 엔트리에 기억된 트랜잭션이 목표로 하는 뱅크
Row: 이 엔트리에 기억된 트랜잭션이 목표로 하는 행
T: 엔트리가 지정된 행 히트 목록에 대한 후미 트랜잭션을 포함한다는 것을 표시하기 위한 세트됨
H: 엔트리가 지정된 행 히트 목록에 대한 선두 트랜잭션을 포함한다는 것을 표시하기 위한 세트됨
IB: 엔트리가 정규 행 히트가 아니라 인버스트 행 비트를 포함한다는 것을 표시하기 위한 세트됨
새로운 계류중인 트랜잭션이 계류중 트랜잭션 버퍼(230)에 할당될 때, 행 히트 목록 후미로서 마크된 일치하는 뱅크/행을 갖는 기억된 트랜잭션이 이미 존재하는 경우에는, 새로운 트랜잭션에 대한 엔트리가 이 목록으로 밀려 새로운 후미를 형성한다. 그렇지 않은 경우에는, 엔트리가 할당되어 새로운 행 히트 목록을 형성한다. 따라서, 뱅크 1, 행 4에 대한 밀집된 행 히트 목록의 일례는 목록 330으로 도 5b에 개략적으로 도시된 형태를 취한다.
도 6은 일 실시예에 따른 도 3의 목록 할당회로(220)의 동작을 나타낸 흐름도로서, 본 실시예에서는, 인버스트 행 히트 필드 IB가 사용되지 않는 것으로 가정한다. 스텝 350에서, 목록 할당회로(220)는 할당될 새로운 트랜잭션을 수신하는데, 이 트랜잭션은 뱅크 A, 행 B를 향하고, Z의 QoS 값을 갖는다. 스텝 355에서는, 뱅크 A에 대해 이미 QoS 목록이 존재하는지 여부, 즉 뱅크 A를 향한 다른 계류중인 트랜잭션들이 존재하는지 여부를 판정한다. 존재하지 않는 경우에는, 스텝 375로 처리를 진행하여, 뱅크 A에 대한 새로운 QoS 목록에 엔트리가 생성되고, 이 엔트리의 최초 및 최종 플래그들이 모두 세트된다. 뱅크 A에 대한 QoS 목록이 존재하지 않은 경우에는, 뱅크 A, 행 B에 대한 행 히트 목록이 존재하게 되는 경우에 해당하므로, 스텝 375가 행해지면, 이 처리가 스텝 390도 수행하여, 뱅크 A, 행 B에 대한 행 히트 목록에 엔트리가 생성되고, 이 엔트리의 선두 및 후미 플래그들이 세트된다.
스텝 355에서 뱅크 A에 대해 QoS 목록이 존재하는 것으로 판정된 것으로 가정하면, 스텝 360에서, 현재의 트랜잭션에 대한 QoS 값 Z가 뱅크 A에 대한 QoS 목록의 최고의 우선순위 엔트리의 QoS 값보다 큰지, 즉 엔트리의 첫 번째 필드가 세트되었는지를 판정한다. 크면, 이것은 새로운 트랜잭션이 QoS 목록의 선두 위치에 추가되어야 한다는 것을 표시하므로, 처리가 스텝 370으로 진행하여, 기존의 QoS 목록의 선두에 엔트리가 생성되고, 이 엔트리는 이 QoS 목록의 이전의 선두로부터 최초의 플래그를 상속받는다. 그러나, QoS 값이 뱅크 A에 대한 QoS 목록의 최고의 우선순위 엔트리의 QoS 값보다 크지 않은 경우에는, 스텝 365로 처리를 진행하여, 엔트리가 생성되어 뱅크 A에 대한 QoS 목록 내부의 적절한 위치에 배치된다. 도 6의 스텝 365를 행하는 한가지 방법을 도 7을 참조하여 나중에 설명한다.
스텝 365나 스텝 370 이후에, 스텝 380에서, 뱅크 A 및 행 B에 대한 행 히트 목록이 존재하는지 여부를 판정한다. 존재하지 않는 경우에는, 스텝 390으로 처리를 분기하지만, 뱅크 A, 행 B에 대해 이미 사용가능한 행 히트 목록이 존재하는 것으로 가정하면, 스텝 385로 처리를 진행하여, 이 행 히트 목록의 후미에 새로운 엔트리가 생성되고, 이 엔트리는 이전의 후미 엔트리로부터 후미 플래그를 상속받는다.
도 7은 일 실시예에 따라 도 6의 스텝 365를 구현하는데 사용될 수 있는 일련의 스텝들을 나타낸 흐름도이다. 스텝 400에서는, 파라미터 N이 제로값과 같게 설정된 후, 스텝 405에서는, 엔트리 N에 대한 QoS 레벨이 QoS 값 Z 이상인지 여부와, 더구나 엔트리 N에서 식별된 pQoS 값이 QoS 값 Z보다 작은지 여부를 판정한다. 그렇지 않은 경우에는, 스텝 410에서, 최종 QoS 목록 엔트리가 분석되었는지 여부를 판정하여, 분석되지 않은 경우에는, 스텝 415에서 파라미터 N이 증분되고, 스텝 405로 처리를 되돌린다. 특정한 엔트리에 대해, 스텝 405에서 설정한 조건이 만족하는 것으로 판정되면, 스텝 420으로 처리를 진행하여, QoS 목록 내부의 엔트리 N 직후에서 엔트리가 생성된다. 목록에 있는 1개의 엔트리에 대해 스텝 405의 조건이 항상 만족될 수 있도록 하기 위해, 목록에 있는 최종 엔트리가 QoS 값 Z보다 적은 것으로 항상 생각되는 소정의 값으로 설정된 pQoS 값을 가질 수 있다. 예를 들면, 도 4b를 참조하면, 이와 같은 소정의 레벨은 QoS 목록의 후미 엔트리에 심볼 "X"로 표시된다.
스텝 420에서 엔트리를 생성하는 것 이외에, 스텝 425에서 필요에 따라 최종 플래그가 세트되고(일반적으로 이것은 엔트리 N으로부터 최종 플래그를 상속받음으로써 행해질 수 있다), 더구나 스텝 430에서 엔트리 N에 대한 포인터와 pQoS 값이 갱신된다.
이와 같은 처리를 도 8에 개략적으로 나타내었는데, 이때 도 4a에 도시된 엔트리가 새로운 엔트리(455)로서 도 4b의 QoS 목록(310) 내부에 삽입되어 변형된 QoS 목록(450)을 생성한다. 특히, 할당될 새로운 트랜잭션의 QoS 값 Z는 이 경우에는 "4"이므로, (도 4b의 QoS 목록(310) 내부의 대응하는 엔트리에서 알 수 있는 것과 같이) 엔트리 457이 처음에는 4의 QoS 값과 1의 pQoS 값을 가졌기 때문에, 엔트리 457이 도 7의 스텝 405의 조건을 만족하는 엔트리 N으로서 확인된다. 따라서, 엔트리 457로부터 원래의 포인터 값을 상속받은 새로운 엔트리 455가 할당되는 한편, 엔트리 457은 이 새로운 엔트리 455를 가리키도록 변형된다. 더구나, 엔트리 457에 기억된 pQoS 값은 "1"로부터 "4"로 갱신되어, 다음 엔트리 455의 QoS 값을 올바르게 확인한다. 새로운 엔트리 455가 QoS 목록에서 최종 엔트리가 아니므로, 그것의 최종 플래그가 세트되지 않는다.
도 7 및 도 8을 참조하여 위에서 설명한 실시예들은 각각의 엔트리가 QoS와 pQoS 값을 유지하여 할당처리를 단순하게 하고 할당처리를 가속화하는 도 6의 스텝 365를 수행하는 한가지 적절한 메카니즘을 설명하고 있지만, 필요한 경우에는 다른 기술이 사용될 수도 있다는 것은 명백하다. 예를 들면, 필요한 경우에는 테이블 워크(table walk)처리가 사용될 수도 있다.
도 9는 일 실시예에 따라 도 3의 중재회로(240)에 의해 행해지는 중재동작을 나타낸 흐름도이다. 새로운 트랜잭션을 메모리 인터페이스(250)로 전달하기 위해 선택할 필요가 있을 때, 스텝 500에서 중재동작이 개시된 후, 스텝 505에서 리미터신호가 세트되었는지 여부가 판정된다. 이 신호는 도 10a 내지 도 10c를 참조하여 나중에 상세히 설명한다. 그러나, 리미터 신호가 세트되지 않으면, 스텝 510으로 처리를 진행하여, 이전에 중재된 엔트리(즉, 중재동작이 마지막으로 행해졌을 때 이전의 승리 요청에 대응하는 엔트리)가 그것의 행 히트 목록의 후미로서 마크되었는지 여부를 판정한다. 마크되지 않은 경우에는, 이것은 관련된 행 히트 목록이 아직 비어 있지 않다는 것을 나타내며, 따라서 스텝 520으로 처리를 분기하여, 중재동작에 의해 선택된 엔트리가 이전에 중재된 엔트리의 히트 포인터가 가리키는 행 히트 목록의 엔트리가 된다.
그러나, 스텝 510에서, 이전에 중재된 엔트리가 그것의 행 히트 목록의 후미로서 마크되지 않은 것으로 판정된 경우에는, 스텝 515로 처리를 진행하여, 관련된 뱅크 QoS 목록의 선두에 있는 엔트리를 다음의 승리 엔트리로서 선택한다. 관련된 뱅크에 대해서는, 메모리 인터페이스(250)가 일반적으로 이 메모리 인터페이스가 새로운 트랜잭션을 수신할 수 있는 뱅크를 중재회로(240)에게 확인한다. 따라서, 일반적으로 스텝 515에서 고려할 단지 한 개의 QoS 목록만이 존재하게 된다.
스텝 515 또는 스텝 520 이후에, 스텝 525로 처리를 진행하여, 선택된 엔트리가 QoS 목록 및 행 히트 목록으로부터 팝되는데, 이 처리를 나중에 도 11a 및 도 11b를 참조하여 설명한다.
도 10a는 일 실시예에서 사용되는 리미터 회로(550)의 일례를 개략적으로 나타낸 것이다. 특정한 일 실시예에서, 리미터 회로는 각각의 뱅크에 대해 별개로 설치되고 중재회로(240)의 일부를 구성하는 것으로 생각할 수 있다. 각각의 리미터 회로는, 관련된 뱅크에 대한 승리 트랜잭션이 행 히트 목록으로부터 선택될 때마다 증분하는 카운터(55)를 구비한다. 더구나, 이 뱅크에 대한 QoS 목록으로부터 승리 트랜잭션이 선택될 때마다 카운터가 리셋된다. 카운터(555)에 의해 유지된 계수값이 소정의 임계값에 도달하면, 리미터 신호가 세트된다. 도 9의 스텝 505를 참조하면, 리미터 신호가 세트될 때, 이것은 처리가 직접 스텝 515로 진행하게 함으로써, 최종 승리 트랜잭션이 후미 위치에 있지 않았던 행 히트 목록으로부터 온 것이더라도, 다음의 승리 트랜잭션이 행 히트 목록이 아니라 QoS 목록으로부터 선택된다는 것을 알 수 있다. 이와 같은 접근방법에 의해, 특정한 뱅크의 특정한 행에 대한 다수의 계류중인 트랜잭션들이 존재하더라도, 다른 트랜잭션들의 QoS 레벨을 여전히 고려하도록 보장함으로써, 특정한 행에 대한 다수의 계류중인 트랜잭션들의 존재하에서 높은 우선순위의 트랜잭션이 용납할 수 없는 정도로 지연되지 않도록 보장할 수 있다.
도 10b는, 단순한 카운터 대신에, 편익 분석(benefit analysis) 기능(565)을 행하는 회로가 사용되는 또 다른 리미터 회로의 예를 나타낸 것이다. 도 10a의 카운터(555)에 의해 수신된 신호들 이외에, 편익 분석 기능(565)은 관련된 뱅크에 대한 QoS 목록의 선두 엔트리와 연관된 QoS 값의 표시를 수신한다. DRAM 메모리의 속성으로 인해, 특정한 행의 메모리 어드레스들에 대한 연속된 액세스들의 행 히트 편익을 확인하는 도 10c와 같은 그래프가 형성된다. 행이 액세스될 수 있기 전에 이 행을 활성화할 필요가 있고, 일반적으로 이 행이 다시 프리차지될 수 있기 전에 필요한 소정의 지연도 존재하기 때문에, 처음에는 행 히트 편익이 매우 크다. 따라서, 이 기간 동안, 그래프는 도 10c에 도시된 수평 형태를 취한다. 그러나, 이 초기 기간 후에는, 특정한 행 내부의 다수의 액세스들에 걸쳐 분할된 오버헤드로 인해, 곡선 그래프(570)로 나타낸 것과 같이 편익이 서서히 줄어든다. 따라서, 도 10c는 특정한 행에 대한 연속된 액세스들과 관련된 감소하는 우선순위 스케일로 변환될 수 있는데, 즉 연속된 액세스의 수가 증가함에 따라, 이들 액세스와 관련된 유효 QoS 값이 줄어든다. 따라서, 어떤 시점에서, 이 의사 QoS 값이 QoS 목록의 선두와 관련된 QoS 값보다 적은 레벨로 떨어지게 되고, 이 시점에서 리미터 신호가 세트되어 행 히트 목록 대신에 뱅크 QoS 목록의 선두로부터 다음의 승리 트랜잭션이 선택되게 할 수 있다.
도 11a는 QoS 목록으로부터 엔트리를 팝하기 위해 도 9의 스텝 525에서 행해지는 스텝들을 나타낸 흐름도이다. 스텝 600에서 이와 같은 엔트리가 팝될 필요가 있는 것으로 판정되면, 스텝 605로 처리를 진행하여, 팝될 엔트리가 QoS 목록의 선두에 위치하는지 여부를 판정한다. 이것은 명백하게 도 9의 스텝 515의 실행의 결과로써 도 9의 스텝 525에 도달하게 된 경우에 해당하지만, 도 9의 스텝 520을 통해 스텝 525에 도달하게 되는 경우는 반드시는 아니다. 특히, 엔트리가 행 히트 목록으로부터 선택될 때, 뱅크 QoS 목록의 이에 대응하는 엔트리가 이 뱅크 QoS 목록 내부의 임의의 위치에 위치할 수 있다.
스텝 605에서 팝될 엔트리가 QoS 목록의 선두에 위치하는 것으로 판정되면, 스텝 610으로 처리를 진행하여, 팝된 엔트리가 가리키는 엔트리 내부의 첫 번째 플래그가 세트된다. 더구나, 팝되고 있는 엔트리에 대한 유효 플래그가 소거되어 이 엔트리가 더 이상 유효하지 않다는 것을 나타낸다. 팝될 엔트리가 QoS 목록의 선두에 위치하지 않으면, 스텝 615로 처리를 진행하여, 팝된 엔트리를 가리키는 엔트리가 팝된 엔트리의 포인터, 팝된 엔트리의 PQoS 값 및 팝된 엔트리의 최종 플래그 상태를 상속받는다. 마찬가지로, 팝되고 있는 엔트리의 유효 플래그가 소거되어 이 엔트리가 더 이상 유효하지 않다는 것을 나타낸다.
스텝 615에서 행해지는 처리를 도 12에 개략적으로 나타내었는데, 이때 QoS 목록(470)의 엔트리 477이 팝됨으로써, 엔트리 477을 이전에 가리킨 엔트리 475의 포인터가 엔트리 478을 가리키도록 갱신되고 엔트리 475의 pQoS 값이 엔트리 478의 QoS 값을 반영하도록 갱신된다. 팝된 엔트리 477의 최종 플래그가 세트되지 않았으므로, 엔트리 475도 마찬가지로 그것의 최종 엔트리가 세트되지 않는다.
도 11b는 행 히트 목록으로부터 엔트리를 팝할 때 행해지는 대응하는 스텝들을 나타낸 것이다. 도 11b와 도 11a의 비교로부터 알 수 있는 것과 같이, 처리는 대체로 동일하다. 팝될 엔트리가 행 히트 목록의 선두에 위치하면, 스텝 660에서 이 팝된 엔트리가 가리키는 엔트리의 선두 플래그가 세트된다. 그러나, 팝될 엔트리가 행 히트 목록의 선두에 있지 않으면, 스텝 665에서 팝된 엔트리를 가리키는 엔트리가 팝된 엔트리의 포인터와 후미 플래그 상태를 상속받는다.
도 13은 또 다른 실시예에 따라 도 3의 목록 할당회로(220)에 의해 행해지는 스텝들을 나타낸 흐름도이다. 도 13을 전술한 도 6과 비교하면, 도 13의 스텝 700 내지 725와 750 내지 760은 도 6의 스텝 350 내지 375와 380 내지 390과 각각 일치한다는 것을 알 수 있으므로, 이들 스텝은 더 이상 설명하지 않는다. 그러나, 도 13의 흐름도에서는, 4개의 추가적인 스텝들, 즉 스텝 730 내지 745가 행해진다.
특히, 도 13에서는, QoS 목록이 인에이블되거나 디스에이블될 수 있는 판독 증가 특징을 포함하는데, 이 판독 증가 특징을 본 명세서에서는 버딩 방식으로도 부른다. 이 판독 증가 특징이 인에이블되지 않으면, 스텝 740으로 처리를 진행한다. 그러나, 판독 증가 기능이 인에이블되면, 스텝 735로 처리를 진행하여, 엔트리를 가리키는 QoS 값이 QoS 값 Z와 동일하도록 증가된다. 이것을 도 14에 개략적으로 나타내었는데, 이 도면은 도 8을 참조하여 전술한 것과 동일한 할당을 나타내며, 판독 증가 기능의 효과를 추가로 나타낸 것이다. 특히, 새로운 엔트리 455가 도입될 때, 다음 엔트리 460에 대한 QoS 값이 새로운 엔트리의 QoS 값과 같아지도록 증가되어, 4의 QoS 값을 나타낸다. 그 결과, 삽입된 엔트리 455 내부에 확인된 pQoS 값이 4의 값을 취하게 된다. 그렇지 않은 경우에는, 이 처리가 정확히 도 8을 참조하여 전술한 것이 된다. 이와 같은 접근방법의 이점은, 새로운 엔트리가 엔트리 460의 앞에 삽입될 때 엔트리 460의 우선순위가 상승되며, 그 결과 이것이 더 낮은 우선순위 트랜잭션들의 불명확한 불록킹을 방지함으로써, 예측가능한 대기시간 산출을 허용할 수 있다. 도 13에서 설명한 실시예에서는, 엔트리를 가리키는 QoS 값이 QoS 값 Z와 같아지도록 갱신되지만, 이것은 필요조건은 아니며, 판독 증가 방식의 또 다른 실시예에서는, 엔트리를 가리키는 QoS 값을 단순히 소정의 양만큼 증가시키면 충분할 수도 있다는 것을 알 수 있다.
스텝 740 및 745는 전술한 링크된 버스트 트랜잭션들을 처리한다. 특히, 일 실시예에서는, 행 히트 목록들이 1개 이상의 스퍼 리스트를 지원하도록 구성될 수 있으며, 각각의 스퍼 리스트는 링크된 버스트 트랜잭션들을 식별하는 다수의 스퍼 리스트 엔트리들을 갖는다. 따라서, 스텝 740에서는, 할당된 새로운 트랜잭션이, 이전의 관련된 링크된 버스트 트랜잭션들에 뱅크 A, 행 B에 대한 행 히트 목록의 엔트리가 이미 할당된 링크된 버스트 트랜잭션인지 여부를 판정한다. 그렇다면, 스텝 745로 처리를 진행하여, 뱅크 A, 행 B에 대한 행 히트 목록으로부터 스퍼 리스트 상에 스퍼 리스트 엔트리가 생성되고, 이 엔트리는 IB 플래그가 세트됨으로써 "인버스트"로 마크된다. 이것은 행 히트 목록(480)에 대해 도 15에 개략적으로 나타낸다. 그러나, 각각의 다음의 링크된 버스트 트랜잭션에는 스퍼 리스트 내부의 스퍼 리스트 엔트리 487, 489가 할당된다. 그후, 예를 들면 도 16을 참조하여 설명하는 것과 같이, 이와 같은 스퍼 리스트 엔트리들은 중재중에 서로 다르게 처리될 수 있다.
특히, 도 16은 또 다른 실시예에 따라 도 3의 중재회로(240)에 의해 행해질 수 있는 중재동작을 나타낸 것이다. 전술한 도 9와 비교하면, 스텝 825 내지 845는 도 9의 스텝 505 내지 525와 일치하므로, 여기에서는 더 이상 설명하지 않는다. 그러나, 스텝 825 이전에, 다수의 추가적인 스텝들이 행해진다. 특히, 스텝 805에서는, 인버스트 플래그가 세트된 스퍼 리스트 엔트리가 이전에 중재된 엔트리를 가리키고 있는지 여부를 판정한다. 따라서, 도 15를 참조하면, 이전에 중재된 엔트리가 엔트리 485이면, 엔트리 487이 엔트리 485를 가리키므로 이 경우에 해당한다. 마찬가지로, 이전에 중재된 엔트리가 엔트리 487이었다면, 엔트리 489가 엔트리 487을 가리키므로 이것도 이 경우에 해당한다.
이 조건이 충족할 때마다, 스텝 810으로 처리가 분기되어, 인버스트 플래그가 세트된 스퍼 리스트 엔트리를 선택하여 승리 트랜잭션을 식별하고, 그후 스텝 845에서, 이 선택된 엔트리가 행 히트 목록으로부터 팝된다(그리고, 그것의 대응하는 엔트리가 관련된 QoS 목록으로부터 팝된다).
그러나, 스텝 805에서 확인된 이와 같은 스퍼 리스트 엔트리가 존재하지 않는 것으로 가정하면, 스텝 815로 처리를 진행하여, TimedOut 플래그가 세트된 트랜잭션이 존재하는지 여부를 판정한다. 특히, 본 실시예에서는, 소정의 예외 상태의 일례로서 TimedOut 플래그가 사용되고, 소정의 예외 상태의 존재를 확인하기 위해 TimedOut 플래그가 세트되면, 정규의 중재처리가 행해지지 않고, 그 대신에 스텝 820으로 처리가 분기된다. TimedOut 플래그는 다양한 이유로 세트될 수 있다. 그러나, 일 실시예에서는, 특정한 트랜잭션에 대한 상한에 도달하고 있기 때문에, 또는 이 트랜잭션이 처리될 때까지 다양한 다른 트랜잭션을 진행할 수 없기 때문에, 또는 다른 이유로 인해, 데이터 처리 시스템의 다른 곳에 있는 구성요소들이 이 트랜잭션이 가능한한 빨리 취급될 필요가 있는지를 확인한다. 따라서, 이들 구성요소들은 이 트랜잭션의 우선순위가 상승되도록 하는 제어신호를 발행하여, 이 특정한 트랜잭션에 대해 메모리 콘트롤러 내에서 TimedOut 플래그가 세트되게 한다. 이와 같은 TimedOut 플래그가 유지되는 다수의 장소가 존재한다. 그러나, 일 실시예에서는, 이 TimedOut 플래그가 계류중 트랜잭션 버퍼(230) 내부에 각각의 계류중인 트랜잭션의 상세와 관련하여 유지된다.
임의의 트랜잭션에 대해 TimedOut 플래그가 세트되면, 스텝 820으로 처리를 진행하여, TimedOut 플래그가 세트된 트랜잭션이 선택된다. TimedOut 플래그가 세트된 다수의 트랜잭션들이 존재하는 경우에는, 예를 들어, TimedOut 플래그가 세트된 트랜잭션들 중에서 무작위로 선택함으로써, 스텝 820에서 적절한 선택기술을 이용하여 승리 트랜잭션이 선택될 수 있다. 이 경우에, 설정될 리미터 신호에 대한 요구조건을 줄임으로써, 스텝 825로부터 스텝 835로의 분기가 더 빈번하게 발생하여, TimedOut 플래그가 세트된 트랜잭션의 가능성을 줄이는 것이 적절할 수도 있다.
전술한 기술에 따르면, 트랜잭션의 상당한 재정렬이 행 히트의 발생을 증진시킬 수 있도록 하면서, 이와 동시에 우선순위 레벨 내에서 트랜잭션들의 시간적 순서를 유지하는 목록 할당 및 중재 동작을 메모리 콘트롤러가 행한다. 따라서, 이것은 트랜잭션들의 재정렬 사이에서 균형이 취해질 수 잇도록 하여 액세스 대기시간을 줄이는 동시에, 시스템 레벨에서 트랜잭션들의 QoS 요구조건을 유지할 수 있다.
본 명세서에서는 특정한 실시예들을 설명하였지만, 본 발명이 이들 실시예에 한정되는 것은 아니며, 본 발명의 보호범위 내에서 다양한 변형 및 추가가 행해질 수 잇다는 것은 자명하다. 예를 들면, 본 발명의 보호범위를 벗어나지 않으면서, 이하의 종속항들의 특징의 다양한 조합이 독립항들의 특징과 함께 행해질 수도 있다.

Claims (31)

  1. 메모리 어드레스를 액세스하는데 걸리는 시간이 메모리장치 내부에서의 이전의 액세스 활동에 의존하는 불균일한 액세스 타이밍 특성을 갖는 상기 메모리장치에 대한 액세스를 제어하는 메모리 콘트롤러로서,
    적어도 1개의 트랜잭션 소스로부터 발행된 트랜잭션들로서, 각각의 트랜잭션이 이 트랜잭션에 대해 액세스될 메모리 어드레스를 명시하고 이 트랜잭션과 관련된 우선순위 표시를 포함하는 상기 트랜잭션들을 수신하도록 구성된 인터페이스와,
    상기 메모리 콘트롤러로부터 상기 메모리장치에 아직 발행되지 않은 상기 인터페이스에 의해 수신된 트랜잭션들을 계류중인 트랜잭션들로서 일시적으로 기억하고, 적어도 1개의 우선순위 기반의 순서 목록과 적어도 1개의 액세스 타이밍 순서 목록을 포함하는 상기 기억된 계류중인 트랜잭션들에 대한 복수의 순서 목록들을 유지하는 기억장치를 구비하고,
    각각의 우선순위 기반의 순서 목록은 다수의 엔트리를 갖고, 각각의 엔트리는 상기 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 엔트리는 관련된 계류중인 트랜잭션의 우선순위 표시에 근거하여 상기 엔트리의 우선순위 기반 순서 목록 내부에 정렬되고,
    각각의 액세스 타이밍 순서 목록은 다수의 엔트리를 갖고, 각각의 엔트리는 상기 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 액세스 타이밍 순서 목록과 관련된 상기 계류중인 트랜잭션들은, 트랜잭션들의 그룹 내부의 1개의 트랜잭션의 메모리 어드레스가 액세스되면, 상기 불균일 액세스 타이밍 특성을 고려하여 상기 메모리장치에 의해 효율적으로 액세스될 수 있는 메모리 어드레스들을 갖는 상기 트랜잭션들의 그룹을 구성하고,
    상기 메모리 콘트롤러는, 중재동작을 행하도록 구성된 중재회로를 더 구비하고, 상기 중재동작 중에 상기 복수의 순서 목록들을 참조하여 상기 계류중인 트랜잭션들로부터 상기 메모리장치에 발행될 승리 트랜잭션을 선택하고, 상기 기억장치는 상기 복수의 순서 목록들로부터 상기 승리 트랜잭션에 대한 엔트리를 제거하도록 구성되고,
    상기 중재동작이 행해질 때, 상기 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖고 상기 적어도 1개의 액세스 타이밍 순서 목록이 아직 비어있지 않은 경우에, 상기 중재동작은, 소정의 예외 상태가 존재하지 않으면, 상기 적어도 1개의 액세스 타이밍 순서 목록에 엔트리를 갖는 상기 계류중인 트랜잭션들 중에서 1개를 상기 승리 트랜잭션으로서 선택하도록 구성된, 메모리 콘트롤러.
  2. 제 1항에 있어서,
    상기 중계동작이 마지막으로 행해졌을 때 선택된 상기 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록 중에서 1개에 엔트리를 갖지 않거나, 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖지만 적어도 1개의 액세스 타이밍 순서 목록이 비어 있는 경우에, 상기 중재동작은 상기 적어도 1개의 우선순위 기반의 순서 목록들 중에서 1개 내부의 선두 위치에 있는 엔트리를 갖는 상기 계류중인 트랜잭션을 상기 승리 트랜잭션으로서 선택하도록 구성된 메모리 콘트롤러.
  3. 제 1항 또는 제 2항에 있어서,
    각각의 우선순위 기반의 순서 목록은 다수의 서브목록들을 포함하고, 각각의 엔트리가 1개의 서브목록 내에 존재하여 각각의 서브목록의 엔트리들이 동일한 우선순위 표시를 갖는 트랜잭션들과 관련되고, 상기 서브목록들은 상기 우선순위 표시에 근거하여 그들의 우선순위 기반의 순서 목록 내부에 정렬되고, 각각의 서브목록 내에서 이 서브목록의 엔트리들은 상기 인터페이스에 의한 관련된 트랜잭션들의 시간적 수신 순서에 근거하여 정렬되는 메모리 콘트롤러.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    각각의 액세스 타이밍 순서 목록 내에서, 상기 인터페이스에 의한 관련된 계류중인 트랜잭션들의 시간적인 수신 순서에 근거하여 상기 엔트리들이 정렬되는 메모리 콘트롤러.
  5. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 메모리장치는 복수의 뱅크들을 구비하고, 상기 적어도 1개의 우선순위 기반의 순서 목록은, 계류중인 트랜잭션이 존재하는 각각의 뱅크에 대한 별개의 우선순위 기반의 순서 목록을 포함하는 메모리 콘트롤러.
  6. 제 5항에 있어서,
    각각의 뱅크는 복수의 행들을 구비하고, 각각의 행은 이 행이 액세스되기 전에 활성화될 필요가 있어, 명시된 메모리 어드레스에 대한 액세스 타이밍이 이 명시된 메모리 어드레스를 포함하는 행이 이미 활성화되었는지 아닌지에 의존하여 변동하고,
    상기 적어도 1개의 액세스 타이밍 순서 록록은 계류중인 트랜잭션이 존재하는 각각의 뱅크의 각 행에 대한 별개의 액세스 타이밍 순서 목록을 포함하는 메모리 콘트롤러.
  7. 제 1항 내지 제 6항 중 어느 한 항에 있어서,
    상기 인터페이스에 의해 수신된 각각의 트랜잭션에 응답하여, 이 트랜잭션에 대한 엔트리를 상기 복수의 순서 목록들 중에서 적어도 1개에 할당하는 할당회로를 더 구비한 메모리 콘트롤러.
  8. 제 7항에 있어서,
    상기 인터페이스에 의해 수신된 각각의 트랜잭션에 대해, 상기 할당회로는 이 트랜잭션에 대한 엔트리들을 상기 적어도 1개의 우선순위 기반의 순서 목록들 중에서 1개와 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 할당하도록 구성된 메모리 콘트롤러.
  9. 제 1항 내지 제 8항 중 어느 한 항에 있어서,
    각각의 우선순위 기반의 순서 목록 내에서, 각각의 엔트리는 선두 표시자와 후미 표시자를 포함하고, 엔트리가 상기 우선순위 기반의 순서 목록 내의 선두 위치에 있는 경우에는 상기 선두 표시자가 세트되고, 엔트리가 상기 우선순위 기반의 순서 목록 내부의 후미 위치에 있는 경우에는 상기 후미 표시자가 세트되고,
    각각의 엔트리는 상기 우선순위 기반의 순서 목록 내의 다음 엔트리를 가리키는 포인터를 더 포함하고, 상기 다음 엔트리는 이 다음 엔트리를 가리키는 포인터를 갖는 엔트리보다 상기 선두 위치로부터 더 멀리 떨어진 위치에 놓이는 메모리 콘트롤러.
  10. 제 9항에 있어서,
    각각의 엔트리는 상기 관련된 계류중인 트랜잭션의 상기 우선순위 표시를 더 확인하는 메모리 콘트롤러.
  11. 제 10항에 있어서,
    각각의 엔트리는 상기 다음의 엔트리와 관련된 상기 계류중인 트랜잭션의 우선순위 표시를 더 확인하는 메모리 콘트롤러.
  12. 제 11항에 있어서,
    상기 인터페이스에 의해 수신된 현재의 트랜잭션에 응답하여, 상기 현재의 트랜잭션에 의해 명시된 메모리 어드레스를 고려하여 선택된 상기 적어도 1개의 우선순위 기반의 순서 목록들 중에서 선택된 1개의 우선순위 기반의 순서 목록에 상기 현재의 트랜잭션에 대한 엔트리를 할당하는 할당회로를 더 구비하고,
    상기 할당회로는, 상기 현재의 트랜잭션에 대한 우선순위 표시 이상의 상기 관련된 계류중인 트랜잭션에 대한 우선순위 표시를 갖고 상기 현재의 트랜잭션에 대한 우선순위 표시보다 작은 상기 다음의 엔트리와 관련된 계류중인 트랜잭션에 대한 우선순위 표시를 갖는 상기 선택된 우선순위 기반의 순서 목록에 있는 엔트리를 확인하도록 구성되고,
    상기 할당회로는, 상기 확인된 엔트리에 인접하지만 상기 확인된 엔트리보다 상기 선두 위치로부터 더 멀리 떨어지도록 정렬된 상기 현재의 트랜잭션에 대한 새로운 엔트리를 상기 선택된 우선순위 기반의 순서 목록 내에 추가하도록 더 구성된 메모리 콘트롤러.
  13. 제 12항에 있어서,
    상기 확인된 엔트리에 대한 포인터가 상기 새로운 엔트리를 가리키도록 갱신되고, 상기 새로운 엔트리에 대한 포인터는 상기 새로운 엔트리를 가리키도록 구성된 메모리 콘트롤러.
  14. 제 13항에 있어서,
    상기 다음 엔트리 내에서, 상기 관련된 트랜잭션의 상기 우선순위 표시가 갱신되는 메모리 콘트롤러.
  15. 제 14항에 있어서,
    상기 관련된 계류중인 트랜잭션의 우선순위 표시가 상기 새로운 엔트리와 관련된 상기 현재의 트랜잭션의 우선순위 표시와 일치하도록 갱신되는 메모리 콘트롤러.
  16. 제 12항 내지 제 15항 중 어느 한 항에 있어서,
    상기 새로운 엔트리가 상기 우선순위 기반의 순서 목록의 상기 후미 위치에 있는 경우에, 상기 할당회로는 상기 새로운 엔트리에 대한 상기 후미 지시자가 세트되도록 하고 이전에 후미 위치에 있는 엔트리에 대한 상기 후미 지시자가 소거되게 하는 메모리 콘트롤러.
  17. 제 12항 내지 제 16항 중 어느 한 항에 있어서,
    상기 현재의 트랜잭션에 대한 우선순위 표시 이상의 상기 관련된 계류중인 트랜잭션에 대한 우선순위 표시를 갖는 상기 선택된 우선순위 기반의 순서 목록에 엔트리가 존재하지 않는 경우에는, 상기 할당회로가 상기 현재의 트랜잭션에 대한 새로운 엔트리를 상기 선두 위치에 추가하도록 구성되고, 상기 새로운 엔트리에 대한 상기 선두 표시자가 세트되고, 상기 새로운 엔트리에 대한 포인터가 이전에 상기 선두 위치에 있었던 엔트리를 가리키도록 구성되고, 상기 이전에 선두 위치에 있었던 엔트리의 선두 표시자가 소거되는 메모리 콘트롤러.
  18. 제 12항 내지 제 17항 중 어느 한 항에 있어서,
    상기 선택된 우선순위 기반의 순서 목록이 현재 엔트리를 갖지 않는 경우에, 상기 할당회로는, 상기 현재의 트랜잭션에 대해 할당된 새로운 엔트리가 선두 표시자와 후미 표시자를 세트가 되게 하도록 구성된 메모리 콘트롤러.
  19. 제 1항 내지 제 18항 중 어느 한 항에 있어서,
    각각의 액세스 타이밍 순서 목록 내에서, 각각의 엔트리가 선두 표시자와 후미 표시자를 포함하고, 상기 엔트리가 상기 액세스 타이밍 순서 목록 내부의 선두 위치에 있는 경우에는 상기 선두 표시자가 세트되고, 상기 엔트리가 상기 액세스 타이밍 순서 목록 내부의 후미 위치에 있는 경우에는 상기 후미 표시자가 세트되고,
    각각의 엔트리는 상기 액세스 타이밍 순서 목록 내부의 다음 엔트리를 가리키는 포인터를 더 포함하고, 상기 다음 엔트리는 이 다음 엔트리를 가리키는 포인터를 갖는 엔트리보다 상기 선두 위치로부터 더 멀리 떨어진 위치에 놓이는 메모리 콘트롤러.
  20. 제 19항에 있어서,
    상기 적어도 1개의 트랜잭션 소스에 의해 발행된 버스트 트랜잭션이 상기 메모리장치에 대한 복수의 링크된 버스트 트랜잭션들로 변환되고, 상기 메모리 콘트롤러는,
    상기 링크된 버스트 트랜잭션들 중에서 첫 번째 버스트 트랜잭션을 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개 내부의 엔트리에 할당한 후, 나머지 링크된 트랜잭션들 전체를 상기 엔트리와 관련된 스퍼리스트의 스퍼리스트 엔트리들에 할당하도록 구성된 할당회로를 더 구비한 메모리 콘트롤러.
  21. 제 20항에 있어서,
    상기 중재동작이 행해질 때, 상기 중재동작이 마지막으로 행해졌을 때 선택된 상기 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖고 이 엔트리가 상기 엔트리와 관련된 상기 스퍼리스트를 갖는 경우에, 상기 중재동작이 상기 스퍼리스트 내부의 스퍼리스트 엔트리를 갖는 상기 링크된 트랜잭션들 중에서 1개를 상기 승리 트랜잭션으로서 선택하도록 구성된 메모리 콘트롤러.
  22. 제 21항에 있어서,
    모든 링크된 트랜잭션들이 승리 요청으로서 선택되었을 때에만, 상기 중재동작이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 상기 1개에 있는 상기 다음의 엔트리와 관련된 트랜잭션을 다음의 승리 트랜잭션으로서 선택하도록 구성된 메모리 콘트롤러.
  23. 제 19항 내지 제 22항 중 어느 한 항에 있어서,
    상기 메모리장치는 복수의 뱅크를 포함하고, 각각의 뱅크가 복수의 행들을 포함하며, 상기 적어도 1개의 액세스 타이밍 순서 목록은 계류중인 트랜잭션이 존재하는 각각의 뱅크의 각 행에 대해 별개의 액세스 타이밍 순서 목록을 포함하고,
    각각의 액세스 타이밍 순서 목록 내부에서, 각각의 엔트리가 상기 액세스 타이밍 순서 목록이 제공되는 뱅크 및 행의 표시를 포함하는 메모리 콘트롤러.
  24. 제 1항 내지 제 23항 중 어느 한 항에 있어서,
    상기 우선순위 표시는 각각의 트랜잭션의 필드 내에 제공된 명시적인 우선순위 표시인 메모리 콘트롤러.
  25. 제 24항에 있어서,
    상기 우선순위 표시는 서비스 품질(quality of service: QoS) 레벨 표시인 메모리 콘트롤러.
  26. 제 1항 내지 제 25항 중 어느 한 항에 있어서,
    상기 소정의 예외 상태는 특정한 계류중인 트랜잭션의 우선순위 표시가 높은 우선순위를 표시하도록 변경시키는 상태이고, 상기 중재회로는, 상기 소정의 예외 상태의 존재시에, 상기 특정한 계류중인 트랜잭션을 상기 승리 트랜잭션으로서 선택하도록 구성되고, 상기 기억장치는 상기 복수의 순서 목록들로부터 상기 승리 트랜잭션에 대한 엔트리를 제거하도록 구성된 메모리 콘트롤러.
  27. 제 1항 내지 제 26항 중 어느 한 항에 있어서,
    상기 액세스 타이밍 순서 목록들 중에서 1개로부터 선택된 연속된 승리 트랜잭션들의 수를 적어도 모니터링하고 임계 상태의 발생시에 리미터 신호를 어서트하도록 구성된 리미터회로를 더 구비하고,
    상기 리미터 신호가 어서트되면 상기 소정의 예외 상태가 검출되고, 상기 중재회로는, 상기 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖고 적어도 1개의 액세스 타이밍 순서 목록이 여전히 비어 있지 않더라도, 상기 리미터 신호의 어서션에 응답하여, 다음의 중재동작의 실행이 상기 적어도 1개의 우선순위 기반의 순서 목록들 중에서 1개 내부의 선두 위치에 엔트리를 갖는 상기 계류중인 트랜잭션을 상기 승리 트랜잭션으로서 선택하게 하는 메모리 콘트롤러.
  28. 제 1항 내지 제 27항 중 어느 한 항에 있어서,
    상기 인터페이스에 의해 수신된 트랜잭션들은 판독 트랜잭션들인 메모리 콘트롤러.
  29. 제 1항 내지 제 28항 중 어느 한 항에 있어서,
    상기 중재회로는 복수의 중재동작을 병렬로 행하도록 구성된 메모리 콘트롤러.
  30. 메모리 어드레스를 액세스하는데 걸리는 시간이 메모리장치 내부에서의 이전의 액세스 활동에 의존하는 불균일한 액세스 타이밍 특성을 갖는 상기 메모리장치에 대한 액세스를 제어하는 방법으로서,
    적어도 1개의 트랜잭션 소스로부터 발행된 트랜잭션들로서, 각각의 트랜잭션이 이 트랜잭션에 대해 액세스될 메모리 어드레스를 명시하고 이 트랜잭션과 관련된 우선순위 표시를 포함하는 상기 트랜잭션들을 수신하는 단계와,
    적어도 1개의 우선순위 기반의 순서 목록과 적어도 1개의 액세스 타이밍 순서 목록을 포함하는 기억된 계류중인 트랜잭션들에 대한 복수의 순서 목록들을 유지하는 기억장치에, 출력 인터페이스로부터 상기 메모리장치에 아직 출력되지 않은 수신된 트랜잭션들을 상기 계류중인 트랜잭션들로서 일시적으로 기억하는 단계와,
    상기 계류중인 트랜잭션들 중에서 1개와 각각 관련되고, 관련된 계류중인 트랜잭션의 상기 우선순위 표시에 근거하여 그 자신의 우선순위 기반 순서 목록 내부에 각각 정렬되는 다수의 엔트리를 갖도록 각각의 우선순위 기반의 순서 목록을 구성하는 단계와,
    다수의 엔트리를 갖도록 각각의 액세스 타이밍 순서 목록을 구성하여, 각각의 엔트리가 상기 계류중인 트랜잭션들 중에서 1개와 관련되도록 하고, 각각의 액세스 타이밍 순서 목록과 관련된 상기 계류중인 트랜잭션들이, 트랜잭션들의 그룹 내부의 1개의 트랜잭션의 메모리 어드레스가 액세스되면, 상기 불균일 액세스 타이밍 특성을 고려하여 상기 메모리장치에 의해 효율적으로 액세스될 수 있는 메모리 어드레스들을 갖는 상기 트랜잭션들의 그룹을 구성하게 하는 단계와,
    상기 복수의 순서 목록들을 참조하여, 상기 계류중인 트랜잭션들로부터, 상기 출력 인터페이스로부터 상기 메모리장치에 출력될 승리 트랜잭션을 선택하는 중재동작을 행하고, 상기 복수의 순서 목록들로부터 상기 승리 트랜잭션에 대한 엔트리를 제거하는 단계를 포함하고,
    상기 중재동작이 행해질 때, 상기 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록들 중에서 1개에 엔트리를 갖고 상기 적어도 1개의 액세스 타이밍 순서 목록이 아직 비어있지 않은 경우에, 상기 중재동작은, 소정의 예외 상태가 존재하지 않으면, 상기 적어도 1개의 액세스 타이밍 순서 목록에 엔트리를 갖는 상기 계류중인 트랜잭션들 중에서 1개를 상기 승리 트랜잭션으로서 선택하도록 구성된, 액세스 제어방법.
  31. 메모리 어드레스를 액세스하는데 걸리는 시간이 메모리장치 내부에서의 이전의 액세스 활동에 의존하는 불균일한 액세스 타이밍 특성을 갖는 상기 메모리장치에 대한 액세스를 제어하는 메모리 콘트롤러로서,
    적어도 1개의 트랜잭션 소스로부터 발행된 트랜잭션들로서, 각각의 트랜잭션이 이 트랜잭션에 대해 액세스될 메모리 어드레스를 명시하고 이 트랜잭션과 관련된 우선순위 표시를 포함하는 상기 트랜잭션들을 수신하는 인터페이스수단과,
    상기 메모리 콘트롤러로부터 상기 메모리장치에 아직 발행되지 않은 상기 인터페이스수단에 의해 수신된 트랜잭션들을 계류중인 트랜잭션들로서 일시적으로 기억하고, 적어도 1개의 우선순위 기반의 순서 목록수단과 적어도 1개의 액세스 타이밍 순서 목록수단을 포함하는 상기 기억된 계류중인 트랜잭션들에 대한 복수의 순서 목록수단들을 유지하는 기억수단을 구비하고,
    각각의 우선순위 기반의 순서 목록수단은 다수의 엔트리를 갖고, 각각의 엔트리는 상기 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 엔트리는 관련된 계류중인 트랜잭션의 우선순위 표시에 근거하여 상기 엔트리의 우선순위 기반 순서 목록수단 내부에 정렬되고,
    각각의 액세스 타이밍 순서 목록수단은 다수의 엔트리를 갖고, 각각의 엔트리는 상기 계류중인 트랜잭션들 중에서 1개와 관련되고, 각각의 액세스 타이밍 순서 목록수단과 관련된 상기 계류중인 트랜잭션들은, 트랜잭션들의 그룹 내부의 1개의 트랜잭션의 메모리 어드레스가 액세스되면, 상기 불균일 액세스 타이밍 특성을 고려하여 상기 메모리장치에 의해 효율적으로 액세스될 수 있는 메모리 어드레스들을 갖는 상기 트랜잭션들의 그룹을 구성하고,
    상기 메모리 콘트롤러는, 중재동작을 행하는 중재수단을 더 구비하고, 상기 중재동작 중에 상기 복수의 순서 목록수단들을 참조하여 상기 계류중인 트랜잭션들로부터 상기 메모리장치에 발행될 승리 트랜잭션을 선택하고, 상기 기억수단은 상기 복수의 순서 목록수단들로부터 상기 승리 트랜잭션에 대한 엔트리를 제거하고,
    상기 중재동작이 행해질 때, 상기 중재동작이 마지막으로 행해졌을 때 선택된 승리 트랜잭션이 상기 적어도 1개의 액세스 타이밍 순서 목록수단들 중에서 1개에 엔트리를 갖고 상기 적어도 1개의 액세스 타이밍 순서 목록수단이 아직 비어있지 않은 경우에, 상기 중재동작은, 소정의 예외 상태가 존재하지 않으면, 상기 적어도 1개의 액세스 타이밍 순서 목록수단에 엔트리를 갖는 상기 계류중인 트랜잭션들 중에서 1개를 상기 승리 트랜잭션으로서 선택하는, 메모리 콘트롤러.
KR1020147000010A 2011-06-24 2012-05-29 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법 KR101883155B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/067,775 2011-06-24
US13/067,775 US8775754B2 (en) 2011-06-24 2011-06-24 Memory controller and method of selecting a transaction using a plurality of ordered lists
PCT/GB2012/051203 WO2012175929A1 (en) 2011-06-24 2012-05-29 A memory controller and method of operation of such a memory controller

Publications (2)

Publication Number Publication Date
KR20140048186A true KR20140048186A (ko) 2014-04-23
KR101883155B1 KR101883155B1 (ko) 2018-07-30

Family

ID=46229885

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147000010A KR101883155B1 (ko) 2011-06-24 2012-05-29 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법

Country Status (9)

Country Link
US (1) US8775754B2 (ko)
EP (1) EP2724240B1 (ko)
JP (1) JP6072783B2 (ko)
KR (1) KR101883155B1 (ko)
CN (1) CN103620570B (ko)
IL (1) IL229736A (ko)
MY (1) MY165068A (ko)
RU (1) RU2597520C2 (ko)
WO (1) WO2012175929A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921780B2 (en) 2015-11-23 2018-03-20 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101292309B1 (ko) * 2011-12-27 2013-07-31 숭실대학교산학협력단 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
KR101949382B1 (ko) * 2012-04-04 2019-02-18 삼성전자주식회사 서비스 품질의 향상을 위한 시스템 온 칩 및 시스템 온 칩의 제어 방법
US9535860B2 (en) 2013-01-17 2017-01-03 Intel Corporation Arbitrating memory accesses via a shared memory fabric
US9606850B2 (en) * 2013-03-12 2017-03-28 Arm Limited Apparatus and method for tracing exceptions
US9396109B2 (en) * 2013-12-27 2016-07-19 Qualcomm Incorporated Method and apparatus for DRAM spatial coalescing within a single channel
US9442878B2 (en) 2014-04-17 2016-09-13 Arm Limited Parallel snoop and hazard checking with interconnect circuitry
GB2525237B (en) * 2014-04-17 2021-03-17 Advanced Risc Mach Ltd Reorder buffer permitting parallel processing operations with repair on ordering hazard detection within interconnect circuitry
GB2525238B (en) 2014-04-17 2021-06-16 Advanced Risc Mach Ltd Hazard checking control within interconnect circuitry
US9779025B2 (en) 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
US11243898B2 (en) * 2014-08-01 2022-02-08 Arm Limited Memory controller and method for controlling a memory device to process access requests issued by at least one master device
GB2529217A (en) * 2014-08-14 2016-02-17 Advanced Risc Mach Ltd Transmission control checking for interconnect circuitry
US10013385B2 (en) 2014-11-13 2018-07-03 Cavium, Inc. Programmable validation of transaction requests
US20160139806A1 (en) * 2014-11-13 2016-05-19 Cavium, Inc. Independent Ordering Of Independent Transactions
GB2533808B (en) * 2014-12-31 2021-08-11 Advanced Risc Mach Ltd An apparatus and method for issuing access requests to a memory controller
US10241941B2 (en) * 2015-06-29 2019-03-26 Nxp Usa, Inc. Systems and methods for asymmetric memory access to memory banks within integrated circuit systems
CN106469127B (zh) * 2015-08-21 2019-11-15 深圳市中兴微电子技术有限公司 一种数据访问装置及方法
KR102408613B1 (ko) * 2015-08-27 2022-06-15 삼성전자주식회사 메모리 모듈의 동작 방법, 및 메모리 모듈을 제어하는 프로세서의 동작 방법, 및 사용자 시스템
US10169235B2 (en) * 2015-12-15 2019-01-01 Apple Inc. Methods of overriding a resource retry
GB2557944B (en) * 2016-12-19 2020-02-12 Advanced Risc Mach Ltd Transaction handling
CN107273059A (zh) * 2017-07-06 2017-10-20 郑州云海信息技术有限公司 一种存储命令的配置方法及系统
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US10732897B2 (en) * 2018-07-03 2020-08-04 Western Digital Technologies, Inc. Quality of service based arbitrations optimized for enterprise solid state drives
US10817219B2 (en) 2018-09-12 2020-10-27 Apple Inc. Memory access scheduling using a linked list
US10628355B2 (en) * 2018-09-19 2020-04-21 Arm Limited Apparatus and method for processing burst read transactions
US11537687B2 (en) 2018-11-19 2022-12-27 Groq, Inc. Spatial locality transform of matrices
CN111935100B (zh) * 2020-07-16 2022-05-20 锐捷网络股份有限公司 Flowspec规则下发方法、装置、设备及介质
US11494120B2 (en) * 2020-10-02 2022-11-08 Qualcomm Incorporated Adaptive memory transaction scheduling
CN116521096B (zh) * 2023-07-03 2023-09-22 摩尔线程智能科技(北京)有限责任公司 存储器访问电路及存储器访问方法、集成电路和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088772A (en) * 1997-06-13 2000-07-11 Intel Corporation Method and apparatus for improving system performance when reordering commands
US20050097265A1 (en) * 2003-11-05 2005-05-05 Denali Software, Inc. Reactive placement controller for interfacing with banked memory storage
KR20060039719A (ko) * 2004-11-03 2006-05-09 삼성전자주식회사 시스템 버스 성능 개선을 위한 상호접속 장치
KR100604220B1 (ko) * 1999-12-28 2006-07-24 인텔 코오퍼레이션 프로세싱 디바이스용 우선순위선정된 버스 요구 스케줄링메커니즘

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2325061B (en) * 1997-04-30 2001-06-06 Advanced Risc Mach Ltd Memory access protection
JP2912609B2 (ja) * 1997-05-02 1999-06-28 松下電器産業株式会社 複数アドレス保持記憶装置
US6578117B2 (en) * 2001-10-12 2003-06-10 Sonics, Inc. Method and apparatus for scheduling requests using ordered stages of scheduling criteria
CN100432958C (zh) * 2003-01-27 2008-11-12 松下电器产业株式会社 存储器控制装置
AU2003900733A0 (en) * 2003-02-19 2003-03-06 Canon Kabushiki Kaisha Dynamic Reordering of Memory Requests
US7328307B2 (en) * 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7356631B2 (en) 2005-01-21 2008-04-08 Himax Technologies, Inc. Apparatus and method for scheduling requests to source device in a memory access system
US8001338B2 (en) * 2007-08-21 2011-08-16 Microsoft Corporation Multi-level DRAM controller to manage access to DRAM
CN100507885C (zh) * 2007-09-04 2009-07-01 北京中星微电子有限公司 存储器访问的仲裁方法、系统和设备
US8046559B2 (en) * 2008-03-27 2011-10-25 Intel Corporation Memory rank burst scheduling

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088772A (en) * 1997-06-13 2000-07-11 Intel Corporation Method and apparatus for improving system performance when reordering commands
KR100604220B1 (ko) * 1999-12-28 2006-07-24 인텔 코오퍼레이션 프로세싱 디바이스용 우선순위선정된 버스 요구 스케줄링메커니즘
US20050097265A1 (en) * 2003-11-05 2005-05-05 Denali Software, Inc. Reactive placement controller for interfacing with banked memory storage
KR20060039719A (ko) * 2004-11-03 2006-05-09 삼성전자주식회사 시스템 버스 성능 개선을 위한 상호접속 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921780B2 (en) 2015-11-23 2018-03-20 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
RU2014102242A (ru) 2015-07-27
US20120331197A1 (en) 2012-12-27
CN103620570A (zh) 2014-03-05
JP6072783B2 (ja) 2017-02-01
WO2012175929A1 (en) 2012-12-27
MY165068A (en) 2018-02-28
KR101883155B1 (ko) 2018-07-30
RU2597520C2 (ru) 2016-09-10
EP2724240B1 (en) 2015-06-24
CN103620570B (zh) 2017-02-15
IL229736A (en) 2017-07-31
JP2014517431A (ja) 2014-07-17
IL229736A0 (en) 2014-01-30
US8775754B2 (en) 2014-07-08
EP2724240A1 (en) 2014-04-30

Similar Documents

Publication Publication Date Title
KR101883155B1 (ko) 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법
US11467769B2 (en) Managed fetching and execution of commands from submission queues
US6272600B1 (en) Memory request reordering in a data processing system
US9015451B2 (en) Processor including a cache and a scratch pad memory and memory control method thereof
US9128925B2 (en) System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines
EP2417528B1 (en) Command and interrupt grouping for a data storage device
KR20200011958A (ko) Gpu 태스크 스케줄링을 위한 연속 분석 태스크
JP2015500541A (ja) メモリ応答の順序付けのためのメモリ装置、コンピュータシステムおよび方法
US10152434B2 (en) Efficient arbitration for memory accesses
KR20090013085A (ko) 검색된 데이터를 메모리에 바로 기입하는 저장 컨트롤러에의한 버퍼 공간의 최적의 이용
US20080059672A1 (en) Methods and Apparatus for Scheduling Prioritized Commands on a Bus
EP2444903A1 (en) A transaction reordering arrangement
CN111684430A (zh) 支持同一信道上对不统一等待时间的存储器类型的响应
US8930601B2 (en) Transaction routing device and method for routing transactions in an integrated circuit
US9195618B2 (en) Method and system for scheduling memory requests
JP5056668B2 (ja) データ転送装置、およびデータ転送方法
JP3317873B2 (ja) データ転送制御装置
JP2011232917A (ja) 半導体集積回路、及びリクエスト制御方法
CN105183398B (zh) 一种存储设备、电子设备及数据处理方法
US10002099B2 (en) Arbitrated access to resources among multiple devices
JP4440181B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
US11914899B2 (en) System for managing access to a memory resource by multiple users
US11620083B2 (en) Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device

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