KR20080079429A - 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및그 중재 방법 - Google Patents

단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및그 중재 방법 Download PDF

Info

Publication number
KR20080079429A
KR20080079429A KR1020070019555A KR20070019555A KR20080079429A KR 20080079429 A KR20080079429 A KR 20080079429A KR 1020070019555 A KR1020070019555 A KR 1020070019555A KR 20070019555 A KR20070019555 A KR 20070019555A KR 20080079429 A KR20080079429 A KR 20080079429A
Authority
KR
South Korea
Prior art keywords
waiting time
mau
memory
allowable
memory access
Prior art date
Application number
KR1020070019555A
Other languages
English (en)
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 KR1020070019555A priority Critical patent/KR20080079429A/ko
Publication of KR20080079429A publication Critical patent/KR20080079429A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Bus Control (AREA)

Abstract

본 발명은 복수의 메모리액세스유닛(MAU)을 구비한 SOC와 같은 데이터처리시스템의 메모리 중재 방법에 관한 것으로, 특히 디지털 텔레비전의 SOC(System On a Chip)와 같이 시스템 메모리로 단일 메모리(Unified Memory)를 사용하고 있는 일반적인 데이터 처리 시스템에 있어서, 메모리 중재기가 시스템 메모리를 사용하는 모든 메모리액세스유닛(Memory Access Unit)들의 메모리 버스 요청을 실시간으로 감시하여, 각 메모리액세스유닛의 진행중인 현재의 메모리 액세스 대기시간(Current Memory Access Latency)과 일정주기 동안의 최대 메모리 액세스 대기시간(Periodic Maximum Memory Access Latency) 및 최대 메모리 억세스 대기시간(Maximum Memory Access Latency) 등을 각각 측정하여 실시간으로 각 메모리액세스유닛에 대한 메모리 액세스 대기시간을 파악하고, 이를 미리 설정한 각 메모리액세스유닛마다 허용되는 메모리 액세스 레이턴시인 허용대기시간(Required Memory Access Latency)과 비교하여 실시간으로 각 메모리액세스유닛의 중재 우선순위를 조정하여 메모리 버스를 중재함으로써, 시스템의 성능과 안정성을 향상시킬 수 있는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및 그 중재 방법을 제공한다.

Description

단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및 그 중재 방법{MEMORY ARBITER OF DATA PROCESSING SYSTEM WITH UNIFIED MEMORY AND METHOD FOR ARBITRATING}
도 1은 본 발명이 적용된 단일메모리 구조를 갖는 SOC 형태의 데이터처리시스템의 구성 블록도이다.
도 2는 도 1에 적용된 단일메모리의 구조를 나타낸 일례이다.
도 3은 본 발명에 의한 메모리 중재기의 세부 기능블록을 나타낸 개념도이다.
도 4는 도 3의 메모리 중재기에서의 메모리 액세스 대기시간의 측정과 그 변화를 나타낸 타이밍도이다.
도 5는 도 3의 메모리 중재기에서의 메모리 액세스 대기시간의 측정과 그 대기시간에 따른 잔여 대기시간에 대한 변화를 나타낸 타이밍도이다.
도 6은 본 발명의 실시예에 의한 메모리 액세스 중재과정을 나타낸 타이밍도이다.
도 7은 본 발명에 의한 메모리 액세스 중재 과정을 나타낸 플로우챠트이다.
* 도면의 주요 부분에 대한 부호의 설명
10: SOC(System On a Chip) 100: 메모리액세스유닛들(MAU)
200: 메모리 중재기 201: 중재제어부
205: 중재플래그 210~250: 대기시간 카운터
260: 리드/라이트 우선순위 레지스터 270: 허용대기시간 레지스터
280: 대기시간선택코드 레지스터 290: 허용대기잔여시간 레지스터
CMAL: 현재 대기시간 PMMAL: 주기적 최대대기시간
MMAL: 최대대기시간 RMAL: 허용대기시간
MALV: 허용대기잔여시간 lat_sel: 대기시간선택코드
300: 단일메모리
본 발명은 복수의 메모리액세스유닛(MAU)을 구비한 SOC와 같은 데이터처리시스템의 메모리 중재 방법에 관한 것으로, 특히 디지털 텔레비전의 SOC와 같은 데이터처리시스템이 시스템 메모리로 단일메모리를 사용하고 있을 때 메모리 중재기가 모든 메모리액세스유닛(MAU)들의 메모리 액세스의 요청을 감시하고, 측정한 각 MAU의 실시간으로 변화하는 대기시간(Memory access Latency)을 이용하여 메모리 액세스를 중재하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및 그 중재 방법에 관한 것이다.
일반적으로 다수개의 메모리액세스유닛(Memory Access Unit; MAU)으로 이루 어진 데이터처리시스템(Data Processing System)은 ASIC으로 구현하게 된다.
그리고, 데이터처리시스템의 기능을 가지는 칩에는 데이터버퍼용 메모리를 연결하여 사용하고, 외부 CPU에는 연산 메모리를 연결하여 사용하여 왔다.
그런데, 최근에 개발되는 데이터처리시스템의 경우에는 SOC(System On a Chip) 형태가 주류를 이루고 있다. 즉, 기존의 데이터처리시스템과 외부 CPU 및 주변 기능블록들을 하나의 칩(SOC)으로 통합하여 구현하는 것이다.
따라서, 과거에는 ASIC 형태의 데이터처리시스템에 데이터버퍼용 메모리를 사용하고, 외부 CPU에 연산 메모리를 사용하였으나, 최근의 SOC 형태의 데이터처리시스템은 연산 메모리와 데이터버퍼용 메모리를 하나의 메모리로 통합하여 사용하는 단일메모리(Unified Memory) 구조를 가지게 된다.
이와 같은 SOC(System On a Chip)는, 일반적으로 내장 CPU를 포함한 다수의 기능 블록(Function Block)들과, 해당 기능 블록들의 메모리 액세스를 위한 다수의 메모리액세스유닛(Memory Access Unit; MAU)들, 및 외부 단일메모리를 중재하고 제어하는 메모리 중재기 등으로 구성되어 있다. 이와 같이 구성된 SOC의 성능과 안정성을 향상시키기 위해서는 다수의 MAU들에게 단일메모리에 대한 메모리 버스의 사용권을 적절하게 허가하는 것이 필요하다.
그런데, 디지털 텔레비전의 SOC와 같이 내장 CPU와 다수의 기능 블록들로 구성된 실시간 데이터처리시스템은 기본적으로 우선순위 중재 알고리즘(Priority Arbitration Algorithm)을 바탕으로 다수의 보조적인 중재 알고리즘을 사용하고 있는데, 만약 임의의 기능 블록이 일정시점 동안 시스템 메모리 버스를 과도하게 점 유하는 경우에는 다른 기능 블록들이 정해진 시간내에 메모리를 액세스하지 못하여 내부 버퍼에 언더플로우나 오버플로우가 발생하는 등의 시스템의 비정상적인 동작을 초래하게 된다.
따라서, 이러한 상황이 발생하지 않도록 일반적으로 메모리 중재기는 기본적인 우선순위 중재 알고리즘에 기아(Starvation)나 라운드 로빈(Round Robin)과 같은 다양한 알고리즘을 추가한 메모리 버스 중재방법을 사용하고 있다.
하지만, 기존의 메모리 버스 중재에 사용되고 있는 중재 방법들은 내장 CPU와 다수의 기능 블록들로 구성된 요즘의 실시간 데이터처리시스템의 다양하고 동적으로 변화하는 메모리 버스 사용 요구에 대해서 효율적이고 안정적으로 처리하기에는 부족한 면이 있으며, 만일 메모리를 액세스하려는 메모리액세스유닛(MAU)에게 효율적으로 메모리 버스를 중재하지 못할 경우 결국 정해진 시간내에 메모리를 액세스하지 못한 MAU로 인하여 시스템이 비정상적으로 동작하게 되는 문제점이 있었다.
본 발명의 목짧은 복수의 메모리액세스유닛을 구비한 SOC(System On a Chip) 형태의 데이터처리시스템과 같이 시스템 메모리로 단일메모리(Unified Memory)를 사용할 경우, 데이터처리시스템 내의 메모리 중재기가 각 메모리액세스유닛(MAU)들의 단일메모리에 대한 메모리 액세스 요청을 감시하고, 각 MAU의 실시간으로 변화하는 대기시간(Memory access Latency)을 이용하여 단일메모리의 액세스를 안정적 으로 중재할 수 있는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및 그 중재 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 기술적 수단은, 복수의 메모리액세스유닛(MAU)을 구비한 데이터처리시스템에서, 상기 각 MAU와 외부 단일메모리와의 메모리 액세스를 중재하는 메모리 중재기에 있어서, 각 MAU별로 메모리 액세스 대기시간이 저장된 대기시간 카운터; 각 MAU별로 메모리 액세스 대기가 가능한 허용대기시간이 저장된 허용대기시간 레지스터; 상기 허용대기시간 레지스터에 저장된 허용대기시간에서 대기시간 카운터에 저장된 대기시간이 감산된 허용대기잔여시간을 각 MAU별로 저장하고 있는 허용대기잔여시간 레지스터; 및 상기 복수의 MAU로부터 단일메모리에 대한 메모리 액세스가 요청되면, 해당 MAU의 메모리 액세스 대기시간과 허용대기잔여시간을 각각 계산하여 대기시간카운터와 허용대기 레지스터에 각각 저장하고, 복수의 MAU의 각 허용대기잔여시간을 비교하여 허용대기잔여시간이 짧은 특정 MAU를 선택하여 메모리 액세스를 중재하는 중재제어부;를 포함하는 것을 특징으로 한다.
상기 상기 메모리 중재기는 각 MAU별로 리드/라이트시의 우선순위가 저장된 우선순위 레지스터를 더 포함하고, 상기 중재제어부는 메모리 액세스를 요청한 복수의 MAU에 대한 허용대기잔여시간이 동일할 경우 우선순위 레지스터에 저장된 우선순위를 상호 비교하여 우선순위가 높은 MAU를 선택하여 메모리 액세스를 중재하 는 것을 특징으로 한다.
구체적으로, 상기 대기시간 카운터에 저장된 현재 대기시간은 해당 MAU의 메모리 액세스가 승인될 경우 '0'으로 초기화되는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 다른 기술적 수단은, 복수의 메모리액세스유닛(MAU)을 구비한 데이터처리시스템에서, 상기 각 MAU와 외부 단일메모리와의 메모리 액세스를 중재하는 메모리 중재기에 있어서, 각 MAU별로 해당 메모리 액세스가 승인되기 전까지의 현재 대기시간들과, 일정주기 내에서 상기 현재 대기시간이 미리 저장된 이전 대기시간의 최대대기시간보다 큰 경우에 업데이트되는 주기내 최대대기시간들, 및 상기 일정주기에 관계없이 상기 현재 대기시간이 미리 저장된 이전 대기시간의 최대대기시간보다 큰 경우에 업데이트되는 최대 대기시간들이 각각 저장된 대기시간 카운터; 각 MAU별로 대기가 가능한 허용대기시간이 저장된 허용대기시간 레지스터; 상기 허용대기시간 레지스터에 저장된 허용대기시간에서 대기시간 카운터에 저장된 현재 대기시간, 주기내 최대대기시간 및 최대 대기시간이 각각 감산된 복수의 허용대기잔여시간을 각 MAU별로 저장하고 있는 허용대기잔여시간 레지스터; 상기 허용대기잔여시간 레지스터에 저장된 각 MAU별 현재 대기시간과 주기내 최대대기시간 및 최대 대기시간 중 특정 대기시간에 대한 허용대기잔여시간을 선택하는 코드가 저장된 대기시간선택코드 레지스터; 및 상기 복수의 MAU로부터 단일메모리에 대한 메모리 액세스가 요청되면, 해당 MAU의 현재 대기시간과 허용대기잔여시간을 각각 계산하여 대기시간카운터와 허용대기 레지스터에 각각 저장하고, 각 MAU의 대기시간선택코드에 따라 각 MAU의 해당 허용대기잔여시간을 비 교하여 허용대기잔여시간이 짧은 특정 MAU를 선택하여 메모리 액세스를 중재하는 중재제어부;를 포함하는 것을 특징으로 한다.
상기 메모리 중재기는 각 MAU별로 리드/라이트시의 우선순위가 저장된 우선순위 레지스터를 더 포함하고, 상기 중재제어부는 메모리 액세스를 요청한 복수의 MAU에 대한 허용대기잔여시간이 동일할 경우 우선순위 레지스터에 저장된 우선순위를 상호 비교하여 우선순위가 높은 MAU를 선택하여 메모리 액세스를 중재하는 것을 특징으로 한다.
구체적으로, 상기 대기시간 카운터에 저장된 현재 대기시간은 해당 MAU의 메모리 액세스가 승인될 경우 '0'으로 초기화되고, 주기내 최대대기시간은 주기적으로 액티브되는 시스템 동기신호에 따라 '0'으로 초기화되며, 최대 대기시간은 전원 온/오프시에 '0'으로 초기화되는 것을 특징으로 한다.
상기 대기시간 카운터는, 각 MAU별로 해당 메모리 액세스가 승인되기 전까지의 현재 대기시간을 저장하게 되는 현재대기시간 카운터; 일정 주기로 발생되는 시스템 동기신호가 새로이 액티브될 때까지, 상기 현재 대기시간 카운터에 저장된 현재 대기시간이 이전 대기시간의 최대대기시간보다 길 경우 현재 대기시간을 저장하게 되는 주기내 최대대기시간 카운터; 및 상기 시스템 동기신호에 관계없이 현재대기시간 카운터에 저장된 현재 대기시간이 이전 대기시간의 최대대기시간보다 길 경우에 현재 대기시간을 저장하게 되는 최대대기시간 카운터;로 구성된 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 기술적 방법은, 복수의 메모리액세스 유닛(MAU)을 구비한 데이터처리시스템에서, 상기 각 MAU와 외부 단일메모리와의 메모리 액세스를 중재하는 방법에 있어서, 상기 SOC 내의 메모리 중재기는 복수의 MAU로부터 메모리 액세스가 요청되면, 상기 각 MAU의 메모리 액세스 대기시간을 측정하는 단계; 상기 MAU들의 메모리 액세스 대기시간을 이용하여 허용대기잔여시간을 계산한 후 각 MAU의 허용대기잔여시간을 비교하는 단계; 및 상기에서 메모리 중재기는 허용대기잔여시간이 짧은 특정 MAU를 선택하여 메모리 액세스를 승인하는 단계;를 포함하는 것을 특징으로 한다.
구체적으로, 상기 허용대기잔여시간을 계산하는 단계에서, 메모리 중재기는 특정 MAU별로 미리 설정된 허용대기시간에서 측정된 현재 대기시간을 감산하여 허용대기잔여시간을 계산하는 것을 특징으로 한다.
상기 메모리 액세스 대기시간을 측정하는 단계는, 각 MAU별로 해당 메모리 액세스가 승인되기 전까지의 현재 대기시간을 측정하는 단계; 일정주기 내에서, 측정된 현재 대기시간이 이전 대기시간의 최대대기시간보다 길 경우 현재 대기시간을 주기내 최대대기시간으로 업데이트하는 단계; 및 상기 일정주기에 관계없이 측정된 현재 대기시간이 이전 대기시간의 최대대기시간보다 길 경우에 현재 대기시간을 최대 대기시간으로 업데이트하는 단계;를 포함하는 것을 특징으로 한다.
또한, 메모리 중재기는 각 MAU별로 미리 설정된 대기시간선택코드에 따라 허용대기시간에서 측정된 현재 대기시간, 주기내 최대대기시간 또는 최대 대기시간을 선택 감산하여 허용대기잔여시간을 계산하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예에 대하여 보다 상세하게 설명하고자 한다.
도 1은 본 발명이 적용된 단일메모리 구조를 갖는 SOC 형태의 데이터처리시스템의 구성 블록도로서, 디지털 TV 수신기에 적용된 예를 보이고 있다.
도 1을 보면, 다수개의 메모리액세스유닛(100; Memory Access Unit, MAU)이 메모리 중재기(memory arbiter; 200)에 각각 병렬로 연결되어 있고, 메모리 중재기(200)는 하나의 메모리 버스를 통해 외부 단일메모리(300)와 연결되어 있다.
상기 메모리 중재기(200)는 단일메모리(300)를 액세스하기 위해 메모리 버스 중재를 요청한 다수의 MAU(100; Memory Access Unit) 중에서 단지 하나의 MAU에게 메모리 버스의 사용권을 허가하게 된다.
즉, 상기 다수개의 MAU(100) 중 임의의 MAU는 상기 단일메모리(300)에 데이터를 쓰거나 또는 단일메모리(300)에 저장된 데이터를 읽어오려고 할 때, 먼저 메모리 중재기(200)에게 단일메모리(300)를 액세스하고자 한다는 요청(Request)을 한다. 이때 상기 단일메모리(300)를 액세스하겠다고 요청한 MAU가 하나이면 상기 메모리 중재기(200)는 그 MAU에게 메모리(300)를 액세스할 수 있도록 메모리 버스의 사용권을 바로 허가하게 된다.
하지만, 적어도 2개 이상의 MAU에서 동시에 메모리 액세스를 요청하면 액세스 순서를 정해야 한다. 즉, 상기 메모리 중재기(200)는 각 MAU에서 들어온 요청을 확인한 후 어떤 MAU에서 들어온 요청을 먼저 처리해줄 것인가를 결정하게 된다. 그리고 메모리 중재기(200)는 결정된 MAU에게 단일메모리(300)를 액세스할 수 있도록 메모리 버스의 사용권을 허가하게 된다.
그리고, 상기 단일메모리(300)가 디지털 텔레비전에 적용되었다면 상기 MAU들(100)은 오디오/비디오 디코딩을 위한 비트스트림의 라이트(Write)와 리드(Read), 움직임 보상을 위하여 필요한 데이터의 리드, 디코딩된 데이터의 라이트, 및 디스플레이될 데이터의 포맷 변환을 위한 라이트와 리드 등을 위하여 상기 단일메모리(300)를 액세스하게 된다.
즉, 상기 MAU들(100)은 일예로, 전송 디코더(110), 비디오 디코더(120), 포맷 컨버터(130), 오디오 디코더(140), 및 호스트(CPU; 150)를 포함한다.
상기 전송 디코더(110)는 한 채널에 포함된 다수의 프로그램들 중 원하는 한 프로그램을 선택하여 패킷화되어 있는 오디오와 비디오 비트스트림을 분리한다. 그리고 분리된 비디오 비트스트림은 중재기(200)와 단일메모리(300)를 통해 비디오 디코더(120)로 출력하고, 분리된 오디오 비트스트림은 중재기(200)와 단일메모리(300)를 통해 오디오 디코더(140)로 출력한다.
상기 비디오 디코더(120)는 입력되는 비디오 비트스트림에서 오버헤드(각종 헤더 정보, 스타트 코드 등)를 제거한다. 그리고 나서, 순수한 데이터 정보를 가변 길이 디코딩(Variable Length Decoding; VLD)한 후 역양자화 과정, 역 이산 코사인 변환(Inverted Discrete Cosine Transform; IDCT) 과정, 및 움직임 벡터를 이용한 움직임 보상 과정을 거쳐 원래 화면의 픽셀 값을 복원한다. 이때 상기 비디오 디코더(120)는 비디오 디코딩을 위한 비트 스트림의 라이트와 리드, 움직임 보상을 위하여 필요한 데이터의 리드, 디코딩된 데이터의 라이트를 수행하기 위해 상기 메모 리 중재기(200)를 통해 메모리(300)를 액세스하게 된다.
상기 포맷 컨버터(130)는 상기 메모리(300)에 저장된 데이터를 메모리 중재기(200)와 메모리 버스를 통해 읽어와 디스플레이 포맷에 맞게 변환한 후 다시 메모리 중재기(200)와 메모리 버스를 통해 단일메모리(300)에 저장하게 된다.
상기 오디오 디코더(140)는 MPEG 알고리즘 또는 오디오 코딩 알고리즘(AC-3) 등을 이용하여 입력되는 오디오 비트스트림을 원래의 신호로 복원하게 된다. 상기 오디오 디코더(140)도 비디오 디코더(120)와 마찬가지로 오디오 디코딩을 위한 비트 스트림의 라이트와 리드, 디코딩된 데이터의 라이트를 수행하기 위하여 상기 메모리 중재기(200)를 통해 메모리(300)를 액세스하게 된다.
상기 호스트 CPU(150)는 디지털 텔레비전의 전반적인 제어, 예를 들면 상기된 오디오/비디오 데이터 분리, 오디오/비디오 디코딩, 및 포맷 변환을 제어하기 위해 메모리 중재기(200)를 통해 단일메모리(10)를 액세스하게 된다.
아울러, 도 1의 MCMD(Memory Command)는 임의의 MAU가 메모리(300)를 액세스하기 위하여 메모리 중재기(200)에게 전송하는 정보이다. 그 정보는 예를 들면, 로우/컬럼 어드레스(row/column address), 리드/라이트 정보, 데이터 마스킹(data masking), 선택할 뱅크(bank), 액세스하는 뱅크의 수, 어드레싱 모드를 포함한다. 그리고, MWD는 공유된 라이트 데이터 버스(shared write data bus)이고, MRD는 공유된 리드 데이터 버스(shared read data bus)이다.
한편, 상기 단일메모리(300)는 상기 다수의 MAU들(100)이 각각 액세스할 수 있도록 도 2와 같이 다수개의 영역으로 할당되며, 상기 각 MAU들(100)은 자신에게 할당된 영역에 데이터를 쓰거나 그 영역에 저장된 데이터를 읽어낸다. 이때, 각 영역은 고정적으로 할당할 수도 있고, 가변적으로 할당할 수도 있다. 그리고, 각 영역의 시작 어드레스와 종료 어드레스는 메모리 중재기(200)에 저장되어 있다. 또한, 라이트가 금지되어야 할 메모리 영역의 시작 어드레스와 종료 어드레스도 메모리 중재기(200)에 저장되어 있다.
따라서, 임의의 MAU가 라이트가 금지된 특정 메모리 영역에 데이터를 쓰려고 하는 경우, 메모리 중재기(200)는 이러한 라이트 사이클(Write Cycle)을 중지시킴과 동시에 CPU(150)에게 어떤 MAU가 라이트가 금지된 메모리 영역에 라이트 사이클을 발생시켰는지를 인터럽트로 알려준다. 따라서, CPU가 다운되는 것을 막을 수 있고 이로 인해 단일메모리 구조를 가지는 데이터처리시스템에서 디버깅(Debugging) 효율을 높일 수 있다.
도 3은 본 발명에 의한 메모리 중재기의 세부 기능블록을 나타낸 개념도로서, 각 MAU별(100)로 대기시간 카운터(210∼250), 라이트/리드 우선순위 레지스터(260), 허용대기시간 레지스터(270), 대기시간선택코드 레지스터(280), 허용대기잔여시간 레지스터(290) 및 중재제어부(201)를 포함하여 구성되어 있다.
상기 대기시간 카운터(210∼250)에는 각 MAU별(100)로 대기시간에 대한 정보가 저장되어 있는 데, 대기시간 카운터(210∼250)는 각 MAU별로 해당 메모리 액세스가 승인되기 전까지의 현재 대기시간(Current Memory Access Latency; CMAL)들과, 일정주기 내에서 상기 현재 대기시간이 미리 저장된 이전 대기시간의 최대대기 시간보다 큰 경우에 업데이트되는 주기내 최대대기시간(Periodic Maximum Memory Access Latency; PMMAL), 및 상기 일정주기에 관계없이 상기 현재 대기시간이 미리 저장된 이전 대기시간의 최대대기시간보다 큰 경우에 업데이트되는 최대 대기시간(Maximum Memory Access Latency; MMAL)들이 각각 저장되어 있다.
리드우선순위 레지스터(261)에는 각 MAU별(100)로 단일메모리(300)의 리드 동작에 대한 우선순위에 대한 정보가 저장되어 있으며, 라이트우선순위 레지스터(265)에는 각 MAU별(100)로 단일메모리(300)의 라이트 동작에 대한 우선순위에 대한 정보가 저장되어 있다.
허용대기시간 레지스터(270; RMALR)에는 각 MAU별(100)로 메모리 액세스 대기(Memory Access Latency)가 가능한 허용대기시간(Required Memory Access Latency, RMAL)이 저장되어 있다.
허용대기잔여시간 레지스터(290; MALVR)는 상기 허용대기시간 레지스터(270)에 저장된 허용대기시간에서 대기시간 카운터(210∼250)에 저장된 현재 대기시간, 주기내 최대대기시간 및 최대 대기시간이 각각 감산된 복수의 허용대기잔여시간(Memory Access Latency Value, MALV)을 각 MAU별(100)로 저장하고 있다.
대기시간선택코드 레지스터(280)에는 상기 허용대기잔여시간 레지스터(290)에 저장된 각 MAU별 현재 대기시간과 주기내 최대대기시간 및 최대 대기시간 중 특정 대기시간에 대한 허용대기잔여시간(MALV)을 선택하는 코드(lat_sel)가 저장되어 있다.
그리고, 중재제어부(201)는 상기 복수의 MAU로부터 단일메모리(300)에 대한 메모리 액세스가 요청되면, 해당 MAU의 현재 대기시간과 허용대기잔여시간을 각각 계산하여 대기시간카운터와 허용대기 레지스터에 각각 저장하고, 각 MAU의 대기시간선택코드에 따라 각 MAU의 해당 허용대기잔여시간을 비교하여 허용대기잔여시간이 짧은 MAU를 선택하여 메모리 액세스를 중재하도록 구성되어 있다.
아울러, 상기 중재제어부(201)는 메모리 액세스를 요청한 복수의 MAU에 대한 허용대기잔여시간이 동일할 경우 우선순위 레지스터(260)에 저장된 리드 또는 라이트 우선순위를 상호 비교하여 우선순위가 높은 MAU를 선택하여 메모리 액세스를 중재하도록 구성되어 있다.
상기에서 각 MAU별 대기시간 카운터(210∼250)는, 구체적으로 각 MAU별로 해당 메모리 액세스가 승인되기 전까지의 현재 대기시간을 저장하게 되는 현재대기시간 카운터(211,221,251; Current Memory Access Latency Counter)와, 일정 주기로 액티브되는 시스템 동기신호가 새로이 액티브될 때까지, 현재대기시간 카운터(CMALC; Current Memory Access Latency Counter)의 현재 대기시간이 미리 저장된 이전 대기시간의 최대대기시간보다 길 경우 현재 대기시간을 저장하게 되는 주기내 최대대기시간 카운터(213,223,253; Periodic Maximum Memory Access Latency Counter, PMMALC), 및 상기 시스템 동기신호에 관계없이 현재대기시간 카운터(CMALC; Current Memory Access Latency Counter)의 현재 대기시간이 미리 저장된 이전 대기시간의 최대대기시간보다 길 경우에 현재 대기시간을 저장하게 되는 최대대기시간 카운터(215,225,255; Maximum Memory Access Latency Counter, MMALC)로 구성되어 있다.
그리고, 중재제어부(201)에 내장된 중재플래그(205)는 각 MAU의 중재시에 사용할 중재 알고리즘을 지시하기 위해 저장된 데이터로서, 예를 들면 플래그가 '0'일 경우에는 기존과 같이 우선순위 알고리즘을 이용하여 단일메모리(300)의 액세스를 중재하게 되며, 플래그가 '1'일 경우에는 본 발명에서 제안한 대기시간 알고리즘을 이용하여 단일메모리(300)의 접근을 중재하게 된다. 이와 같은 중재플래그(205)는 SOC 제조시에 특정 플래그로 미리 저장될 수 있으나, 필요에 따라 CPU가 플래그를 변경할 수도 있다.
즉, 중재제어부(201)는 각 MAU별로 현재 대기시간(CMAL)과 주기내 최대대기시간(PMMAL)과 최대 대기시간(MMAL)을 측정하여 측정된 대기시간을 해당 카운터(210 내지 250)에 저장함에 따라 실시간으로 각 MAU에 대한 메모리 액세스 대기시간(CMAL, PMMAL, MMAL)을 체크하게 되고, 이를 미리 설정된 각 MAU마다 허용하고 있는 허용대기시간(RMAL)과 상호 비교하여 각 MAU의 허용대기잔여시간(MALV)을 파악한 후 허용대기잔여시간에 따라 실시간으로 각 MAU의 중재 우선순위를 조정하면서 단일메모리(300)의 액세스를 제어하게 된다.
이와 같이 구성된 메모리 중재기(200)의 메모리 중재방법을 도 4 내지 도 6과 같은 타이밍도를 이용하여 보다 구체적으로 살펴보면 아래와 같다.
도 4는 메모리 중재기(200)에서의 메모리 액세스 대기시간의 측정과 그 변화를 나타낸 타이밍도로서, 제 1MAU(110)의 경우를 예로 들어 도시하였다.
메모리 중재기(200)의 중재제어부(201)는 제 1MAU(110)의 메모리 액세스 요 청에 따라 대기시간에 대한 클록 사이클을 측정하여 대기시간에 대한 클록 사이클을 현재대기시간 카운터(211)에 저장하게 되는 데, 소정의 중재 알고리즘에 따라 제 1MAU(110)의 메모리 액세스 요청을 승인하게 되면 현재대기시간 카운터(211)에 저장된 대기시간에 해당하는 클록 사이클의 개수를 '0'으로 초기화시키게 된다.
예를 들어, 타이밍도에서 보는 바와 같이 제 1MAU(110)의 메모리 액세스 요청에 따라 중재제어부(201)는 현재 대기시간을 측정하여 측정된 대기시간을 현재대기시간 카운터(211; MAU1_CMALC)에 저장하게 된다. 이때 대기시간이 55사이클이라고 가정한다.
만약, 메모리 중재기(200)가 제 1MAU의 액세스 요청을 승인(ack_MAU1)하게 되면 현재대기시간 카운터(MAU1_CMALC)에 저장된 대기시간인 55사이클은 '0'으로 초기화되게 된다. 이와 같이 중재제어부(201)는 현재 진행중인 메모리 액세스 대기시간인 클록 사이클을 측정하고, 측정된 현재 대기시간인 클록 사이클을 현재대기시간 카운터(MAU1_CMALC)에 저장하게 되며, 해당 MAU의 메모리 액세스를 승인(ack_MAU1)하게 될 경우 현재 대기시간을 '0'으로 초기화하는 과정을 반복하게 된다.
이와 같이 현재 대기시간은 특정 MAU가 메모리 액세스를 요청한 시간부터 액세스가 승인된 시점까지의 대기시간이다.
또한, 중재제어부(201)는 특정 MAU나 외부 발진기로부터 입력되는 시스템의 동기신호(System_sync; 디지털 텔레비전의 경우 1/60초마다 액티브되는 필드 동기신호임)를 체크하고, 동기신호를 기준으로 일정주기 내에서 최대대기시간 카운 터(213; MAU1_PMMALC)에 저장된 대기시간과 해당 MAU의 현재 대기시간을 비교하여 현재 대기시간이 저장된 이전 대기시간의 최대 대기시간보다 길 경우 현재 대기시간을 주기내 최대대기시간 카운터(213; MAU1_PMMALC)에 저장하게 된다. 즉, 중재제어부(201)는 현재대기시간 카운터(211; MAU1_CMALC)에 저장된 현재 대기시간과 주기내 최대대기시간 카운터(213; MAU1_PMMALC)에 저장된 최대 대기시간을 상호 비교하여 주기내 최대대기시간(PMMAL)이 짧을 경우 현재 대기시간(CMAL)을 주기내 최대대기시간으로 정하여 이를 주기내 최대대기시간 카운터(213; MAU1_PMMALC)에 저장하게 된다.
예컨대, 타이밍도에서 보는 바와 같이 중재제어부(201)는 현재대기시간 카운터(211; MAU1_CMALC)에 저장된 55사이클과 주기내 최대대기시간 카운터(213; MAU1_PMMALC)에 저장된 44사이클을 상호 비교하여 현재 대기시간(55사이클)이 주기내 최대대기시간(44사이클)보다 길 경우 현재 대기시간인 55사이클을 주기내 최대대기시간 카운터(213; MAU1_PMMALC)에 저장하게 된다. 물론, 중재제어부(201)는 현재 대기시간이 주기내 최대대기시간보다 짧을 경우 주기내 최대대기시간을 갱신하지 않는다.
이와 같은 상태에서 중재제어부(201)는 외부로부터 시스템 동기신호가 입력되면 주기내 최대대기시간 카운터(213; MAU1_PMMALC)에 저장된 대기시간을 '0'으로 초기화하게 된다.
또한, 중재제어부(201)는 현재대기시간 카운터(211; MAU1_CMALC)에 저장된 현재 대기시간과 최대대기시간 카운터(215; MAU1_MMALC)에 저장된 최대 대기시간을 상호 비교하여 최대대기시간 카운터(215)에 저장된 최대 대기시간이 짧을 경우 현재 대기시간을 최대 대기시간으로 정하여 이를 최대대기시간 카운터(215; MAU1_MMALC)에 저장하게 된다. 예컨대, 타이밍도에서 보는 바와 같이 중재제어부(201)는 현재대기시간 카운터(211; MAU1_CMALC)에 저장된 55사이클과 최대대기시간 카운터(215; MAU1_MMALC)에 저장된 44사이클을 상호 비교하여 현재대기시간이 최대대기시간보다 길 경우 55사이클을 최대대기시간 카운터(215; MAU1_MMALC)에 저장하게 된다. 물론, 중재제어부(201)는 현재 대기시간이 최대 대기시간보다 길 경우 최대 대기시간을 변경시키게 되며, 현재 대기시간이 최대 대기시간보다 짧을 경우에는 최대대기시간 카운터(215; MAU1_MMALC)에 저장된 대기시간을 갱신하지 않는다.
상기 최대 대기시간은 주기내 최대대기시간과는 다르게 시스템 동기신호와는 무관하게 업데이트되며, 전원이 온/오프(Power on 또는 Power off)될 경우 '0'으로 초기화되게 된다.
아울러, 제 1MAU(110)의 경우에는 허용대기시간 레지스터(270; MAU1_RMALR)에 저장된 최대 허용대기시간은 타이밍도에서 보는 바와 같이 500사이클로 미리 지정된 것을 알 수 있다. 이는, 현재 대기시간(Memory Access Latency)이 500사이클을 초과할 경우에 제 1MAU(110)의 동작에 이상이 발생할 수 있음을 의미하는 데, 중재제어부(201)는 제 1MAU(110)의 메모리 액세스 대기시간이 500사이클을 초과하지 않도록 제 1MAU(110)의 메모리 액세스를 적절한 시점에서 중재하여야 한다.
또한, 시스템 동기신호와 마찬가지로 일정한 주기로 액티브되는 시스템 인터 럽트(system_int) 신호를 사용하여 호스트 CPU(150)에게 인터럽트를 전달하여 제 1MAU의 CMALC, PMMALC, MMALC의 값을 읽어가도록 할 수 있으며, 아울러 시스템 인터럽트신호 또는 다른 인터럽트 신호를 사용하여 최대 대기시간(MAU1_MMALC)이 제 1MAU에 대해 미리 설정된 허용대기시간(MAU1_RMALR)의 내부 버퍼의 크기 등에 따라서 제 1MAU가 정상적으로 동작하기 위하여 제 1MAU가 메모리 중재기(200)로 리드/라이트 액세스시 해당 데이터를 서비스받아야 하는 허용 가능한 최대대기시간이 설정된 레지스터(270; MAU1_RMALR)의 시간보다 길 경우, Host CPU(150)로 인터럽트를 전달하여 제 1MAU가 메모리 중재기(200)로부터 정해진 시간에 메모리 리드/라이트 데이터서비스를 받지 못하여 해당 기능 블록의 내부 버퍼에 언더플로우나 오버플로우가 발생하여 시스템이 정상적으로 동작하지 않는 경우가 발생하게 됨을 알려주도록 한다.
도 5는 메모리 중재기(200)에서의 메모리 액세스 대기시간의 측정과 그 대기시간에 따른 잔여 대기시간에 대한 변화를 나타낸 타이밍도로서, 제 1MAU(110)의 경우를 예로 들어 도시하였다.
도 5의 타이밍도에서 현재 대기시간(CMAL)과 주기내 최대대기시간(PMMAL) 및 최대 대기시간(MMAL)을 측정하는 방법은 도 4에서 설명한 바와 동일하다.
먼저, 중재제어부(201)는 각 MAU의 메모리 액세스를 중재하기 위하여, 해당 MAU의 각종 대기시간을 측정하여 저장하고, 미리 저장된 해당 MAU의 허용대기시간(RMAL)과 측정된 각 대기시간을 감산하여 허용대기잔여시간(MALV)을 체크한 후 각 MAU의 허용대기잔여시간에 따라 적절한 시점에 각 MAU의 메모리 액세스를 중재하게 된다.
예를 들어, 타이밍도에서와 같이 중재플래그(205; arb_sel)가 '1'로 설정되어 있고, 제 1MAU(110)의 허용대기시간은 500사이클이라고 가정한다.
중재제어부(201)는 제 1MAU(110)의 메모리 액세스 요청에 따라 메모리 액세스를 승인하게 되면, 현재대기시간 카운터(211; MAU1_CMALC)에 저장된 91사이클의 대기시간은 '0'으로 초기화되게 된다.
그리고, 중재제어부(201)는 주기내 최대대기시간 카운터(213; MAU1_PMMALC)에 저장된 90사이클보다 현재 대기시간인 91사이클이 길기 때문에 주기내 최대대기시간을 91사이클로 변경하여 저장하게 되며, 최대 대기시간(215; MAU1_MMALC)으로는 이전의 현재 대기시간 중에서 최대의 대기시간인 110사이클이 저장된 상태이다.
여기서, 중재제어부(201)는 상기 대기시간들(CMAL, PMMAL 또는 MMAL)을 이용하여 실시간으로 변경되는 허용대기잔여시간(MAU1_MALV)을 계산하여 허용대기잔여시간 레지스터(290)에 저장하게 되고, 허용대기잔여시간(MAU1_MALV)을 이용하여 동적 메모리 액세스 중재를 제어하게 된다.
특정 MAU에 대한 허용대기잔여시간(MAU_X_MALV)은 아래의 알고리즘에 의해 계산된다.
즉, 특정 MAU의 허용대기잔여시간(MAU_X_MALV)은 대기시간선택코드(280; MAU_A_lat_sel)의 설정치에 따라 아래와 같이 각각 계산된다.
허용대기잔여시간 계산 알고리즘
if (MAU_X_lat_sel = "00") then
MAU_X_MALV <= MAU_X_RMALR - MAU_X_CMALC;
elseif (MAU_X_lat_sel = "01") then
MAU_X_MALV <= MAU_X_RMALR - MAU_X_PMMALC;
else
MAU_X_MALV <= MAU_X_RMALR - MAU_X_MMALC;
end if;
상기에서 제 1MAU(110)의 대기시간선택코드(MAU1_lat_sel)가 레지스터(280)에 '00'으로 저장되어 있을 경우, 허용대기시간(MAU1_RMAL)에서 현재 대기시간(MAU1_CMAL)을 감산하게 되는 데, 예를 들어 허용대기시간 500사이클에서 현재 대기시간 90사이클을 빼면 허용대기잔여시간(MAU1_MALV)은 410사이클이 된다. 물론, 허용대기시간 500사이클에서 현재 대기시간 91사이클을 빼면 허용대기잔여시간(MAU1_MALV)은 409사이클이 된다.
또한, 대기시간선택코드(MAU1_lat_sel)가 '01'일 경우, 허용대기시간(MAU1_RMAL)에서 주기내 최대대기시간(MAU1_PMMAL)을 감산하게 되는 데, 예를 들어 허용대기시간 500사이클에서 주기내 최대대기시간 90사이클을 빼면 허용대기잔여시간(MAU1_MALV)은 410사이클이 된다. 물론, 허용대기시간 500사이클에서 주기내 최대대기시간 91사이클을 빼면 허용대기잔여시간은 409사이클이 된다.
그리고, 대기시간선택코드(MAU_A_lat_sel)가 '1X'일 경우, 허용대기시간(MAU1_RMAL)에서 최대 대기시간(MAU1_MMAL)을 감산하게 되는 데, 예를 들어 허용 대기시간 500사이클에서 최대 대기시간 110사이클을 빼면 허용대기잔여시간(MAU1_MALV)은 390사이클이 된다.
도 6은 본 발명의 실시예에 의한 메모리 액세스 중재과정을 나타낸 타이밍도로서, 설명의 편의상 제 1 및 제 2MAU(110, 120)를 예로 들어 설명하고자 한다.
도 6의 타이밍도에서 허용대기잔여시간(MALV)을 측정하는 방법은 도 5에서 설명한 것과 동일하다.
먼저, 중재제어부(201)는 각 MAU의 메모리 액세스를 중재하기 위하여, 해당 MAU의 각종 대기시간(CMAL, PMMAL, MMAL)을 측정하여 저장하고, 미리 저장된 해당 MAU의 허용대기시간(RMAL)과 측정된 각 대기시간을 감산하여 허용대기잔여시간(MALV)을 체크한 후 각 MAU의 허용대기잔여시간에 따라 적절한 시간에 각 MAU의 메모리 액세스를 중재하게 된다.
상기 메모리 액세스의 중재시에 중재플래그(205)의 데이터에 따라 중재 알고리즘이 상이한데, 중재플래그(205)가 '0'으로 설정되어 있을 경우에는 메모리 중재기(200)의 중재제어부(201)는 각 MAU의 메모리 액세스 요청시에 리드/라이트 우선순위를 이용하여 메모리 액세스를 중재하게 되지만, 중재플래그(205)가 '1'로 설정되어 있을 경우에는 각 MAU의 허용대기잔여시간(MALV)을 이용하여 메모리 액세스를 중재하게 된다.
예를 들어, 도 6의 타이밍도에서와 같이 중재플래그(205)가 '0'인 상태에서, 제 1MAU(110)와 제 2MAU(120)가 동시에 메모리 액세스를 요청할 경우 중재제어 부(201)는 제 1MAU(110)와 제 2MAU(120)의 리드/라이트 우선순위를 체크하게 된다. 여기서, 제 1MAU(110)의 경우 우선순위(MAU1_PRI)가 '1100'이고, 제 2MAU(120)는 우선순위(MAU2_PRI)가 '0011'이므로, 제 1MAU(110)가 우선순위가 높다. 따라서, 중재제어부(201)는 제 1MAU(110)로 메모리 액세스를 승인하게 된다.
한편, 중재플래그(205)가 '1'인 상태에서 제 1MAU(110)와 제 2MAU(120)가 동시에 메모리 액세스를 요청할 경우, 중재제어부(201)는 제 1MAU(110)와 제 2MAU(120)의 우선순위보다 허용대기잔여시간(MALV)을 먼저 체크하게 된다. 상기 허용대기잔여시간(MALV)을 구하는 방법은 도 5에서 설명한 바와 동일한 데, 허용대기잔여시간(MALV)은 각 MAU별 허용대기시간(RMAL)에서 해당 MAU의 현재 대기시간(CMAL)이나 주기내 최대대기시간(PMMAL) 또는 최대 대기시간(MMAL)을 차감하여 구한다.
즉, 타이밍도에서 보는 바와 같이, 제 1MAU(110)와 제 2MAU(120)의 메모리 액세스 요청시의 제 1MAU(110)의 허용대기잔여시간(MALV)은 409사이클이고, 제 2MAU(120)의 허용대기잔여시간(MALV)은 390사이클이므로, 제 2MAU(120)의 허용대기시간잔여시간(MALV)이 더 작게 남아 있음을 알 수 있다.
따라서, 중재제어부(201)는 허용대기잔여시간(MALV)이 작은 남은 제 2MAU(120)에게 확인신호를 전달하여 메모리 액세스를 승인하게 된다.
그리고, 각 MAU의 허용대기잔여시간(MALV)은 각 MAU의 대기시간선택코드(MAU_X_lat_sel)에 따라서 다르게 계산되는데, 메모리 중재기(200)의 동적 중재 알고리즘은 모든 MAU의 대기시간선택코드(MAU_X_lat_sel)를 동일하게 설정하거나 각기 다르게 설정하여 중재를 수행할 수 있다.
상기 도 6의 타이밍도에서는 설명의 편의상 중재플래그(205)가 '0'인 경우와 '1'인 경우를 모두 나타내었는데, 상기 중재플래그(205)는 중재 과정 중에 가변되도록 설계할 수도 있지만, 이보다도 SOC(10)가 채용되는 제품에 따라 '0' 또는 '1'로 미리 설정하는 것이 바람직하다.
도 7은 본 발명에 의한 메모리 액세스 중재 과정을 나타낸 플로우챠트로서, 도 1 내지 도 6을 참조하여 메모리 액세스의 중재 과정을 살펴보면 아래와 같다.
먼저, 메모리 중재기(200)는 특정 MAU로부터 단일메모리(300)의 메모리 버스의 사용권을 획득하기 위한 메모리 액세스가 요청되면, 메모리 액세스의 승인을 대기하고 있는 다른 MAU가 없을 경우에는 해당 MAU에게 메모리 액세스를 바로 승인하게 되지만, 적어도 하나 이상의 다른 MAU로부터 메모리 액세스가 요청된 상태이면 중재제어부(201)는 저장된 중재플래그(205)의 상태를 체크하게 된다(S1).
상기에서 중재플래그(205)가 '1'로 설정되어 있을 경우에는(S2), 메모리 중재기(200)의 중재제어부(201)는 상기 메모리 액세스를 요청한 MAU들의 허용대기잔여시간(MALV)을 허용대기잔여시간 레지스터(290)를 통해 각각 체크하게 된다(S3, S4). 상기 허용대기잔여시간(MALV)을 계산하는 방법은 도 4 및 도 5를 통해 설명한 것과 동일하다.
즉, 중재제어부(201)는 CPU MAU의 제어에 따라 각 MAU별로 대기가 가능한 허용대기시간(RMAL)과 각 MAU별 대기시간선택코드(lat_sel)를 허용대기시간 레지스 터(270)와 대기시간선택코드 레지스터(280)에 각각 미리 설정한 상태에서, 특정 MAU로부터 메모리 액세스가 요청될 경우 중재제어부(201)는 중재플래그(205)를 체크하여 중재플래그(205)가 '1'일 경우 해당 MAU의 현재 대기시간(CMAL)과, 주기내 최대대기시간(PMMAL) 및 최대 대기시간(MMAL)을 각각 측정하여 저장하게 된다.
예를 들어, 제 1MAU(110)와 제 2MAU(120)로부터 메모리 액세스가 요청된 상태이면, 중재제어부(201)는 MAU별로 대기시간선택코드 레지스터(280)에 저장된 대기시간선택코드(lat_sel)를 체크하게 되고, 대기시간선택코드(lat_sel)가 둘 다 모두가 '00'으로 설정되어 있을 경우 허용대기시간(RMAL)에서 현재 대기시간(CMAL)을 각각 감산하여 제 1 및 제 2MAU(110, 120)의 허용대기잔여시간(MAU1_MALV, MAU2_MALV)을 각각 계산한 후 허용대기잔여시간 레지스터(290)에 각각 저장하게 된다(S3). 물론, 대기시간선택코드(lat_sel)가 '01'일 경우에는 허용대기시간(RMAL)에서 주기내 최대대기시간(PMMAL)을 감산하여 허용대기잔여시간(MALV)을 계산하게 되며, 대기시간선택코드(lat_sel)가 '1X'일 경우에는 허용대기시간(RMAL)에서 최대대기시간(MMAL)을 감산하여 허용대기잔여시간(MALV)을 각각 계산하게 된다. 상기 대기시간선택코드(lat_sel)는 MAU별로 동일할 수도 있으나, 각 MAU별로 다르게 설정할 수도 있다.
이에 따라 중재제어부(201)는 허용대기잔여시간 레지스터(290)에 저장된 제 1 및 제 2MAU(110, 120)의 허용대기잔여시간(MAU1_MALV, MAU2_MALV)을 각각 비교하여 허용대기잔여시간(MALV)이 제 1MAU(110)가 제 2MAU(120)보다 더 길게 남았는지를 판단하게 된다(S4, S5).
만약, 제 1MAU(110)의 허용대기잔여시간(MAU1_MALV)이 제 2MAU(120)의 허용대기잔여시간(MAU2_MALV)보다 더 길 경우 중재제어부(201)는 허용대기잔여시간이 더 짧게 남은 제 2MAU(120)의 메모리 액세스를 선택하게 된다(S6).
또한, 상기에서 제 2MAU(120)의 허용대기잔여시간(MAU2_MALV)이 제 1MAU(110)의 허용대기잔여시간(MAU1_MALV)보다 더 길 경우 중재제어부(201)는 허용대기잔여시간이 더 짧게 남은 제 1MAU(110)의 메모리 액세스를 선택하게 된다(S6).
상기(S5)에서 제 1MAU(110)의 허용대기잔여시간(MAU1_MALV)과 제 2MAU(120)의 허용대기잔여시간(MAU2_MALV)이 동일할 경우에는 중재제어부(201)는 우선순위 레지스터(260)에 저장된 제 1 및 제 2MAU(110, 120)의 리드 또는 라이트 우선순위(MAU1_PRI, MAU2_PRI)를 각각 비교하여 우선순위가 높은 MAU를 선택하게 된다(S7).
한편, 중재제어부(201)는 중재플래그(205)가 '0'으로 설정되어 있을 경우에는 메모리 액세스를 요청한 각 MAU별 우선순위를 상호 비교하여 우선순위가 높은 MAU를 선택하게 되며, 만약 메모리 액세스를 요청한 복수의 MAU가 우선순위가 동일할 경우에는 초기 하드웨어 우선순위에 따라 메모리 액세스를 승인할 MAU를 선택하게 된다. 상기 하드웨어의 초기 우선순위는 제 1MAU(110)부터 제 5MAU(150)의 순서이다(S8).
이에 따라 중재제어부(201)는 동시에 복수의 MAU로부터 메모리 액세스가 요청될 경우 상기와 같은 방식으로 메모리 액세스를 승인할 MAU를 선택하게 되며, 선택된 MAU에게 메모리 버스의 사용권을 부여하게 된다(S9).
한편, 상기에서는 본 발명을 특정의 바람직한 실시 예에 관련하여 도시하고 설명하였지만, 이하의 특허청구범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도 내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다.
이상에서 설명한 바와 같이 본 발명에서는 디지털 텔레비전의 SOC(System On a Chip) 형태의 데이터처리시스템과 같이 시스템 메모리로 단일메모리(Unified Memory)를 사용할 경우, 데이터처리시스템 내의 메모리 중재기가 각 메모리액세스유닛(MAU)들의 메모리 액세스의 요청을 감시하고, 측정한 각 MAU의 실시간으로 변화하는 대기시간(Memory access Latency)을 이용하여 메모리 버스의 사용 요구를 동적으로 중재함으로써, 시스템의 성능과 안정성을 향상시킴과 아울러 보다 각 MAU의 메모리 액세스를 보다 효율적으로 중재할 수 있는 이점이 있다.

Claims (14)

  1. 복수의 메모리액세스유닛(MAU)을 구비한 데이터처리시스템에서, 상기 각 MAU와 외부 단일메모리와의 메모리 액세스를 중재하는 메모리 중재기에 있어서,
    각 MAU별로 메모리 액세스 대기시간이 저장된 대기시간 카운터;
    각 MAU별로 메모리 액세스 대기가 가능한 허용대기시간이 저장된 허용대기시간 레지스터;
    상기 허용대기시간 레지스터에 저장된 허용대기시간에서 대기시간 카운터에 저장된 대기시간이 감산된 허용대기잔여시간을 각 MAU별로 저장하고 있는 허용대기잔여시간 레지스터; 및
    상기 복수의 MAU로부터 단일메모리에 대한 메모리 액세스가 요청되면, 해당 MAU의 메모리 액세스 대기시간과 허용대기잔여시간을 각각 계산하여 대기시간카운터와 허용대기 레지스터에 각각 저장하고, 복수의 MAU의 각 허용대기잔여시간을 비교하여 허용대기잔여시간이 짧은 특정 MAU를 선택하여 메모리 액세스를 중재하는 중재제어부;를 포함하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기.
  2. 청구항 1에 있어서,
    상기 메모리 중재기는 각 MAU별로 리드/라이트시의 우선순위가 저장된 우선 순위 레지스터를 더 포함하고,
    상기 중재제어부는 메모리 액세스를 요청한 복수의 MAU에 대한 허용대기잔여시간이 동일할 경우 우선순위 레지스터에 저장된 우선순위를 상호 비교하여 우선순위가 높은 MAU를 선택하여 메모리 액세스를 중재하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기.
  3. 청구항 1 또는 청구항 2에 있어서,
    상기 대기시간 카운터에 저장된 현재 대기시간은 해당 MAU의 메모리 액세스가 승인될 경우 '0'으로 초기화되는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기.
  4. 복수의 메모리액세스유닛(MAU)을 구비한 데이터처리시스템에서, 상기 각 MAU와 외부 단일메모리와의 메모리 액세스를 중재하는 메모리 중재기에 있어서,
    각 MAU별로 해당 메모리 액세스가 승인되기 전까지의 현재 대기시간들과, 일정주기 내에서 상기 현재 대기시간이 미리 저장된 이전 대기시간의 최대대기시간보다 큰 경우에 업데이트되는 주기내 최대대기시간들, 및 상기 일정주기에 관계없이 상기 현재 대기시간이 미리 저장된 이전 대기시간의 최대대기시간보다 큰 경우에 업데이트되는 최대 대기시간들이 각각 저장된 대기시간 카운터;
    각 MAU별로 대기가 가능한 허용대기시간이 저장된 허용대기시간 레지스터;
    상기 허용대기시간 레지스터에 저장된 허용대기시간에서 대기시간 카운터에 저장된 현재 대기시간, 주기내 최대대기시간 및 최대 대기시간이 각각 감산된 복수의 허용대기잔여시간을 각 MAU별로 저장하고 있는 허용대기잔여시간 레지스터;
    상기 허용대기잔여시간 레지스터에 저장된 각 MAU별 현재 대기시간과 주기내 최대대기시간 및 최대 대기시간 중 특정 대기시간에 대한 허용대기잔여시간을 선택하는 코드가 저장된 대기시간선택코드 레지스터; 및
    상기 복수의 MAU로부터 단일메모리에 대한 메모리 액세스가 요청되면, 해당 MAU의 현재 대기시간과 허용대기잔여시간을 각각 계산하여 대기시간카운터와 허용대기 레지스터에 각각 저장하고, 각 MAU의 대기시간선택코드에 따라 각 MAU의 해당 허용대기잔여시간을 비교하여 허용대기잔여시간이 짧은 특정 MAU를 선택하여 메모리 액세스를 중재하는 중재제어부;를 포함하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기.
  5. 청구항 4에 있어서,
    상기 메모리 중재기는 각 MAU별로 리드/라이트시의 우선순위가 저장된 우선순위 레지스터를 더 포함하고,
    상기 중재제어부는 메모리 액세스를 요청한 복수의 MAU에 대한 허용대기잔여시간이 동일할 경우 우선순위 레지스터에 저장된 우선순위를 상호 비교하여 우선순 위가 높은 MAU를 선택하여 메모리 액세스를 중재하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기.
  6. 청구항 4 또는 청구항 5에 있어서,
    상기 대기시간 카운터에 저장된 현재 대기시간은 해당 MAU의 메모리 액세스가 승인될 경우 '0'으로 초기화되고, 주기내 최대대기시간은 주기적으로 액티브되는 시스템 동기신호에 따라 '0'으로 초기화되며, 최대 대기시간은 전원 온/오프시에 '0'으로 초기화되는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기.
  7. 청구항 4 또는 청구항 5에 있어서,
    상기 대기시간 카운터는, 각 MAU별로 해당 메모리 액세스가 승인되기 전까지의 현재 대기시간을 저장하게 되는 현재대기시간 카운터; 일정 주기로 발생되는 시스템 동기신호가 새로이 액티브될 때까지, 상기 현재 대기시간 카운터에 저장된 현재 대기시간이 이전 대기시간의 최대대기시간보다 길 경우 현재 대기시간을 저장하게 되는 주기내 최대대기시간 카운터; 및 상기 시스템 동기신호에 관계없이 현재대기시간 카운터에 저장된 현재 대기시간이 이전 대기시간의 최대대기시간보다 길 경우에 현재 대기시간을 저장하게 되는 최대대기시간 카운터;로 구성된 것을 특징으 로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재기.
  8. 복수의 메모리액세스유닛(MAU)을 구비한 데이터처리시스템에서, 상기 각 MAU와 외부 단일메모리와의 메모리 액세스를 중재하는 방법에 있어서,
    상기 SOC 내의 메모리 중재기는 복수의 MAU로부터 메모리 액세스가 요청되면, 상기 각 MAU의 메모리 액세스 대기시간을 측정하는 단계;
    상기 MAU들의 메모리 액세스 대기시간을 이용하여 허용대기잔여시간을 계산한 후 각 MAU의 허용대기잔여시간을 비교하는 단계; 및
    상기에서 메모리 중재기는 허용대기잔여시간이 짧은 특정 MAU를 선택하여 메모리 액세스를 승인하는 단계;를 포함하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재 방법.
  9. 청구항 8에 있어서,
    상기 허용대기잔여시간을 계산하는 단계에서, 메모리 중재기는 특정 MAU별로 미리 설정된 허용대기시간에서 측정된 현재 대기시간을 감산하여 허용대기잔여시간을 계산하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재 방법.
  10. 청구항 9에 있어서,
    상기 현재 대기시간은 해당 MAU의 메모리 액세스가 승인될 경우 '0'으로 초기화되는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재 방법.
  11. 청구항 8에 있어서,
    상기 메모리 액세스 대기시간을 측정하는 단계는,
    각 MAU별로 해당 메모리 액세스가 승인되기 전까지의 현재 대기시간을 측정하는 단계; 일정주기 내에서, 측정된 현재 대기시간이 이전 대기시간의 최대대기시간보다 길 경우 현재 대기시간을 주기내 최대대기시간으로 업데이트하는 단계; 및 상기 일정주기에 관계없이 측정된 현재 대기시간이 이전 대기시간의 최대대기시간보다 길 경우에 현재 대기시간을 최대 대기시간으로 업데이트하는 단계;를 포함하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재 방법.
  12. 청구항 11에 있어서,
    메모리 중재기는 각 MAU별로 미리 설정된 대기시간선택코드에 따라 허용대기시간에서 측정된 현재 대기시간, 주기내 최대대기시간 또는 최대 대기시간을 선택 감산하여 허용대기잔여시간을 계산하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재 방법.
  13. 청구항 11에 있어서,
    상기 현재 대기시간은 해당 MAU의 메모리 액세스가 승인될 경우 '0'으로 초기화되고, 주기내 최대대기시간은 주기적으로 발생되는 시스템 동기신호에 따라 '0'으로 초기화되며, 최대 대기시간은 전원 온/오프시에 '0'으로 초기화되는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재 방법.
  14. 청구항 8에 있어서,
    상기 메모리 액세스를 승인하는 단계에서, 허용대기잔여시간이 동일한 MAU들은 우선순위를 비교하여 우선순위가 높은 MAU를 선택하여 메모리 액세스를 승인하는 것을 특징으로 하는 단일메모리를 갖는 데이터처리시스템의 메모리 중재 방법.
KR1020070019555A 2007-02-27 2007-02-27 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및그 중재 방법 KR20080079429A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070019555A KR20080079429A (ko) 2007-02-27 2007-02-27 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및그 중재 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070019555A KR20080079429A (ko) 2007-02-27 2007-02-27 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및그 중재 방법

Publications (1)

Publication Number Publication Date
KR20080079429A true KR20080079429A (ko) 2008-09-01

Family

ID=40020358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070019555A KR20080079429A (ko) 2007-02-27 2007-02-27 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및그 중재 방법

Country Status (1)

Country Link
KR (1) KR20080079429A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100098052A (ko) * 2009-02-27 2010-09-06 삼성전자주식회사 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서
KR101240896B1 (ko) * 2011-12-13 2013-03-11 전자부품연구원 디지털 방송 서비스를 위한 다중화기의 버스 중재기

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100098052A (ko) * 2009-02-27 2010-09-06 삼성전자주식회사 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서
KR101240896B1 (ko) * 2011-12-13 2013-03-11 전자부품연구원 디지털 방송 서비스를 위한 다중화기의 버스 중재기

Similar Documents

Publication Publication Date Title
US6006303A (en) Priority encoding and decoding for memory architecture
US5956493A (en) Bus arbiter including programmable request latency counters for varying arbitration priority
KR100839494B1 (ko) 버스 중재 시스템 및 버스 중재 방법
US6820152B2 (en) Memory control device and LSI
JP5498505B2 (ja) データバースト間の競合の解決
US20090282172A1 (en) Memory access engine having multi-level command structure
US5907688A (en) Smart arbitration for non-symmetric data streams
KR20160112305A (ko) 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템
US6606691B2 (en) System integrating agents having different resource-accessing schemes
US7392330B2 (en) Memory access bandwidth allocation and latency control in a digital camera
US6782433B2 (en) Data transfer apparatus
US20070283064A1 (en) Arbiter and arbitrating method
KR100803114B1 (ko) 메모리 중재 방법 및 시스템
WO2006024193A1 (fr) Procede et systeme pour transfert de donnees
KR20080079429A (ko) 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및그 중재 방법
JPH06195313A (ja) コンピュータシステムおよびそれに適した集積回路並びに要求選択回路
US20040243770A1 (en) Data transfer system
JP4335327B2 (ja) 調停装置および方法
JP4633290B2 (ja) データ処理装置及びその装置におけるアクセス調停方法
JP2002132707A (ja) メモリアクセス調停方法
US7747806B2 (en) Resource use management device, resource use management system, and control method for a resource use management device
US20070245052A1 (en) System and method for bandwidth sharing in busses
US20080229030A1 (en) Efficient Use of Memory Ports in Microcomputer Systems
JP2002041446A (ja) データ処理装置
JP2000250852A (ja) バス調停装置、バスシステムおよびバス調停方法

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination