KR20160112305A - 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템 - Google Patents

공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템 Download PDF

Info

Publication number
KR20160112305A
KR20160112305A KR1020150037699A KR20150037699A KR20160112305A KR 20160112305 A KR20160112305 A KR 20160112305A KR 1020150037699 A KR1020150037699 A KR 1020150037699A KR 20150037699 A KR20150037699 A KR 20150037699A KR 20160112305 A KR20160112305 A KR 20160112305A
Authority
KR
South Korea
Prior art keywords
shared resource
buffer
resource access
master device
priority
Prior art date
Application number
KR1020150037699A
Other languages
English (en)
Other versions
KR102106541B1 (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 삼성전자주식회사
Priority to KR1020150037699A priority Critical patent/KR102106541B1/ko
Priority to US15/559,129 priority patent/US10545898B2/en
Priority to PCT/KR2016/002467 priority patent/WO2016148449A1/ko
Publication of KR20160112305A publication Critical patent/KR20160112305A/ko
Application granted granted Critical
Publication of KR102106541B1 publication Critical patent/KR102106541B1/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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • 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
    • 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/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/37Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals

Abstract

적어도 하나의 마스터 장치(master)로부터 적어도 하나의 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신하고, 수신한 버퍼 상태 정보를 기초로 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하고, 결정된 공유 리소스 액세스 요청들의 우선순위에 따라 공유 리소스 액세스 요청들 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인하는 공유 리소스 액세스 중재 장치의 공유 리소스 액세스 중재 방법이 개시된다.

Description

공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템{Method for arbitrating shared resource access and shared resource access arbitration apparatus and shared resource apparatus access arbitration system for performing the same}
공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템에 관한 것이다.
이미지, 비디오 데이터와 같은 대용량 데이터의 입, 출력이 빈번하거나 규칙적으로 발생하는 멀티 미디어 데이터 처리 시스템이나 GPP(General purpose processor), DMA(Direct memory access) 제어기, 응용 특화 H/W 가속기와 같이 서로 다른 데이터 액세스 패턴을 가지고 공유 리소스 장치에 액세스하는 이종(Heterogeneous) 멀티 코어 병렬 처리 시스템에서 공유 리소스 장치에 대한 액세스 요청들을 우선 순위에 따라 승인하는 중재기(arbiter)가 존재하였다. 하지만 중재기가 존재함에도 여러 마스터 장치(master)들이 동시에 메모리와 같은 공유 리소스 장치에 액세스 요청하면 뱅크 충돌(bank conflict) 현상이 발생하는 문제점이 있었다. 또한, 공유 리소스 액세스 요청이 승인되지 않은 마스터 장치(master)는 해당 공유 리소스 장치에 액세스 가능할 때까지 멈추게 되는(stall) 문제점이 있었다. 특히 해당 마스터 장치가 VLIW(Very LargeInstruction Word) 프로세서인 경우, 메모리 연산과 무관한 유닛(unit)까지 함께 멈추는 현상이 발생하여, 멀티 코어 시스템에서 성능이 상당히 저하되는 문제점이 있었다.
한편, 용도별로 공유 리소스 장치를 물리적으로 분리시켜 공유 리소스 액세스 요청을 공간 영역에서 분리함으로써 상기와 같은 문제점을 해결하는 방안이 고안되었으나, 동일 용량 대비 공유 리소스 장치의 물리적인 면적이 증가하고, 동일 용량 대비 이용 가능한 용량이 더 낮아질뿐 아니라 관련 응용 S/W가 물리적 구조를 고려하여 데이터 관리해야 하기 때문에 복잡해지는 문제점이 있었다.
본 발명은 마스터 장치 내의 버퍼 상태 정보를 이용하여 공유 리소스 액세스 요청들의 우선순위를 결정하거나 버퍼를 추가하여 뱅크 충돌현상 및 마스터 장치의 성능 저하를 방지하기 위한 공유 액세스 중재 방법 및 이를 수행하기 위한 공유 액세스 중재 장치 및 공유 액세스 중재 시스템을 제공한다.
본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 방법은 적어도 하나의 마스터 장치(master)로부터 상기 적어도 하나의 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신하는 단계; 상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계; 및 상기 결정된 공유 리소스 액세스 요청들의 우선순위에 따라 상기 공유 리소스 액세스 요청들 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인하는 단계를 포함한다.
이때, 상기 버퍼 상태 정보는 버퍼의 총 저장 공간 대비 저장된 데이터의 크기 정보를 포함할 수 있다.
한편, 상기 버퍼가 입력 버퍼이고, 상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계는, 상기 입력 버퍼의 총 저장 공간 대비 저장된 데이터의 크기가 작은 경우, 상기 입력 버퍼를 포함하는 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정하는 단계를 포함할 수 있다.
또한, 상기 버퍼가 출력 버퍼이고, 상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계는, 상기 출력 버퍼의 저장 공간 대비 저장된 데이터의 크기가 큰 경우 상기 출력 버퍼를 포함하는 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정하는 단계를 포함할 수 있다.
또한, 상기 버퍼는 복수의 버퍼이고, 상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계는, 상기 적어도 하나의 마스터 장치에 포함된 상기 복수의 버퍼와 관련된 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 단계를 포함할 수 있다.
또한, 상기 버퍼는 외부 장치와 송수신하는 데이터를 포함하는 제1 버퍼 및 상기 적어도 하나의 마스터 장치의 내부 처리와 관련된 데이터를 포함하는 제2 버퍼이고, 상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계는, 상기 적어도 하나의 마스터 장치에 포함된 상기 제1 버퍼 및 제2 버퍼와 관련된 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 단계를 포함할 수 있다.
한편, 상기 복수의 마스터 장치와 각각 연결된 버스들 및 상기 공유 리소스 장치에 연결된 버스는 상기 공유 리소스 액세스 중재 장치에 연결되고, 상기 복수의 마스터 장치 중 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치가 상기 공유 리소스 장치에 액세스할 수 있도록 상기 복수의 마스터 장치 각각에 연결된 버스들 중 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치에 연결된 버스를 결정하고, 상기 결정된 버스를 통해 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치와 상기 공유 리소스 장치 간 송수신하는 데이터를 중재하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치는 적어도 하나의 마스터 장치로부터 상기 적어도 하나의 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신하는 버퍼 상태 정보 수신부; 상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하고, 상기 결정된 공유 리소스 액세스 요청들의 우선순위에 따라 상기 공유 리소스 액세스 요청들 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인하는 제어부를 포함한다.
이때, 상기 버퍼 상태 정보는 버퍼의 총 저장 공간 대비 저장된 데이터의 크기 정보를 포함할 수 있다.
한편, 상기 버퍼가 입력 버퍼이고, 상기 제어부는, 상기 입력 버퍼의 총 저장 공간 대비 저장된 데이터의 크기가 작은 경우, 상기 입력 버퍼를 포함하는 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정할 수 있다.
또한, 상기 버퍼가 출력 버퍼이고, 상기 제어부는, 상기 출력 버퍼의 총 저장 공간 대비 저장된 데이터의 크기가 큰 경우 상기 출력 버퍼를 포함하는 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정할 수 있다.
또한, 상기 버퍼는 복수의 버퍼이고, 상기 제어부는, 상기 적어도 하나의 마스터 장치에 포함된 상기 복수의 버퍼와 관련된 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
또한, 상기 버퍼는 외부 장치와 송수신하는 데이터를 포함하는 제1 버퍼 및 상기 적어도 하나의 마스터 장치의 내부 처리와 관련된 데이터를 포함하는 제2 버퍼이고, 상기 제어부는, 상기 적어도 하나의 마스터 장치와 관련된 상기 제1 버퍼 및 제2 버퍼와 관련된 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
또한, 상기 복수의 마스터 장치와 각각 연결된 버스들 및 상기 공유 리소스 장치에 연결된 버스는 상기 공유 리소스 액세스 중재 장치에 연결되고, 상기 제어부는, 상기 복수의 마스터 장치 중 상기 승인된 공유 리소스 장치 요청을 하나의 마스터 장치가 상기 공유 리소스 장치에 액세스할 수 있도록 상기 복수의 마스터 장치에 각각 연결된 버스들 중 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치에 연결된 버스를 결정하고, 상기 결정된 버스를 통해 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치와 상기 공유 리소스 장치 간 송수신하는 데이터를 중재할 수 있다.
한편, 본 발명의 다른 실시예에 따른 공유 리소스 액세스 중재 방법은 적어도 하나의 제1 마스터 장치로부터 제1 공유 리소스 액세스 요청을 수신하는 단계; 상기 제1 마스터 장치에 연결된 버스 및 공유 리소스 장치에 연결된 버스 사이에 연결된 버퍼에 상기 제1 공유 리소스 액세스 요청을 저장하는 단계; 적어도 하나의 제2 마스터 장치와 관련된 제2 공유 리소스 액세스 요청 및 상기 버퍼와 관련된 버퍼 상태 정보에 기초하여 상기 저장된 제1 공유 리소스 액세스 요청의 우선순위를 결정하는 단계; 및 상기 결정된 우선순위에 따라 상기 저장된 제1 공유 리소스 액세스 요청 및 상기 제2 공유 리소스 액세스 요청 중 하나를 승인하는 단계를 포함한다.
본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 시스템은 적어도 하나의 제1 마스터 장치로부터 제1 공유 리소스 액세스 요청을 수신하고, 상기 수신한 제1 공유 리소스 액세스 요청 중 적어도 하나를 저장하고, 상기 제1 마스터 장치의 버스 및 공유 리소스 장치에 연결된 버스 사이에 연결된 액세스 버퍼; 및 상기 액세스 버퍼로부터 상기 제1 공유 리소스 액세스 요청 및 적어도 하나의 제2 마스터 장치로부터 제2 공유 리소스 액세스 요청을 수신하고, 상기 수신한 제1 공유 리소스 액세스 요청 및 상기 수신한 제2 공유 리소스 액세스 요청의 우선순위를 결정하고, 상기 결정된 우선순위에 따라 상기 수신한 제1 공유 리소스 액세스 요청 및 상기 수신한 제2 공유 리소스 액세스 요청 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인하는 공유 리소스 액세스 중재 장치를 포함하고, 상기 액세스 버퍼는 상기 제2 마스터 장치로부터 상기 제2 공유 리소스 액세스 요청을 수신하고, 상기 수신한 제2 공유 리소스 액세스 요청 및 상기 액세스 버퍼의 버퍼 상태 정보에 기초하여 상기 수신한 제1 공유 리소스 액세스 요청 중 적어도 하나를 상기 액세스 버퍼에 저장하는지 여부를 결정하여 저장하고, 상기 수신한 제2 공유 리소스 액세스 요청 및 상기 내부 버퍼의 버퍼 상태 정보를 기초로 상기 저장된 제1 공유 리소스 액세스 요청 중 하나의 공유 리소스 액세스 요청을 상기 공유 리소스 액세스 중재 장치로 전송한다.
본 발명의 일 실시예에 따른 기록매체는 상기 방법들을 실행하는 컴퓨터 프로그램을 기록하고 있어 컴퓨터로 읽어 들일 수 있다.
도 1a-1b는 본 발명의 다양한 실시예에 따른 공유 리소스 액세스 중재 시스템의 환경을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치를 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 방법을 나타낸 흐름도이다.
도 4는 본 발명의 다른 실시예에 따른 공유 리소스 액세스 중재 방법을 나타낸 흐름도이다.
도 5는 본 발명의 일 실시예에 공유 리소스 액세스 중재 장치를 포함하는 공유 리소스 액세스 중재 시스템에서 우선순위에 따라 하나의 공유 리소스 액세스 요청을 승인하는 과정을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치에서 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치에서 구체적으로 입력 및 출력 버퍼와 관련된 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
도 8a-8b는 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치가 마스터 장치에 포함된 프로세싱 버퍼 및/또는 읽기/쓰기 버퍼의 버퍼 상태 정보에 기초하여 마스터 장치의 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
도 9a-9b는 본 발명의 일 실시예에 따른 처리율에 민감한 마스터 장치의 멈춤 현상 발생 가능성이 낮은 경우 처리율에 민감한 마스터 장치의 공유 리소스 액세스 요청의 처리 과정을 나타낸 타이밍 다이어그램이다.
도 10a-10b는 본 발명의 일 실시예에 따른 처리율에 민감한 마스터 장치의 멈춤 현상 발생 가능성이 높은 경우 공유 리소스 액세스 요청의 처리 과정을 나타낸 타이밍 다이어그램이다.
도 11a-11b는 본 발명의 일 실시예에 따른 액세스 버퍼를 추가적으로 이용하여 공유 리소스 액세스 중재 장치에서 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
도 12는 본 발명의 일 실시예에 따른 다른 마스터 장치의 공유 리소스 액세스 요청을 고려하는 액세스 버퍼를 이용하여 마스터 장치가 공유 리소스 장치에 액세스하는 과정을 설명하기 위한 도면이다.
도 13은 본 발명의 일 실시예에 따른 액세스 버퍼의 상태를 기초로 동적으로 결정된 공유 리소스 액세스 요청의 우선순위에 따라 마스터 장치가 공유 리소스 장치에 액세스하는 과정을 설명하기 위한 도면이다.
도 14는 본 발명의 일 실시예에 따른 공유 리소스 액세스 요청의 처리 과정을 나타낸 타이밍 다이어그램이다.
이하 본 명세서에 기재된 본 발명의 다양한 실시 예들에서, '영상'은 정지 영상뿐만 아니라 비디오와 같은 동영상을 포함하여 포괄적으로 지칭할 수 있다.
이하 도 1 내지 도 14를 참조하여, 다양한 실시 예에 따른 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템이 개시된다.
또한, 본 명세서에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
이하, 실시 예들을 첨부도면을 참조하여 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략할 수 있다.
도 1a-1b은 본 발명의 다양한 실시예에 따른 공유 리소스 액세스 중재 시스템의 환경을 나타낸 도면이다.
도 1a를 참조하면, GPP(General Purpose Processor)(111), DMA(Direct Memory Access) 제어기(112), HWA(Hardware Accelerator)(113)와 같은 마스터 장치들(110)은 각자 메모리(130)와 같은 공유 리소스 장치에 데이터를 읽거나 쓰기 위해 공유 리소스 액세스 요청을 메모리(130)와 같은 공유 리소스 장치로 전송할 수 있다. 이때, 메모리(130)가 동시에 마스터 장치들(110)로부터 공유 리소스 액세스 요청을 다이렉트로 수신하는 경우, 뱅크 충돌(Bank conflict)현상이 발생한다.
한편, 공유 리소스 액세스 중재 장치(120)는 마스터 장치들(110)으로부터 공유 리소스 액세스 요청(req_gpp, gnt_dma, gnt_hwa)을 수신하고, 미리 정해진 우선 순위에 따라 하나의 공유 리소스 액세스 요청을 승인한다. 예를 들어, 공유 리소스 액세스 중재 장치(120)는 미리 정해진 우선 순위에 따라 하나의 공유 리소스 액세스 요청을 승인하는 메시지(gnt_gpp, gnt_dma, gnt_hwa)를 마스터 장치들(110) 중 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치로 전송한다. 따라서 마스터 장치(110)는 공유 리소스 액세스 요청이 승인되면, 마스터 장치들(110) 중 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치는 메모리(130)에 액세스 가능하다.
한편, 마스터 장치들(110)은 공유 리소스 액세스 중재 장치(120)로 공유 리소스 액세스 요청을 전송할 때 메모리(130)로 공유 리소스 액세스 요청을 전송할 수 있다.
예를 들어, GPP(111) 및 DMA 제어기(112)는 메모리(130)로 메모리 엑세스 요청을 전송할 수 있고, 이때, 공유 리소스 액세스 중재 장치(120)로 공유 리소스 액세스 요청을 전송할 수 있다.
한편 GPP(111)가 메모리(130)로 메모리 액세스 요청을 전송하고, 이때 DMA 제어기(112)도 메모리(130)로 메모리 액세스 요청을 전송한다고 가정하면, 동일한 메모리(130)로 메모리 액세스 요청을 하기 때문에 여전히 뱅크 충돌 현상이 발생한다.
하지만 공유 리소스 액세스 요청을 전송할 때, 마스터 장치들(110)은 공유 리소스 액세스 중재 장치(120)로 공유 리소스 액세스 요청을 전송하였기 때문에 공유 리소스 액세스 중재 장치(120)로부터 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치가 우선적으로 메모리(130)에 액세스할 수 있다. 한편 전송한 공유 리소스 액세스 요청이 승인되지 않은 마스터 장치는 뱅크 충돌 현상이 발생하면 해당 메모리에 엑세스 가능할때까지(즉, 공유 리소스 액세스 요청이 승인될 때까지) 멈추는(Stall) 현상이 발생한다.
공유 리소스 액세스 중재 장치(120)는 경우에 따라 처리율(throughput)에 민감한 DMA 제어기(112), HWA(113)과 같은 마스터 장치의 우선순위를 레이턴시에 민감한 GPP(111)과 같은 마스터 장치의 우선순위보다 높게 결정할 수 있다. 이때, 레이턴시에 민감한 GPP(111)과 같은 마스터 장치로부터 전송한 공유 리소스 액세스 요청이 승인되지 않으면, 레이턴시에 민감한 GPP(111)과 같은 마스터 장치는 해당 메모리가 사용 가능할 때까지 멈춤(Stall)에 따라 상당한 성능의 저하 현상이 발생한다.
본 발명의 일 일시예에 따른 공유 리소스 액세스 중재 장치(120)는 마스터 장치(110)들에 포함된 버퍼와 관련된 버퍼 상태 정보를 마스터 장치(110)들로부터 각각 수신하고, 수신한 버퍼 상태 정보를 기초로 마스터 장치(110)들로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정할 수 있다.
공유 리소스 액세스 중재 장치(120)는 마스터 장치의 멈춤 현상과 버퍼 상태 간의 높은 상관성을 기초로 버퍼 상태 정보를 이용하여 공유 리소스 액세스 요청의 우선순위를 결정함으로써 마스터 장치들(110)의 멈춤(Stall) 현상에 따른 마스터 장치들(110)의 성능 저하를 방지할 수 있다. 특히 버퍼 상태 정보는 마스터 장치들(110) 내부에 존재하는 관리 로직(logic)에 회로를 거의 추가하지 않고 관리 로직(logic)으로부터 수신될 수 있기 때문에, 버퍼 상태 정보를 수신하기 위한 회로를 구현하기가 어렵지 않다.
한편, 도 1b를 참조하면, 도 1a와 달리 액세스 버퍼(140)가 버퍼링(buffering)을 원하는 DMA 제어기(112)와 같은 처리율에 민감한 마스터 장치(throughput-sensitive master)와 메모리(130) 사이에 위치한다. 액세스 버퍼(140)는 공유 리소스 액세스 요청을 DMA 제어기(112)와 같이 처리율에 민감한 마스터 장치로부터 수신하고, 뱅크 충돌현상이 예상되면 공유 리소스 액세스 요청을 공유 리소스 액세스 중재 장치(120)에 전송하지 않고, 액세스 요청을 액세스 버퍼(140)에 저장한다. 따라서 뱅크 충돌현상의 발생을 미연에 방지할 수 있다. 즉 액세스 버퍼(140)의 추가를 통해 마스터 장치들(110)로부터 전송한 공유 리소스 액세스 요청들을 시간 영역에서 분리하고 따라서 뱅크 충돌 현상의 발생을 미연에 방지할 수 있다.
한편, 공유 리소스 액세스 중재 장치(120)는 액세스 버퍼(140)로부터 액세스 버퍼와 관련된 버퍼 상태 정보(buf_status)를 수신할 수 있고, 버퍼 상태 정보(buf_status)를 기초로 동적으로 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다. 공유 리소스 액세스 중재 장치(120)는 결정된 우선순위에 따라 하나의 공유 리소스 액세스 요청을 승인함으로써 레이턴시에 민감한 GPP(111)과 같은 마스터 장치의 멈춤(Stall) 현상을 방지할 수 있다.
도 2는 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치를 나타낸 블록도이다.
도 2는 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치(200)는 수신부(210) 및 제어부(220)를 포함할 수 있다.
도 2를 참조하면 수신부(210)는 적어도 하나의 마스터 장치로부터 적어도 하나의 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신할 수 있다.
이 때, 버퍼 상태 정보는 버퍼의 총 저장 공간 대비 저장된 데이터의 크기 정보를 포함할 수 있다. 예를 들어, 버퍼 상태 정보는 버퍼의 점유율에 관한 정보를 포함할 수 있다. 한편 버퍼 상태 정보는 입력 또는 출력 버퍼의 버퍼 상태와 관련된 정보를 포함할 수 있다. 또한 버퍼 상태 정보는 외부 장치와 송수신하는 데이터를 포함하는 버퍼의 상태와 관련된 정보 및 마스터 장치의 내부 처리와 관련된 데이터를 포함하는 버퍼의 상태와 관련된 정보 중 적어도 하나를 포함할 수 있다. 또한 버퍼 상태 정보는 하나의 마스터 장치에 포함된 복수의 버퍼의 상태와 관련된 정보를 포함할 수 있다.
한편, 수신부(210)는 복수의 마스터 장치로부터 공유 리소스 액세스 요청들을 수신할 수 있다.
제어부(220)는 수신부(210)에서 수신한 버퍼 상태 정보를 기초로 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정한다.
제어부(220)는 결정된 공유 리소스 액세스 요청들의 우선순위에 따라 공유 리소스 액세스 요청들 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인할 수 있다.
한편, 제어부(220)는 입력 버퍼의 상태에 관한 정보를 포함하는 버퍼 상태 정보를 이용하여 입력 버퍼의 총 저장 공간 대비 데이터의 크기가 작은 경우, 해당 입력 버퍼를 포함하는 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정할 수 있다.
제어부(220)는 출력 버퍼의 상태에 관한 정보를 포함하는 버퍼 상태 정보를 이용하여 출력 버퍼의 총 저장 공간 대비 데이터의 크기가 큰 경우, 해당 출력 버퍼를 포함하는 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정할 수 있다.
예를 들어, 제어부(220)는 현재 버퍼 내 데이터의 저장 상태에 따라 적응적으로 결정할 수 있다. 이때, 데이터의 저장 상태는 버퍼 최대 저장 공간 대비 마스터 장치의 미사용 데이터가 차지하는 비중, 또는 버퍼 최대 저장 공간 대비 미전송 데이터의 차지 비중일 수 있다.
구체적으로, 제어부(220)는 현재 버퍼가 외부 메모리 장치로부터 마스터 장치가 수신하여 처리하기 위한 데이터를 저장하는 입력 버퍼의 경우, 버퍼의 최대 공간 대비 마스터 장치에서 미사용된 데이터의 저장 공간의 비율이 낮아지면 다른 마스터 장치보다 해당 입력 버퍼를 포함하는 마스터 장치에 더 높은 우선 순위를 부여할 수 있다. 반면, 제어부(220)는 현재 버퍼가 마스터 장치로부터 외부 메모리 장치로 전송하기 위한 데이터를 저장하는 출력 버퍼인 경우, 버퍼의 최대 공간 대비 외부 메모리 장치로 미전송된 데이터의 저장 공간의 비율이 높아질수록 다른 마스터 장치보다 해당 출력 버퍼를 포함하는 마스터 장치에 더 높은 우선순위를 부여할 수 있다. 한편, 버퍼의 종류가 FIFO(First In First Out) 방식인 경우, 제어부(220)는 마스터 장치 내 버퍼의 읽기 또는 쓰기 포인터의 위치 정보, 또는 마스터 장치내 버퍼의 읽기 포인터의 위치 정보 및 쓰기 포인터의 위치 정보를 결합하여 버퍼 내 데이터의 저장상태를 결정할 수 있다.
또한 제어부(220)는 복수의 버퍼의 상태에 관한 정보를 포함하는 버퍼 상태 정보를 기초로 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
한편 제어부(220)는 외부 장치와 송수신하는 데이터를 포함하는 제1 버퍼 및 적어도 하나의 마스터 장치의 내부 처리와 관련된 데이터를 포함하는 제2 버퍼의 상태와 관련된 정보를 포함하는 버퍼 상태 정보를 기초로 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
한편, 복수의 마스터 장치와 각각 연결된 버스 및 공유 리소스 장치에 연결된 버스는 공유 리소스 액세스 중재 장치(200)에 연결될 수 있고, 제어부(220)는 복수의 마스터 장치 중 승인된 공유 리소스 장치 요청을 전송한 마스터 장치가 공유 리소스 장치에 액세스할 수 있도록 복수의 마스터 장치에 각각 연결된 버스들 중 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치에 연결된 버스를 결정하고, 상기 결정된 버스를 통해 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치와 공유 리소스 장치간 송수신하는 데이터를 중재할 수 있다.
한편, 본 발명의 다른 실시예에 따른 공유 리소스 액세스 중재 장치(200)는 먼저 마스터 장치의 버스 및 공유 리소스 장치에 연결된 버스 사이에 연결된 버퍼에서 상기 마스터 장치로부터 수신한 공유 리소스 액세스 요청을 저장하고, 상기 버퍼와 관련된 버퍼 상태 정보를 기초로 저장된 공유 리소스 액세스 요청의 우선순위를 결정한다.
수신부(210)는 적어도 하나의 제1 마스터 장치로부터 제1 공유 리소스 액세스 요청을 수신하고, 적어도 하나의 제2 마스터 장치로부터 제2 공유 리소스 액세스 요청을 수신한다.
제어부(220)는 제1 마스터 장치의 버스 및 공유 리소스 장치에 연결된 버스 사이에 연결된 버퍼에 제1 공유 리소스 액세스 요청을 저장하도록 제어한다.
제어부(220)는 적어도 하나의 제2 마스터 장치와 관련된 제2 공유 리소스 액세스 요청 및 상기 버퍼와 관련된 버퍼 상태 정보에 기초하여 저장된 제1 공유 리소스 액세스 요청의 우선순위를 결정하고, 결정된 우선순위에 기초하여 저장된 제1 공유 리소스 액세스 요청 및 제2 공유 리소스 액세스 요청 중 하나를 승인할 수 있다.
도 3은 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 방법을 나타낸 흐름도이다.
도 3을 참조하면 310단계에서, 공유 리소스 액세스 중재 장치(200)는 적어도 하나의 마스터 장치로부터 적어도 하나의 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신한다.
320 단계에서, 공유 리소스 액세스 중재 장치(200)는 수신한 버퍼 상태 정보를 기초로 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정한다.
330 단계에서, 공유 리소스 액세스 중재 장치(200)는 결정된 공유 리소스 액세스 요청들의 우선순위에 따라 공유 리소스 액세스 요청들 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인할 수 있다.
도 4는 본 발명의 다른 실시예에 따른 공유 리소스 액세스 중재 방법을 나타낸 흐름도이다.
도 4를 참조하면, 410 단계에서, 공유 리소스 액세스 중재 장치(200)는 적어도 하나의 제1 마스터 장치로부터 제1 공유 리소스 액세스 요청을 수신한다.
420 단계에서, 공유 리소스 액세스 중재 장치(200)는 제1 공유 리소스 액세스 요청을 제1 마스터 장치의 버스 및 공유 리소스 장치에 연결된 버스 사이에 연결된 버퍼에 저장한다. 구체적으로 공유 리소스 액세스 중재 장치(200)는 적어도 하나의 제2 마스터 장치로부터 제2 공유 리소스 액세스 요청을 수신하고, 수신한 제2 공유 리소스 액세스 요청을 기초로 제1 공유 리소스 액세스 요청을 저장할 수 있다. 또는 공유 리소스 액세스 중재 장치(200)는 상기 버퍼와 관련된 버퍼 상태 정보를 기초로 제1 공유 리소스 액세스 요청을 저장할 수 있다.
430 단계에서, 공유 리소스 액세스 중재 장치(200)는 적어도 하나의 제2 마스터 장치와 관련된 제2 공유 리소스 액세스 요청 및 버퍼의 버퍼 상태 정보에 기초하여 저장된 제1 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
440 단계에서, 공유 리소스 액세스 중재 장치(200)는 결정된 우선순위에 따라 저장된 제1 공유 리소스 액세스 요청 및 제2 공유 리소스 액세스 요청 중 하나를 승인할 수 있다.
도 5는 본 발명의 일 실시예에 공유 리소스 액세스 중재 장치를 포함하는 공유 리소스 액세스 중재 시스템에서 우선순위에 따라 하나의 공유 리소스 액세스 요청을 승인하는 과정을 설명하기 위한 흐름도이다.
도 5를 참조하면, 501 단계에서, 제1 프로세서(510)는 제1 공유 리소스 액세스 요청을 액세스 버퍼(520)로 전송한다.
502 단계에서, 제2 프로세서(530)는 제2 공유 리소스 액세스 요청을 공유 리소스 액세스 중재 장치(540)로 전송할 수 있다. 이때, 제2 프로세서(530)는 제2 공유 리소스 액세스 요청을 액세스 버퍼(520)로 전송할 수 있다.
503 단계에서, 한편 액세스 버퍼(520)는 제2 공유 리소스 액세스 요청 및 액세스 버퍼(520)의 버퍼 상태 정보에 기초하여 제1 공유 리소스 액세스 요청 중 적어도 하나를 액세스 버퍼에 저장하는지 여부를 결정한다.
504 단계에서, 액세스 버퍼(520)는 상기 결정에 기초하여 액세스 버퍼(520)에 제1 공유 리소스 액세스 요청 중 적어도 하나를 저장할 수 있다.
505단계에서, 액세스 버퍼(520)는 저장된 적어도 하나의 제1 공유 리소스 액세스 요청 중 하나를 공유 리소스 액세스 중재 장치(540)로 전송할 수 있다.
506 단계에서, 공유 리소스 액세스 중재 장치(540)는 공유 리소스 액세스 요청들의 우선순위를 결정하고, 결정된 우선순위에 따라 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인할 수 있다. 이때, 공유 리소스 액세스 중재 장치(540)는 공유 리소스 액세스 요청을 전송한 마스터 장치의 타입(type)에 따라 공유 리소스 액세스 요청들의 우선순위를 결정할 수 있다. 예를 들어, 공유 리소스 액세스 중재 장치(540)는 공유 리소스 액세스 요청을 전송한 마스터 장치가 레이턴시에 민감한 마스터 장치(latency-sensitive master)인지 아니면 처리율에 민감한 마스터 장치(throughput-sensitive master)인지에 따라 해당 마스터 장치로부터 수신하는 공유 리소스 액세스 요청의 우선순위를 달리 결정할 수 있다.
도 6은 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치에서 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
도 6을 참조하면, 마스터 장치들(110) 중 처리율에 민감한 마스터 장치(610)는 처리부(611)를 포함하고, 처리부(611)에 포함된 버퍼(612)로부터 버퍼(612)와 관련된 버퍼 상태 정보를 처리부(611)에 포함된 버퍼 상태 알림부(613)로 전송할 수 있다. 이때 버퍼 상태 알림부는 버퍼와 관련된 버퍼 상태 정보(buffer_status)를 공유 리소스 액세스 중재 장치(620)로 전송할 수 있다.
한편, 공유 리소스 액세스 중재 장치(620)는 우선순위 결정부(621)를 포함한다. 우선순위 결정부(621)는 버퍼 상태 알림부(613)로부터 수신한 버퍼와 관련된 버퍼 상태 정보(buffer_status)를 기초로 마스터 장치들(110)로부터 수신한 공유 리소스 액세스 요청(req)들의 우선순위를 결정할 수 있다.
공유 리소스 액세스 중재 장치(620)는 결정된 우선순위에 따라 마스터 장치들(110)로부터 수신한 공유 리소스 액세스 요청들(req) 중 하나의 공유 리소스 액세스 요청을 승인(gnt)할 수 있다.
한편, 데이터(data)를 송수신하기 위해 마스터 장치들(110)에 연결된 버스가 Mux(622)에 연결되고, 데이터(data)를 송수신하기 위해 공유 리소스 장치(630)에 연결된 버스가 Mux(622)에 연결될 수 있다. 우선순위 결정부(621)는 Mux(622)의 동작을 제어할 수 있다. 구체적으로 Mux(622)는 결정된 우선순위에 따라 마스터 장치들(110)과 연결된 버스들 중 하나의 버스를 선택하고 선택된 버스를 통해 선택된 버스와 연결된 마스터 장치와 공유 리소스 장치(630) 간에 데이터를 송수신하는 것을 중재할 수 있다.
한편 도 6에서는 마스터 장치들(110) 중 레이턴시(Latency)에 민감한 마스터 장치(Latency-sensitive master)(615)에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신하지 않는 것처럼 도시되어 있지만, 이에 제한되지 않고 레이턴시(Latency)에 민감한 마스터 장치(615)에 포함된 버퍼와 관련된 버퍼 상태 정보도 수신할 수 있고, 레이턴시(Latency)에 민감한 마스터 장치(615)로부터 수신한 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청들의 우선순위를 결정할 수 있다.
한편, 이제까지 공유 리소스 액세스 중재 장치(620)는 Mux(622)를 포함하는 것을 가정하여 상술하였으나, 이에 제한되지 않고, 공유 리소스 액세스 중재 장치(620)는 Mux(622)를 포함하지 않을 수 있다. 마스터 장치(610)는 공유 리소스 액세스 요청(req)에 대한 승인(gnt)를 공유 리소스 액세스 중재 장치(620)로부터 수신하면, 마스터 장치들(110) 및 공유 리소스 장치(630)가 공유하는 버스를 통해 공유 리소스 장치(630)로 공유 리소스 액세스 요청을 전송하고, 해당 버스를 통해 공유 리소스 장치(630)에 액세스하여 공유 리소스 장치(630)와 데이터를 송수신할 수 있다.
구체적으로 우선순위 결정부(621)가 수신한 버퍼 상태 정보를 기초로 수신한 공유 리소스 액세스 요청들의 우선순위를 동적으로 결정하는 과정은 도 7-8을 참조하여 후술하도록 한다.
도 7-8은 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치가 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
도 7은 공유 리소스 액세스 중재 장치가 공유 리소스 액세스 요청들의 우선순위를 결정하기 위해 참조하는 버퍼 상태 정보가 입력 버퍼 또는 출력 버퍼와 관련된 버퍼 상태 정보인 반면, 도 8은 공유 리소스 액세스 중재 장치가 공유 리소스 액세스 요청의 우선순위를 결정하기 위해 참조하는 버퍼 상태 정보는 입력 버퍼 또는 출력 버퍼에 포함되는 프로세싱 버퍼 또는 읽기/쓰기 버퍼와 관련된 버퍼 상태 정보다. 특히 도 8의 경우 입력 버퍼 또는 출력 버퍼에 포함된 프로세싱 버퍼 및 읽기/쓰기 버퍼와 관련된 버퍼 상태 정보를 조합하여 공유 리소스 액세스 요청들의 우선순위를 결정할 수 있다. 따라서 더 정확한 마스터 장치의 멈춤(Stall) 가능성이 예측될 수 있다.
도 7은 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치에서 구체적으로 입력 및 출력 버퍼와 관련된 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
본 실시예에서 레이턴시에 민감한 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위는 일정하다고 가정한다.
도 7을 참조하면, 공유 리소스 액세스 중재 장치(620)는 처리율(throughput)에 민감한 마스터 장치(610)의 처리부(611)에 포함된 버퍼(612)와 관련된 버퍼 상태 정보를 버퍼 상태 알림부(613)로부터 수신한다고 가정한다.
공유 리소스 액세스 중재 장치(620)에 포함된 우선순위 결정부(621)는 입력 버퍼(710)의 버퍼 점유율(Buffer occupancy)에 기초하여 우선순위(Priority)를 결정할 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(711)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 입력 버퍼의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 입력 버퍼의 버퍼 점유율이 높으면(full), 마스터 장치(610)의 우선순위를 레이턴시에 기초한 마스터 장치의 우선순위보다 낮게 설정할 수 있다. 특히 우선순위 결정부(621)는 버퍼 점유율이 높아짐에 따라 마스터 장치(610)의 우선순위를 선형적으로 감소시킬 수 있다.
한편, 예를 들어, 버퍼 점유율-우선순위 그래프(712)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 입력 버퍼의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 입력 버퍼의 버퍼 점유율이 높아짐에 따라, 선형적으로 마스터 장치(610)의 우선순위가 감소될 수 있다. 한편 입력 버퍼의 점유율이 일정한 값 이상인 경우, 마스터 장치(610)의 우선순위는 일정한 값일 수 있다.
한편, 예를 들어, 버퍼 점유율-우선순위 그래프(713)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 입력 버퍼(710)의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 입력 버퍼의 버퍼 점유율이 높아짐에 관계없이 일정한 값 이하인 경우, 마스터 장치(610)의 우선순위가 소정의 제1 값이 될 수 있다. 한편 우선순위 결정부(621)는 입력 버퍼의 버퍼 점유율이 입력 버퍼의 버퍼 점유율이 높아짐에 관계없이 일정한 값 이상인 경우, 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮은 소정의 제2 값으로 결정할 수 있다.
공유 리소스 액세스 중재 장치(620)에 포함된 우선순위 결정부(621)는 출력 버퍼(720)의 버퍼 점유율(Buffer occupancy)에 기초하여 우선순위(Priority)를 결정할 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(721)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 출력 버퍼(720)의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 결정할 수 있다. 한편, 우선순위 결정부(121)는 마스터 장치(610)에 포함된 출력 버퍼의 버퍼 점유율이 높으면(full), 마스터 장치(610)의 우선순위를 레이턴시에 기초한 마스터 장치의 우선순위보다 높게 설정할 수 있다. 특히 우선순위 결정부(621)는 버퍼 점유율이 높아짐에 따라 마스터 장치(610)의 우선순위를 선형적으로 증가시킬 수 있다.
한편, 예를 들어, 버퍼 점유율-우선순위 그래프(722)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 출력 버퍼의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 결정할 수 있다. 한편 출력 버퍼의 점유율이 일정한 값이하인 경우, 마스터 장치(610)의 우선순위는 일정한 값이 될 수 있다.
버퍼 점유율-우선순위 그래프(722)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 출력 버퍼의 점유율이 일정한 값이상인 경우, 출력 버퍼의 버퍼 점유율이 높아짐에 따라, 선형적으로 마스터 장치(610)의 우선순위가 증가될 수 있다.
한편, 예를 들어, 버퍼 점유율-우선순위 그래프(723)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 출력 버퍼의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 출력 버퍼의 버퍼 점유율이 높아짐에 관계없이 일정한 값 이하인 경우 마스터 장치(610)의 우선순위가 소정의 제1 값이 될 수 있다. 한편 우선순위 결정부(621)는 출력 버퍼의 버퍼 점유율이 일정한 값이상이면, 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 이때, 우선순위 결정부(621)는 출력 버퍼의 버퍼 점유율이 일정한 값 이상인 경우 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높은 소정의 제2 값으로 결정할 수 있다.
이제까지 우선순위 결정부(621)가 버퍼 점유율-우선순위 그래프(711-713, 721-723)를 참조하여 처리율에 민감한 마스터 장치(610)의 우선순위를 동적으로 변경하는 내용을 상술하였으나, 이에 제한되지 않고, 다양한 버퍼 점유율 및 우선순위 간의 상관성에 기초하여 처리율에 민감한 마스터 장치(610)의 우선순위를 결정할 수 있다.
한편, 우선순위 결정부(621)는 설명의 편의상 레이턴시에 민감한 마스터 장치의 우선순위가 고정적이라고 가정하였으나, 이에 제한되지 않고, 버퍼 점유율에 따라 레이턴시에 민감한 마스터 장치의 우선순위를 변경할 수 있다.
한편, 우선순위 결정부(621)는 처리율에 민감한 마스터 장치(610)에 포함된 버퍼와 관련된 버퍼 상태 정보만을 수신하고, 상기 수신한 버퍼 상태 정보만을 기초로 공유 리소스 액세스 요청의 우선순위를 결정하는 내용만을 상술하고 있으나, 이에 제한되지 않고, 레이턴시에 민감한 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신하고, 상기 수신한 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
한편, 우선순위 결정부(621)는 입력 버퍼(710) 및 출력 버퍼(720) 중 하나의 버퍼와 관련된 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청의 우선순위를 결정하나, 이에 제한되지 않고, 입력 버퍼(710)의 버퍼 상태 정보 및 출력 버퍼(720)의 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
도 8a-8b는 본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치가 마스터 장치에 포함된 프로세싱 버퍼의 버퍼 상태 정보 및/또는 읽기/쓰기 버퍼의 버퍼 상태 정보에 기초하여 마스터 장치의 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
본 실시예에서 레이턴시에 민감한 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위는 일정하다고 가정한다.
도 8a-8b를 참조하면, 공유 리소스 액세스 중재 장치(620)는 처리율(throughput)에 민감한 마스터 장치(610)의 처리부(611)에 포함된 프로세싱 버퍼(617)와 관련된 버퍼 상태 정보(buffer_status_proc) 또는 읽기/쓰기 버퍼(616)와 관련된 버퍼 상태 정보(buffer_status_pref)를 버퍼 상태 알림부(613)로부터 수신한다고 가정한다. 여기서 프로세싱 버퍼(617)는 연산 수행부(615)에서 수행되는 연산과 관련된 데이터를 포함하는 버퍼를 의미한다. 예를 들어 프로세싱 버퍼(617)는 직접적으로 연산 수행부(615)와 연결된 버퍼일 수 있다. 한편 읽기/쓰기 버퍼(616)는 공유 리소스 장치와 같은 외부 장치와 통신 중인 버퍼로, 외부 장치로부터 송수신하는 데이터를 포함하는 버퍼를 의미한다. 예를 들어, 읽기/쓰기 버퍼(618)는 공유 리소스 장치와 통신하기 위해 버스 인터페이스(Bus I/F)와 연결된 버퍼일 수 있다.
도 8a를 참조하면, 공유 리소스 액세스 중재 장치(620)에 포함된 우선순위 결정부(621)는 입력 버퍼(810)의 버퍼 점유율(Buffer occupancy)에 기초하여 우선순위(Priority)를 결정할 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(811)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 읽기 버퍼의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기 버퍼의 버퍼 점유율이 높으면(full), 마스터 장치(610)의 우선순위를 레이턴시에 기초한 마스터 장치의 우선순위보다 낮게 설정할 수 있다. 특히 우선순위 결정부(621)는 버퍼 점유율이 높아짐에 따라 마스터 장치(610)의 우선순위를 선형적으로 감소시킬 수 있다.
또한 버퍼 점유율-우선순위 그래프(814)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)와 관련된 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 높으면(full), 마스터 장치(610)의 우선순위를 레이턴시에 기초한 마스터 장치의 우선순위보다 낮게 설정할 수 있다. 특히 우선순위 결정부(621)는 버퍼 점유율이 높아짐에 따라 마스터 장치(610)의 우선순위를 선형적으로 감소시킬 수 있다. 이때, 프로세싱 버퍼(617)의 버퍼 점유율은 버퍼 크기 대비 아직 연산에 사용되지 않은 유효 데이터의 비율로 정의될 수 있다. 예를 들어, 버퍼에 저장된 데이터 중 일부 데이터는 이미 내부 연산(또는 처리)와 관련되어 이미 이용되고 나머지 데이터는 내부 연산(또는 처리)와 관련하여 이용 대기 중인 데이터일 수 있다. 실질적으로 이미 내부 연산(또는 처리)된 데이터는 마스터 장치의 멈춤 현상(stall) 현상과 관련성이 작기 때문에 이를 고려하지 않을 수 있고 따라서 프로세싱 버퍼(617)의 버퍼 점유율은 아직 연산에 이용되지 않은 데이터의 비율로 정의될 수 있다.
한편, 예를 들어, 버퍼 점유율-우선순위 그래프(812)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 읽기 버퍼의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 읽기 버퍼의 버퍼 점유율이 높아짐에 따라, 선형적으로 마스터 장치(610)의 우선순위가 감소될 수 있다. 한편 읽기 버퍼의 점유율이 일정한 값이상인 경우, 마스터 장치(610)의 우선순위는 소정의 제1 값이 될 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(815)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 높아짐에 따라, 선형적으로 마스터 장치(610)의 우선순위가 감소될 수 있다. 한편 프로세싱 버퍼(617)의 점유율이 일정한 값이상인 경우, 마스터 장치(610)의 우선순위는 소정의 제1 값이 될 수 있다.
또한, 예를 들어, 버퍼 점유율-우선순위 그래프(813)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 읽기 버퍼의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 읽기 버퍼의 버퍼 점유율이 높아짐에 관계없이 마스터 장치(610)의 우선순위가 소정의 제1 값이 될 수 있다. 한편 우선순위 결정부(621)는 읽기/쓰기 버퍼(616) 중 읽기 버퍼의 점유율이 일정한 값이상인 경우 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 결정할 수 있다. 이때, 우선순위 결정부(621)는 읽기/쓰기 버퍼(616) 중 읽기 버퍼의 버퍼 점유율이 일정한 값에서 계속 높아짐에 관계없이 마스터 장치(610)의 우선순위가 소정의 제2 값이 될 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(816)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 높아짐에 관계없이 마스터 장치(610)의 우선순위가 소정의 제1 값이 될 수 있다. 한편 우선순위 결정부(621)는 프로의 프로세싱 버퍼(617)의 점유율이 일정한 값이상이면, 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 결정할 수 있다. 이때, 우선순위 결정부(621)는 프로세싱 버퍼(617)의 버퍼 점유율이 일정한 값에서 계속 높아짐에 관계없이 마스터 장치(610)의 우선순위가 소정의 제2 값이 될 수 있다.
한편 읽기/쓰기 버퍼(616) 및 프로세싱 버퍼(617)과 관련된 버퍼 상태 정보를 조합하여 마스터 장치(610)의 우선순위를 결정할 수 있다. 예를 들어, 읽기 버퍼의 점유율을 A라고 하고, 프로세싱 버퍼(617)의 점유율을 B라고 하면, min(A, B), max(A,B) 또는 average(A,B)를 버퍼 점유율로 결정하고, 결정된 버퍼 점유율을 기초로 공유 리소스 액세스 요청들의 우선순위를 결정할 수 있다.
한편, 도 8b를 참조하면, 공유 리소스 액세스 중재 장치(620)에 포함된 우선순위 결정부(621)는 출력 버퍼(820)의 버퍼 점유율(Buffer occupancy)에 기초하여 우선순위(Priority)를 결정할 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(821)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 쓰기 버퍼의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 쓰기 버퍼의 버퍼 점유율이 높으면(full), 마스터 장치(610)의 우선순위를 레이턴시에 기초한 마스터 장치의 우선순위보다 높게 설정할 수 있다. 특히 우선순위 결정부(621)는 버퍼 점유율이 높아짐에 따라 마스터 장치(610)의 우선순위가 선형적으로 증가할 수 있다.
또한 버퍼 점유율-우선순위 그래프(824)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)와 관련된 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 높으면(full), 마스터 장치(610)의 우선순위를 레이턴시에 기초한 마스터 장치의 우선순위보다 높게 설정할 수 있다. 특히 우선순위 결정부(621)는 버퍼 점유율이 높아짐에 따라 마스터 장치(610)의 우선순위가 선형적으로 증가할 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(822)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 쓰기 버퍼의 버퍼 점유율이 일정한 값보다 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 소정의 제1 값으로 결정할 수 있다.
한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 쓰기 버퍼의 버퍼 점유율이 일정한 값으로부터 높아짐에 따라, 선형적으로 마스터 장치(610)의 우선순위가 증가할 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(825)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 일정한 값보다 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 소정의 제1 값으로 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 일정한 값으로부터 높아짐에 따라, 선형적으로 마스터 장치(610)의 우선순위가 증가할 수 있다.
또한, 예를 들어, 버퍼 점유율-우선순위 그래프(823)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 읽기/쓰기 버퍼(616) 중 쓰기 버퍼의 버퍼 점유율이 일정한 값보다 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 소정의 제1 값으로 결정할 수 있다. 우선순위 결정부(621)는 읽기/쓰기 버퍼(616) 중 쓰기 버퍼의 점유율이 일정한 값 이상이면, 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 이때, 우선순위 결정부(621)는 읽기/쓰기 버퍼(616) 중 쓰기 버퍼의 버퍼 점유율이 일정한 값으로부터 계속 높아짐에 관계없이 마스터 장치(610)의 우선순위가 소정의 제 2 값이 될 수 있다.
예를 들어, 버퍼 점유율-우선순위 그래프(826)를 참조하면 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 낮으면(empty), 마스터 장치(610)의 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 낮게 결정할 수 있다. 한편, 우선순위 결정부(621)는 마스터 장치(610)에 포함된 프로세싱 버퍼(617)의 버퍼 점유율이 일정한 값이하인 경우, 버퍼 점유율이 높아짐에 관계없이 마스터 장치(610)의 우선순위가 소정의 제1 값이 될 수 있다. 한편 우선순위 결정부(621)는 프로의 프로세싱 버퍼(617)의 점유율이 일정한 값이 되면, 우선순위를 레이턴시에 민감한 마스터 장치의 우선순위보다 높게 결정할 수 있다. 이때, 우선순위 결정부(621)는 프로세싱 버퍼(617)의 버퍼 점유율이 일정한 값으로부터 계속 높아짐에 관계없이 마스터 장치(610)의 우선순위가 소정의 제2 값이 될 수 있다.
한편 읽기/쓰기 버퍼(616) 중 쓰기 버퍼 및 프로세싱 버퍼(617)과 관련된 버퍼 상태 정보를 조합하여 마스터 장치(610)의 우선순위를 결정할 수 있다. 예를 들어, 읽기/쓰기 버퍼(616) 중 쓰기 버퍼의 점유율을 A라고 하고, 프로세싱 버퍼(617)의 점유율을 B라고 하면, min(A, B), max(A,B) 또는 average(A,B)를 버퍼 점유율로 결정하고, 결정된 버퍼 점유율을 기초로 공유 리소스 액세스 요청들의 우선순위를 결정할 수 있다.
이제까지 버퍼 점유율-우선순위 그래프(811-816, 821-826)를 참조하여 공유 리소스 액세스 중재 장치(620)가 공유 리소스 액세스 요청들의 우선순위를 결정하는 내용을 상술하였으나, 이에 제한되지 않고, 다양한 버퍼 점유율 및 우선 순위 간의 상관성에 기초하여 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
한편, 우선순위 결정부(621)는 설명의 편의상 레이턴시에 민감한 마스터 장치의 우선순위가 고정적이라고 가정하였으나, 이에 제한되지 않고, 버퍼 점유율에 따라 레이턴시에 민감한 마스터 장치의 우선순위를 변경할 수 있다.
한편, 우선순위 결정부(621)는 처리율에 민감한 마스터 장치(610)에 포함된 버퍼와 관련된 버퍼 상태 정보만을 수신하고, 상기 수신한 버퍼 상태 정보만을 기초로 공유 리소스 액세스 요청의 우선순위를 결정하는 내용만을 상술하고 있으나, 이에 제한되지 않고, 레이턴시에 민감한 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신하고, 상기 수신한 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
한편, 이제까지 우선순위 결정부(621)가 입력 버퍼(810) 및 출력 버퍼(820) 중 하나의 버퍼와 관련된 버퍼 상태 정보를 기초로 공유 리소스 액세스 요청의 우선순위를 결정하는 내용만을 설명하였으나, 이에 제한되지 않고, 입력 버퍼(810)의 버퍼 상태 정보 및 출력 버퍼(820)의 버퍼 상태 정보를 기초로 이를 조합하여 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
도 9a-9b 및 도 10a-10b는 본 발명의 일 실시예에 처리율에 민감한 마스터 장치의 공유 리소스 액세스 요청의 처리 과정을 나타내는 타이밍 다이어그램이다.
도 9는 처리율에 민감한 마스터 장치의 멈춤 현상 발생 가능성이 낮은 경우 즉 처리율에 민감한 마스터 장치가 일정 시간동안 상대적으로 적은 횟수로 공유 리소스 장치에 액세스하려는 경우, 처리율에 민감한 마스터 장치의 공유 리소스 액세스 요청의 처리 과정을 나타낸 것인 반면, 도 10은 처리율에 민감한 마스터 장치의 멈춤 현상 발생 가능성이 높은 경우, 즉 처리율에 민감한 마스터 장치가 일정 시간동안 상대적으로 많은 횟수로 공유 리소스 장치에 액세스하려는 경우 처리율에 민감한 마스터 장치의 공유 리소스 액세스 요청의 처리 과정을 나타낸 것이다.
도 9a-9b는 본 발명의 일 실시예에 따른 처리율에 민감한 마스터 장치의 멈춤 현상 발생 가능성이 낮은 경우 처리율에 민감한 마스터 장치의 공유 리소스 액세스 요청의 처리 과정을 나타낸 타이밍 다이어그램이다.
도 9a와 관련하여 공유 리소스 액세스 중재 장치는 처리율에 민감한 마스터 장치(610)의 레이턴시에 기초하여 마스터 장치들로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정한다고 가정한다. 한편 도 9b와 관련하여 공유 리소스 액세스 중재장치는 처리율에 민감한 마스터 장치(610)에 포함된 출력 버퍼와 관련된 버퍼 상태 상태 정보를 기초로 마스터 장치들로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정한다.
도 9a를 참조하면, 처리율에 민감한 마스터 장치(610)는 공유 리소스 액세스 요청을 생성한다. 예를 들어, 처리율에 민감한 마스터 장치(610)는 내부 클록에 동기화되어 공유 리소스 액세스 요청 'W0, W1, W2, W3'를 생성한다. 이하에서는 마스터 장치에서 공유 리소스 장치에 액세스 하기 위해 생성된 공유 리소스 액세스 요청을 내부 요청이라고 한다.
한편 처리율에 민감한 마스터 장치(610)는 공유 리소스 액세스 요청 'W0, W1, W2, W3'를 생성하면, 먼저 공유 리소스 액세스 요청을 출력 버퍼에 저장하고, 출력 버퍼에 저장된 공유 리소스 액세스 요청을 공유 리소스 액세스 중재 장치로 전송할 수 있다. 이하에서는 마스터 장치의 외부에 있는 공유 리소스 액세스 중재 장치로 전송하는 공유 리소스 액세스 요청을 외부 요청이라고 한다. 외부 요청은 마스터 장치(610)로부터 승인 메시지(gnt)를 수신할 때까지 공유 리소스 액세스 중재 장치로 계속 전송될 수 있다.
한편 공유 리소스 액세스 중재 장치는 처리율에 민감한 마스터 장치(610)로부터 외부 요청(req)를 수신하면 다른 외부 요청들 간의 우선순위에 기초하여 승인 메시지(gnt)를 처리율이 민감한 마스터 장치(610)로 전송할 수 있다.
한편 도 9a를 참조하면 처리율에 민감한 마스터 장치(610)의 우선순위가 낮아(Low) 다른 마스터 장치들의 공유 리소스 액세스 요청에 대해 먼저 승인 메시지(gnt)를 전송하기 때문에 점점 처리율에 민감한 마스터 장치의 레이턴시(Latency)가 커진다.
공유 리소스 액세스 중재 장치는 레이턴시가 소정의 레이턴시 조건(910)을 만족하는 경우, 처리율에 민감한 마스터 장치(610)로부터 수신한 외부 요청(req)의 우선순위를 높게(High) 결정한다.
따라서 공유 리소스 액세스 중재 장치는 외부 요청(req)의 우선순위가 높게 결정됨에 따라 외부 승인(gnt)을 처리율에 민감한 마스터 장치(610)로 전송할 수 있다.
공유 리소스 액세스 중재 장치는 처리율에 민감한 마스터 장치(610)의 우선순위가 높기 때문에 처리율에 민감한 마스터 장치(610)로부터 수신한 후속 외부 요청(req)에 대해서도 승인 메시지(gnt)를 전송할 수 있다.
도 9b를 참조하면, 처리율에 민감한 마스터 장치(610)는 도 9a와 동일한 내부 요청을 생성한다고 가정한다.
도 9a와 달리, 우선순위가 높은 다른 마스터 장치로부터 수신한 공유 리소스 액세스 요청이 공유 리소스 액세스 중재 장치에서 먼저 처리되어, 처리율에 민감한 마스터 장치(610)의 레이턴시가 증가하더라도 외부 요청(req)의 우선순위를 변경하지 않는다.
한편 출력 버퍼의 상태가 소정의 버퍼 상태 조건(920)을 만족하는 경우, 공유 리소스 액세스 중재 장치는 마스터 장치(610)가 전송한 외부 요청(req)의 우선순위를 변경한다. 따라서 공유 리소스 액세스 중재 장치는 마스터 장치(610)가 전송한 외부 요청(req)에 대한 승인 메시지(gnt)를 처리율에 민감한 마스터 장치(610)로 전송할 수 있다. 또한 마스터 장치(610)가 전송한 외부 요청(req)의 우선순위가 높기 때문에 공유 리소스 액세스 중재 장치는 마스터 장치(610)가 전송한 후속 외부 요청(req)에 대해서도 승인 메시지(gnt)를 전송할 수 있다.
도 9b의 처리율에 민감한 마스터 장치(610)가 처리하는 내부 요청은 도 9a의 내부 요청과 같지만 다른 우선순위 결정 기준에 따라 공유 리소스 액세스 중재 장치가 외부 요청(req)에 대한 승인 시점이 달라 요청이 최종적으로 외부 요청(req)이 처리되는 시간이 달라지게 된다.
특히 도 9b와 같이 출력 버퍼의 버퍼 상태 정보에 기초하여 공유 리소스 액세스 요청의 우선 순위를 결정하는 경우, 버퍼에 데이터가 꽉 차서 더 이상 마스터 장치가 처리를 하지 못하기 전까지 우선순위를 변경하지 않고, 공유 리소스 액세스 중재 장치가 레이턴시에 민감한 마스터 장치로부터 수신한 공유 리소스 액세스 요청을 승인함으로써 레이턴시에 민감한 마스터 장치의 멈춤(stall) 가능성을 저감시킬 수 있다. 즉, 처리율에 민감한 마스터 장치(610)에 대한 멈춤(stall) 가능성을 과도하게 예측(over estimation)함으로써 레이턴시에 민감한 다른 마스터 장치들의 멈춤(stall) 가능성이 높아지는 것을 방지할 수 있다.
도 10a-10b는 본 발명의 일 실시예에 따른 처리율에 민감한 마스터 장치의 멈춤 현상 발생 가능성이 높은 경우 공유 리소스 액세스 요청의 처리 과정을 나타낸 타이밍 다이어그램이다.
도 10a와 관련하여 공유 리소스 액세스 중재 장치는 처리율에 민감한 마스터 장치(610)의 레이턴시에 기초하여 마스터 장치들로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정한다고 가정한다. 한편 도 10b와 관련하여 공유 리소스 액세스 중재장치는 처리율에 민감한 마스터 장치(610)에 포함된 출력 버퍼와 관련된 버퍼 상태 상태 정보를 기초로 마스터 장치들로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정한다.
도 10a를 참조하면, 처리율에 민감한 마스터 장치(610)는 공유 리소스 액세스 요청을 생성한다. 예를 들어, 처리율에 민감한 마스터 장치(610)는 내부 클록에 동기화되어 공유 리소스 액세스 요청 'W0, W1, W2, W3, W4,..., W9'를 전송할 수 있다. 이하에서는 마스터 장치에서 공유 리소스 장치에 액세스 하기 위해 생성된 공유 리소스 액세스 요청을 내부 요청이라고 한다.
한편 처리율에 민감한 마스터 장치(610)는 공유 리소스 액세스 요청 'W0, W1, W2, W3, W4,...,W9를 생성하면, 먼저 공유 리소스 액세스 요청을 출력 버퍼에 저장하고, 출력 버퍼에 저장된 공유 리소스 액세스 요청을 공유 리소스 액세스 중재 장치로 전송할 수 있다. 이하에서는 마스터 장치의 외부에 있는 공유 리소스 액세스 중재 장치로 전송하는 공유 리소스 액세스 요청을 외부 요청이라고 한다. 외부 요청은 마스터 장치(610)로부터 승인 메시지(gnt)를 수신할 때까지 공유 리소스 액세스 중재 장치로 계속 전송될 수 있다.
한편 공유 리소스 액세스 중재 장치는 처리율에 민감한 마스터 장치(610)로부터 공유 리소스 액세스 요청을 수신하면 다른 마스터 장치로부터 수신한 공유 리소스 액세스 요청과 마스터 장치(610)으로부터 수신한 공유 리소스 액세스 요청들 간의 우선순위에 기초하여 하나의 공유 리소스 액세스 요청에 대한 승인 메시지(gnt)를 전송할 수 있다. 한편 도 9a를 참조하면 처리율에 민감한 마스터 장치(610)의 우선순위가 낮아(Low) 다른 마스터 장치들의 공유 리소스 액세스 요청에 대해 먼저 승인 메시지(gnt)를 전송하기 때문에 점점 처리율에 민감한 마스터 장치(610)의 레이턴시(Latency)가 커진다.
한편 공유 리소스 액세스 중재 장치는 레이턴시가 커짐에 따라서(0,1,2,3) 마스터 장치(610)로부터 수신한 외부 요청의 우선순위를 높게(High) 결정할 수 있다.
처리율에 민감한 마스터 장치(610)로부터 수신한 외부 요청의 우선순위가 높아짐에 따라 공유 리소스 액세스 중재 장치는 처리율에 민감한 마스터 장치(610)로부터 수신한 외부 요청(req)(W0, W1, W2, W3, W4)에 대해 연속적으로 승인할 수 있다. 한편 연속적으로 승인함에 따라서 레이턴시가 낮아진다. 따라서 공유 리소스 액세스 요청 장치는 소정의 레이턴시 조건(1010)을 만족하고, 따라서 마스터 장치(610)로부터 수신한 외부 요청(req)의 우선순위를 낮출 수 있다(Low).
마스터 장치(610)로부터 수신한 외부 요청(req)의 우선순위가 낮아지면, 공유 리소스 액세스 중재 장치는 다른 마스터 장치로부터 수신한 공유 리소스 액세스 요청을 승인하고, 처리율에 민감한 마스터 장치(610)의 외부 요청(req)(W5, W6, )을 승인하지 않는다. 한편, 처리율에 민감한 마스터 장치(610)는 외부 요청(req)에 대해 승인이 되지 않음에 따라서 출력 버퍼에 계속적으로 내부 요청을 저장하게 된다(W5,W6,W7,W8). 하지만 버퍼의 공간에 꽉 차도록 내부 요청이 저장되면, 처리율에 민감한 마스터 장치(610)는 내부 요청(W9)(1020)을 생성하고 나서 더 이상 버퍼에 남은 공간이 없기 때문에 내부 요청(W9)을 버퍼에 저장하지 못한다. 따라서 처리율에 민감한 마스터 장치(610)에서 멈춤(Stall) 현상이 발생한다.
반면, 도 10b를 참조하면, 공유 리소스 액세스 중재 장치는 버퍼의 상태에 기초하여 우선순위를 결정한다. 공유 리소스 액세스 중재 장치는 버퍼의 상태가 소정의 조건(4개의 내부 요청이 들어갈 수 있는 버퍼에 3개의 요청이 포함된 경우)을 만족하면 마스터 장치(610)로부터 수신한 외부 요청(req)의 우선순위를 높게(High) 변경할 수 있다. 따라서 공유 리소스 액세스 중재 장치는 다른 마스터 장치의 공유 리소스 액세스 요청보다 먼저 처리율에 민감한 마스터 장치(610)의 외부 요청(req)을 승인하게 된다. 승인 이후에 공유 리소스 액세스 중재 장치는 버퍼 상태(1030)에 기초하여 마스터 장치(610)로부터 수신한 외부 요청(req)의 우선순위를 변경하지 않는다. 이때, 버퍼 상태(1030)는 내부 요청이 생성되면, 생성된 내부 요청이 계속 버퍼에 저장될 수 있는 상태이다.
본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치는 내부 버퍼와 관련된 버퍼 상태 정보를 이용하여 처리율에 민감한 마스터 장치의 멈춤(Stall) 가능성을 미리 예측할 수 있다.
도 10a와 같이 레이턴시에 기초하여 마스터 장치(610)로부터 수신한 외부 요청의 우선순위를 결정하는 경우, 발생하는 마스터 장치의 멈춤(Stall) 가능성에 대한 과소 예측(underestimation)이 이루어지는데 도 10b의 경우 마스터 장치(610)의 멈춤(Stall) 가능성에 대한 과소 예측(underestimation)이 이루어지는 것을 방지할 수 있다.
도 11a-11b는 본 발명의 일 실시예에 따른 액세스 버퍼를 추가적으로 이용하여 공유 리소스 액세스 중재 장치에서 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 과정을 설명하기 위한 도면이다.
도 11a-11b를 참조하면 액세스 버퍼(140)가 추가적으로 존재한다. 액세스 버퍼(140)는 바로 연결된 DMA 제어기(1111)의 공유 리소스 액세스 요청을 저장(Buffering)하게 된다. 특히 액세스 버퍼(140)는 DMA 제어기(1111)와 같은 처리율에 민감한 마스터 장치 및 메모리(130) 사이에 위치하여 각각 연결될 수 있다. 특히, DMA 제어기(1111)에 연결된 버스가 액세스 버퍼(140)에 연결되고, 메모리(130)에 연결된 버스가 액세스 버퍼(140)에 연결되어, 액세스 버퍼(140)가 공유 리소스 액세스 요청의 송신 및 데이터 송수신을 중재하게 된다.
도 11a를 참조하면, 공유 리소스 액세스 중재 장치(120)는 미리 정해진 우선순위에 기초하여 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다. 한편, 공유 리소스 액세스 중재 장치(120)는 다양한 조건에 기초하여 결정된 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다. 예를 들어, 공유 리소스 액세스 중재 장치(120)는 마스터 장치들(110)의 레이턴시에 기초하여 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다.
액세스 버퍼(140)는 공유 리소스 액세스 요청을 직접적으로 제어할 수 있다. 예를 들어, 액세스 버퍼(140)는 GPP(1110)의 공유 리소스 액세스 요청(req_gpp) 및 액세스 버퍼(140)의 버퍼 상태 정보(예를 들어, 버퍼에 빈 공간이 있는지 여부)에 기초하여 DMA 제어기(1111)로부터 수신한 공유 리소스 액세스 요청을 저장할 것인지 여부를 결정한다. 경우에 따라 DMA 제어기(1111)로부터 수신한 공유 리소스 액세스 요청(req_dma)이 바이패스(bypass)될 수 있다.
한편, 액세스 버퍼(140)는 버퍼에 저장되거나 바이패스(bypass)된 공유 리소스 액세스 요청(req_dma_buf)을 공유 리소스 액세스 중재 장치(120)로 전송하고, 공유 리소스 액세스 중재 장치(120)로는 수신한 공유 리소스 액세스 요청(req_dma_buf, req_gpp)들의 우선순위를 결정하고 결정된 우선순위에 따라 하나의 공유 리소스 액세스 요청(gnt_gpp 또는 gnt_dma_buf)을 승인한다.
만약에 액세스 버퍼(140)가 공유 리소스 액세스 요청(req_dma_buf)에 대한 승인(gnt_dma_buf) 메시지를 수신하면 액세스 버퍼(140)는 저장되거나 바이패스(bypass)된 공유 리소스 액세스 요청을 메모리(130)로 전송한다. 따라서 DMA 제어기(1111)는 메모리(130)에 액세스할 수 있게 된다.
액세스 버퍼(140)를 추가함으로 인해 레이턴시에 민감한 GPP(1110)와 같은 마스터 장치로부터 수신한 공유 리소스 액세스 요청이 공유 리소스 액세스 중재 장치(120)로 전송되는 경우, 처리율이 중요한 DMA 제어기(1111)와 같은 마스터 장치로부터 수신한 공유 리소스 액세스 요청이 액세스 버퍼(140)에 저장된다. 그리고 액세스 버퍼(140)는 저장된 액세스 버퍼(140)의 상태에 따라 저장된 공유 리소스 액세스 요청을 공유 리소스 액세스 중재 장치(120)로 전송한다.
액세스 버퍼(140)가 공유 리소스 액세스 요청을 저장함으로써 액세스 버퍼(140)에 연결된 마스터 장치로부터 수신한 공유 리소스 액세스 요청이 바로 전송되는 경우 발생하는 공유 리소스 액세스 중재 장치(120) 내 우선순위가 역전되는 현상을 방지할 수 있다.
또한 액세스 버퍼(140)의 존재로 인해 시간적으로 공유 리소스 액세스 요청을 분리함으로써 다른 마스터 장치로부터 수신하는 공유 리소스 액세스 요청과 충돌하여 발생하는 뱅크 충돌현상을 미연에 방지할 수 있다. 즉 뱅크 충돌 현상을 방지하여 레이턴시에 민감한 마스터 장치의 응답 시간이 향상되면서, 처리율에 민감한 마스터 장치의 처리율을 유지할 수 있다.
한편 도 11a에 도시된 액세스 버퍼의 구체적인 구조는 도 12를 참조하여 후술하도록 한다.
한편, 도 11b를 참조하면, 액세스 버퍼(140)는 DMA 제어기(1111)로부터 수신한 공유 리소스 액세스 요청을 수신하면, 공유 리소스 액세스 요청을 저장한다. 액세스 버퍼(140)는 버퍼 상태 정보(buf_status)를 공유 리소스 액세스 중재 장치(120)에 전송한다. 한편 액세스 버퍼(140)는 저장된 리소스 액세스 요청(req_dma_buf)을 공유 리소스 액세스 중재 장치(120)로 전송하고, 공유 리소스 액세스 중재 장치(120)는 액세스 버퍼(140)로부터 수신한 버퍼의 버퍼 상태 정보에 기초하여 공유 리소스 액세스 요청들의 우선순위를 결정한다. 특히 공유 리소스 액세스 중재 장치(120)는 액세스 버퍼(140)로부터 수신한 버퍼의 버퍼 상태 정보에 기초하여 공유 리소스 액세스 요청의 우선순위를 동적으로 변경할 수 있다.
공유 리소스 액세스 중재 장치(120)는 결정된 우선순위에 따라 공유 리소스 액세스 요청들 중 하나를 승인한다.
공유 리소스 액세스 중재 장치(120)는 액세스 버퍼(140)의 버퍼 상태 정보에 기초하여 공유 리소스 액세스 요청들의 우선순위를 동적으로 변경함으로써 마스터 장치의 멈춤(Stall) 현상을 방지할 수 있다.
한편 도 11b에 도시된 액세스 버퍼의 구체적인 구조는 도 13을 참조하여 후술하도록 한다.
도 12-13은 본 발명의 일 실시예에 따른 액세스 버퍼를 이용하여 마스터 장치가 공유 리소스 장치에 액세스하는 과정을 설명하기 위한 도면이다.
도 13에 도시된 액세스 버퍼(140)는 도 12에 도시된 액세스 버퍼(140)와 달리 MUX를 포함하고 있지 않다. 따라서 마스터 장치로부터 수신한 공유 리소스 액세스 요청은 바이패스되지 못하고 액세스 버퍼(140)에 일단 저장될 수 있다.
도 12는 본 발명의 일 실시예에 따른 다른 마스터 장치의 공유 리소스 액세스 요청을 고려하는 액세스 버퍼를 이용하여 마스터 장치가 공유 리소스 장치에 액세스하는 과정을 설명하기 위한 도면이다.
공유 리소스 액세스 중재 장치(120)는 공유 리소스 장치의 액세스를 중재하기 위해 마스터 장치들(110)로부터 공유 리소스 액세스 요청들을 수신하면, 미리 정해진 우선순위에 따라 하나의 공유 리소스 액세스 요청을 승인한다고 가정한다.
도 12를 참조하면, 액세스 버퍼(140)는 FIFO(First In First Out) 푸쉬 제어부(1210), FIFO 팝 제어부(1220), FIFO 버퍼(1230), MUX(1240), MUX(1250)를 포함한다.
액세스 버퍼(140)는 처리율에 민감한 DMA 제어기(1111)로부터 공유 리소스 액세스 요청(req_dma)를 수신한다. 이때 FIFO 푸쉬 제어부(1210)는 수신한 공유 리소스 액세스 요청(req_dma)를 수신하면, 다른 프로세서부터 수신한 공유 리소스 액세스 요청(req_gpp) 및 FIFO 버퍼(1230)와 관련된 버퍼 상태 정보(fifo_status)에 기초하여 공유 리소스 액세스 요청(req_dma)를 FIFO 버퍼에 푸쉬(push)할 것인지를 결정한다. 이때, 액세스 버퍼(140)는 마치 공유 리소스 액세스 중재 장치(120)이 공유 리소스 액세스 요청(req_dma)을 승인한 것처럼 액세스 버퍼(140)는 공유 리소스 액세스 요청(req_dma)에 대한 승인(gnt_dma)를 마스터 장치에 전송할 수 있다.
액세스 버퍼(140)가 FIFO 버퍼(1230)에 공유 리소스 액세스 요청(req_dma)를 푸쉬한다고 결정하면, FIFO 버퍼(1230)는 메모리(130)에 전송하기 위한 공유 리소스 액세스 요청(mem_rw_info)를 저장한다. 이때, 공유 리소스 액세스 요청(req_dma)는 공유 리소스 액세스 요청(req_dma)와 관련된다.
공유 리소스 액세스 요청(req_dma)는 공유 리소스 액세스 중재 장치(120)로 전송하는 메시지로, 공유 리소스 장치에 대한 액세스 권한을 얻기 위해 공유 리소스 장치 장치에 액세스 권한을 요청하는 메시지다. 한편 공유 리소스 액세스 요청(mem_rw_info)는 공유 리소스 장치에 액세스하기 위한 액세스 명령을 포함하는 메시지로, 예를 들어, 읽기/쓰기 여부(r/w), 공유 리소스 장치 주소(addr) 및 데이터(data)를 포함할 수 있다. 한편 FIFO 버퍼(1230)에는 공유 리소스 액세스 요청(req_dma)과 관련된 공유 리소스 액세스 요청(mem_rw_info)만 저장되는데 제한되지 않고, 공유 리소스 액세스 요청(req_dma)도 함께 저장될 수 있다.
한편 FIFO 팝 제어부(1220)는 공유 리소스 액세스 요청(req_gpp) 및 버퍼의 버퍼 상태 정보(fifo_status)에 기초하여 FIFO 버퍼(1230)에 저장된 공유 리소스 액세스 요청(mem_rw_info)를 팝(pop)할지 여부를 결정할 수 있다. 한편 FIFO 팝 제어부(1220)는 FIFO 버퍼(1230)에 저장된 공유 리소스 액세스 요청을 팝(pop)할 수 있도록 FIFO 버퍼(1230)에 팝(pop) 명령을 포함하는 메시지를 전송한다. 저장된 공유 리소스 액세스 요청(mem_rw_info) 중 먼저 저장된 공유 리소스 액세스 요청을 팝(pop)하고 관련된 공유 리소스 액세스 요청(req_dma)를 공유 리소스 액세스 요청(req_dma_buf)로 하여 공유 리소스 액세스 중재 장치(120)로 전송한다. 한편, 전송한 공유 리소스 액세스 요청(req_dma_buf)에 대한 승인 메시지(gnt_dma_buf)를 수신하면, 수신한 승인 메시지(gnt_dma_buf)에 기초하여 메모리(130)로 저장된 공유 리소스 액세스 요청(mem_rw_info_buf)를 전송할 수 있다.
구체적으로 FIFO 푸쉬 제어부(1210)는 다른 마스터 장치로부터 요청이 없고(req_gpp신호를 수신하지 않은 경우) 저장된 요청이 없는 경우(fifo_status가 FIFO 버퍼에 저장된 공유 리소스 액세스 요청이 없음을 나타내는 정보를 포함하는 경우) 공유 리소스 액세스 요청을 바이패스(bypass)한다. 마찬가지로 FIFO 팝 제어부(1220)는 다른 마스터 장치로부터 요청이 없고(req_gpp신호를 수신하지 않은 경우) 저장된 요청이 없는 경우(fifo_status가 FIFO 버퍼에 저장된 공유 리소스 액세스 요청이 없음을 나타내는 정보를 포함하는 경우) 공유 리소스 액세스 요청에 대한 승인 메시지를 바이패스(bypass)한다.
한편, FIFO 푸쉬 제어부(1210)는 다른 마스터 장치의 요청이 있고(req_gpp 신호를 수신한 경우), FIFO 버퍼에 빈 공간이 있는 경우(fifo_status가 FIFO 버퍼에 빈 공간이 있음을 나타내는 정보를 포함하는 경우) 공유 리소스 액세스 요청(req_dma)를 FIFO 버퍼(1230)에 저장하도록 FIFO 푸쉬 제어부(1210)를 제어할 수 있다.
한편, FIFO 팝 제어부(1220)는 다른 마스터 장치의 요청이 없거나(req_gpp 신호를 수신하지 않은 경우) FIFO 버퍼에 빈 공간이 없는 경우(fifo_status가 FIFO 버퍼에 빈 공간이 없음을 나타내는 정보를 포함하는 경우) FIFO 버퍼(1230)에 저장된 공유 리소스 액세스 요청을 공유 리소스 액세스 중재 장치(120)로 전송하도록 제어할 수 있다.
한편 MUX(1240)은 바이패스(bypass)신호를 기초로 공유 리소스 액세스 요청(req_dma) 또는 FIFO 팝 제어부(1220)에서 획득된 공유 리소스 액세스 요청 중 하나를 결정할 수 있다. 결정된 하나의 공유 리소스 액세스 요청은 공유 리소스 액세스 요청(req_dma_buf)로 공유 리소스 액세스 중재 장치로 전송한다. 예를 들어, 바이패스 신호가 '1'인 경우(바이패스하는 경우), 마스터 장치로부터 수신한 공유 리소스 액세스 요청(req_dma)를 저장하지 않고, 바로 공유 리소스 액세스 요청(req_dma_buf)로 하여 공유 리소스 액세스 중재 장치로 전송될 수 있다.
한편 MUX(1250)는 바이패스(bypass)신호를 기초로 공유 리소스 액세스 요청에 대한 승인(gnt_dma_buf) 또는 FIFO 푸쉬 제어부(1210)에서 획득된 승인 메시지 중 하나를 결정할 수 있다. 결정된 하나의 승인 메시지는 승인 메시지(gnt_dma)로 마스터 장치로 전송한이다. 예를 들어, 바이패스 신호가 '1'인 경우(바이패스하는 경우) 공유 리소스 액세스 중재 장치로부터 수신한 승인 메시지(gnt_dma_buf)를 승인 메시지(gnt_dma)로 하여 마스터 장치로 전송될 수 있다.
한편 시간에 따라 도 12에 도시된 액세스 버퍼(140)를 이용하여 공유 리소스 액세스 요청을 처리하는 과정에 대한 상세한 설명은 도 14를 참조하여 후술하도록 한다.
도 13은 본 발명의 일 실시예에 따른 액세스 버퍼의 상태를 기초로 동적으로 결정된 공유 리소스 액세스 요청의 우선순위에 따라 마스터 장치가 공유 리소스 장치에 액세스하는 과정을 설명하기 위한 도면이다.
액세스 버퍼(140)는 FIFO 푸쉬 제어부(1310), FIFO 팝 제어부(1320), FIFO 버퍼(1330)를 포함한다.
FIFO 푸쉬 제어부(1310)는 수신한 공유 리소스 액세스 요청(req_dma)를 수신하면, FIFO 버퍼(1330)와 관련된 버퍼 상태 정보(fifo_status)에 기초하여 공유 리소스 액세스 요청(req_dma)를 FIFO 버퍼에 푸쉬(push)할 것인지를 결정한다. 예를 들어, FIFO 버퍼(1330) 내에 빈 공간이 있으면 공유 리소스 액세스 요청(req_dma)를 FIFO 버퍼(1330)에 저장하도록 제어할 수 있다. 액세스 버퍼(140)가 FIFO 버퍼(1230)에 공유 리소스 액세스 요청(req_dma)를 푸쉬한다고 결정하면, FIFO 버퍼(1230)는 메모리(130)에 전송하기 위한 공유 리소스 액세스 요청(mem_rw_info)를 저장한다. 이때, 공유 리소스 액세스 요청(req_dma)는 공유 리소스 액세스 요청(req_dma)와 관련된다.
FIFO 팝 제어부(1330)는 버퍼의 버퍼 상태 정보(fifo_status)에 기초하여 FIFO 버퍼(1330)에 저장된 공유 리소스 액세스 요청(mem_rw_info)를 팝(pop)할지 여부를 결정할 수 있다. 예를 들어, FIFO 팝 제어부(1330)는 버퍼에 저장된 공유 리소스 액세스 요청(mem_rw_info)가 있으면 FIFO 팝 제어부(1330)는 저장된 공유 리소스 액세스 요청(mem_rw_info)를 팝(pop)한다고 결정할 수 있다.
한편 FIFO 팝 제어부(1220)는 FIFO 버퍼(1230)에 저장된 공유 리소스 액세스 요청을 팝(pop)하면 저장된 공유 리소스 액세스 요청(mem_rw_info) 중 먼저 저장된 공유 리소스 액세스 요청을 팝(pop)하고 관련된 공유 리소스 액세스 요청(req_dma)를 공유 리소스 액세스 요청(req_dma_buf)로 하여 공유 리소스 액세스 중재 장치로 전송한다. 한편, FIFO 팝 제어부(1220)는 전송한 공유 리소스 액세스 요청(req_dma_buf)에 대한 승인(gnt_dma_buf) 메시지를 수신하면, 수신한 승인(gnt_dma_buf)에 기초하여 메모리(130)로 저장된 공유 리소스 액세스 요청(mem_rw_info_buf)를 전송하도록 제어할 수 있다.
한편 공유 리소스 액세스 중재 장치(120)는 우선순위 결정부(1360)을 포함한다. 우선순위 결정부(1360)는 액세스 버퍼(140)의 FIFO 버퍼(1340)로부터 FIFO 버퍼에 관한 버퍼 상태 정보(buf_status)를 수신한다. 우선순위 결정부(1360)는 버퍼 상태 정보(buf_status)를 기초로 수신하는 공유 리소스 액세스 요청의 우선순위를 결정할 수 있다. 예를 들어, 우선순위 결정부(1360)는 수신한 버퍼 상태 정보가 FIFO 버퍼(1340)에 빈 공간이 많음을 나타내면, 액세스 버퍼(140)에 연결된 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 낮게 변경한다. 반면 우선순위 결정부(1360)는 버퍼 상태 정보(buf_status)가 FIFO 버퍼(1340)에 빈 공간이 적음을 나타내면 우선순위를 높게 변경한다.
한편, 이에 제한되지 않고 우선순위 결정부(1360)는 버퍼 상태 정보에 기초하여 다른 마스터 장치의 우선순위를 변경할 수 있다. 예를 들어, 우선순위 결정부(1360)는 버퍼 상태 정보(buf_status)가 FIFO 버퍼(1340)에 빈 공간이 많음을 나타내면 액세스 버퍼(140)와 연결된 마스터 장치가 아닌 다른 마스터 장치의 우선순위를 높게 변경할 수 있다. 반면 우선순위 결정부(1360)는 버퍼 상태 정보(buf_status)가 빈 공간이 적음을 나타내면, 액세스 버퍼(140)와 연결된 마스터 장치가 아닌 다른 마스터 장치의 우선순위를 낮게 변경할 수 있다.
본 발명의 일 실시예에 따른 공유 리소스 액세스 중재 장치(120)의 경우, 액세스 버퍼(140)의 버퍼 상태 정보를 기초로 버퍼가 꽉 차지 않는 범위에서 액세스 버퍼(140)에 연결된 처리율에 민감한 마스터 장치의 우선순위를 동적으로 조정하여 처리율의 저하를 최소화하면서 다른 레이턴시에 민감한 마스터 장치들이 멈춤 현상(Stall)없이 동작할 수 있도록 제어할 수 있다.
도 14는 본 발명의 일 실시예에 따른 공유 리소스 액세스 요청의 처리 과정을 나타낸 타이밍 다이어그램이다.
도 14를 참조하면, 레이턴시에 민감한 GPP(1110) 및 처리율에 민감한 DMA 제어기(1111)가 3 뱅크(Bank) 메모리에 액세스 요청한다고 가정한다.
GPP(1110)는 메모리 전송 타이밍(1410)에 따라 T0-T1, T1-T2,T2-T3 구간에서 각 뱅크(#0,#1,#2)에 액세스 하기 위한 공유 액세스 요청(Req #0, Req #1, Req #2)를 순차적으로 전송한다. 마찬가지로 DMA 제어기(1111)는 전송 타이밍(1410)에 따라 T0-T1,T2-T3,T4-T5구간에서 각 뱅크(#0,#1,#2)에 액세스하기 위한 공유 리소스 액세스 요청(Req #0, Req #1, Req #2)를 순차적으로 전송한다.
한편, 타이밍 다이어그램(1420)은 액세스 버퍼(140)가 없는 경우에 공유 리소스 액세스 요청이 처리되는 과정을 나타내는 타이밍 다이어 그램이고, 타이밍 다이어그램(1430)은 액세스 버퍼(140)가 존재하는 경우에 공유 리소스 액세스 요청이 처리되는 과정을 나타내는 타이밍 다이어 그램이라 가정한다.
한편 타이밍 다이어그램(1420)을 참조하면, GPP(1110) 및 DMA 제어기(1111) 및 GPP가 전송 타이밍(1410)에 따라 공유 리소스 액세스 요청을 메모리에 전송하는 경우, GPP(1110)에서 전송 타이밍(1410)에 따라 전송한 뱅크 #0에 대한 공유 리소스 액세스 요청(Req #0)은 DMA 제어기(1111)에서 전송한 공유 리소스 액세스 요청(Req)과 충돌이 발생한다.
이때, GPP(1110)은 공유 리소스 액세스 중재 장치로부터 공유 리소스 액세스 요청에 대한 승인을 받지 않았다고 가정한다. 따라서 GPP(1110)에서 일시적으로 멈춤(Stall) 현상이 발생하고 GPP(1110)는 T0-T1구간이 아닌 T1-T2 구간에서 공유 리소스 액세스 요청을 전송하게 된다. 마찬가지로 T2-T3 구간 및 T4-T5 구간에서도 충돌이 발생한다. 마찬가지로 GPP(1110)에서 일시적으로 멈춤(Stall) 현상이 발생하고, GPP(1110)는 T3-T4 구간 및 T5-T6 구간에서 GPP(1110)는 공유 리소스 액세스 요청(Req#1, Req#2)를 전송하게 된다.
한편 타이밍 다이어그램(1430)을 참조하면, 전송 타이밍(1410)에 따라 GPP(1110) 및 DMA 제어기(1111)가 공유 리소스 액세스 요청을 메모리에 전송하는 경우, 전송 타이밍(1410)에 따라 GPP(1110)에서 전송한 뱅크 #0에 대한 공유 리소스 액세스 요청(Req #0)은 DMA 제어기(1111)에서 전송한 공유 리소스 액세스 요청(Req)과 동시에 전송되기 때문에 충돌이 기대될 수 있다. 따라서 DMA 제어기(1111)는 공유 리소스 액세스 요청(Req#0)을 액세스 버퍼에 저장한다. 한편 T1-T2구간에서 DMA 제어기(1111)는 저장된 공유 리소스 액세스 요청(Req#0)를 팝(pop)한다. DMA 제어기(1111)는 공유 리소스 액세스 요청(Req #1, Req #2)가 GPP(1110)의 공유 리소스 액세스 요청(Req #1, Req #2)과 충돌하지 않기 때문에 GPP(1110)의 공유 리소스 액세스 요청(Req #1, Req #2)을 버퍼에 별도로 저장하지 않고, GPP(1110)의 공유 리소스 액세스 요청(Req #1, Req #2)을 바이패스(bypass)한다.
따라서 액세스 버퍼(140)가 존재하지 않는 경우, 레이턴시에 민감한 GPP(1110)는 전송 타이밍(1410)에 따라 공유 리소스 액세스 요청을 전송하면, 3 사이클(cycle)의 멈춤(Stall) 현상으로 인해 모든 공유 리소스 액세스 요청을 전송하는 데 총 6 사이클이 소요되는, 반면 액세스 버퍼(140)가 존재하는 경우, 레이턴시에 민감한 GPP(1110)가 전송 타이밍(1410)에 따라 공유 리소스 액세스 요청을 전송하는 경우, 공유 리소스 액세스 요청을 멈춤(Stall) 현상의 발생없이 모든 공유 리소스 액세스 요청을 전송하는 데 총 3 사이클만이 소요되어 액세스 버퍼(140)가 존재하지 않는 경우보다 성능이 향상된다.
한편, 액세스 버퍼(140)가 존재하지 않는 경우, 처리율에 민감한 DMA 제어기(1111)가 전송 타이밍(1410)에 따라 공유 리소스 액세스 요청을 전송하면, T5 시점까지 3개의 공유 리소스 액세스 요청을 처리한다. 액세스 버퍼(140)가 존재하는 경우, DMA 제어기(1111)가 전송 타이밍(1410)에 따라 공유 리소스 액세스 요청을 전송하면, T5 시점까지 3개의 공유 리소스 액세스 요청을 처리한다. 따라서 액세스 버퍼(140)가 존재하는 경우와 존재하지 않는 경우의 DMA 제어기(1111)의 성능은 유지된다.
즉, 마스터 장치들로부터 전송한 공유 리소스 액세스 요청들의 충돌이 예상되는 경우, 액세스 버퍼(140)는 DMA 제어기(1111)와 같이 처리율에 민감한 마스터 장치의 공유 엑세스 요청을 버퍼링한다. 따라서 레이턴시에 민감한 GPP(1110)와 같은 마스터 장치의 멈춤(Stall)현상을 방지할 수 있다. 특히 DMA 제어기(1111)와 같이 처리율에 민감한 마스터 장치의 성능을 크게 저하시키지 않는 한도에서 GPP(1110)와 같은 레이턴시에 민감한 마스터 장치의 멈춤(Stall) 현상을 방지할 수 있다.
이상에서 기재된 "포함하다", "구성하다" 또는 "가지다" 등의 용어는, 특별히 반대되는 기재가 없는 한, 해당 구성 요소가 내재될 수 있음을 의미하는 것이므로, 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것으로 해석되어야 한다.
한편, 상술한 본 발명의 실시 예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (17)

  1. 적어도 하나의 마스터 장치(master)로부터 상기 적어도 하나의 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신하는 단계;
    상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계; 및
    상기 결정된 공유 리소스 액세스 요청들의 우선순위에 따라 상기 공유 리소스 액세스 요청들 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인하는 단계를 포함하는 공유 리소스 액세스 중재 장치의 공유 리소스 액세스 중재 방법.
  2. 제 1 항에 있어서,
    상기 버퍼 상태 정보는 버퍼의 총 저장 공간 대비 저장된 데이터의 크기 정보를 포함하는 것을 특징으로 하는 공유 리소스 액세스 중재 방법.
  3. 제 1 항에 있어서,
    상기 버퍼가 입력 버퍼이고,
    상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계는,
    상기 입력 버퍼의 총 저장 공간 대비 저장된 데이터의 크기가 작은 경우, 상기 입력 버퍼를 포함하는 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정하는 단계를 포함하는 것을 특징으로 하는 공유 리소스 액세스 중재 방법.
  4. 제 1 항에 있어서,
    상기 버퍼가 출력 버퍼이고,
    상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계는,
    상기 출력 버퍼의 저장 공간 대비 저장된 데이터의 크기가 큰 경우 상기 출력 버퍼를 포함하는 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정하는 단계를 포함하는 것을 특징으로 하는 공유 리소스 액세스 중재 방법.
  5. 제 1 항에 있어서,
    상기 버퍼는 복수의 버퍼이고,
    상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계는,
    상기 적어도 하나의 마스터 장치에 포함된 상기 복수의 버퍼와 관련된 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 단계를 포함하는 것을 특징으로 하는 공유 리소스 액세스 중재 방법.
  6. 제 1 항에 있어서,
    상기 버퍼는 외부 장치와 송수신하는 데이터를 포함하는 제1 버퍼 및 상기 적어도 하나의 마스터 장치의 내부 처리와 관련된 데이터를 포함하는 제2 버퍼이고,
    상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하는 단계는,
    상기 적어도 하나의 마스터 장치에 포함된 상기 제1 버퍼 및 제2 버퍼와 관련된 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 단계를 포함하는 것을 특징으로 하는 공유 리소스 액세스 중재 방법.
  7. 제 1 항에 있어서,
    상기 복수의 마스터 장치와 각각 연결된 버스들 및 상기 공유 리소스 장치에 연결된 버스는 상기 공유 리소스 액세스 중재 장치에 연결되고,
    상기 복수의 마스터 장치 중 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치가 상기 공유 리소스 장치에 액세스할 수 있도록 상기 복수의 마스터 장치 각각에 연결된 버스들 중 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치에 연결된 버스를 결정하고, 상기 결정된 버스를 통해 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치와 상기 공유 리소스 장치 간 송수신하는 데이터를 중재하는 단계를 더 포함하는 것을 특징으로 하는 공유 리소스 액세스 중재 방법.
  8. 적어도 하나의 마스터 장치로부터 상기 적어도 하나의 마스터 장치에 포함된 버퍼와 관련된 버퍼 상태 정보를 수신하는 버퍼 상태 정보 수신부; 및
    상기 수신한 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치를 포함하는 복수의 마스터 장치로부터 수신한 공유 리소스 액세스 요청들의 우선순위를 결정하고, 상기 결정된 공유 리소스 액세스 요청들의 우선순위에 따라 상기 공유 리소스 액세스 요청들 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인하는 제어부를 포함하는 공유 리소스 액세스 중재 장치.
  9. 제 8 항에 있어서,
    상기 버퍼 상태 정보는 버퍼의 총 저장 공간 대비 저장된 데이터의 크기 정보를 포함하는 것을 특징으로 하는 공유 리소스 액세스 중재 장치.
  10. 제 8 항에 있어서,
    상기 버퍼가 입력 버퍼이고,
    상기 제어부는,
    상기 입력 버퍼의 총 저장 공간 대비 저장된 데이터의 크기가 작은 경우, 상기 입력 버퍼를 포함하는 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정하는 것을 특징으로 하는 공유 리소스 액세스 중재 장치.
  11. 제 8 항에 있어서,
    상기 버퍼가 출력 버퍼이고,
    상기 제어부는,
    상기 출력 버퍼의 총 저장 공간 대비 저장된 데이터의 크기가 큰 경우 상기 출력 버퍼를 포함하는 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 다른 마스터 장치부터 수신한 공유 리소스 액세스 요청의 우선순위보다 높게 결정하는 것을 특징으로 하는 공유 리소스 액세스 중재 장치.
  12. 제 8 항에 있어서,
    상기 버퍼는 복수의 버퍼이고,
    상기 제어부는,
    상기 적어도 하나의 마스터 장치에 포함된 상기 복수의 버퍼와 관련된 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 것을 특징으로 하는 공유 리소스 액세스 중재 장치.
  13. 제 8 항에 있어서,
    상기 버퍼는 외부 장치와 송수신하는 데이터를 포함하는 제1 버퍼 및 상기 적어도 하나의 마스터 장치의 내부 처리와 관련된 데이터를 포함하는 제2 버퍼이고,
    상기 제어부는,
    상기 적어도 하나의 마스터 장치와 관련된 상기 제1 버퍼 및 제2 버퍼와 관련된 버퍼 상태 정보를 기초로 상기 적어도 하나의 마스터 장치로부터 수신한 공유 리소스 액세스 요청의 우선순위를 결정하는 것을 특징으로 하는 공유 리소스 액세스 중재 장치.
  14. 제 8 항에 있어서,
    상기 복수의 마스터 장치와 각각 연결된 버스들 및 상기 공유 리소스 장치에 연결된 버스는 상기 공유 리소스 액세스 중재 장치에 연결되고,
    상기 제어부는,
    상기 복수의 마스터 장치 중 상기 승인된 공유 리소스 장치 요청을 하나의 마스터 장치가 상기 공유 리소스 장치에 액세스할 수 있도록 상기 복수의 마스터 장치에 각각 연결된 버스들 중 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치에 연결된 버스를 결정하고,
    상기 결정된 버스를 통해 상기 승인된 공유 리소스 액세스 요청을 전송한 마스터 장치와 상기 공유 리소스 장치 간 송수신하는 데이터를 중재하는 것을 특징으로 하는 공유 리소스 액세스 중재 장치.
  15. 적어도 하나의 제1 마스터 장치로부터 제1 공유 리소스 액세스 요청을 수신하는 단계;
    상기 제1 마스터 장치에 연결된 버스 및 공유 리소스 장치에 연결된 버스 사이에 연결된 버퍼에 상기 제1 공유 리소스 액세스 요청을 저장하는 단계;
    적어도 하나의 제2 마스터 장치와 관련된 제2 공유 리소스 액세스 요청 및 상기 버퍼와 관련된 버퍼 상태 정보에 기초하여 상기 저장된 제1 공유 리소스 액세스 요청의 우선순위를 결정하는 단계; 및
    상기 결정된 우선순위에 따라 상기 저장된 제1 공유 리소스 액세스 요청 및 상기 제2 공유 리소스 액세스 요청 중 하나를 승인하는 단계를 포함하는 공유 리소스 액세스 중재 방법.
  16. 적어도 하나의 제1 마스터 장치로부터 제1 공유 리소스 액세스 요청을 수신하고, 상기 수신한 제1 공유 리소스 액세스 요청 중 적어도 하나를 저장하고, 상기 제1 마스터 장치의 버스 및 공유 리소스 장치에 연결된 버스 사이에 연결된 액세스 버퍼; 및
    상기 액세스 버퍼로부터 상기 제1 공유 리소스 액세스 요청 및 적어도 하나의 제2 마스터 장치로부터 제2 공유 리소스 액세스 요청을 수신하고, 상기 수신한 제1 공유 리소스 액세스 요청 및 상기 수신한 제2 공유 리소스 액세스 요청의 우선순위를 결정하고, 상기 결정된 우선순위에 따라 상기 수신한 제1 공유 리소스 액세스 요청 및 상기 수신한 제2 공유 리소스 액세스 요청 중 우선순위가 높은 하나의 공유 리소스 액세스 요청을 승인하는 공유 리소스 액세스 중재 장치를 포함하고,
    상기 액세스 버퍼는 상기 제2 마스터 장치로부터 상기 제2 공유 리소스 액세스 요청을 수신하고, 상기 수신한 제2 공유 리소스 액세스 요청 및 상기 액세스 버퍼의 버퍼 상태 정보에 기초하여 상기 수신한 제1 공유 리소스 액세스 요청 중 적어도 하나를 상기 액세스 버퍼에 저장하는지 여부를 결정하여 저장하고, 상기 수신한 제2 공유 리소스 액세스 요청 및 상기 내부 버퍼의 버퍼 상태 정보를 기초로 상기 저장된 제1 액세스 요청 중 하나의 공유 리소스 액세스 요청을 상기 공유 리소스 액세스 중재 장치로 전송하는 것을 특징으로 하는 공유 리소스 액세스 중재 시스템.
  17. 제 1 항 내지 제 7 항 중 어느 한 항의 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록매체.
KR1020150037699A 2015-03-18 2015-03-18 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템 KR102106541B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150037699A KR102106541B1 (ko) 2015-03-18 2015-03-18 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템
US15/559,129 US10545898B2 (en) 2015-03-18 2016-03-11 Shared resource access arbitration method, and shared resource access arbitration device and shared resource access arbitration system for performing same
PCT/KR2016/002467 WO2016148449A1 (ko) 2015-03-18 2016-03-11 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150037699A KR102106541B1 (ko) 2015-03-18 2015-03-18 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템

Publications (2)

Publication Number Publication Date
KR20160112305A true KR20160112305A (ko) 2016-09-28
KR102106541B1 KR102106541B1 (ko) 2020-05-04

Family

ID=56919260

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150037699A KR102106541B1 (ko) 2015-03-18 2015-03-18 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템

Country Status (3)

Country Link
US (1) US10545898B2 (ko)
KR (1) KR102106541B1 (ko)
WO (1) WO2016148449A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303631B2 (en) * 2016-03-17 2019-05-28 International Business Machines Corporation Self-moderating bus arbitration architecture
US10298496B1 (en) 2017-09-26 2019-05-21 Amazon Technologies, Inc. Packet processing cache
US10228869B1 (en) * 2017-09-26 2019-03-12 Amazon Technologies, Inc. Controlling shared resources and context data
JP6468377B1 (ja) * 2018-02-13 2019-02-13 オムロン株式会社 出力管理装置、出力管理方法及びプログラム
CN110196824B (zh) * 2018-05-31 2022-12-09 腾讯科技(深圳)有限公司 实现数据传输的方法及装置、电子设备
DE102019117794A1 (de) * 2018-11-16 2020-06-10 Samsung Electronics Co., Ltd. Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
CN113992572B (zh) * 2021-10-27 2023-10-27 北京八分量信息科技有限公司 异构网络中共享存储资源路径的路由方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010092746A (ko) * 1998-11-16 2001-10-26 마이클 골위저, 호레스트 쉐퍼 외부 장치로의 접근을 우선순위화하는 장치 및 방법
KR20040029254A (ko) * 2002-09-30 2004-04-06 마츠시타 덴끼 산교 가부시키가이샤 자원관리장치
KR20050025064A (ko) * 2003-09-04 2005-03-11 마쓰시타 덴키 산교 가부시끼 가이샤 리소스 관리 장치
KR20070089264A (ko) * 2006-02-28 2007-08-31 삼성전자주식회사 버스 중재 시스템 및 버스 중재 방법
US20110131385A1 (en) * 2008-07-29 2011-06-02 Tomas Henriksson Data processing circuit with arbitration between a plurality of queues

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687240B1 (en) * 1999-08-19 2004-02-03 International Business Machines Corporation Transaction routing system
KR100480605B1 (ko) 2002-07-25 2005-04-06 삼성전자주식회사 네트워크 제어기의 송신부 버퍼 및 수신부 버퍼를제어하는 방법 및 네트워크 제어기
US20070198730A1 (en) 2006-02-17 2007-08-23 Via Technologies Inc. Embedded system with a bus and arbitration method for same
KR101388134B1 (ko) 2007-10-01 2014-04-23 삼성전자주식회사 뱅크 충돌 방지 장치 및 방법
US20140085320A1 (en) 2012-09-27 2014-03-27 Apple Inc. Efficient processing of access requests for a shared resource
US9146747B2 (en) 2013-08-08 2015-09-29 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010092746A (ko) * 1998-11-16 2001-10-26 마이클 골위저, 호레스트 쉐퍼 외부 장치로의 접근을 우선순위화하는 장치 및 방법
KR20040029254A (ko) * 2002-09-30 2004-04-06 마츠시타 덴끼 산교 가부시키가이샤 자원관리장치
KR20050025064A (ko) * 2003-09-04 2005-03-11 마쓰시타 덴키 산교 가부시끼 가이샤 리소스 관리 장치
KR20070089264A (ko) * 2006-02-28 2007-08-31 삼성전자주식회사 버스 중재 시스템 및 버스 중재 방법
US20110131385A1 (en) * 2008-07-29 2011-06-02 Tomas Henriksson Data processing circuit with arbitration between a plurality of queues

Also Published As

Publication number Publication date
KR102106541B1 (ko) 2020-05-04
WO2016148449A1 (ko) 2016-09-22
US20180246828A1 (en) 2018-08-30
US10545898B2 (en) 2020-01-28

Similar Documents

Publication Publication Date Title
KR102106541B1 (ko) 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템
US6393506B1 (en) Virtual channel bus and system architecture
US6006303A (en) Priority encoding and decoding for memory architecture
US6792516B2 (en) Memory arbiter with intelligent page gathering logic
US8539129B2 (en) Bus arbitration techniques to reduce access latency
US6519666B1 (en) Arbitration scheme for optimal performance
WO2011089660A1 (ja) バス調停装置
KR100708096B1 (ko) 버스 시스템 및 그 실행 순서 조정방법
KR100480605B1 (ko) 네트워크 제어기의 송신부 버퍼 및 수신부 버퍼를제어하는 방법 및 네트워크 제어기
CN105988968B (zh) 半导体装置
US20150234759A1 (en) Method and apparatus using high-efficiency atomic operations
US20100153661A1 (en) Processing of read requests in a memory controller using pre-fetch mechanism
US7007138B2 (en) Apparatus, method, and computer program for resource request arbitration
US20060095637A1 (en) Bus control device, arbitration device, integrated circuit device, bus control method, and arbitration method
US9798492B2 (en) Semiconductor device including a plurality of function blocks
US7035984B2 (en) Memory arbiter with grace and ceiling periods and intelligent page gathering logic
JP2006268753A (ja) Dma回路及びコンピュータシステム
JP4625549B2 (ja) 調停システム、およびアクセスを調停する方法
JPH1040215A (ja) Pciバス・システム
KR100973419B1 (ko) 버스 중재 방법 및 장치
US8135878B1 (en) Method and apparatus for improving throughput on a common bus
JPH09269927A (ja) バスアクセス方法、バス、並びにバス接続システム
KR20070061240A (ko) 절대 우위의 dma 요청을 처리하는 dma 장치 및 그처리 방법
JP2005215953A (ja) 情報処理装置
JP2000250852A (ja) バス調停装置、バスシステムおよびバス調停方法

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