KR20030090071A - 집적회로장치의 버스중재기 - Google Patents

집적회로장치의 버스중재기 Download PDF

Info

Publication number
KR20030090071A
KR20030090071A KR1020020028061A KR20020028061A KR20030090071A KR 20030090071 A KR20030090071 A KR 20030090071A KR 1020020028061 A KR1020020028061 A KR 1020020028061A KR 20020028061 A KR20020028061 A KR 20020028061A KR 20030090071 A KR20030090071 A KR 20030090071A
Authority
KR
South Korea
Prior art keywords
bus
master
highest priority
occupancy
request
Prior art date
Application number
KR1020020028061A
Other languages
English (en)
Other versions
KR100456696B1 (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 KR10-2002-0028061A priority Critical patent/KR100456696B1/ko
Priority to US10/441,387 priority patent/US7054970B2/en
Priority to TW092113558A priority patent/TWI262393B/zh
Priority to JP2003142331A priority patent/JP4308578B2/ja
Publication of KR20030090071A publication Critical patent/KR20030090071A/ko
Application granted granted Critical
Publication of KR100456696B1 publication Critical patent/KR100456696B1/ko

Links

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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

본 발명의 버스 중재기는, 다수개의 버스마스터들에 대하여 버스점유율(또는 버스점유횟수)를 자유로이 프로그램할 수 있으며 버스점유율에 관한 값들의 왜곡을 방지한다. 이를 위하여 버스중재기는 버스마스터들에 각각에 대응하여 상기 버스마스터들의 버스점유율에 관한 데이타를 저장하는 다수개의 프로그램레지스터들로 구성된 프로그램파일과, 상기 프로그램레지스터들의 각각에 대응하여 상기 버스마스터들에 관한 데이타를 실시간으로 제공하는 다수개의 임시레지스터들로 구성된 임시파일과, 상기 버스마스터들 중 최우선순위의 버스마스터를 지정하는 포인터레지스터를 가진다.

Description

집적회로장치의 버스중재기{Bus arbiter for intergrated circuit systems}
본 발명은 집적회로장치의 버스시스템에 관한 것으로서, 보다 상세하게는 집적회로장치의 버스시스템에서 버스점유를 제어하는 버스중재기에 관한 것이다.
정보 컴퓨팅시스템은 다양한 기능블럭들사이에서 데이타 및 제어신호들을 위한 통신을 위하여 값싸고 간단한 버스시스템을 사용한다. 특하 여러가지 기능블럭들을 단일 집적한 온칩시스템(SOC; system-on-a-chip)에서는 기능블럭들을 버스시스템을 이용하여 서로 연결하는 것이 일반적이다.
전형적인 버스 시스템은, 도 1에 보인 바와 같이, 버스 1 및 버스중재기 2와, 여러개의 버스마스터들 BM0~BMn-1 및 버스슬레이브들 BS0~BSn-1로 구성된다. 버스마스터는 버스요구(bus request)후에 버스중재기 2를 통하여 버스소유권(bus ownership)을 얻은 다음 언하는 버스슬레이브에 데이타를 읽고 쓸 수 있다. 이 때, 버스 1은 한번의 버스요구에 대하여 하나의 버스마스터만을 사용할 수 있다. 버스슬레이브는 버스소유권을 얻을 수는 없고 단지 버스마스로부터의 읽기 또는 쓰기 요구에 응답하여 데이타를 준비하고 버스로 전송하는 역할을 수행한다. 버스중재기 2는 버스요구를 발생시킨 여러 개의 버스마스터들 중에서 버스우선순위(bus priority order)에 따라 제일 우선순위가 높은 버스마스터에게 버스소유권을 허가한다.
일반적인 온칩시스템에서 버스마스터로 사용되는 장치로서는 CPU(central processor unit), 범용 DMA 제어기(general-purpose direct memory access controller), 또느 전용 DMA 제어기(dedicated direct memory access controller) 등이 있다. 버스슬레이브로 사용된 장치로는 외부 메모리 제어기, 또는 UART(universal asynchronous receiver and transmitter) 등을 예로 들 수 있다.
여기서, 버스중재기의 중재방식은 시스템의 구성 사양에 따라서 달라질 수 있다. 공정한 버스중재를 하지 않으면 시스템의 전체적인 성능이 저하될 수 있고, 우선순위가 낮은 버스마스터가 영원히 버스점유를 하지 못하는 버스기근(bus starvation)의 문제가 발생될 수 있으므로, 공정한 버스중재기의 설계는 매우 중요하다.
SOC 시스템에서 지금까지 사용되어온 버스중재방법은 우선순위 결정방식과 츠로그램가능 여부에 따라 아래의 표 1과 같이 네가지로 분류된다.
[표 1]
우선 순위 결정 방식
고정 라운드 로빈(round robin)
프로그램 가능 여부 불가능 (a) 우선순위 고정 (b) 버스점유율 고정 (1/n)
가능 (c) 우선순위 조절 가능 (d) 버스 점유율 조절 가능
먼저, 고정 우선순위 방식 (a)는 가장 간단한 시스템 버스 중재방법으로서, 간단한 하드웨어 구성으로써 빠른 속도가 요구되는 시스템 버스 중재기에 적합하지만, 각 버스마스터의 우선순위를 조절할 수 없고 버스기근의 문제를 유발하는 단점이 있다. 이에 비하여, 방식 (c)는 우선순위를 조절할 수 있는 장점은 있으나 여전히 버스기근의 문제를 갖고 있다. 라운드 로빈 방식 (b)는 방식 (a) 및 (c)의 문제점인 버스기근을 해결한다. 즉, 방식 (b)에서, 버스마스터의 수가 n개이고 각 버스마스터의 버스 사용 요구량이 같은 경우에, 각 버스마스터의 버스점유울(bus occupancy)은 1/n에 수렴하게 된다. 그러나, 방식 (b)는 다양한 기능을 수행하는 버스마스터와 버스슬레이브들로 구성된 온칩시스템에서 특정 버스마스터의 버스점유율을 증대시키는 것이 불가능한 단점이 있다.
버스점유율을 조절할 수 있는 라운드로빈 방식 (d)는, 방식 (b) 도는 (c)의 단점을 보완한 것으로서, 버스마스터들을 몇개의 그룹으로 나누어 중재하는 다단계 라운드로빈 방식이다(Tom shanley & Don Anderson이 제안한 PCI system architecture를 보라: Addison-Wesley Publishing Company, Fourth edition). 도 2에 보인 바와 같이, 우선순위에 따라 버스마스터들, 예컨대 5개의 버스마스터들A, B, X, Y 및 Z를 몇개의 그룹, 예컨대 우선순위가 높은 그룹 HPG와 우선순위가 낮은 그룹 LPG로 나눈다. 선순위그룹 HPG에는 버스마스터들 A 및 B가 속하고, 후순위그룹 LPG에는 X, Y 및 Z가 속한다. 각 버스마스터들이 지속적으로 버스요구를 한다고 가정하면, 버소소유권 허가의 순서는 A - B - X - A - B - Y - A - B - Z - A - B - X -.. 로 된다. 즉, 9회의 버스요구가 있었다면, 각 버스마스터에 대한 버스점유율은 A=1/3, B=1/3, X=1/9, Y=1/9, Z=1/9로 된다. 이와 같은, 버스중재 방식은 각 버스마스터의 버스점유율을 제한적으로 조절한다.
표 1에 보인 버스 중재 방식들은 주로 빠른 속도롤 요구하는 버스 시스템에 사용되는 방식들이다. 데이타통신이나 원격통신에서 사용한 중재방식은 버스를 사용하고자 하는 버스마스터의 버스점유율을 보다 자유롭게 프로그램할 수 있도록 한다. 예를 들면, 임의의 버스마스터가 전송하고자 하는 데이타의 전송률(transfer rate)를 보장하기 위하여 그 버스마스터가 버스를 점유하는 시간간격을 프로그램할 수 있다. 그러나, 이와같은 방법은 매우 복잡한 알고리즘을 필요로 하기 때문에 실시간 처리를 요구하는 시스템버스 중재기에 적용하기에는 그 하드웨어 구현이 어렵다는 단점이 있다. 또한, 데이타통신환경에서의 중재방식을 온칩시스템과 같이 각 버스마스터들의 버스요구가 매 클럭싸이클마다 다이나믹하게 변하는 버스시스템에 적용하기는 어렵다.
실질적으로, 여러가지의 기능블럭들이 집적된 온칩시스템을 설계함에 있어서, 시스템 버스 중재기는 다음과 같은 이유에서 각 버스마스터의 버스점유율을 조절할 수 잇어야 한다.
첫째, 온칩시스템에서는 버스카스터들의 기능이 서로 다르므로 버스마스터에 따른 버스점유율 요구가 다를 수 있으며 특정 버스마스터는 다른 버스마스터들보다 더 높은 버스점유율을 요구할 수 있다. 예를 들면, 100 Mbps의 데이타전송을 처리하는 이더넷(Ethernet) 기능블럭과 120 Mbps의 데이타전송률을 가진 USB(universal serial bus) 기능블럭은 각각의 원하는 버스점유율이 다르다. 둘째, 특정 버스마스터가 다른 버스마스터에 비해서 불공정한 버스요구를 할 수 있다. 예를 들면, 다중 채널 DMA 제어기가 내부의 채널중재기를 통하여 한번의 버스요구를 한다면, 다른 버스마스터에 비하여 낮은 버스점유율을 가질 수 있다. 또한, 각 버스마스터가 한번의 버스소유권을 허가 받아서 처리하는 데이타양 또는 트랜젝션(transaction) 데이타의 형태가 싱글(single)로 버스트(burst)로 다를 수 있다. 셋째, 실제 사용될 응용시스템의 종류에 따라서 특정 버스마스터의 버스점유율을 증대시키거나 감소시킬 필요가 있다.
따라서, 본 발명은, 전술한 종래의 한계와 문제점들을 극복하기 위한 것으로서, 버스마스터들의 버스점유율을 프로그램할 수 있으면서 다수개의 기능블럭들을 가진 온칩시스템내에서 실시간 요구되는 시스템버스의 동작을 처리할 수 있는 버스중재기를 제공함을 그 목적으로 한다.
도 1은 전형적인 버스시스템의 구성도
도 2는 종래의 다단계 라운드로빈 형식의 버스중재방식을 보인 개략도
도 3은 본 발명에 따른 버스중재기의 구성도
도 4는 본 발명에 따른 버스점유에 관한 상태도
도 5는 본 발명에 따른 버스중재의 동작흐름도
도 6은 본 발명에 따른 버스중재기의 동작 타이밍도
도 7은 본 발명의 이용한 버스중재의 적용례를 보여주는 개념도
전술한 본 발명의 목적을 달성하기 위한 버스 중재기는, 다수개의 버스마스터들에 대하여 버스점유율(또는 버스점유횟수)를 자유로이 프로그램할 수 있으며버스점유율에 관한 값들의 왜곡을 방지한다. 이를 위하여 버스중재기는 버스마스터들에 각각에 대응하여 상기 버스마스터들의 버스점유율에 관한 데이타를 저장하는 다수개의 프로그램레지스터들로 구성된 프로그램파일과, 상기 프로그램레지스터들의 각각에 대응하여 상기 버스마스터들에 관한 데이타를 실시간으로 제공하는 다수개의 임시레지스터들로 구성된 임시파일과, 상기 버스마스터들 중 최우선순위의 버스마스터를 지정하는 포인터레지스터를 가진다.
버스중재를 함에 있어서는, 버스마스터들의 각각에 대한 버스점유횟수를 프로그램하여 저장하고 최우선순위 버스마스터를 지정한 상태에서, 현재 버스요구를 하고 있는 버스마스터가 상기 최우선순위 버스마스터이면 버스점유권을 부여하고 해당하는 버스점유횟수를 1만큼 줄이거나, 현재 버스요구를 하고 있는 버스마스터가 상기 최우선순위 버스마스터가 아니면 상기 최우선순위 버스마스터의 버스점유횟수와 현재 버스요구를 하고 있는 상기 버스마스터의 버스점유횟수를 각각 1만큼 줄인다.
한편, 버스마스터들 중 하나가 중앙제어장치이며, 나머지 버스마스터들에 비하여 상기 중앙제어장치의 버스요구횟수가 빈번하고 상기 나머지 버스마스터들이 매번 버스요구를 하지 않는 경우에, 상기 중앙제어장치에 대한 버스점유횟수를 적어도 전체의 절반이상으로 배정한다.
이하, 본 발명에 따른 버스중재기의 구성과 동작을 도 3 내지 7을 참조하여 상세하세 설명한다. 본 발명의 버스중재기는 다양한 기능블럭들이 하나의 집적회로칩에 내장되어 구성된 온칩시스템에 적용된다.
제3도는 본 발명에 다른 버스중재기의 구성과 버스마스터들간의 연결관계를 보여 준다. n개의 버스마스터들 BM0~BMn-1은 버스요구신호들 HBQ0~HBQn-1을 버스중재기 10으로 각각 보내고, 버스요구신호들 HBQ0~HBQn-1에 각각 해당하는 버스허가신호들 HG0~HGn-1을 버스중재기 10으로부터 각각 수신한다. 버스중재기 10은 각 버스마스터의 버스점유율을 프로그램할 수 있는 레지스터파일 11과, 버스중재과정에서 임시로 사용되는 레지스터파일 13과, 현재 최우선순위의 버스마스터(이하 BMptr)를 지정하는 포인터 레지스터 15를 가진다. 프로그램 레지스터파일 11은 버스마스터들의 수에 대응하는 n개의 프로그램 레지스터들 P0~Pn-1로 구성되고, 임시 레지스터파일 13도 마찬가지로 n개의 버스마스터들에 대응하는 레지스터들 T0~Tn-1로 구성된다. 포인터 레지스터 15가 최우선순위가 되는 버스마스터(BMptr)를 지정하고, 그 버스마스터에 해당하는 프로그램레지스터에 저장된 값으로 그 버스마스터에 대한 버스점유율을 프로그램하고 나면, 버스중재기 10은 지정된 버스마스터가 최우선순위로 되도록 버스중재를 행하고 임시 레지스터파일 13의 해당하는 레지스터에 저장된 데이타를 이용하여 각 버스마스터의 버스점유율을 조절한다. 프로그램 레지스터파일 11의 레지스터들 P0~Pn-1에 프로그램된 값에 따라, 지정된 버스마스터가 최우선순위를 차지하는 횟수(이하 버스점유횟수)가 결정된다. 예를 들면, 포인터 레지스터 15의 값 PTR이 0이고 레지스터 P0의 값이 2라면, 버스마스터 BM0가 3회에 걸쳐 최우선순위로 설정된다. 이에 관하여는 아래의 설명에서 보다 상술될 것이다.
n개의 버스마스터들 BM0~BMn-1에 대하여 프로그램 레지스터파일 11이 x비트의 프로그램데이타를 가진다면, 임의의 버스마스터 BMi(i는 0~n-1중의 하나)의 버스점유율은 해당하는 프로그램레지스터 Pi에 0~2x-1의 값으로 설정될 수 있다. 프로그램 레지스터파일 11에서 프로그램된 값에 따라 각 버스마스터에 대한 버스점유횟수가 결정되고 이를 이용하여 각 버스마스터의 버스점유율이 버스중재기에 의하여 조절된다. 즉, 임의 버스마스터 BMi에 대한 버스점유율(BORi)은 다음과 같이 설정된다.
식 1
도 4를 참조하면, 본 발명에 따른 버스중재기 10에 의해 버스점유율 및 우선순위가 조절되는 과정을 이해 할 수 있다. 설명의 편의를 위하여, 도 4에서는 버스마스터들이 3개(n=4)인 것으로 가정한다. 3개의 버스마스터들, 예컨대 BM0~BM2에 대응하는 프로그램 레지스터의 값이 P[0]=2, P[1]=1 및 P[2]=0이고 각 버스마스터가 매번 버스요구를 한다고 가정하면, 각 버스마스터에 대한 예상 버스점유율은 전술한 식 1에 의해, 각각, BOR[0] = (2+1) / (3+2+1) = 3/6, BOR[1] = (1+1) / (3+2+1) = 3/6, BOR[2] = (0+1) / (3+2+1) = 1/6로 된다. 한편, 도 4에는 3개의 버스마스터들 BM0~BM2의 우선순위 변화상태가 8단계까지 도시 되어 있다. 포인터 레지스터 15의 값 PTR이 0 -> 0 -> 0 -> 1 -> 1 -> 2 -> 0 -> 0으로 됨에 따라 버스마스터의 최우선순위는 BM0 -> BM0 -> BM0 -> BM1 -> BM1 -> BM2 -> BM0 -> BM0으로 변화한다. 즉, 포인터 레지스터 15의 값 PTR이 i라면, 버스마스터의 우선순위는 BMi, BMi+1, .., BMn-2, BMn-1, BM0, BM1, .., BMi-1의 순서로 설정된다.
한편, 버스마스터들이 매번 버스요구를 하지 않는 경우에는 프로그램레지스터 P0~Pn-1에 미리 프로그램된 예상 버스점유율들이 왜곡될 수 있다(실제의 버스점유횟수와 예상된 버스점유횟수가 다름). 즉, 현재 포인터레지스터 15의 값 PTR이 특정 버스마스터(예컨대, BM0) 를 지정하고 있는 상태에서 해당하는 프로그램레지스터에 기록된 값(버스점유횟수; 예컨대, P[0]=3)만큼 버스요구를 하지 않는 다면, 다음 우선순위의 버스마스터(예컨대, BM1)의 버스점유율이 증가하게 된다(예컨대, BOR1>2/6).
그러한 상황을 고려하여, 본 발명에서는 최우선순위로 지정되지 않은 버스마스터가 버스를 점유하고 있는 때에도, 그 버스마스터에 해당하는 임시레지스터의 값을 감소시켜 버스점유율의 왜곡을 방지한다. 또한, 최우선순위로 지정된 버스마스터(BMptr)가 버스요구를 하지 않음으로 인해 버스점유가 이루어지지 않은 때에도, 그 버스마스터에 해당하는 임시레지스터의 값을 감소시켜 시스템 오동작시에 특정 버스마스터의 버스기근 또는 과도한 버스점유를 방지한다.
버스점유율의 왜곡을 방지하는 기능과 아울러, 본 발명에 따른 버스중재기 10의 동작을 도 5 내지 6를 참조하여 보다 상세하게 설명한다. 도 5는 동작흐름도이고, 도 6은 도 3에 보인 신호들 및 레지스터들의 상태를 보인 동작타이밍도이며, 도 7은 버스점유율의 왜곡을 방지한 적용례를 보여 준다. 도 6의 동작타이밍도는 도 4와 마찬가지로 3개의 버스마스터를 가진 경우를 예로 든다.
먼저, 도 5를 참조하면, 단계 S1에서 n개의 버스마스터들 BM0~BMn-1 중 어느 하나로부터 버스요구가 있는지를 검사한다. 어떠한 버스요구도 없으면 단계 S2로이동하여 초기에 설정된 버스마스터에게 버스점유를 허여한다. 반대로, 적어도 하나의 버스마스터(BMi; BM0~BMn-1 중의 하나)로부터 버스요구가 있으면 단계 S3으로 이동한다. 단계 S2에서 초기에 설정된 버스마스터는 CPU로 되는 경우가 많다.
단계 S3에서는, 최우선으로(또는 가장 먼저) 버스요구를 한 버스마스터(예컨대, BMi(i=0~n-1))에 버스점유를 허여한다. 그 다음, 단계 S4에서, 포인터 레지스터 15에서 현재의 PTR이 현재 버스점유권을 가진 버스마스터(BMi)를 지정하는지를 확인한다. 즉, 현재의 버스요구 버스마스터(BMi)가 현재의 PTR이 지정하는 최우선순위 버스마스터(BMptr)인지를 확인한다. 현재의 PTR이 i이면(버스요구 버스마스터 = 최우선순위 버스마스터), 단계 S7로 이동하고 그렇지 않으면(버스요구 버스마스터 ≠최우선순위 버스마스터) 단계 S5를 진행한다.
단계 S5에서는, 현재 PTR이 지정하는 버스마스터(BMptr)이 버스점유권을 가지고 있지 않음(또는 버스요구를 하지 않음)이 확인된 상태이므로, 현재의 버스요구 버스마스터(BMi)에 해당하는 임시레지스터 T[i]의 값이 0인지를 검사한다. 여기서, T[i]는 프로그램레지스터 P[i]로부터 가져온 값으로서, 현재의 버스요구 버스마스터(BMi)에 대하여 프로그램된 최우선순위 횟수(예컨대, 도 4에서 BM1의 경우 2가 됨)이다. 따라서, T[i]가 0이 아니면 현재의 버스요구 버스마스터(BMi)의 버스점유횟수가 아직 남아 있음을 의미하므로, 단계 S6으로 진행한다. T[i]=0이면 단계 S7로 이동한다. 단계 S6에서는, 현재의 버스요구 버스마스터(BMi)가 1회의 버스점유를 행하였으므로 프로그램된 버스점유횟수, 즉 T[i]에서 1을 감산한다.
단계 S7에서는, 현재 PTR이 지정하는 버스마스터가 현재의 버스요구 버스마스터 BMi과 일치하거나(S4의 YES) 현재의 버스요구 버스마스터(BMi)의 버스점유횟수가 모두 소진된 경우(S5의 TES)이므로, PTR 값을 인덱스로 하는 임시레지스터의 값 T[PTR]이 0인지를 검사한다. T[PTR]=0이면 단계 S8로 진행하고, 그렇지 않으면 단계 S9로 진행한다.
단계 S8에서는, 현재의 PTR에 의해 지정된 최우선순위 버스마스터(BMptr)의 버스점유횟수가 모두 소진된 상태이므로 T[PTR]의 값을 P[PTR]의 값으로 복원한 다음, 단계 S10으로 진행한다. 단계 S9에서는, 현재의 PTR에 의해 지정된 최우선순위 버스마스터(BMptr)의 버스점유횟수가 아직 남아있는 상태이므로, T[PTR]의 값을 1만큼 감소시켜 그 버스점유횟수가 다할 때까지 버스점유가 계속되도록 한다. 한편, 단계 S9는 현재의 버스요구 버스마스터가 최우선순위 버스마스터(BMptr)이든 아니든 간에 현재 T[PTR]=0이 아니라면 반드시 수행되어야 한다. 왜냐하면, 현재의 버스요구 버스마스터가 최우선순위 버스마스터가 아닌 경우에는 최우선순위 버스마스터에 대한 버스점유율의 왜곡을 방지하기 위하여 T[PTR]을 1만큼 감소시켜야 하고, 현재의 버스요구 버스마스터가 최우선순위 버스마스터인 경우에는 실질적인 버스점유가 이루어졌으므로 당연히 T[PTR]을 1만큼 감소시켜야 하기 때문이다.
단계 S10에서는, 다음 우선순위의 버스마스터를 지정하기 위하여, 현재의 PTR이 n-1인지 아닌지를 검사한다. PTR = n-1, 즉 모든 버스마스터들에 대한 버스점유가 만료된 상태이면, 단계 S11을 진행하여 PTR값을 0으로 하여 포인더 레지스터 15를 리셋시킨 다음 단계 S1으로 귀환하여 새로운 버스중재싸이클을 시작한다. 반대로, PTR이 n-1이 아니면, 아직 버스점유가 필요한 버스마스터들이 남아있음을의미하므로, PTR의 값을 1만큼 증가시킨 다음 단계 S1으로 귀환하여 다음 순위의 버스마스터에 대한 버스중재싸이클을 수행한다.
도 5의 흐름도에서는, 현재의 PTR값과 현재의 버스요구 버스마스터간의 상태에 따라 구별되는 2가지의 과정에 주목하여야 한다.
첫째는, 현재의 PTR이 지정하는 최우선순위의 버스마스터(BMptr)가 현재의 버스요구 버스마스터(BMi)와 일치하는 경우(즉, 현재 지정된 최우선순위 버스마스터가 현재 버스요구를 함)로서, S1 -> S3 -> S4 -> S7 -> S9로 이루어지는 과정을 통하여 PTR이 지정하는 우선순위에 따라 각 버스마스터에 대한 버스점유횟수만큼 순차적으로 행하여 진다. 도4의 경우를 예를 들면, 버스점유의 순서가 BM0 -> BM0 -> BM0 -> BM1 -> BM1 -> BM2로 된다.
둘째는, 현재의 PTR이 지정하는 최우선순위의 버스마스터(BM0)가 현재의 버스요구 버스마스터 BMi(i=1 또는 2)와 다른 경우(즉, 현재 지정된 최우선순위 버스마스터가 현재 버스요구를 하고 있지않거나, 현재 지정된 최우선순위 버스마스터가 아닌 다른 버스마스터가 현재 버스요구를 함)이다. 현재의 버스요구 버스마스터(BMi)의 프로그램된 버스점유횟수 T[i]가 모두 소진된 경우이면, S1 -> S3 -> S4 -> S5 -> S7 -> S9로 이루어진다. 현재 버스요구 버스마스터(BMi)의 버스점유횟수가 남아 있으면, S5와 S7사이에 S6이 개재된다. 여기서, S6에서 T[i]를 1만큼 감소시키는 것은 현재 버스요구 버스마스터(BMi)가 1회의 버스점유를 행하였기 때문이며, 결과적으로 버스점유율에 관련한 데이타의 왜곡을 방지하기 위함이다.
다른 한편으로, 도 6을 참조하여 버스중재기 10의 동작에 관련된 신호들과 레지스터값들에 관하여 설명하면 다음과 같다. 도 6에서는 도 4의 경우와 마찬가지로 3개의 버스마스터들 BM0, BM1, 및 BM2로 구성된 경우를 예로 든다. 클럭신호 HCLK는 버스상의 데이타 및 신호의 전송을 동기시키는 신호로서, 다른 모든 신호들은 HCLK의 상승에지(rising rdge)에 응답하여 동작한다. CT0~CT8은 클럭신호 HCLK의 클럭싸이클들을 나타낸다. 제어신호 HGE는, 버스중재가 가능한지를 알리는 신호로서, 버스점유권을 가진 버스마스터가 한번에 여러 싸이클동안 버스를 점유하는 동안 버스중재를 하지 못하도록 한다.
먼저, 클럭싸이클 CT0에서, 모든 버스마스터들은 버스요구를 하지 않은 상태이다. 최우선순위 버스마스터(BMptr)을 지정하는 포인터레지스터 15의 값 PTR은 CT1부터 CT4까지 O으로 되어 BM0을 취우선순위 버스마스터로 지정하고 있으며, CT4와 CT5사이에서는 BM1을, CT5와 CT7사이에서는 BM2를 최우선순위 버스마스터로 지정한다.
클럭싸이클 CT1에서는, PTR=0, T[0]=2, T[1]=1 및 T[2]=0이고, 버스요구신호들 HBQ0, HBQ1 및 HBQ2가 모두 하이레벨로서 3개의 버스마스터들이 동시에 버스요구를 하고 있는 상태이다. 따라서, 버스중재기 10은 하이레벨의 버스허가신호 HG0을 해당하는 버스마스터 BM0으로 전송하여 현재 최우선순위로 지정된 BM0에게 버스점유권을 주기로 하고, 해당하는 T[0]을 1만큼 감소시킨다(T[0]=2-1=1; 실제 버스점유횟수상으로는 3-1=2가 됨에 유의바람).
클럭싸이클 CT2에서는, T[0]이 1만큼 감소하여 1로 되어 있다. 이 때에는,제어신호 HGE가 로우레벨로서 비활성상태이므로 버스요구신호들의 상태와는 상관없이 버스중재를 하지 않는다.
클럭싸이클 CT3에서는, 제어신호 HGE가 하이레벨로서 버스중재가 가능한 상태이지만, PTR이 지정하는 버스마스터 BM0가 버스요구를 하지 않고 있으므로(HBQ0가 로우레벨) 두번째 우선순위로서 버스요구를 하고 있는 버스마스터 BM1에게 버스점유권을 주기로 한다. 이 때, BM0가 실제로 버스점유를 하지 않았으므로 버스점유에 관한 데이타의 왜곡을 방지하기 위하여 BM0에 대한 임시레지스터값 T[0]는 1만큼 감소되어 0으로 될 것이다(T[0]=1-1=0).
그 다음, 클럭싸이클 CT4에서는, T[0]=0이고 BM1에 대한 버스허가신호들이 모두 하이레벨이며 HGE가 활성화되어 있다. 최우선순위로 지정된(PTR=0) 버스마스터 BM0가 버스요구를 하고 있으므로 버스마스터 BM0에게 버스점유권을 부여한다. T[0]는 현재 0으로 되어 있으므로 P[0], 즉 2로 복원하기로 한다. 여기서, 현재 PTR이 0인 상태에서 버스마스터 BM1에 대한 버스허가신호 HG1가 하이레벨이므로(즉, 버스점유권을 가진 상태이므로), T[1]은 1만큼 감소된다(T[1]=1-0=0). 또한, 버스마스터 BM0에 대한 임시레지스터값 T[0]이 0이므로(즉, 버스점유횟수를 모두 소진하였으므로) PTR의 값이 1만큼 증가시켜(PTR=1) BM1을 최우선순위 버스마스터로 지정한다.
클럭싸이클 CT5에서는, PTR=1, T[0]=2, T[1]=0이며, HG0이 하이레벨이며 모든 버스요구신호들이 하이레벨로 되어 있다. 따라서, 현재 버스요구를 하는 버스마스터들 중 PTR에 의해 최우선순위로 지정된 버스마스터 BM1에게 버스점유권을 주기로 한다. PTR이 지정하는 버스마스터 BM1에 해당하는 T[1]이 현재 0이므로, T[1]은 원래의 P[1], 즉 1로 복원된다. 또한, BM1이 정해진 버스점유횟수를 모두 소진하였으므로 PTR의 값을 1만큼 증가시켜(PTR=2) BM2를 최우선순위 버스마스터로 지정한다.
클럭싸이클 CT6에서는 버스제어신호 HGE가 로우레벨로서 비활성상태이므로 버스중재가 이루어지지 않는다.
클럭싸이클 CT7에서는, PTR=2이고 최우선순위 버스마스터 BM2가 버스요구를 하고 있으므로(HBQ2가 하이레벨), BM2에게 버스점유권을 주기로 한다(HG2가 하이레벨로 됨). 버스마스터 BM2에 해당하는 임시레지스터값 T[2]가 0이므로 P[2]의 값으로 복원되고 PTR은 0으로 된다.
마지막으로, 클럭싸이클 CT8에서는, 버스제어신호 HGE가 활성화되어 있지만 모든 버스마스터들이 버스요구를 하지 않은 상태이다.
클럭싸이클 CT8까지의 과정을 걸쳐, 버스마스터들 BM0, BM1 및 BM2는 각각 3회, 2회 및 1회의 버스점유를 행한 것으로 제어된다. 여기서, BM0는 클럭싸이클 CT3에서 최우선순위 버스마스터로 지정되어 있었음에도 불구하고 버스요구를 하지 않았기 때문에 실제로는 2회의 버스점유를 하였으나, 이 때의 T[0]를 1만큼 감소시켜 버스점유에 관한 레지스터값의 왜곡을 방지함을 이해할 수 있다. 즉, 현재 포인터레지스터의 값 PTR이 지정하는 버스마스터에 해당하는 임시레지스터값은 그것의 버스마스터가 버스점유권을 가지든 가지지 않든 상관없이 한 번의 버스중재시마다 1만큼 감소되고, 현재 PTR이 지정하지 않더라도 버스점유권을 가진 버스마스터의 임시레비스터값도 1만큼 감소된다.
한편, CPU의 버스점유율이 매우 높고 다른 버스마스터들의 버스요구가 매번 존재하지 않는 경우에 버스점유율에 관한 값들의 왜곡을 방지함에 있어서는, 도 7에 보인 바와 같이 CPU를 디폴트(default) 버스마스터로 하고 50%이상의 버스점유율을 보장하는 방법이 있다. 즉, CPU에 50%의 버스점유율을 보장하고 다른 n개의 버스마스터들 전체에 나머지 50%의 버스점유율을 할당한다. 이를 위해서 임시레지스터파들은 CPU를 제외한 n개의 버스마스터들에 기록된 버스점유율 조절에 사용되어 50%의 버스점유율내에서 버스점유율값의 왜곡을 방지하기 위한 조절기능을 수행한다.
이상과 같이, 본 발명은 여러개의 버스마스터들의 버스점유율을 자유롭게 프로그램할 수 있음은 물론 버스점유율에 관한 값들의 왜곡을 방지하는 효과가 있다.

Claims (11)

  1. 다수개의 버스마스터들을 가지는 집적회로장치의 버스중재기에 있어서:
    상기 버스마스터들에 각각에 대응하여 상기 버스마스터들의 버스점유율에 관한 데이타를 저장하는 다수개의 프로그램레지스터들로 구성된 프로그램파일과;
    상기 프로그램레지스터들의 각각에 대응하여 상기 버스마스터들에 관한 데이타를 실시간으로 제공하는 다수개의 임시레지스터들로 구성된 임시파일과;
    상기 버스마스터들 중 최우선순위의 버스마스터를 지정하는 포인터레지스터를 구비함을 특징으로 하는 버스중재기.
  2. 제1항에 있어서,
    상기 버스마스터들의 각각은 버스를 통하여 상기 버스중재기에 버스요구신호를 제공하고, 상기 버스중재기는 상기 버스마스터들의 각각에 대하여 대응하는 버스허가신호를 제공함을 특징으로 하는 버스중재기.
  3. 제1항에 있어서,
    상기 임시레지스터들의 각각에 저장된 버스점유율에 관한 데이타가 모두 소진된 경우 상기 임시레지스터의 데이타는 대응하는 프로그램레지스터의 값으로 복원됨을 특징으로 하는 버스중재기.
  4. 다수개의 버스마스터들을 가지는 집적회로장치에서의 버스중재방법에 있어서:
    상기 버스마스터들의 각각에 대한 버스점유횟수를 프로그램하여 저장하고 최우선순위 버스마스터를 지정하는 단계와;
    현재 버스요구를 하고 있는 버스마스터가 상기 최우선순위 버스마스터이면 버스점유권을 부여하고 해당하는 버스점유횟수를 1만큼 줄이는 단계와;
    현재 버스요구를 하고 있는 버스마스터가 상기 최우선순위 버스마스터가 아니면 상기 최우선순위 버스마스터의 버스점유횟수와 현재 버스요구를 하고 있는 상기 버스마스터의 버스점유횟수를 각각 1만큼 줄이는 단계를 포함하는 버스중재방법.
  5. 제4항에 있어서,
    상기 버스마스터들 중 하나가 중앙제어장치이며, 나머지 버스마스터들에 비하여 상기 중앙제어장치의 버스요구횟수가 빈번하고 상기 나머지 버스마스터들이 매번 버스요구를 하지 않는 경우에, 상기 중앙제어장치에 대한 버스점유횟수를 적어도 전체의 절반이상으로 배정하는 단계가 더 포함됨을 특징으로 하는 버스중재방법.
  6. 다수개의 버스마스터들을 가지는 집적회로장치에서의 버스중재방법에 있어서:
    상기 버스마스터들의 각각에 대한 버스점유횟수를 프로그램하여 저장하고 최우선순위 버스마스터를 지정한 다음;
    상기 버스마스터들 버스요구 버스마스터가 있는지를 검사하는 제1단계와;
    상기 제1단계에서 상기 버스요구 버스마스터가 없으면 초기에 설정된 버스마스터에게 버스점유를 허락하는 제2단계와;
    상기 제1단계에서의 상기 버스요구 버스마스터가 존재하고 상기 버스요구 버스마스터가 상기 최우선순위 버스마스터인지를 검사하는 제3단계와;
    제3단계에서 상기 버스요구 버스마스터가 상기 최우선순위 버스마스터가 아니면 상기 버스요구 버스마스터에게 버스점유를 허락하고 상기 버스요구 버스마스터의 버스점유횟수와 상기 최우선순위 버스마스터의 버스점유횟수를 동시에 감하는 제4단계와;
    상기 제3단계에서 상기 버스요구 버스마스터가 상기 최우선순위 버스마스터이면 상기 최우선순위 버스마스터에게 버스점유를 허락하고 상기 최우선순위 버스마스터의 버스점유횟수를 감하는 제5단계를 구비함을 특징으로 하는 버스중재방법.
  7. 제6항에 있어서,
    상기 초기에 설정된 버스마스터가 중앙제어장치임을 특징으로 하는 버스중재방법.
  8. 제7항에 있어서,
    상기 중앙제어장치가 상기 버스마스터들 중에서 적어도 절반 이상의 버스점유율을 가짐을 특징으로 하는 버스중재방법.
  9. 제6항에 있어서,
    상기 제4단계가 상기 버스요구 버스마스터의 버스점유횟수에 관한 현재의 값이 0인지를 검사하는 단계를 구비함을 특징으로 하는 버스중재방법.
  10. 제6항에 있어서,
    상기 제5단계가 상기 최우선순위 버스마스터의 버스점유횟수에 관한 현재의 값이 0인지를 검사하는 단계를 구비함을 특징으로 하는 버스중재방법.
  11. 제10항에 있어서,
    상기 최우선순위 버스마스터의 버스점유횟수에 관한 상기 현재의 값이 0이면, 상기 프로그램된 값으로 상기 현재의 값을 복원함을 특징으로 하는 버스중재방법.
KR10-2002-0028061A 2002-05-21 2002-05-21 집적회로장치의 버스중재기 KR100456696B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR10-2002-0028061A KR100456696B1 (ko) 2002-05-21 2002-05-21 집적회로장치의 버스중재기
US10/441,387 US7054970B2 (en) 2002-05-21 2003-05-19 Bus arbiter for integrated circuit systems
TW092113558A TWI262393B (en) 2002-05-21 2003-05-20 Bus arbiter for integrated circuit systems
JP2003142331A JP4308578B2 (ja) 2002-05-21 2003-05-20 集積回路装置のバスアービター

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0028061A KR100456696B1 (ko) 2002-05-21 2002-05-21 집적회로장치의 버스중재기

Publications (2)

Publication Number Publication Date
KR20030090071A true KR20030090071A (ko) 2003-11-28
KR100456696B1 KR100456696B1 (ko) 2004-11-10

Family

ID=29546314

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0028061A KR100456696B1 (ko) 2002-05-21 2002-05-21 집적회로장치의 버스중재기

Country Status (4)

Country Link
US (1) US7054970B2 (ko)
JP (1) JP4308578B2 (ko)
KR (1) KR100456696B1 (ko)
TW (1) TWI262393B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100484150B1 (ko) * 2002-07-31 2005-04-18 삼성전자주식회사 버스 중재방법 및 장치
KR100618823B1 (ko) * 2004-04-14 2006-08-31 삼성전자주식회사 옵티컬 장치에서의 메모리 중재기 및 메모리 중재 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056067A (ja) * 2003-08-01 2005-03-03 Matsushita Electric Ind Co Ltd Dma転送制御装置
US7366811B2 (en) * 2004-12-23 2008-04-29 International Business Machines Corporation Bus arbitration system
US7263566B2 (en) * 2004-12-30 2007-08-28 Qualcomm Incorporated Method and apparatus of reducing transfer latency in an SOC interconnect
JP2007072598A (ja) * 2005-09-05 2007-03-22 Fujifilm Corp バス調停方法及びバス調停プログラム
US7546405B2 (en) * 2006-09-26 2009-06-09 Sony Computer Entertainment Inc. Methods and apparatus for dynamic grouping of requestors of resources in a multi-processor system
US7765351B2 (en) * 2007-03-12 2010-07-27 International Business Machines Corporation High bandwidth low-latency semaphore mapped protocol (SMP) for multi-core systems on chips
US8402181B2 (en) * 2007-03-14 2013-03-19 Integrated Device Technology, Inc. Bifurcate arbiter
JP2011133940A (ja) * 2009-12-22 2011-07-07 Seiko Epson Corp アクセス調停装置、集積回路装置、電子機器、アクセス調停方法、及びプログラム
US9529622B1 (en) * 2014-12-09 2016-12-27 Parallel Machines Ltd. Systems and methods for automatic generation of task-splitting code
US10437479B2 (en) * 2014-08-19 2019-10-08 Samsung Electronics Co., Ltd. Unified addressing and hierarchical heterogeneous storage and memory
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
CN114647604B (zh) * 2022-05-18 2022-10-28 杭州米芯微电子有限公司 Dma数据传输方法、系统、电子设备及可读存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5072365A (en) * 1989-12-27 1991-12-10 Motorola, Inc. Direct memory access controller using prioritized interrupts for varying bus mastership
JPH0696014A (ja) * 1992-09-14 1994-04-08 Fuji Xerox Co Ltd バス使用優先順位制御装置
JPH09265446A (ja) * 1996-03-27 1997-10-07 Nec Ibaraki Ltd バス制御装置
US5740380A (en) * 1996-07-15 1998-04-14 Micron Electronics, Inc. Method and system for apportioning computer bus bandwidth
US6385678B2 (en) * 1996-09-19 2002-05-07 Trimedia Technologies, Inc. Method and apparatus for bus arbitration with weighted bandwidth allocation
US6092137A (en) * 1997-11-26 2000-07-18 Industrial Technology Research Institute Fair data bus arbitration system which assigns adjustable priority values to competing sources
US6088751A (en) * 1998-02-12 2000-07-11 Vlsi Technology, Inc. Highly configurable bus priority arbitration system
US6363445B1 (en) * 1998-10-15 2002-03-26 Micron Technology, Inc. Method of bus arbitration using requesting device bandwidth and priority ranking
JP2001273248A (ja) * 2000-03-24 2001-10-05 Canon Inc バス制御装置及びその制御方法
US6622208B2 (en) * 2001-03-30 2003-09-16 Cirrus Logic, Inc. System and methods using a system-on-a-chip with soft cache

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100484150B1 (ko) * 2002-07-31 2005-04-18 삼성전자주식회사 버스 중재방법 및 장치
KR100618823B1 (ko) * 2004-04-14 2006-08-31 삼성전자주식회사 옵티컬 장치에서의 메모리 중재기 및 메모리 중재 방법

Also Published As

Publication number Publication date
JP4308578B2 (ja) 2009-08-05
KR100456696B1 (ko) 2004-11-10
US7054970B2 (en) 2006-05-30
TW200400438A (en) 2004-01-01
US20030221033A1 (en) 2003-11-27
TWI262393B (en) 2006-09-21
JP2004005677A (ja) 2004-01-08

Similar Documents

Publication Publication Date Title
US5996037A (en) System and method for arbitrating multi-function access to a system bus
US7350004B2 (en) Resource management device
KR100456696B1 (ko) 집적회로장치의 버스중재기
US6775727B2 (en) System and method for controlling bus arbitration during cache memory burst cycles
EP1403773B1 (en) Resource management device
US5862353A (en) Systems and methods for dynamically controlling a bus
JPH0740250B2 (ja) データ・バスへのアクセスを制御する装置
JP2010282405A (ja) データ処理システム
US20040250003A1 (en) Bus bandwidth control system
JPWO2007004696A1 (ja) アクセス制御装置、アクセス制御集積回路、及びアクセス制御方法
US4896266A (en) Bus activity sequence controller
CA2527428A1 (en) System for allocating minimum and maximum bandwidths
KR100480605B1 (ko) 네트워크 제어기의 송신부 버퍼 및 수신부 버퍼를제어하는 방법 및 네트워크 제어기
US7065595B2 (en) Method and apparatus for bus access allocation
US20020126660A1 (en) Effective bus utilization using multiple buses and multiple bus controllers
JP2007018280A (ja) バスシステムの制御方法及び制御回路
JPS594733B2 (ja) キヨウツウバスセイギヨカイロ
JPH0210459A (ja) バス使用権決定方式
JPH09153009A (ja) 階層構成バスのアービトレーション方法
JP6036806B2 (ja) バスアクセス調停回路およびバスアクセス調停方法
JPH01279354A (ja) 共有バスを有するデータ処理システムおよびその優先度決定回路
JP2003006139A (ja) Dma転送装置
US20220261179A1 (en) Data transfer device and data transfer method
JPH1125035A (ja) バス調停装置
KR100263791B1 (ko) 우선 순위 조정에 의한 버스 중재 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121031

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131031

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181031

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20191031

Year of fee payment: 16