KR102316154B1 - 지역성을 보존하는 메모리 아비터 - Google Patents
지역성을 보존하는 메모리 아비터 Download PDFInfo
- Publication number
- KR102316154B1 KR102316154B1 KR1020190177741A KR20190177741A KR102316154B1 KR 102316154 B1 KR102316154 B1 KR 102316154B1 KR 1020190177741 A KR1020190177741 A KR 1020190177741A KR 20190177741 A KR20190177741 A KR 20190177741A KR 102316154 B1 KR102316154 B1 KR 102316154B1
- Authority
- KR
- South Korea
- Prior art keywords
- requests
- memory
- request
- memories
- received
- 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/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
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- 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/1621—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
-
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 개시는 메모리 아비터에 관한 것이다. 메모리 아비터는, 복수의 장치로부터 수신된, 하나 이상의 메모리로의 복수의 요청들의 각각에 연관된 메모리 주소 및 복수의 요청의 각각을 송신한 장치에 대한 정보를 저장하도록 구성된 저장부, 복수의 요청을 하나 이상의 메모리의 각각과 서로 연결하도록 구성된 스위치부 및 복수의 요청을 요청 순서에 따라 수신하고, 수신된 복수의 요청의 각각에 포함된 메모리 주소와 저장부에 저장된, 수신된 복수의 요청의 각각보다 이전에 수신된 요청들과 연관된 메모리 주소를 비교하고, 비교 결과에 기초하여 스위치부에 의해 복수의 요청의 각각과 하나 이상의 메모리가 연결되는 순서를 결정하도록 구성된 제어부를 포함한다.
Description
본 개시는 지역성을 보존하는 메모리 아비터에 관한 것으로, 구체적으로, 복수의 장치가 공유 메모리에 접근하는 마스터-슬레이브 시스템에서 고성능을 달성할 수 있는 메모리 아비터에 관한 것이다. 본 개시의 메모리 아비터에서 복수의 장치가 요청하는 메모리의 주소들을 비교해, 공간적 지역성을 보존하도록 작동하는 스케줄링 알고리즘을 통해, 고성능을 달성할 수 있다.
메모리 아비터란 복수의 장치가 공유 메모리에 접근하는 마스터-슬레이브 시스템에서 동시 접근으로 인한 충돌이 생기지 않도록 메모리 요청을 스케줄링하는 장치를 의미한다. 메모리 아비터는 CPU, GPU, FPGA, ASIC 등의 다수의 프로세서가 메모리에 접근하는 시스템에서 필수적으로 사용되고 있다.
메모리 아비터의 스케줄링 기법은 다양한 방식이 있는데, 기존의 메모리 아비터들은 순서대로(Round-Robin) 요청을 처리하거나 요청의 개수를 기초로 우선순위를 두어 요청을 처리할 수 있다. 종래의 스케줄링 방법들은 특정 마스터의 요청이 긴 시간 동안 처리되지 않는 기아 상태(starvation)를 방지할 수 있지만, 슬레이브로 가는 메모리 접근의 지역성(locality)을 깨뜨려 시스템의 성능 감소를 초래할 수 있는 문제점이 있다.
본 개시의 상기와 같은 문제점을 해결하기 위한 지역성을 보존하는 메모리 아비터를 제공한다.
현재 메모리 접근 요청과 최근 메모리 접근 요청을 비교하여, 메모리 접근 요청의 공간적 지역성을 보존하도록 스케줄링하는 메모리 아비터가 제공된다.
기아 상태를 방지하기 위한 임의의 한계치를 설정하여, 특정 요청자에게서 온 요청이 한계치 이상인 경우, 특정 요청자의 요청은 더 이상 수신하지 않는 메모리 아비터가 제공된다.
본 개시는 방법, 시스템 또는 명령어들을 저장하는 컴퓨터 판독가능 저장 매체를 포함한 다양한 방식으로 구현될 수 있다.
복수의 장치로부터 수신된, 하나 이상의 메모리로의 복수의 요청들의 각각에 연관된 메모리 주소 및 상기 복수의 요청의 각각을 송신한 장치에 대한 정보를 저장하도록 구성된 저장부, 복수의 요청을 하나 이상의 메모리의 각각과 서로 연결하도록 구성된 스위치부 및 복수의 요청을 요청 순서에 따라 수신하고, 수신된 복수의 요청의 각각에 포함된 메모리 주소와 저장부에 저장된, 수신된 복수의 요청의 각각보다 이전에 수신된 요청들과 연관된 메모리 주소를 비교하고, 비교 결과에 기초하여 스위치부에 의해 복수의 요청의 각각과 하나 이상의 메모리가 연결되는 순서를 결정하도록 구성된 제어부를 포함한다.
일 실시예에 따르면, 제어부는 스위치부가 복수의 요청을 하나 이상의 메모리로 연결하는 순서를 결정하도록 구성된 요청 핸들러(request handler) 및 스위치부가 하나 이상의 메모리로부터 복수의 요청의 각각에 대한 응답을 복수의 요청의 각각과 연관된 장치로 연결하는 순서를 결정하도록 구성된 응답 핸들러(response handler)를 포함한다.
일 실시예에 따르면, 저장부에서 복수의 요청들의 각각에 포함된 메모리 주소는 미리 결정된 주소 범위를 가진 복수의 메모리 주소 영역의 각각에 연관되어 저장된다.
일 실시예에 따르면, 제어부는 복수의 요청 중, 스위치부를 통해 하나 이상의 메모리와 연결된 요청에 포함된 메모리 주소와 연관된 메모리 주소 영역과 동일한 메모리 주소 영역을 가진 하나 이상의 요청에, 하나 이상의 메모리에 연결시키는데 있어 우선권을 부여하도록 더 구성된다.
일 실시예에 따르면, 제어부는 우선권이 부여된 하나 이상의 요청이 메모리 주소 영역의 가장 최근 요청으로써 저장부에 저장하도록 더 구성된다.
일 실시예에 따르면, 제어부는 스위치부로 하여금 메모리 주소 영역에 저장된 요청의 순서 대로 하나 이상의 메모리와 연결시키도록 더 구성된다.
일 실시예에 따르면, 제어부는 복수의 장치 중 제1 장치와 연관되어 저장부에 저장된 요청의 수가 미리 결정된 요청의 수 이상인 경우, 제1 장치로부터 추가 요청을 거절하도록 구성된다.
본 개시의 일부 실시예에 따르면, 지역성을 보존하는 메모리 아비터는 현재 메모리 접근 요청과 최근 메모리 접근 요청을 비교하여, 메모리 접근 요청의 공간적 지역성을 보존하도록 스케줄링 할 수 있다.
본 개시의 일부 실시예에 따르면, 하나의 장치로부터 수신된 요청의 수에 대한 한계치를 설정하여 다른 장치들의 요청이 처리되지 못하는 기아 상태를 방지할 수 있다.
본 개시의 일부 실시예에 따르면, 지역성을 보존하는 메모리 아비터는 메모리 접근 요청의 공간적 지역성을 보존하여 빠른 동작 속도를 확보함과 동시에, 메모리 기아 상태도 방지할 수 있다.
본 개시의 효과는 이상에서 언급한 효과를 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시에 속하는 기술 분야에서 통상의 지식을 가진 자(이하, '통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
본 개시의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
도 1은 종래의 메모리 아비터의 라운드 로빈(Round Robin) 스케줄링의 예시도이다.
도 2는 본 개시의 일 실시예에 따른 메모리 아비터의 시스템 구성도이다.
도 3은 본 개시의 일 실시예에 따른 메모리 아비터의 블록도이다.
도 4는 본 개시의 일 실시예에 따른 제어부의 내부 구성도이다.
도 5는 본 개시의 일 실시예에 따른 스위치부 구성을 설명하는 예시도이다.
도 6은 본 개시의 일 실시예에 따른 지역성을 보존하는 메모리 아비터의 스케줄링을 설명하는 예시도이다.
도 7은 본 개시의 일 실시예에 따른 세 개의 배열의 모든 원소의 합을 구하는 프로그램을 설명하는 예시도이다.
도 8은 본 개시의 일 실시예에 따른 FPGA에서 메모리 아비터를 구현한 예시도이다.
도 1은 종래의 메모리 아비터의 라운드 로빈(Round Robin) 스케줄링의 예시도이다.
도 2는 본 개시의 일 실시예에 따른 메모리 아비터의 시스템 구성도이다.
도 3은 본 개시의 일 실시예에 따른 메모리 아비터의 블록도이다.
도 4는 본 개시의 일 실시예에 따른 제어부의 내부 구성도이다.
도 5는 본 개시의 일 실시예에 따른 스위치부 구성을 설명하는 예시도이다.
도 6은 본 개시의 일 실시예에 따른 지역성을 보존하는 메모리 아비터의 스케줄링을 설명하는 예시도이다.
도 7은 본 개시의 일 실시예에 따른 세 개의 배열의 모든 원소의 합을 구하는 프로그램을 설명하는 예시도이다.
도 8은 본 개시의 일 실시예에 따른 FPGA에서 메모리 아비터를 구현한 예시도이다.
이하, 본 개시의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 개시의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응되는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
개시된 실시예의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 개시가 완전하도록 하고, 본 개시가 통상의 기술자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것일 뿐이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 개시된 실시예에 대해 구체적으로 설명하기로 한다. 본 명세서에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 관련 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만 '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면 '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서는, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 개시에서, '시스템'은 서버 장치와 클라우드 장치 중 적어도 하나의 장치를 포함할 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 시스템은 하나 이상의 서버 장치로 구성될 수 있다. 다른 예로서, 시스템은 하나 이상의 클라우드 장치로 구성될 수 있다. 또 다른 예로서, 시스템은 서버 장치와 클라우드 장치가 함께 구성되어 동작될 수 있다.
본 개시에서, '메모리 아비터'는 복수의 장치가 공유 메모리에 접근하는 마스터-슬레이브 시스템에서, 공유 메모리에 대한 복수의 장치의 동시 접근으로 인한 충돌이 생기지 않도록 메모리 요청을 스케줄링 하는 장치를 포함할 수 있다.
본 개시에서, '복수의 장치'는 복수의 요청자를 지칭할 수 있으며, 복수의 요청자는 복수의 장치를 지칭할 수 있다.
도 1은 종래의 메모리 아비터(100)의 라운드 로빈(Round Robin) 스케줄링의 예시도이다. 도 1에 도시된 바와 같이, 메모리 아비터(100)는 복수의 장치(140_1, 140_2, 140_3) 및 공유 메모리(150)와 연결될 수 있다. 도 1에서, 공유 메모리(150)는 하나로 도시되어 있지만, 공유 메모리(150)는 2개 이상의 메모리를 포함할 수 있다. 일 실시예에 따르면, 복수의 장치(140_1, 140_2, 140_3)는 CPU, GPU, FPGA, ASCI 등의 메모리에 대한 접근이 필요한 다수의 코어 프로세서를 의미할 수 있다.
도시된 바와 같이, 각각의 복수의 장치(140_1, 140_2, 140_3)가 메모리에 접근하기 위해, 공유 메모리(150)에게 특정 주소로의 메모리 요청(145)을 송신할 수 있다. 이때, 메모리 아비터(100)는 미리 결정된 스케줄링 기법에 따라 스위치부(110)를 제어하여 공유 메모리(150)에게 메모리 요청(155)을 송신할 수 있다.
미리 결정된 스케줄링 기법이 라운드 로빈(Round-Robin) 기법인 경우, 메모리 아비터(100)는 각각의 복수의 장치(140_1, 140_2, 140_3) 간의 우선순위를 두지 않고, 메모리 요청(145)이 들어온 순서대로 돌아가면서 요청을 처리할 수 있다.
도 1에 도시된 바와 같이, 첫 번째 요청자에 해당하는 장치(140_1)는 메모리 주소 1000, 1004, 1008에 접근을 시도하고, 두 번째 요청자에 해당하는 장치(140_2)는 메모리 주소 2000, 2004, 2008에 접근을 시도하고, 세 번째 요청자에 해당하는 장치(140_3)는 메모리 주소 3000, 3004, 3008에 접근을 시도하고 있다. 이때, 메모리 요청(145)이 메모리 아비터(1000)에 의해 라운드 로빈 기법으로 스케줄링 된 경우, 공유 메모리(150)는 1000, 2000, 3000, 1004, 2004, 3004, 1008, 2008, 3008의 순서로 조정된 메모리 요청(155)을 수신할 수 있다.
라운드 로빈 기법은 구현과정이 단순하여 하드웨어에서 쉽게 구현할 수 있고, 특정 요청자의 접근이 무한히 지연되는 기아 상태가 일어나지 않는 특성(Starvation Free)을 가지고 있다. 그러나, 라운드 로빈 기법은 메모리 요청(145)의 주소를 고려하지 않고 스케줄링 하므로, 공간적 지역성을 깨뜨릴 수 있다. 도 1에 도시된 바와 같이, 각각의 복수의 장치(140_1, 140_2, 140_3)는 인접한 세 개의 메모리 주소(예를 들어, 1000, 1004, 1008)에 접근하기 때문에, 각각의 요청자의 메모리 접근 패턴은 높은 지역성을 갖는다고 할 수 있다. 그러나, 공유 메모리(150) 입장에서는 세 요청자의 메모리 요청(145)이 교차되어 처리되므로, 큰 접근 간격(stride)과 낮은 지역성을 갖는 메모리 접근 패턴을 갖는다고 할 수 있다. 메모리 시스템은 캐시(cache)가 부착되어 있어, 메모리 접근 패턴이 지역성을 갖는 경우 더 높은 성능으로 빠르게 처리할 수 있다. 또한, 캐시 없이 DRAM에 직접 연결되더라도, DRAM 내부의 row 버퍼가 캐시와 비슷한 역할을 수행하여 메모리 접근 패턴이 지역성을 갖는 경우 더 높은 성능으로 신속히 처리될 수 있다.
도 2는 본 개시의 일 실시예에 따른 메모리 아비터(200)의 시스템 구성도이다. 도 2에 도시된 바와 같이, 메모리 아비터(200)에 복수의 장치(240_1, 240_2, 240_3, 240_n)가 메모리 요청 및 응답이 오갈 수 있는 인터페이스로 연결되어 있고, 메모리 아비터(200)에 복수의 메모리(250_1, 250_2, 250_3, 250_n)가 메모리 요청 및 응답이 오갈 수 있는 인터페이스로 연결되어 있다. 또한, 메모리 아비터(200)는 스위치부(210)와 제어부(220)를 포함할 수 있으며 보다 상세한 설명은 도 3을 예시로 후술한다.
스위치부(210)는 복수의 요청을 하나 이상의 메모리의 각각과 서로 연결하도록 구성될 수 있으며, 보다 상세한 설명은 도 3을 예시로 후술한다.
제어부(220)는 복수의 장치(240_1, 240_2, 240_3, 240_n)의 요청 및 복수의 메모리(250_1, 250_2, 250_3, 250_n)의 응답을 입력으로 미리 설정된 스케줄링 기법에 따라 메모리 요청을 분석하여, 스위치부(210)를 제어할 수 있다. 보다 상세한 설명은 도 3을 예시로 후술한다.
도 3은 본 개시의 일 실시예에 따른 메모리 아비터의 블록도이다. 메모리 아비터(200)는 스위치부(210), 제어부(220) 및 저장부(330)를 포함할 수 있다.
제어부(220)는 복수의 요청을 요청 순서에 따라 수신하고, 수신된 복수의 요청의 각각에 포함된 메모리 주소와 저장부에 저장된, 수신된 복수의 요청의 각각보다 이전에 수신된 요청들과 연관된 메모리 주소를 비교하고, 비교 결과에 기초하여 스위치부(210)에 의해 복수의 요청의 각각과 하나 이상의 메모리가 연결되는 순서를 결정하도록 구성될 수 있다.
제어부(220)는 요청 핸들러(323) 및 응답 핸들러(326)를 포함할 수 있다.
요청 핸들러(323)는, 스위치부(210)가 복수의 요청을 하나 이상의 메모리로 연결하는 순서를 결정하도록 구성될 수 있다. 일 실시예에서, 요청 핸들러(323)는, 현재 메모리 요청과 최근 메모리 요청을 비교하여 조정된 메모리 요청이 지역성을 갖도록 스케줄링 할 수 있다.
응답 핸들러(326)는, 스위치부(210)가 하나 이상의 메모리로부터 복수의 요청의 각각에 대한 응답을 복수의 요청의 각각과 연관된 장치로 연결하는 순서를 결정하도록 구성될 수 있다.
저장부(330)는 복수의 장치로부터 하나 이상의 메모리로의 복수의 요청의 각각과 연관된 메모리 주소 및/또는 복수의 요청의 각각을 송신한 장치에 대한 정보를 포함할 수 있다. 일 실시예에서, 저장부(330)는 하나 이상의 레지스터로 구성될 수 있다.
일 실시예에서 저장부(330)에서 복수의 요청들의 각각에 포함된 메모리 주소는 미리 결정된 주소 범위를 가진 복수의 메모리 주소 영역의 각각에 연관되어 저장될 수 있다.
일 실시예에서 저장부(330)는 도시된 바와 같이, 메모리 아비터(200)에 포함될 수 있다. 다른 실시예에서, 저장부(330)는 메모리 아비터(200)의 제어부(220)의 내부에 포함될 수 있다.
도 4는 본 개시의 일 실시예에 따른 제어부의 내부 구성도이다. 도 4에 도시된 바와 같이, 제어부(220)는 요청 핸들러(323) 및 응답 핸들러(326)를 포함할 수 있다. 또한, 제어부(220)는 도시된 바와 같이, 저장부(330)를 제어부(220) 내부에 포함할 수도 있다. 도 5에서는 제어부(220)가 저장부(330)을 포함하도록 도시되어 있으나, 이는 제어부(220)가 저장부(300)를 로딩한 구성을 나타낼 수 있다. 이러한 저장부(330)는 제어부(220) 외부에 존재하여, 제어부(220)와 통신을 통해 정보를 송수신할 수도 있다.
일 실시예에 따르면, REQ[i]는 i번째 요청자의 현재 요청을 의미할 수 있고, RES[j]는 j번째 메모리의 현재 응답을 의미할 수 있다. REQ[i], RES[j]는 입력신호(402, 404)이다. REQ의 각 원소는 현재 요청이 읽기인지 쓰기인지, 읽고자 하는 (또는 쓰고자 하는) 메모리 주소, 쓰고자 하는 데이터 등의 정보를 포함할 수 있다. RES의 각 원소는 읽기 요청에 대응되는 응답의 경우 읽은 데이터를 담고 있고 쓰기 요청에 대응되는 응답의 경우 데이터 없이 acknowledge 역할만 수행할 수 있다. 예를 들어, REQ의 원소 구조는 1bit, 64bit, 512bit으로 분할되어 구성될 수 있다. 여기서, 1bit 부분에는 읽기인 경우 0, 쓰기인 경우 1이 저장될 수 있다. 또한, 64bit 부분에는 메모리 주소에 해당하는 값이 저장될 수 있으며, 512bit 부분에는 쓰기인 경우에만 존재하며, 데이터 값이 저장될 수 있다.
일 실시예에서, 제어부(220)는 복수의 요청 중, 스위치부를 통해 하나 이상의 메모리와 연결된 요청에 포함된 메모리 주소와 연관된 메모리 주소 영역과 동일한 메모리 주소 영역을 가진 하나 이상의 요청에, 하나 이상의 메모리에 연결시키는데 있어 우선권을 부여하도록 더 구성될 수 있다.
일 실시예에서, 제어부(220)는 우선권이 부여된 하나 이상의 요청이 메모리 주소 영역의 가장 최근 요청으로써 저장부에 저장하도록 더 구성될 수 있다.
일 실시예에서, 제어부(220)는 스위치부로 하여금 메모리 주소 영역에 저장된 요청의 순서 대로 하나 이상의 메모리와 연결시키도록 더 구성될 수 있다.
일 실시예에서 제어부(220)는 복수의 장치 중 제1 장치와 연관되어 저장부(330)에 저장된 요청의 수가 미리 결정된 요청의 수 이상인 경우, 제1 장치로부터 추가 요청을 거절하도록 구성될 수 있다. 예를 들어, i번째 장치의 요청의 수가 미리 결정된 요청의 수, 즉 한계치(예시: 100번) 이상인 경우, i번째 장치의 추가 요청은 우선권이 부여되지 않거나 더 이상 처리되지 않을 수 있다.
도 4에 도시된 바와 같이, 저장부(330)에는 메모리 접근 패턴의 지역성 보존을 위해, 각 메모리 별로 최근 N개의 메모리 요청에 대한 정보를 저장할 수 있다.
요청 핸들러(323)는 각 메모리 j에 대해 모든 요청자 i와 priority(REQ[i], LAST[j][0])를 계산할 수 있다. priority는 현재 요청과 최근 메모리 요청을 비교하여 지역성을 보존할수록 높은 값을 내놓는 우선순위 함수를 의미할 수 있다. 본 실시예에서는 요청이 같은 row에 속할 경우 지역성을 보존하는 것이므로 아래와 같은 수학식 1로 처리될 수 있다.
[수학식 1]
여기서, x와 y가 같은 row에 속할 경우 1, 같은 row에 속하지 않을 경우 0의 값을 가질 수 있으며, 또한, rowsize는 row 버퍼의 크기(예를 들어, 2KB)를 나타낼 수 있다.
요청 핸들러(323)는 각 메모리 j에 대해 가장 높은 priority 값을 가지는 i를 구할 수 있다. 그러한 i가 유일하다면 REQ_SW[j]=i로 설정할 수 있다. 즉, i번째 요청자의 요청이 j번째 메모리로 송신할 수 있다. i가 유일하지 않다면 그중 임의의 i로 설정할 수 있다. LAST[j]의 가장 앞 원소로 REQ[i]를 삽입할 수 있다.
요청 핸들러(323)는 기아 상태를 방지하기 위해 임의의 한계치 T를 설정하여, LAST 전체에 요청자 i에서 수신한 요청이 T개인 경우 요청자 i의 요청은 더 이상 받지 수신하지 않을 수 있다.
응답 핸들러(326)는 메모리 j의 RES[j]에 대해 LAST[j]의 마지막 요청을 확인하여 해당 요청을 보낸 요청자 i를 찾을 수 있다. 응답 핸들러(326)는 RES_SW[j]=i로 설정하고 LAST[j]의 마지막 요청을 삭제할 수 있다.
본 개시의 일 실시예에 따른 메모리 아비터를 사용한 경우, 먼저 주소 0(A[0])에 대한 요청을 수신할 수 있다. 따라서, 각 요청자는 4(A[1]), 2048(B[0]), 4096(C[0])에 대한 요청을 송신할 수 있다. priority(0, 4)=1, priority(0, 2048)=0, priority(0. 4096)=0이므로 다음 요청으로는 A[1]이 선택될 수 있다. 따라서 종래기술과 달리 A[0], A[1], A[2], ..., B[0], B[1], B[2], ..., C[0], C[1], C[2], ... 순으로 메모리 요청이 진행되고, 인접한 메모리 요청이 같은 row에 속하게 되어 높은 성능을 달성할 수 있다. 실험에 의하면 본 개시의 일 실시예에 따른, 메모리 아비터는 약 16GB/s의 성능을 보인다.
요청 핸들러(323)는 현재 요청에 해당하는 입력신호(402)와 저장부(330)에서 저장된 최근 요청을 비교하여, 메모리 접근 패턴의 지역성을 보존하기 위해 기 설정된 방식의 스케줄링 기법을 사용하여 스위치부를 조정할 수 있다.
응답 핸들러(326)는 저장부(330)를 참고하여 메모리로부터 수신한 응답이 어느 요청자에 대응되는지를 찾아 스위치부를 조정할 수 있다.
본 개시의 일 실시예에서, 저장부(330)는 각각의 메모리가 수신한 최근 요청을 저장하고, 요청 핸들러(323)에서 최근 요청과 현재 요청의 주소 비교를 기초로 스케줄링 기법을 사용함으로써, 요청자의 메모리 접근 패턴의 지역성을 보존하는 방식으로 메모리 요청을 전달할 수 있다.
메모리가 캐시 또는 DRAM 등의 지역성을 갖는 접근에 대해 더 높은 성능을 보여주는 메모리일 경우에, 본 개시의 일 실시예에 따른, 메모리 아비터는 종래의 기술보다 더 빠른 속도로 동작할 수 있다.
도 5는 본 개시의 일 실시예에 따른 스위치부에 대한 구성을 설명하는 예시도이다. 도 5에서, REQ_SW, RES_SW는 스위치를 조절하는 출력신호를 나타낼 수 있다. 이러한 출력 신호는 제어부를 통해 생성될 수 있다. 예를 들어, REQ_SW는 요청 핸들러에 의해 생성될 수 있고, RES_SW는 응답 핸들러에 의해 생성될 수 있다.
일 실시예에 따르면, REQ_SW[j]=i인 경우, i번째 요청자의 요청을 j번째 메모리에 연결함을 의미할 수 있다. 예를 들어, 도 5에 도시된 바와 같이, REQ_SW[0]=0은 0번째 요청자의 요청을 0번째 메모리에 연결함을 의미할 수 있다. 또한, REQ_SW[1]=2는 2번째 요청자가 1번째 메모리에 연결됨을 의미할 수 있다. 이에 더하여, REQ_SW[2]=-1에서, -1은 요청자가 메모리에 연결되지 않음을 의미할 수 있다.
일 실시예에 따르면, RES_SW[j]=i인 경우, j번째 메모리의 응답을 i번째 요청자로 연결함을 의미할 수 있다. 도 5에서, RES_SW[1]=2는 2번째 메모리가 1번째 요청자에 연결되는 것을 의미할 수 있다. 또한, RES_SW[2]=1은 1번째 메모리가 2번째 요청자에 연결되는 것을 의미할 수 있다. 이에 더하여, RES_SW[0]=-1에서, -1은 메모리가 요청자에 연결되지 않음을 의미할 수 있다.
도 6은 본 개시의 일 실시예에 따른 지역성을 보존하는 메모리 아비터(200)의 스케줄링을 설명하는 예시도이다. 도 6에 도시된 바와 같이, 메모리 아비터(200)는 복수의 장치(640_1, 640_2, 640_3) 및 공유 메모리(250)와 연결되어 있다. 도 6에서는 공유 메모리(250)는 하나로 도시되어 있지만, 공유 메모리(250)는 2개 이상의 메모리를 포함할 수도 있다. 또한, 복수의 장치(640_1, 640_2, 640_3)는 CPU, GPU, FPGA, ASCI 등의 메모리에 대한 접근이 필요한 다수의 코어 프로세서를 의미할 수 있다.
복수의 장치(640_1, 640_2, 640_3)의 각각은 공유 메모리(250)에 접근하기 위해, 특정 주소로의 메모리 요청(645)을 메모리 아비터(200)에 송신할 수 있다. 이때, 메모리 아비터(200)는 미리 결정된 스케줄링 기법에 따라 스위치부(210)를 조정하여 공유 메모리(250)에게 조정된 메모리 요청(655)을 송신할 수 있다.
본 개시의 일 실시예에 따른 스케줄링 기법은 종래의 라운드 로빈 기법과는 달리, 메모리 아비터(200)는 각각 복수의 장치(640_1, 640_2, 640_3)에서 요청한 메모리 주소를 메모리 아비터(200)의 저장부에 저장하고 비교하여, 메모리 요청(645)을 받아, 메모리 접근 패턴이 높은 지역성을 갖을 수 있도록 요청을 처리할 수 있다.
도 6에 도시된 바와 같이, 첫 번째 요청자에 해당하는 장치(640_1)는 메모리 주소 1000, 1004, 1008에 접근을 시도하고, 두 번째 요청자에 해당하는 장치(640_2)는 메모리 주소 2000, 2004, 2008에 접근을 시도하고, 세 번째 요청자에 해당하는 장치(640_3)는 메모리 주소 3000, 3004, 3008에 접근을 시도할 수 있다. 이때, 메모리 요청(645)이 메모리 아비터(600)에 의해 공간적 지역성을 깨뜨리지 않는 기법으로 스케줄링된 경우, 공유 메모리(650)는 1000, 1004, 1008, 2000, 2004, 2008, 3000, 3004, 3008의 순서로 조정된 메모리 요청(655)을 수신할 수 있다.
도 6에 도시된 바와 같이, 복수의 장치의 각각은 인접한 세 개의 메모리 주소(예를 들어, 장치(640_1)의 경우 1000, 1004, 1008)에 접근하기 때문에, 복수의 장치의 각각의 메모리 접근 패턴은 높은 지역성을 갖는다고 할 수 있다. 오늘날 대부분의 메모리 시스템은 캐시(cache)가 부착되어 있어, 메모리 접근 패턴이 지역성을 갖는 경우 더 높은 성능으로 빠르게 처리할 수 있다. 또한, 캐시 없이 DRAM에 직접 연결되더라도, DRAM 내부의 row 버퍼가 캐시와 비슷한 역할을 수행하여 메모리 접근 패턴이 지역성을 갖는 경우 더 높은 성능으로 빠르게 처리할 수 있다.
도 7은 본 개시의 일 실시예에 따른 세 개의 배열의 모든 원소의 합을 구하는 프로그램을 설명하는 예시도이다. 일 실시예에서, 한 번 생산되면 회로를 바꿀 수 없는 CPU, GPU 또는 ASIC 등과는 달리 회로를 쉽게 재구성할 수 있는 FPGA(Field Programmable Gate Array)에서 본 개시의 스케줄링 기법을 간단하게 실시할 수 있다.
일 실시예에 따라, 정수형 변수 s를 0으로 선언하고, 반복문을 실행한다. 반복문 조건은, 정수형 변수 i를 0으로 초기화 하고, i가 N보다 작을 경우 반복문을 실행한 뒤, i를 1씩 증가시킨다. 반복문은, s 자신에 A[i]를 더하고 난 뒤, s 자신에 B[i]를 더하고, 마지막으로 s 자신에 C[i]를 더할 수 있다.
도 8은 본 개시의 일 실시예에 따른 FPGA에서 메모리 아비터를 구현한 예시도이다. 일 실시예에 따라, 도 7에 도시된 프로그램을 DDR4 SDRAM 칩(예를 들어, MT40A512M16)이 장착된 FPGA에 회로로 구현할 경우, 메모리(850)는 접근한 메모리 주소가 포함된 row를 row 버퍼로 불러오는 단계(RAS, Row Address Strobe), 읽기 및 쓰기 동작을 수행하는 단계(CAS, Column Address Strobe), 다시 저장하는 단계(Precharge)를 포함할 수 있다. 즉, 최대한 같은 row에 있는 메모리에 연속적으로 접근해야, 메모리 아비터(200)는 최대 성능을 달성할 수 있다. 반면에, 최대한 같은 row에 있는 메모리에 연속적으로 접근하지 못할 경우, 매번 RAS 및 Precharge 단계를 수행해야 하므로 동작 속도가 급격히 느려질 수 있다.
배열 A의 주소가 0, 배열 B의 주소가 2048, 배열 C의 주소가 4096이고, row 버퍼의 크기가 2KB라고 가정할 경우, 배열 A는 row 0, 배열 B는 row 1, 배열 C는 row 2에 포함될 수 있다. 메모리 아비터(200)가 종래의 기법으로 동작한다고 가정하면, 도 1에서 상술한 바와 같이, 0(A[0]), 2048(B[0]), 4096(C[0]), 4(A[1]), 2052(B[1]), 4100(C[1]), 8(A[2]), 2056(B[2]), 4104(C[2]), ? 순으로 SDRAM에 메모리 요청이 송신될 수 있다. 인접한 모든 메모리 요청이 서로 다른 row에 속하기 때문에 동작 속도가 크게 감소할 수 있다. 실험 결과에 의하면, DDR4-2133 메모리의 이론상 최대 속도는 약 17GB/s지만, 상술한 상황에서는 약 1.2GB/s의 속도로 동작한다.
하지만 본 개시의 일 실시예에 따른 메모리 아비터(200)를 사용할 경우, 실험 결과는 약 16GB/s의 속도로 동작한다.
상술된 지역성을 보존하는 메모리 아비터는, 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수도 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 판독될 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 전술된 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 개시의 방법, 동작 또는 기법들은 다양한 수단에 의해 구현될 수도 있다. 예를 들어, 이러한 기법들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다. 본원의 개시와 연계하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로 구현될 수도 있음을 통상의 기술자들은 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 대체를 명확하게 설명하기 위해, 다양한 예시적인 구성요소들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능적 관점에서 일반적으로 위에서 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는 지의 여부는, 특정 애플리케이션 및 전체 시스템에 부과되는 설계 요구사항들에 따라 달라진다. 통상의 기술자들은 각각의 특정 애플리케이션을 위해 다양한 방식들로 설명된 기능을 구현할 수도 있으나, 그러한 구현들은 본 개시의 범위로부터 벗어나게 하는 것으로 해석되어서는 안된다.
하드웨어 구현에서, 기법들을 수행하는 데 이용되는 프로세싱 유닛들은, 하나 이상의 ASIC들, DSP들, 디지털 신호 프로세싱 디바이스들(digital signal processing devices; DSPD들), 프로그램가능 논리 디바이스들(programmable logic devices; PLD들), 필드 프로그램가능 게이트 어레이들(field programmable gate arrays; FPGA들), 프로세서들, 제어기들, 마이크로제어기들, 마이크로프로세서들, 전자 디바이스들, 본 개시에 설명된 기능들을 수행하도록 설계된 다른 전자 유닛들, 컴퓨터, 또는 이들의 조합 내에서 구현될 수도 있다.
따라서, 본 개시와 연계하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, DSP, ASIC, FPGA나 다른 프로그램 가능 논리 디바이스, 이산 게이트나 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에 설명된 기능들을 수행하도록 설계된 것들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들면, DSP와 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 구성의 조합으로서 구현될 수도 있다.
펌웨어 및/또는 소프트웨어 구현에 있어서, 기법들은 랜덤 액세스 메모리(random access memory; RAM), 판독 전용 메모리(read-only memory; ROM), 비휘발성 RAM(non-volatile random access memory; NVRAM), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable PROM), 플래시 메모리, 컴팩트 디스크(compact disc; CD), 자기 또는 광학 데이터 스토리지 디바이스 등과 같은 컴퓨터 판독가능 매체 상에 저장된 명령들로서 구현될 수도 있다. 명령들은 하나 이상의 프로세서들에 의해 실행 가능할 수도 있고, 프로세서(들)로 하여금 본 개시에 설명된 기능의 특정 양태들을 수행하게 할 수도 있다.
소프트웨어로 구현되는 경우, 상기 기법들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능한 매체 상에 저장되거나 또는 컴퓨터 판독 가능한 매체를 통해 전송될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체들일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다.
예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 본원에서 사용된 디스크(disk) 와 디스크(disc)는, CD, 레이저 디스크, 광 디스크, DVD(digital versatile disc), 플로피디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크들(disks)은 보통 자기적으로 데이터를 재생하고, 반면 디스크들(discs) 은 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체 내에 상주할 수도 있다. 예시적인 저장 매체는, 프로세가 저장 매체로부터 정보를 판독하거나 저장 매체에 정보를 기록할 수 있도록, 프로세서에 연결될 수 있다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서와 저장 매체는 ASIC 내에 존재할 수도 있다. ASIC은 유저 단말 내에 존재할 수도 있다. 대안으로, 프로세서와 저장 매체는 유저 단말에서 개별 구성요소들로서 존재할 수도 있다.
이상 설명된 실시예들이 하나 이상의 독립형 컴퓨터 시스템에서 현재 개시된 주제의 양태들을 활용하는 것으로 기술되었으나, 본 개시는 이에 한정되지 않고, 네트워크나 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 연계하여 구현될 수도 있다. 또 나아가, 본 개시에서 주제의 양상들은 복수의 프로세싱 칩들이나 장치들에서 구현될 수도 있고, 스토리지는 복수의 장치들에 걸쳐 유사하게 영향을 받게 될 수도 있다. 이러한 장치들은 PC들, 네트워크 서버들, 및 휴대용 장치들을 포함할 수도 있다.
본 명세서에서는 본 개시가 일부 실시예들과 관련하여 설명되었지만, 본 개시의 발명이 속하는 기술분야의 통상의 기술자가 이해할 수 있는 본 개시의 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다. 또한, 그러한 변형 및 변경은 본 명세서에 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
100: 메모리 아비터
110: 스위치부
140_1, 140_2, 140_3: 복수의 장치
150: 공유 메모리
200: 메모리 아비터
210: 스위치부
220: 제어부
240_1, 240_2, 240_3, 240_n: 복수의 장치
250_1, 250_2, 250_3, 250_n: 복수의 메모리
323: 요청 핸들러
326: 응답 핸들러
330: 저장부
110: 스위치부
140_1, 140_2, 140_3: 복수의 장치
150: 공유 메모리
200: 메모리 아비터
210: 스위치부
220: 제어부
240_1, 240_2, 240_3, 240_n: 복수의 장치
250_1, 250_2, 250_3, 250_n: 복수의 메모리
323: 요청 핸들러
326: 응답 핸들러
330: 저장부
Claims (7)
- 메모리 아비터로서,
복수의 장치로부터 수신된, 하나 이상의 메모리로의 복수의 요청들의 각각에 연관된 메모리 주소 및 상기 복수의 요청의 각각을 송신한 장치에 대한 정보를 저장하도록 구성된 저장부;
상기 복수의 요청을 상기 하나 이상의 메모리의 각각과 서로 연결하도록 구성된 스위치부; 및
상기 복수의 요청을 요청 순서에 따라 수신하고, 상기 수신된 복수의 요청의 각각에 포함된 메모리 주소와 상기 저장부에 저장된, 상기 수신된 복수의 요청의 각각보다 이전에 수신된 요청들과 연관된 메모리 주소를 비교하고, 상기 비교 결과에 기초하여 상기 스위치부에 의해 상기 복수의 요청의 각각과 상기 하나 이상의 메모리가 연결되는 순서를 결정하도록 구성된 제어부를 포함하고,
상기 제어부는,
상기 스위치부가 상기 복수의 요청을 상기 하나 이상의 메모리로 연결하는 순서를 결정하도록 구성된 요청 핸들러(request handler); 및
상기 스위치부가 상기 하나 이상의 메모리로부터 상기 복수의 요청의 각각에 대한 응답을 상기 복수의 요청의 각각과 연관된 장치로 연결하는 순서를 결정하도록 구성된 응답 핸들러(response handler)를 포함하고,
상기 저장부는 상기 수신된 복수의 요청 각각보다 이전에 수신된 요청들을 상기 복수의 장치 각각과 연관시켜 저장하도록 더 구성되고,
상기 요청 핸들러는 상기 복수의 요청 각각의 지역성을 결정하기 위한 우선순위 함수를 이용하여, 상기 수신된 상기 복수의 요청의 각각과 상기 저장부에 저장된 상기 이전에 수신된 요청들을 비교하여, 상기 하나 이상의 메모리가 연결되는 순서를 결정하도록 더 구성된, 메모리 아비터.
- 삭제
- 제1항에 있어서, 상기 저장부에서, 상기 복수의 요청들의 각각에 포함된 메모리 주소는 미리 결정된 주소 범위를 가진 복수의 메모리 주소 영역의 각각에 연관되어 저장되는, 메모리 아비터.
- 제3항에 있어서,
상기 제어부는, 상기 복수의 요청 중, 상기 스위치부를 통해 상기 하나 이상의 메모리와 연결된 요청에 포함된 메모리 주소와 연관된 메모리 주소 영역과 동일한 메모리 주소 영역을 가진 하나 이상의 요청에, 상기 하나 이상의 메모리에 연결시키는데 있어 우선권을 부여하도록 더 구성된, 메모리 아비터.
- 제4항에 있어서,
상기 제어부는, 상기 우선권이 부여된 하나 이상의 요청이 상기 메모리 주소 영역의 가장 최근 요청으로써 상기 저장부에 저장하도록 더 구성된, 메모리 아비터.
- 제5항에 있어서,
상기 제어부는, 상기 스위치부로 하여금 상기 메모리 주소 영역에 저장된 요청의 순서 대로 상기 하나 이상의 메모리와 연결시키도록 더 구성된, 메모리 아비터.
- 제5항에 있어서,
상기 제어부는 상기 복수의 장치 중 제1 장치와 연관되어 상기 저장부에 저장된 요청의 수가 미리 결정된 요청의 수 이상인 경우, 상기 제1 장치로부터 추가 요청을 거절하도록 구성된, 메모리 아비터.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190177741A KR102316154B1 (ko) | 2019-12-30 | 2019-12-30 | 지역성을 보존하는 메모리 아비터 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190177741A KR102316154B1 (ko) | 2019-12-30 | 2019-12-30 | 지역성을 보존하는 메모리 아비터 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210085083A KR20210085083A (ko) | 2021-07-08 |
KR102316154B1 true KR102316154B1 (ko) | 2021-10-22 |
Family
ID=76894458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190177741A KR102316154B1 (ko) | 2019-12-30 | 2019-12-30 | 지역성을 보존하는 메모리 아비터 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102316154B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008287528A (ja) * | 2007-05-18 | 2008-11-27 | Renesas Technology Corp | リクエスト調停装置及びメモリコントローラ |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170100415A (ko) * | 2016-02-25 | 2017-09-04 | 에스케이하이닉스 주식회사 | 메모리 콘트롤러 및 집적회로 시스템 |
JP6886301B2 (ja) * | 2017-01-26 | 2021-06-16 | キヤノン株式会社 | メモリアクセスシステム、その制御方法、プログラム、及び画像形成装置 |
-
2019
- 2019-12-30 KR KR1020190177741A patent/KR102316154B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008287528A (ja) * | 2007-05-18 | 2008-11-27 | Renesas Technology Corp | リクエスト調停装置及びメモリコントローラ |
Also Published As
Publication number | Publication date |
---|---|
KR20210085083A (ko) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237728B2 (en) | Method for accessing extended memory, device, and system | |
US8645638B2 (en) | Shared single-access memory with management of multiple parallel requests | |
JP6378417B2 (ja) | 動的パーティショニングを用いる共有されるキャッシュのための方法および装置 | |
US11243898B2 (en) | Memory controller and method for controlling a memory device to process access requests issued by at least one master device | |
US20150221358A1 (en) | Memory and memory controller for high reliability operation and method | |
US11074169B2 (en) | Programmed memory controlled data movement and timing within a main memory device | |
US20160371014A1 (en) | Ordering Memory Commands in a Computer System | |
US20160041596A1 (en) | Power efficient method and system for executing host data processing tasks during data retention operations in a storage device | |
US20130046926A1 (en) | Edram refresh in a high performance cache architecture | |
KR20200059318A (ko) | 커맨드 선택 폴리시 | |
US20170364280A1 (en) | Object storage device and an operating method thereof | |
US20150100723A1 (en) | Data processor with memory controller for high reliability operation and method | |
CN107274926B (zh) | 具有自适应预充电策略的dram控制器 | |
US20170091099A1 (en) | Memory controller for multi-level system memory having sectored cache | |
KR102714770B1 (ko) | 저 전력 메모리 스로틀링 | |
US9569362B2 (en) | Programmable ordering and prefetch | |
CN116324744A (zh) | 具有多个命令子队列和对应的仲裁器的存储器控制器 | |
US10268416B2 (en) | Method and systems of controlling memory-to-memory copy operations | |
KR20220116041A (ko) | 이기종 메모리 시스템용 시그널링 | |
US20220246200A1 (en) | Memory device skipping refresh operation and operation method thereof | |
KR102316154B1 (ko) | 지역성을 보존하는 메모리 아비터 | |
JP2018511111A (ja) | ビクティムキャッシュモードを向上させるためのプロセススケジューリング | |
KR101349899B1 (ko) | 메모리 제어기 및 이의 메모리 접근 스케줄링 방법 | |
US8930641B1 (en) | Systems and methods for providing memory controllers with scheduler bypassing capabilities | |
CN108519860B (zh) | 一种ssd读命中的处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |