KR20140131781A - 메모리 제어 장치 및 방법 - Google Patents
메모리 제어 장치 및 방법 Download PDFInfo
- Publication number
- KR20140131781A KR20140131781A KR1020130050820A KR20130050820A KR20140131781A KR 20140131781 A KR20140131781 A KR 20140131781A KR 1020130050820 A KR1020130050820 A KR 1020130050820A KR 20130050820 A KR20130050820 A KR 20130050820A KR 20140131781 A KR20140131781 A KR 20140131781A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- request
- bank
- memory request
- scheduled
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
메모리 요청의 재스케줄링을 통하여 메모리 뱅크 충돌을 최소화하는 메모리 제어 장치에 관한 것이다. 일 실시예에 따르면, 메모리 제어 장치는 현재 사이클에 동시에 둘 이상의 메모리 요청이 존재하면 둘 이상의 메모리 요청에 포함된 모든 엘리먼트에 대해 결정된 메모리 뱅크 정보를 기초로 모든 엘리먼트들을 스케줄링하는 스케줄링부 및 모든 엘리먼트들에 대한 스케줄링이 완료되면 서로 메모리 뱅크 충돌이 발생하지 않도록 하나 이상의 엘리먼트를 이용하여 현재 사이클에 대한 스케줄링된 메모리 요청을 생성하는 요청생성부를 포함할 수 있다.
Description
메모리 요청의 스케줄링을 통하여 메모리 뱅크 충돌을 최소화하는 메모리 제어 장치 및 방법에 관한 것이다.
벡터 연산이 가능한 프로세서에서 로드/스토어 인스트럭션(load/store instruction)에 대한 처리는 일반적으로 주소 생성(address generation,AG), 메모리 셋업(memory setup, MS), 메모리 액세스(memory access, MA) 및 레지스터 파일에 기록(write back, WB)하는 파이프라인 단계를 거쳐 이루어진다. 주소 생성(AG) 단계에서는 로드 또는 스토어 요청에 대한 주소를 계산하고, 액세스할 메모리 뱅크를 선택한다. 메모리 셋업(MS) 단계에서는 메모리 액세스가 가능하도록 메모리 셋업을 수행하고, 메모리 액세스(MA) 단계에서 메모리에 값을 쓰거나 읽게 된다.
일반적으로 하나의 메모리 뱅크는 동시에 하나의 로드/스토어 인스트럭션에 대한 메모리 요청만을 처리할 수 있으므로, 특정 사이클에 하나의 메모리 뱅크를 액세스하는 둘 이상의 메모리 요청이 동시에 발행되면 메모리 뱅크 충돌이 발생한다. 이때, 어느 하나의 메모리 요청을 먼저 메모리 액세스(MA) 단계로 진입시키고 나머지 메모리 요청은 주소 생성(AG) 단계에 대기하도록 한다. 또한, 계속되는 메모리 요청의 처리에 의해 메모리의 값이 변경되는 것을 방지하기 위해 프로세서의 동작에 대한 스톨(stall)을 발생시킨다. 특히, 여러 메모리 뱅크를 동시에 액세스할 수 있는 벡터 로드/스토어 인스트럭션이 동시에 둘 이상이 발행되면 일부의 메모리 뱅크에 대해서만 충돌이 발생할 수 있다. 하지만, 이 경우에도 충돌이 발생할 때마다 스톨을 발생시키게 되어 데이터의 처리 성능이 감소한다.
벡터 연산이 가능한 프로세서에 동시에 둘 이상의 메모리 액세스 요청이 발생하는 경우 발행되는 메모리 요청의 재스케줄링을 통하여 메모리 뱅크 충돌을 최소화하여 효율적인 메모리 액세스를 가능하게 하는 메모리 제어 장치 및 방법이 제시된다.
일 양상에 따르면, 메모리 제어 장치는 현재 사이클에 동시에 둘 이상의 메모리 요청이 존재하면 둘 이상의 메모리 요청에 포함된 모든 엘리먼트에 대해 결정된 메모리 뱅크 정보를 기초로 모든 엘리먼트들을 스케줄링하는 스케줄링부 및 모든 엘리먼트들에 대한 스케줄링이 완료되면 서로 메모리 뱅크 충돌이 발생하지 않도록 하나 이상의 엘리먼트를 이용하여 현재 사이클에 대한 스케줄링된 메모리 요청을 생성하는 요청생성부를 포함할 수 있다.
또한, 메모리 제어 장치는 메모리 요청이 입력되면 메모리 요청에 포함된 엘리먼트에 대해 액세스할 메모리 뱅크를 결정하는 뱅크결정부를 더 포함할 수 있다.
뱅크결정부는 메모리 요청에 포함된 엘리먼트에 대한 주소를 산출하고, 산출된 주소를 이용하여 엘리먼트에 대한 메모리 뱅크를 결정할 수 있다.
메모리 제어 장치는 메모리의 하나 이상의 메모리 뱅크에 대응되는 하나 이상의 버퍼를 더 포함할 수 있다. 스케줄링부는 뱅크결정부에 의해 입력되는 메모리 요청에 포함된 엘리먼트에 대한 메모리 뱅크가 결정되면 그 메모리 뱅크 정보를 이용하여 그 엘리먼트를 대응되는 버퍼에 입력할 수 있다.
스케줄링부는 엘리먼트를 버퍼에 입력할 때 엘리먼트에 대한 메모리 요청 아이디 정보를 태깅(tagging)하여 입력할 수 있다.
요청생성부는 각 버퍼에서 대기중인 엘리먼트를 하나씩 꺼내 스케줄링된 메모리 요청을 생성할 수 있다.
또한, 메모리 제어 장치는 스케줄링된 메모리 요청이 생성된 후 버퍼 중의 어느 하나에 대기중인 엘리먼트가 아직 존재하면 스케줄링된 메모리 요청을 메모리에 전송할 때 스톨(stall)을 발생시키는 제어부를 더 포함할 수 있다.
제어부는 스케줄링된 메모리 요청을 다음 사이클에 메모리에 전송할 수 있다.
일 양상에 따르면, 메모리 제어 방법은 현재 사이클에 둘 이상의 메모리 요청이 존재하면 둘 이상의 메모리 요청에 포함된 모든 엘리먼트에 대해 결정된 메모리 뱅크 정보를 기초로 모든 엘리먼트들을 스케줄링하는 단계 및 모든 엘리먼트들에 대한 스케줄링이 완료되면 서로 메모리 뱅크 충돌이 발생하지 않도록 하나 이상의 엘리먼트를 이용하여 현재 사이클에 대한 스케줄링된 메모리 요청을 생성하는 단계를 포함할 수 있다.
또한, 메모리 제어 방법은 메모리 요청이 각각 입력되면 메모리 요청에 포함된 엘리먼트에 대해 액세스할 메모리 뱅크를 결정하는 단계를 더 포함할 수 있다.
메모리 뱅크 결정 단계는 메모리 요청에 포함된 엘리먼트에 대한 주소를 산출하고, 산출된 주소를 이용하여 엘리먼트에 대한 메모리 뱅크를 결정할 수 있다.
스케줄링 단계는 뱅크 결정 단계에서 입력되는 메모리 요청에 포함된 엘리먼트에 대한 메모리 뱅크가 결정되면 그 메모리 뱅크 정보를 이용하여 엘리먼트를 대응되는 버퍼에 입력하는 단계를 포함할 수 있다.
버퍼에 입력하는 단계는 엘리먼트를 버퍼에 입력할 때 엘리먼트에 대한 메모리 요청 아이디 정보를 태깅(tagging)하여 입력할 수 있다.
새로운 메모리 요청 생성 단계는 각 버퍼에서 대기중인 엘리먼트를 하나씩 꺼내 스케줄링된 메모리 요청을 생성할 수 있다.
또한, 메모리 제어 방법은 스케줄링된 메모리 요청이 생성된 후 버퍼 중의 어느 하나에 대기중인 엘리먼트가 아직 존재하면 스케줄링된 메모리 요청을 메모리에 전송할 때 스톨(stall)을 발생시키는 단계를 더 포함할 수 있다.
또한, 메모리 제어 방법은 스케줄링된 메모리 요청을 다음 사이클에 메모리에 전송하는 단계를 더 포함할 수 있다.
벡터 연산이 가능한 프로세서에 동시에 둘 이상의 메모리 액세스 요청이 발생하는 경우 발행되는 메모리 요청의 재스케줄링을 통하여 메모리 뱅크 충돌을 최소화함으로써 효율적인 메모리 액세스가 가능하다.
도 1은 일 실시예에 따른 메모리 시스템의 구성도이다.
도 2는 도 1의 실시에에 따른 메모리 제어 장치의 블록도이다.
도 3a는 일반적인 메모리 요청의 처리 절차에서 메모리 뱅크 충돌이 발생하지 않은 경우의 예이다.
도 3b는 일반적인 메모리 요청의 처리 절차에서 메모리 뱅크 충돌이 발생한 경우의 예이다.
도 4a는 일 실시예에 따른 메모리 제어 장치가 메모리 요청을 처리하는 절차의 예이다.
도 4b는 일 실시예에 따른 메모리 제어 장치가 메모리 요청을 처리하는 절차의 다른 예이다.
도 5는 일 실시예에 따른 메모리 제어 방법의 흐름도이다.
도 2는 도 1의 실시에에 따른 메모리 제어 장치의 블록도이다.
도 3a는 일반적인 메모리 요청의 처리 절차에서 메모리 뱅크 충돌이 발생하지 않은 경우의 예이다.
도 3b는 일반적인 메모리 요청의 처리 절차에서 메모리 뱅크 충돌이 발생한 경우의 예이다.
도 4a는 일 실시예에 따른 메모리 제어 장치가 메모리 요청을 처리하는 절차의 예이다.
도 4b는 일 실시예에 따른 메모리 제어 장치가 메모리 요청을 처리하는 절차의 다른 예이다.
도 5는 일 실시예에 따른 메모리 제어 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 메모리 제어 장치 및 방법의 실시예들을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 메모리 시스템(1)의 구성도이다. 일 실시예에 따른 메모리 시스템(1)은 영상 처리, 음성 처리 및 3D 그래픽스와 같은 대량의 데이터 처리를 수행하는 애플리케이션 등의 수행을 위한 고성능 벡터 프로세서를 효과적으로 지원할 수 있다.
프로세서는 특정 사이클에 하나 이상의 로드/스토어 인스트럭션을 만나면 그 로드/스토어 인스트럭션에 대하여 하나 이상의 로드/스토어 유닛(310)을 통해 메모리에 액세스하기 위한 메모리 요청을 발행한다. 메모리 제어 장치(100)는 하나 이상의 로드/스토어 유닛(310)을 통해 메모리 요청이 입력되면 그 메모리 요청에 포함된 엘리먼트에 대해 액세스할 메모리(200)의 뱅크를 결정할 수 있다. 이때, 메모리 요청은 어느 하나의 메모리 뱅크를 액세스하기 위한 하나의 엘리먼트를 포함하는 스칼라 메모리 요청이거나, 동시에 둘 이상의 메모리 뱅크를 액세스할 수 있는 둘 이상의 엘리먼트를 포함하는 벡터 메모리 요청일 수 있다.
메모리 제어 장치(100)는 메모리 뱅크가 결정된 메모리 요청을 메모리(200)에 전송하여 메모리에 액세스하도록 한다. 만약, 특정 사이클에 동시에 둘 이상의 메모리 요청이 존재하면, 예를 들어, 현재 사이클에 동시에 둘 이상의 메모리 요청이 프로세서로부터 입력되거나 이전 사이클에 처리되지 않고 대기중인 메모리 요청이 둘 이상 존재하거나, 이전 사이클에 처리되지 않고 대기중인 메모리 요청과 현재 사이클에 프로세서로부터 하나 이상의 메모리 요청이 입력되는 경우에는 각 메모리 요청에 포함된 모든 엘리먼트들을 이용하여 스케줄링을 하고, 스케줄링된 메모리 요청(SMR)을 생성하여 메모리(200)에 액세스하도록 할 수 있다.
이때, 메모리 제어 장치(100)는 하나 이상의 버퍼를 포함할 수 있으며, 하나 이상의 버퍼는 메모리(200)의 각 뱅크에 대응될 수 있다. 이때, 버퍼는 선입선출(First In First Out) 방식의 큐(Queue)일 수 있다. 메모리 제어 장치(100)는 버퍼를 이용하여 메모리 요청에 포함된 하나 이상의 엘리먼트를 스케줄링할 수 있다.
한편, 특정 사이클에 발행된 로드 인스트럭션에 대한 메모리 요청의 처리 결과는 하나 이상의 버퍼(320)에 입력되어 특정 사이클에 동시에 발행된 모든 로드 인스트럭션에 대한 메모리 요청이 처리될 때까지 버퍼(320)에 대기한다. 이후, 특정 사이클에 발행된 모든 메모리 요청의 처리가 완료되면 버퍼(320)에 대기중인 데이터들은 프로세서의 레지스터 파일(400)에 기록(write back)된다.
이와 같이 메모리 뱅크 충돌이 최소화되도록 모든 엘리먼트를 다시 스케줄링함으로써 프로세서의 스톨 발생을 최대한 줄여 처리 성능을 향상시킬 수 있다.
도 2는 도 1의 실시에에 따른 메모리 제어 장치(100)의 블록도이다.
도 2를 참조하면, 메모리 제어 장치(100)는 뱅크결정부(110), 스케줄링부(120), 요청생성부(130), 제어부(140) 및 버퍼(150)를 포함할 수 있다.
뱅크결정부(110)는 메모리에 액세스하여 데이터의 로드(load) 또는 스토어(store)하기 위한 메모리 요청이 입력되면 그 메모리 요청에 포함된 하나 이상의 엘리먼트 각각에 대해 액세스할 메모리 뱅크를 결정한다. 이때, 뱅크결정부(110)는 메모리 요청에 포함된 엘리먼트에 대한 주소를 계산하고, 계산된 주소를 이용하여 액세스할 메모리의 뱅크를 결정할 수 있다.
스케줄링부(120)는 뱅크결정부(110)에서 결정된 메모리 요청의 메모리 뱅크 정보를 이용하여 메모리 요청에 포함된 엘리먼트를 스케줄링한다. 스케줄링부(120)는 현재 사이클에 처리해야 할 메모리 요청이 둘 이상 존재하면 그 둘 이상의 메모리 요청에 포함된 모든 엘리먼트들을 결정된 메모리 뱅크 정보를 기초로 스케줄링할 수 있다. 이때, 현재 사이클에 처리해야 할 메모리 요청이 둘 이상 존재하는 경우란 예를 들어, 현재 사이클에 프로세서로부터 입력된 메모리 요청이 둘 이상이거나, 이전 사이클에서 처리되지 않고 대기중인 메모리 요청이 둘 이상인 경우 또는 이전 사이클에 처리되지 않고 대기중인 메모리 요청과 현재 사이클에 프로세서로부터 새로 메모리 요청이 입력되는 경우 등이 해당될 수 있다.
요청생성부(130)는 모든 엘리먼트에 대한 스케줄링이 완료되면 서로 메모리 뱅크 충돌이 발생하지 않도록 하나 이상의 엘리먼트를 이용하여 현재 사이클에 대한 스케줄링된 메모리 요청을 생성할 수 있다.
좀 더 구체적으로 스케줄링부(120)는 뱅크결정부(110)에서 메모리 요청의 각 엘리먼트를 하나 이상의 버퍼(150)를 이용하여 스케줄링할 수 있다. 이때, 버퍼(150)는 전술한 바와 같이 메모리의 각 뱅크에 대응되도록 하나 이상으로 이루어질 수 있다. 스케줄링부(120)는 입력된 메모리 요청의 엘리먼트에 대하여 뱅크결정부(110)에서 메모리 뱅크를 결정하면 그 결정된 메모리 뱅크에 대응되는 버퍼에 해당하는 엘리먼트를 입력함으로써 스케줄링을 할 수 있다.
이때, 스케줄링부(120)는 각 버퍼(150)에 해당하는 엘리먼트를 입력할 때 그 엘리먼트를 포함하는 메모리 요청의 아이디를 태깅(tagging)하여 입력할 수 있다. 이는 요청생성부(130)에 의해 스케줄링된 메모리 요청이 생성되더라도 원래의 메모리 요청을 구별할 수 있도록 하기 위함이다.
요청생성부(130)는 하나 이상의 버퍼(150) 각각에서 대기중인 엘리먼트 하나씩을 꺼내 서로 조합하여 새로운 스케줄링된 메모리 요청을 생성할 수 있다. 이와 같이, 각 버퍼(150)에서 하나씩 엘리먼트를 꺼내면 각 버퍼(150)는 서로 다른 메모리 뱅크에 대응되기 때문에 메모리 뱅크의 충돌이 발생하지 않는다.
이와 같이, 본 실시예에 따르면 현재 사이클에 처리할 둘 이상의 메모리 요청에 대해 프로세서로부터 입력된 메모리 요청 단위로 메모리 액세스를 처리하도록 하는 것이 아니라 모든 메모리 요청에 포함된 모든 엘리먼트들을 대상으로 다시 스케줄링을 하여 현재 사이클에 처리 가능한 엘리먼트들로 이루어진 스케줄링된 메모리 요청을 생성하여 처리하도록 함으로써 메모리 뱅크 충돌 횟수가 감소하여 프로세서의 stall이 발생하는 것을 최대한 줄일 수 있게 된다.
제어부(140)는 현재 사이클에 대한 스케줄링된 메모리 요청이 생성되면 메모리에 전송하여 처리되도록 한다. 제어부(140)는 스케줄링된 메모리 요청을 현재 사이클의 다음 사이클이 되면 메모리에 전송할 수 있다. 이때, 버퍼(150) 중의 어느 하나라도 대기중인 엘리먼트가 있는지를 확인하고, 대기중인 엘리먼트가 버퍼(150)에 남아 있으면 메모리 뱅크 충돌이 발생한 경우이므로 스톨을 발생시킬 수 있다.
만약, 다음 사이클에 프로세서로부터 새로운 메모리 요청이 입력되면 전술한 바와 같이 새로 입력된 메모리 요청의 엘리먼트에 대한 메모리 뱅크가 결정되어 버퍼(150)에 입력되고, 이전 사이클(현재 사이클 및 그 이전 사이클)에 입력되어 아직 버퍼에 대기중인 엘리먼트가 존재하면 그 엘리먼트들을 스케줄링하여 다음 사이클에 대한 스케줄링된 메모리 요청을 생성하게 된다. 만약, 다음 사이클에 프로세서로부터 새로운 메모리 요청이 입력되지 않고, 이전 사이클(현재 사이클 및 그 이전 사이클)에 입력되어 아직 버퍼에 대기중인 엘리먼트가 존재하면 대기중인 엘리먼트들을 스케줄링하여 다음 사이클에 대한 스케줄링된 메모리 요청을 생성하게 된다.
이와 같은 과정은 각 사이클이 진행될 때마다 반복 수행되고, 어느 특정 사이클에 버퍼(150)에 대기중인 엘리먼트가 존재하지 않으면 모든 메모리 요청에 대한 처리가 완료된 것이므로 종료하게 된다.
도 3a는 일반적인 메모리 요청의 처리 절차에서 메모리 뱅크 충돌이 발생하지 않은 경우의 예이다. 도 3b는 일반적인 메모리 요청의 처리 절차에서 메모리 뱅크 충돌이 발생한 경우의 예이다. 도 4a는 일 실시예에 따른 메모리 제어 장치가 메모리 요청을 처리하는 절차의 예이다. 도 4b는 일 실시예에 따른 메모리 제어 장치가 메모리 요청을 처리하는 절차의 다른 예이다. 도 3a 내지 도 4b를 참조하여 도 2의 메모리 제어 장치(100)가 메모리 요청을 처리하는 절차를 예를 들어 설명한다.
먼저, 도 3a 및 도 3b는 프로세서에서 특정 사이클 i에 메모리 로드 인스트럭션에 대한 3 개의 메모리 요청(MR n, MR n+1, MR n+2)을 동시에 발행한 경우의 예이다. 도 3a는 3개의 메모리 요청(MR n, MR n+1, MR n+2)이 메모리 뱅크 충돌이 발생하지 않은 경우로서, 각 메모리 요청(MR n, MR n+1, MR n+2)에 포함된 엘리먼트들이 액세스하는 메모리 뱅크가 전혀 충돌이 발생하지 않으면 각 메모리 요청((MR n, MR n+1, MR n+2)은 사이클 i+1에 메모리 셋업(Memory Setup) 단계로 진입하고, 사이클 i+2에 메모리 액세스(Memory Access) 단계로 진입하여 메모리 데이터를 로드하여 사이클 i+3에 레지스터 파일에 기록(Write Back)한다.
도 3b는 3개의 메모리 요청(MR n, MR n+1, MR n+2)이 모두 뱅크 충돌이 발생한 경우로서, 각 메모리 요청(MR n, MR n+1, MR n+2) 간에 어느 하나의 엘리먼트라도 동일한 메모리 뱅크에 액세스하고자 하면 메모리 뱅크 충돌이 발생하게 된다. 이 경우에는 메모리 요청 단위로 순차적으로 처리되는 데, 예를 들어, 도시된 바와 같이 어느 한 메모리 요청(MR n)이 사이클 i+1에 먼저 메모리 셋업 단계로 진입하고, 그 다음 사이클 i+2에 다른 메모리 요청(MR n+1)이 메모리 셋업 단계로 진입하며, 그 다음 사이클 i+3에 나머지 메모리 요청(MR n+2)이 메모리 셋업 단계로 순차적으로 진입한다. 이때, 사이클 i+1과 사이클 i+2에는 메모리 뱅크 충돌이 발생한 메모리 요청이 아직 대기중이므로 스톨이 발생하게 된다.
도 4a 및 도 4b는 메모리가 7개의 메모리 뱅크(0~7)로 이루어지고, 스칼라 메모리 요청 또는 동시에 4개의 메모리 뱅크에 액세스할 수 있도록 최대 4개의 엘리먼트를 가진 벡터 메모리 요청이 입력되는 것을 가정하고, 도 2의 실시예에 따른 메모리 제어 장치(100)가 메모리 요청을 처리하는 것을 예시한 것이다.
도 4a를 참조하면, 현재 사이클 i에 4개의 엘리먼트로 이루어진 3개의 벡터 메모리 요청(OMR 1, OMR 2, OMR 3)이 프로세서로부터 입력된다. 뱅크결정부(110)는 입력된 각 메모리 요청(OMR 1, OMR 2, OMR 3)에 포함된 4개의 엘리먼트들 각각에 대해 메모리 뱅크를 결정한다. 도시된 바와 같이, 뱅크결정부(110)에 의해 결정된 OMR 1의 메모리 뱅크는 '0,1,2,3'이고, OMR 2의 메모리 뱅크는 '2,3,4,5'이며, OMR 3의 메모리 뱅크는 '4,5,6,7'이다.
스케줄링부(120)는 결정된 메모리 뱅크 정보를 이용하여 메모리 뱅크(0~7)에 대응되는 버퍼(0~7)에 엘리먼트를 입력한다. 그 결과, 현재 사이클 i에 버퍼 0,1,6 및 7에는 하나의 엘리먼트가 입력되고, 버퍼 2,3,4 및 5에는 두 개의 엘리먼트가 입력된다.
요청생성부(130)는 현재 사이클 i에 대하여 버퍼(0~7)에서 엘리먼트를 하나씩 꺼내 조합하여 동시에 7개의 메모리 뱅크에 액세스할 수 있는 스케줄링된 메모리 요청(SMR 1)을 생성한다.
제어부(140)는 다음 사이클 i+1이 되면 이와 같이 생성된 스케줄링된 메모리 요청(SMR 1)을 메모리에 전송하여 메모리 뱅크에 액세스하여 데이터를 로드하도록 한다. 이때, 제어부(140)는 아직 처리되지 않는 엘리먼트가 버퍼에 존재하므로 즉, 원래의 메모리 요청 OMR 2와 OMR 3은 메모리 뱅크가 충돌되는 엘리먼트가 존재하여 전부 처리되지 않은 상태이므로 스톨을 발생시킨다.
스케줄링부(120)는 다음 사이클 i+1에 뱅크결정부(110)에 의해 메모리 뱅크가 결정된 새로운 메모리 요청이 존재하는지 확인한다. 도시된 바와 같이 사이클 i+1에는 새로운 메모리 요청이 입력되지 않았으므로 버퍼(0~7) 중의 어느 하나에 아직 처리되지 않은 메모리 요청에 대한 엘리먼트가 존재하는지 확인한다. 특정 버퍼(2,3,4,5)에는 각각 하나씩의 엘리먼트가 아직 존재하므로 요청생성부(130)로 하여금 새로운 스케줄링된 메모리 요청을 생성하도록 한다.
요청생성부(110)는 다음 사이클 i+1에 특정 버퍼(2,3,4,5)에서 엘리먼트를 꺼내 새로운 스케줄링된 메모리 요청(SMR 2)를 생성한다.
제어부(140)는 그 다음 사이클 i+2가 되면 새로 생성된 스케줄링된 메모리 요청(SMR 2)을 메모리에 전송할 수 있다. 이때, 버퍼(0~7)에 남아 있는 엘리먼트가 존재하지 않으므로 스톨을 발생시키지 않는다.
한편, 사이클 i+1에 새로 스케줄링된 메모리 요청(SMR 1)은 사이클 i+3에 메모리 액세스가 완료되면 도 1에 도시된 바와 같은 하나 이상의 쓰기 버퍼(320)에서 대기하고 동시에 입력된 원래의 메모리 요청(OMR 1,OMR 2,OMR 3)에 대한 처리가 모두 완료되면 즉, 나머지 SMR 2에 대한 처리가 완료되는 사이클 i+4에 레지스터 파일(400)에 기록된다.
이와 같이, 도 3b에서 설명한 바와 같은 일반적인 처리 절차에 의하는 경우 OMR 1, OMR 2 및 OMR 3는 모두 메모리 뱅크의 충돌이 발생하므로 두 번의 스톨이 발생되어야 하나, 개시된 실시예에 따르면 메모리 요청의 스케줄링을 통해 한 번의 스톨만이 발생하게 되어 메모리 처리 속도가 향상될 수 있다.
도 4b는 일 실시예에 따른 메모리 제어 장치(100)가 메모리 요청을 처리하는 다른 절차를 예시한 것이다. 도 4b를 참조하면, 사이클 i에서 메모리 뱅크 충돌이 발생하는 두 개의 메모리 요청(OMR 1, OMR 2)이 동시에 발행되었으며, 바로 다음 사이클 i+1에서 메모리 뱅크 충돌이 발생하는 메모리 요청(OMR 3, OMR 4)이 연속적으로 발행되었다. 메모리 제어 장치(100)는 이와 같이 둘 이상의 사이클에서 연속적으로 뱅크 충돌이 발생하는 경우에 스톨 발생을 최소화하기 위해 메모리 처리 파이프라인 단계에 뱅크 충돌을 체크하는 단계(Checking Bank conflict)를 추가할 수 있다.
도 4b에 도시된 바와 같이, 현재 사이클 i에 입력된 메모리 요청 OMR 1과 OMR 2가 입력되면 뱅크결정부(110)에 의해 메모리 뱅크가 결정된다. 그 다음, 다음 사이클 i+1에 메모리 뱅크 충돌을 체크하는 단계로 진입하여 스케줄링부(120)에 의해 각 엘리먼트들은 대응되는 버퍼(150)에 입력되고 모든 뱅크가 충돌되므로 요청생성부(130)는 각 버퍼(150)에서 엘리먼트를 하나씩 꺼내 새로운 스케줄링된 메모리 요청 SMR 1을 생성한다. 결과적으로 스케줄링된 메모리 요청 SMR 1은 사이클 i에서 입력된 메모리 요청 OMR 1이 된다. 마찬가지로, 다음 사이클 i+1에 입력된 메모리 요청 OMR 3 및 OMR 4는 뱅크결정부(110)에 의해 메모리 뱅크가 결정된다.
그 다음 사이클 i+2가 되면 제어부(140)는 스케줄링된 메모리 요청 SMR 1을 메모리에 보내고, 스톨을 발생시킨다. 또한, 스케줄링부(120)는 메모리 뱅크가 결정된 메모리 요청 OMR 3 및 OMR 4 중에서 뱅크 충돌이 발생하지 않는 OMR 4를 버퍼(150)에 입력하고, 요청생성부(130)는 버퍼(150)에서 하나씩 꺼내 스케줄링된 메모리 요청 SMR 2를 생성한다. 그 결과 SMR 2는 뱅크충돌이 발생하지 않는 OMR 2의 엘리먼트와 OMR 4의 엘리먼트가 조합된다.
그 다음 사이클 i+3이 되면 제어부(140)는 생성된 메모리 요청 SMR 2를 메모리에 보내고, 스케줄링부(120)는 처리되지 않고 대기중인 OMR 3를 버퍼(150)에 입력하고, 요청생성부(130)로 하여금 스케줄링된 메모리 요청을 생성하도록 한다. 요청생성부(130)는 스케줄링부(120)의 요청에 따라 버퍼(150)에서 하나씩 꺼내 스케줄링된 메모리 요청 SMR 3를 생성하고, 그 다음 사이클 i+4가 되면 제어부는 메모리 요청 SMR 3을 메모리에 보낸다.
사이클 i+4가 되면 맨 처음 메모리에 보내진 메모리 요청 SMR 1의 처리가 완료되고 레지스터 파일에 기록되기 전에 SMR 2이 처리될 때까지 대기한다. 사이클 i+5가 되면 두 번째로 메모리에 보내진 SMR 2의 처리가 완료되어 원래의 메모리 요청 OMR 1과 OMR 2의 처리 결과는 레지스터 파일에 기록된다. 반면, SMR 2중에 포함된 원래의 메모리 요청 OMR 4는 SMR 3이 완료할 때까지 대기하고, 사이클 i+6이 되어 SMR 3의 처리가 완료되면 함께 레지스터 파일에 기록된다.
도 5는 일 실시예에 따른 메모리 제어 방법의 흐름도이다. 일 실시예에 따른 메모리 제어 방법은 전술한 바와 같은 메모리 제어 장치(100)에 의해 수행될 수 있다.
메모리 제어 장치(100)는 특정 사이클에 입력되는 하나 이상의 메모리 요청에 대해 액세스할 메모리 뱅크를 결정한다(단계 510). 예를 들어, 프로세서가 로드/스토어 인스트럭션을 처리하기 위해 메모리 액세스를 요청하면 프로세서로부터 메모리 요청을 입력받고(단계 511), 그 메모리 요청에 포함된 하나 이상의 엘리먼트에 대하여 액세스할 메모리 뱅크를 결정할 수 있다(단계 512). 이때, 메모리 제어 장치(100)는 각 엘리먼트에 대한 주소를 산출하고, 산출된 주소를 기초로 대응되는 메모리 뱅크를 결정할 수 있다.
그 다음, 하나 이상의 메모리 요청에 포함된 모든 엘리먼트에 대한 메모리 뱅크가 결정되면 메모리 뱅크 충돌이 최소가 되도록 모든 엘리먼트를 대상으로 스케줄링할 수 있다(단계 520). 이때, 어느 특정 사이클에 동시에 둘 이상의 메모리 요청이 입력되거나 이전 사이클에서 처리되지 않은 메모리 요청에 의해 둘 이상의 메모리 요청이 존재하는 경우 효과적인 스케줄링이 가능하다.
예를 들어, 메모리 제어 장치(100)는 입력된 메모리 요청에 포함된 엘리먼트에 대해 메모리 뱅크가 결정되면, 각 엘리먼트가 어느 메모리 요청에 대한 것인지를 구분하기 위해 모든 엘리먼트에 대해 각 메모리 요청의 아이디를 태깅(tagging)하고(단계 521), 태깅된 각 엘리먼트를 대응되는 버퍼에 입력할 수 있다(단계 522). 이와 같이 메모리 뱅크마다 대응되는 버퍼를 구비하고 버퍼를 이용하여 메모리에 함께 보내질 메모리 요청을 스케줄링하도록 함으로써 서로 뱅크 충돌이 발생하지 않도록 효과적으로 스케줄링이 가능하여 프로세서의 스톨 발생을 최소화할 수 있다.
한편, 어느 특정 사이클에 메모리 요청이 입력되지 않으면, 메모리 제어 장치(100)는 아직 처리되지 않은 메모리 요청이 존재하는지, 즉, 버퍼에 아직 남아 있는 엘리먼트가 존재하는지를 확인한다(단계 523). 버퍼에 엘리먼트가 존재하면 이전 사이클에서 발행되어 아직 처리되지 않은 메모리 요청이 남아 있는 경우이므로, 메모리에 보내질 스케줄링된 메모리 요청을 생성하도록 요청한다. 만약, 버퍼에 엘리먼트가 전혀 존재하지 않으면 더 이상 처리할 메모리 요청이 없는 경우이므로 스케줄링을 종료한다.
그 다음, 스케줄링 단계(520)에서 버퍼에 엘리먼트가 새로 입력되거나 아직 남아 있는 경우 각 버퍼에서 엘리먼트를 하나씩 꺼내어 스케줄링된 메모리 요청을 생성한다(단계 530).
이후, 스케줄링된 메모리 요청을 메모리에 보내 처리되도록 한다(단계 540). 즉, 다음 사이클이 될 때까지 대기하고(단계 541) 다음 사이클이 되면 스케줄링된 메모리 요청을 메모리에 전송한다(단계 542). 이때, 버퍼에 남아 있는 엘리먼트가 존재하는 경우에는 스톨을 발생시킨다(단계 544). 또한, 다음 사이클에 새로운 메모리 요청이 입력되는지(단계 511)에 따라 전술한 바와 같은 절차를 반복 수행한다.
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 개시된 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 메모리 제어 장치 110: 뱅크결정부
120: 스케줄링부 130: 요청생성부
140: 제어부 150: 버퍼
120: 스케줄링부 130: 요청생성부
140: 제어부 150: 버퍼
Claims (16)
- 현재 사이클에 동시에 둘 이상의 메모리 요청이 존재하면 상기 둘 이상의 메모리 요청에 포함된 모든 엘리먼트에 대해 결정된 메모리 뱅크 정보를 기초로 상기 모든 엘리먼트들을 스케줄링하는 스케줄링부; 및
상기 모든 엘리먼트들에 대한 스케줄링이 완료되면 서로 메모리 뱅크 충돌이 발생하지 않도록 하나 이상의 엘리먼트를 이용하여 현재 사이클에 대한 스케줄링된 메모리 요청을 생성하는 요청생성부;를 포함하는 메모리 제어 장치. - 제1항에 있어서,
메모리 요청이 입력되면 상기 메모리 요청에 포함된 엘리먼트에 대해 액세스할 메모리 뱅크를 결정하는 뱅크결정부;를 더 포함하는 메모리 제어 장치. - 제2항에 있어서, 상기 뱅크결정부는
상기 메모리 요청에 포함된 엘리먼트에 대한 주소를 산출하고, 산출된 주소를 이용하여 상기 엘리먼트에 대한 메모리 뱅크를 결정하는 메모리 제어 장치. - 제2항에 있어서,
메모리의 하나 이상의 메모리 뱅크에 대응되는 하나 이상의 버퍼를 더 포함하고,
상기 스케줄링부는
상기 뱅크결정부에 의해 입력되는 메모리 요청에 포함된 엘리먼트에 대한 메모리 뱅크가 결정되면 그 메모리 뱅크 정보를 이용하여 상기 엘리먼트를 대응되는 버퍼에 입력하는 메모리 제어 장치. - 제4항에 있어서, 상기 스케줄링부는
상기 엘리먼트를 버퍼에 입력할 때 상기 엘리먼트에 대한 메모리 요청 아이디 정보를 태깅(tagging)하여 입력하는 메모리 제어 장치. - 제4항에 있어서, 상기 요청생성부는
상기 각 버퍼에서 대기중인 엘리먼트를 하나씩 꺼내 상기 스케줄링된 메모리 요청을 생성하는 메모리 제어 장치. - 제6항에 있어서,
상기 스케줄링된 메모리 요청이 생성된 후 상기 버퍼 중의 어느 하나에 대기중인 엘리먼트가 아직 존재하면 상기 스케줄링된 메모리 요청을 메모리에 전송할 때 스톨(stall)을 발생시키는 제어부;를 더 포함하는 메모리 제어 장치. - 제7항에 있어서, 상기 제어부는
상기 스케줄링된 메모리 요청을 다음 사이클에 메모리에 전송하는 메모리 제어 장치. - 현재 사이클에 둘 이상의 메모리 요청이 존재하면 상기 둘 이상의 메모리 요청에 포함된 모든 엘리먼트에 대해 결정된 메모리 뱅크 정보를 기초로 상기 모든 엘리먼트들을 스케줄링하는 단계; 및
상기 모든 엘리먼트들에 대한 스케줄링이 완료되면 서로 메모리 뱅크 충돌이 발생하지 않도록 하나 이상의 엘리먼트를 이용하여 현재 사이클에 대한 스케줄링된 메모리 요청을 생성하는 단계;를 포함하는 메모리 제어 방법. - 제9항에 있어서,
메모리 요청이 각각 입력되면 상기 메모리 요청에 포함된 엘리먼트에 대해 액세스할 메모리 뱅크를 결정하는 단계;를 더 포함하는 메모리 제어 방법. - 제10항에 있어서, 상기 메모리 뱅크 결정 단계는
상기 메모리 요청에 포함된 엘리먼트에 대한 주소를 산출하고, 산출된 주소를 이용하여 상기 엘리먼트에 대한 메모리 뱅크를 결정하는 메모리 제어 방법. - 제10항에 있어서, 상기 스케줄링 단계는
상기 뱅크 결정 단계에서 입력되는 메모리 요청에 포함된 엘리먼트에 대한 메모리 뱅크가 결정되면 그 메모리 뱅크 정보를 이용하여 상기 엘리먼트를 대응되는 버퍼에 입력하는 단계;를 포함하는 메모리 제어 방법. - 제12항에 있어서, 상기 버퍼에 입력하는 단계는
상기 엘리먼트를 버퍼에 입력할 때 상기 엘리먼트에 대한 메모리 요청 아이디 정보를 태깅(tagging)하여 입력하는 메모리 제어 방법. - 제11항에 있어서, 상기 새로운 메모리 요청 생성 단계는
상기 각 버퍼에서 대기중인 엘리먼트를 하나씩 꺼내 상기 스케줄링된 메모리 요청을 생성하는 메모리 제어 방법. - 제14항에 있어서,
상기 스케줄링된 메모리 요청이 생성된 후 상기 버퍼 중의 어느 하나에 대기중인 엘리먼트가 아직 존재하면 상기 스케줄링된 메모리 요청을 메모리에 전송할 때 스톨(stall)을 발생시키는 단계;를 더 포함하는 메모리 제어 방법. - 제10항에 있어서,
상기 스케줄링된 메모리 요청을 다음 사이클에 메모리에 전송하는 단계;를 더 포함하는 메모리 제어 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130050820A KR20140131781A (ko) | 2013-05-06 | 2013-05-06 | 메모리 제어 장치 및 방법 |
JP2014095402A JP2014219980A (ja) | 2013-05-06 | 2014-05-02 | メモリ制御装置及びメモリ制御方法 |
EP20140166942 EP2801913A1 (en) | 2013-05-06 | 2014-05-05 | Memory control apparatus and method |
CN201410188280.3A CN104142802A (zh) | 2013-05-06 | 2014-05-06 | 存储器控制设备和方法 |
US14/270,795 US20140331021A1 (en) | 2013-05-06 | 2014-05-06 | Memory control apparatus and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130050820A KR20140131781A (ko) | 2013-05-06 | 2013-05-06 | 메모리 제어 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140131781A true KR20140131781A (ko) | 2014-11-14 |
Family
ID=50630673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130050820A KR20140131781A (ko) | 2013-05-06 | 2013-05-06 | 메모리 제어 장치 및 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20140331021A1 (ko) |
EP (1) | EP2801913A1 (ko) |
JP (1) | JP2014219980A (ko) |
KR (1) | KR20140131781A (ko) |
CN (1) | CN104142802A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829618A (zh) * | 2018-09-14 | 2018-11-16 | 河南中光学集团有限公司 | 一种高速数据实时交换处理装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9229885B2 (en) * | 2014-05-21 | 2016-01-05 | Freescale Semiconductor, Inc. | Adaptive scheduling queue control for memory controllers based upon page hit distance determinations |
US20170308296A1 (en) * | 2016-04-22 | 2017-10-26 | Hewlett Packard Enterprise Development Lp | Staging write requests |
US11100228B2 (en) * | 2018-10-25 | 2021-08-24 | Dell Products, L.P. | System and method to recover FPGA firmware over a sideband interface |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6963962B2 (en) * | 2002-04-11 | 2005-11-08 | Analog Devices, Inc. | Memory system for supporting multiple parallel accesses at very high frequencies |
KR100750273B1 (ko) * | 2003-01-27 | 2007-08-17 | 마츠시타 덴끼 산교 가부시키가이샤 | 메모리 제어장치 |
US20060195677A1 (en) * | 2005-02-28 | 2006-08-31 | Texas Instruments Incorporated | Bank conflict avoidance in a multi-banked cache system |
JP4820566B2 (ja) * | 2005-03-25 | 2011-11-24 | パナソニック株式会社 | メモリアクセス制御回路 |
WO2007003370A2 (en) * | 2005-06-30 | 2007-01-11 | Interuniversitair Microelektronica Centrum Vzw | A memory arrangement for multi-processor systems |
US8560795B2 (en) * | 2005-06-30 | 2013-10-15 | Imec | Memory arrangement for multi-processor systems including a memory queue |
US7664905B2 (en) * | 2006-11-03 | 2010-02-16 | Nvidia Corporation | Page stream sorter for poor locality access patterns |
US8327057B1 (en) * | 2007-04-16 | 2012-12-04 | Juniper Networks, Inc. | Ordering write bursts to memory |
US7870351B2 (en) * | 2007-11-15 | 2011-01-11 | Micron Technology, Inc. | System, apparatus, and method for modifying the order of memory accesses |
JP5217786B2 (ja) * | 2008-08-27 | 2013-06-19 | セイコーエプソン株式会社 | リクエスト調停装置及びリクエスト調停方法 |
CN103858386B (zh) * | 2011-08-02 | 2017-08-25 | 凯为公司 | 用于通过优化的决策树执行包分类的方法和装置 |
-
2013
- 2013-05-06 KR KR1020130050820A patent/KR20140131781A/ko not_active Application Discontinuation
-
2014
- 2014-05-02 JP JP2014095402A patent/JP2014219980A/ja active Pending
- 2014-05-05 EP EP20140166942 patent/EP2801913A1/en not_active Withdrawn
- 2014-05-06 CN CN201410188280.3A patent/CN104142802A/zh active Pending
- 2014-05-06 US US14/270,795 patent/US20140331021A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829618A (zh) * | 2018-09-14 | 2018-11-16 | 河南中光学集团有限公司 | 一种高速数据实时交换处理装置 |
CN108829618B (zh) * | 2018-09-14 | 2023-09-29 | 河南中光学集团有限公司 | 一种高速数据实时交换处理装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2014219980A (ja) | 2014-11-20 |
US20140331021A1 (en) | 2014-11-06 |
CN104142802A (zh) | 2014-11-12 |
EP2801913A1 (en) | 2014-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4553936B2 (ja) | アウト・オブ・オーダーのdmaコマンドキューにおけるコマンド順序の設定に関する技術 | |
US8082420B2 (en) | Method and apparatus for executing instructions | |
US9015451B2 (en) | Processor including a cache and a scratch pad memory and memory control method thereof | |
US9606808B2 (en) | Method and system for resolving thread divergences | |
CN106991073B (zh) | 用于向量运算的数据读写调度器及保留站 | |
TWI221250B (en) | Multi-processor system | |
US10019283B2 (en) | Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread | |
US9229715B2 (en) | Method and apparatus for efficient inter-thread synchronization for helper threads | |
CN103914412B (zh) | 用于存储设备中的流量优先化的方法,存储设备以及存储系统 | |
US11507386B2 (en) | Booting tiles of processing units | |
CN111651202A (zh) | 一种用于执行向量逻辑运算的装置 | |
KR20140131781A (ko) | 메모리 제어 장치 및 방법 | |
US10152329B2 (en) | Pre-scheduled replays of divergent operations | |
KR20150101870A (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
KR20130080663A (ko) | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
JP2020508534A (ja) | スーパースレッドプロセッサ、処理システム、および方法 | |
US20140297956A1 (en) | Arithmetic processing apparatus, information processing apparatus and control method of arithmetic processing apparatus | |
KR20160078025A (ko) | 연산 처리 장치 및 방법 | |
US20190056953A1 (en) | Token-based data dependency protection for memory access | |
JP5238876B2 (ja) | 情報処理装置及び情報処理方法 | |
US20240330045A1 (en) | Input locality-adaptive kernel co-scheduling | |
KR101254911B1 (ko) | 다중 경로를 통해 데이터 입출력을 수행하기 위한 방법, 시스템 및 컴퓨터 판독 가능 기록 매체 | |
CN118733118A (zh) | 一种指令处理方法及装置 | |
CN118796275A (zh) | 处理结果写回方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |