KR20040039315A - 버퍼 시스템, 버퍼 관리 시스템 및 버퍼로의 액세스 제어방법 - Google Patents

버퍼 시스템, 버퍼 관리 시스템 및 버퍼로의 액세스 제어방법 Download PDF

Info

Publication number
KR20040039315A
KR20040039315A KR10-2004-7003012A KR20047003012A KR20040039315A KR 20040039315 A KR20040039315 A KR 20040039315A KR 20047003012 A KR20047003012 A KR 20047003012A KR 20040039315 A KR20040039315 A KR 20040039315A
Authority
KR
South Korea
Prior art keywords
buffer
access
block
pointer
address
Prior art date
Application number
KR10-2004-7003012A
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 코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Publication of KR20040039315A publication Critical patent/KR20040039315A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/10Indexing scheme relating to groups G06F5/10 - G06F5/14
    • G06F2205/108Reading or writing the data blockwise, e.g. using an extra end-of-block pointer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

계층적인 메모리 액세스 제어는 순차적으로 액세스되는 것으로 알려진 데이터의 블록과, 순차적으로 액세스될 수도, 순차적으로 액세스되지 않을 수도 있는 각각의 블록의 컨텐츠를 구별한다. 블록의 컨텐츠가 블록 내에서 순차식으로 제공되지만, 블록 내의 시퀀스의 개시시의 비 제로 오프셋(a non-zero offset)으로 인해서, 그 시퀀스가 상위 레벨의 시퀀스와 일치하지 않는 경우에, 메모리 액세스 제어는 블록 내 시퀀스가 상위 레벨 시퀀스에 일치할 때 시그날링함으로써, 이용가능한 메모리의 사용을 최적화하도록 구성된다. 블록 내 시퀀스가 상위 레벨 시퀀스와 다르더라도, 버퍼로의 액세스는 버퍼의 상위 레벨 구획으로 제한된다. 블록 내 시퀀스가 상위 레벨 시퀀스에 일치하면, 버퍼로의 액세스는 버퍼의 블록 내 구획에 제공된다. 이런식으로, 상위 레벨 시퀀스에 대한 블록 내 시퀀스의 오프셋 정도에 따라서, 전체 블록이 버퍼에 제공되기 전에 버퍼로의 액세스가 양호하게 제공되고, 이로써 메모리가 액세스될 수 있는 속도를 최적화한다.

Description

버퍼 시스템, 버퍼 관리 시스템 및 버퍼로의 액세스 제어 방법{BUFFER SYSTEM WITH SEQUENTIAL AND NON-SEQUENTIAL BLOCK ACCESS}
시스템, 특히 비동기식으로 데이터를 송신하는 시스템들 사이에서 인터페이스하는 데 통상적으로 버퍼가 사용된다. 이러한 데이터 송신 버퍼는 일반적으로 제 1 시스템으로부터 데이터를 동기식 혹은 비동기식으로 수신해서, 그것을 제 2 시스템으로부터의 요청에 따라 그 제 2 시스템에 송신하도록 구성된다. 대응하는 데이터 아이템이 제 2 시스템에 송신되기 전에 제 1 시스템으로부터 데이터가 수신되는 것을 보장하기 위해 버퍼 관리자가 사용된다. 즉, 버퍼 관리자는 수신기가 데이터를 수신할 수 있는 속도를, 데이터를 송신하는 송신기의 대응하는 속도로 조정한다.
도 1은 기록 포인터(110)로 표시되는 위치에서, 송신 시스템으로부터 각각의데이터 아이템을 저장하도록 구성된 예시적인 버퍼(100)를 도시한다. 각각의 데이터 아이템이 저장되어 감에 따라서, 다음 데이터 아이템을 저장할 위치를 나타내는 기록 포인터(110)가 증가된다. 판독 포인터(120)가 기록 포인터(110)와 동일하게 되도록 초기화하고, 후속해서 각각의 데이터 아이템을 요청에 따라서 수신 시스템에 송신함으로써, 수신 시스템에 데이터가 송신된다. 각각의 데이터 아이템이 수신 시스템에 송신되어 감에 따라, 판독 포인터(120)가 증가되어서 다음 이용가능한 데이터 아이템의 위치를 나타낸다. 판독 포인터(120)가 아직 기록되지 않은 위치를 가리키는 것을 방지하기 위해, 판독 포인터(120)는 한계점(130)을 지나치지 않도록 제한된다. 이 한계점은 데이터 아이템이 버퍼(100)에 저장됨에 따라서 계속해서 조정되고, 통상적으로 기록 포인터(110)에 대응한다. 참조와 이해를 용이하게 하기 위해, 한계점(130)이 기록 포인터(110)와 같은 파라미터일 수도 있지만, 이하에서는 특정 파라미터로 해서 설명된다.
한계점(130)은 메모리 액세스 컨트롤러에 의해 조정되거나 수신 시스템에 의해 직접 조정된다. 즉, 공통적으로 한계점(130)은 메모리 액세스 컨트롤러에 의해 이용될 수 있으며, 수신 시스템은 판독 포인터(120)가 한계점(130)을 초과해서 "트래킹"하지 않도록 판독 포인터(120)를 유지할 의무가 있다.
일반적으로, 버퍼(100)는 크기가 한정되고, 실질적으로 버퍼(100)에 의해 수신될 수 있는 데이터 아이템의 전체 수보다 작다. 버퍼의 연속 사용을 가능하게 하기 위해서, 버퍼는 일반적으로 "환형"으로 구성되어서, 버퍼의 끝에 이르면, 버퍼의 개시점으로 리셋된다. 앞에서 언급된 한계점(130)을 환형 버퍼 내로 유지하기 위해 통상적으로 알고리즘이 사용될 수 있다. 특정 실시예에 따라서는, 기록 포인터(110)가 환형 버퍼를 루프한 이후에는 판독 포인터(120)에 대응하는 한계점을 초과해서 트래킹하지 않도록 억제된다. 즉, 이전의 데이터가 수신 시스템에 의해서 아직 판독되지 않았다면, 송신 시스템이 데이터를 버퍼(100)에 저장하는 것은 차단된다. 다른 방안으로 새로운 데이터가 도달함에 따라서, 판독 포인터(120)가 기록 포인터의 앞쪽에 유지되도록 전진될 수 있으며, 판독되지 않은 데이터는 새롭게 도달하는 데이터에 의해 덮어쓰기 된다. 참조 및 이해를 용이하게 하기 위해서, 이하에서 본 발명은 판독 포인터에 대한 한계점의 조정에 관해서 제공되며, 기록 포인터(110)에 대한 한계점의 조정도 실질적으로 동일하다.
버퍼(100)의 크기는 버퍼의 기록 속도와 판독 속도 사이의 허용가능한 미스 매치를 결정하며, 비제어형 송신기의 경우에 버퍼(100)의 크기는 송신기와 수신기 사이의 속도의 미스 매치로 인한 데이터 손실의 양을 결정한다. 비제어형 송신기의 경우에, 버퍼(100)는 평균 송신 및 수신 데이터율의 동일화를 조정하는 역할을 하며, 버퍼(100)의 크기는 이러한 평균 데이터율에 대한 변화의 정도를 결정한다.
위에서 알 수 있는 바와 같이, 버퍼(100)에 데이터를 제공하는 시스템 및 버퍼(100)로부터 데이터를 수신하는 시스템은 비동기적이다. 따라서 한계점(130)의 업데이트는 다른 시스템과만 동기화될 수 있다. 포인터 또는 한계점이 증가해도, 오판독되지 않도록 하기 위해서, 포인터는 그레이 코드(a gray-code)를 사용해서 인코딩되어 증가되며, 여기서 증가 변동 동안 오직 하나의 포인터의 비트만이 변화된다. 이런식으로, 한계점(130)의 변동시에 한계점(130)을 비동기식으로 판독함으로써, 한계점(130)의 이전 값 또는 다음 값을 제공할 것이다. 한계점(130)의 이전값의 조정을 통해서 판독 포인터(120)가 기록 포인터(110)를 지나서 트래킹하는 것을 방지할 것이기 때문에, 그레이 코드 시퀀스의 사용을 통해서 한계점(130)이 판독되는 것에 무관하게 판독 공정의 완전성을 보장한다.
비동기식 판독 기록 액세스에 대한, 종래의 2포트(데이터 인, 데이터 아웃) 버퍼 방안은 기본 전제로 버퍼(100)로의 데이터의 기록이 순차적이라고 가정한다. 즉, 기본적으로 판독 포인터(120)와 한계점(130) 사이의 모든 메모리 위치에서 유효 데이터를 포함하는 것으로 가정된다. 이하 설명될 일부 실시예에서, 데이터가 더 효율적으로 다소 비순차 방식으로 버퍼에 기록하는데 이용될 수 있다.
본 발명은 프로세싱 및/또는 통신 분야에 관한 것이고, 더 상세하게는 두 시스템 간의 인터페이싱을 위한 버퍼 제어에 관한 것으로, 두 시스템 중 한 시스템은 비순차적 방식으로 버퍼에 액세스하도록 구성된다.
본 발명은 예시의 방법으로 첨부된 도면을 참조해서 더 상세하게 설명될 것이다.
도 1은 일련의 판독 및 기록 포인터를 구비한 종래의 버퍼 시스템의 예를 도시하는 도면,
도 2는 본 발명에 따른 비 순차식 액세스 포인터를 구비한 버퍼 시스템의 예를 도시하는 도면,
도 3은 본 발명에 따른 버퍼 관리 시스템의 예시적인 블록도를 도시하는 도면,
도 4는 본 발명에 따른 버퍼 관리 시스템의 메모리 액세스 한계점을 결정하는 예시적인 블록도를 도시하는 도면,
도 5는 본 발명에 따른 메모리 액세스를 트래킹하는 타이밍도의 예시적인 블록도를 도시하는 도면,
전체 도면에서, 동일한 참조 번호는 유사한 또는 대응하는 특성 또는 기능을 나타낸다.
본 발명의 목적은, 버퍼와 같은 메모리 디바이스로의 비순차 액세스를 가능하게 하는 메모리 액세스 방법 및 장치를 제공하는 것이다. 본 발명의 다른 목적은 이용가능 메모리의 사용을 최적화하는 메모리 액세스 방법 및 장치를 제공하는 것이다.
이러한 목적은 계층형 메모리 액세스 제어 방법 및 시스템을 제공함으로써 달성된다. 이러한 계층형 메모리 액세스 제어는 순차적으로 액세스되는 것으로 알려진 데이터의 블록과, 순차적으로 액세스될 수도, 순차적으로 액세스되지 않을 수도 있는 각각의 블록의 컨텐츠를 구별한다. 블록의 컨텐츠가 블록 내에서 순차 방식으로 제공되지만, 블록 내의 시퀀스의 개시시의 비 제로 오프셋(a non-zerooffset)으로 인해서, 그 시퀀스가 상위 레벨의 시퀀스와 일치하지 않는 경우에, 메모리 액세스 제어는 블록 내 시퀀스가 상위 레벨 시퀀스에 일치할 때 시그날링함으로써, 이용가능한 메모리의 사용을 최적화하도록 구성된다. 블록 내 시퀀스가 상위 레벨 시퀀스와 다르더라도, 버퍼로의 액세스는 버퍼의 상위 레벨 구획으로 제한된다. 블록 내 시퀀스가 상위 레벨 시퀀스에 일치하면, 버퍼로의 액세스는 버퍼의 블록 내 구획에 제공된다. 이런식으로, 상위 레벨 시퀀스에 대한 블록 내 시퀀스의 오프셋 정도에 따라서, 전체 블록이 버퍼에 제공되기 전에 버퍼로의 액세스가 양호하게 제공되고, 이로써 메모리가 액세스될 수 있는 속도를 최적화한다.
많은 애플리케이션에서, 분명하게 순차적인 데이터가 계층형 방식으로 저장되며, 여기서 각각의 데이터 아이템은 논리적 또는 물리적 블록으로 구획된다. 예컨대, MPEG 인코딩 이미지는 하나의 이미지를 형성하는 일련의 8×8 픽셀 블록들로 저장되고, n차원 데이터 어레이는 일련의 1차원 어레이 블록으로 저장되는 등이다.
이러한 정보의 블록 구획은 버퍼 관리의 복잡성을 감소시키는 기회를 제공한다. 예컨대, 데이터 블록이 버퍼를 통해서 한 구성 요소에서 다른 구성 요소로 송신되어야 하는 경우, 버퍼 관리는 데이터 레벨이 아닌 블록 레벨로 수행될 수 있다. 즉, 예컨대 데이터의 블록이 기록되어 있을 때, 버퍼 관리자는 전체 블록이 송신될 때까지 도 1의 한계점(130)을 블록의 개시점으로 설정해서, 블록이 송신되는 동안 판독 포인터와 기록 포인터를 동기화시킬 필요가 없다.
판독 포인터와 기록 포인터의 동기화를 간단하게 하는 것에 더해서, 블록 레벨 버퍼 관리를 제공함으로써 블록 내 판독 또는 기록 동작이 비순차화되는 것을 가능하게 한다. 즉, 블록이 기록되는 동안 블록으로의 판독 액세스가 허용되지 않기 때문에, 기록 프로세스는 판독 프로세스가 블록 내에서 혼합된 오래된 데이터와새로운 데이터를 판독할 것이라는 염려없이, 블록 내의 데이터를 임의의 순서로 배치할 수 있다. 유사한 방식으로, 판독 프로세스가 블록에 엑세스 중인 경우, 기록 프로세스가 어떤 블록 내의 데이터 아이템도 수정할 수 없도록 차단된다.
블록 레벨의 버퍼 액세스를 관리함으로써, 블록 내 판독 및 기록 액세스는 데이터 송신에 사용되는 특정 프로세스에 대해 최적화되며, 도 1의 종래의 기술에 도시된 바와 같이 이 최적화는 순차 송신으로 한정되지 않는다.
데이터 액세스의 최적화는 고속 파이프라인 데이터 프로세스 또는 다른 다중 액세스 프로세스에서, 데이터로의 액세스를 포함하는 애플리케이션의 경우에 특히 중요하다. 고속 메모리로의 데이터 액세스는 종종 메모리의 뱅크의 데이터 판독 라인을 프리 차지(pre-charge)하고, 판독되는 데이터의 값에 기초해서 적절한 출력 디바이스를 구동시킴으로써 이루어진다. 바람직하게는, 프리 차징 중에 판독 요청이 지연을 유발하지 않도록, 프리 차지 프로세스는 판독 요청이 도달하기 전에 수행된다. 특정 메모리의 뱅크가 하나의 메모리 액세스 사이클 동안 액세스되는 경우에, 바람직하게는 다음 사이클이 프리 차지에 사용된다.
동일한 블록을 연속해서 두번 액세스하는 것을 방지하는 한가지 방법은, 요청에 따라서 블록 내의 액세스의 시퀀스의 개시 어드레스를 오프셋하는 것이다. 예컨대, MPEG 매크로 블록은 8×8 픽셀 블록에 대응하고, 비디오 프로세싱에 사용되는 공통 메모리 구조는 8뱅크의 세트이며, 여기서 뱅크는 8픽셀의 폭을 가지고 있다. 즉, 각각의 8라인 세그먼트 매크로 블록의 8 픽셀 폭 라인 세그먼트의 데이터는 서로 다른 뱅크에 포함된다. 따라서 각각의 라인 세그먼트를 액세스함으로써위에서 설명된 프리 차지 지연을 방지한다. 그러나, 뱅크로의 다수의 동시 액세스가 제공되는 경우에, 이런 다수의 액세스로 인해서 동일한 메모리 뱅크로의 순차 액세스가 발생된다. 블록 내의 라인 세그먼트가 액세스되는 순서의 변경을 가능하게 함으로써, 동일한 메모리 뱅크로의 반복되는 액세스가 방지된다. 즉, 예컨대, 하나의 프로세스가 현재 뱅크-1를 액세스하고 있는 중에, 다른 프로세스는 이 블록으로의 액세스를 개시하면, 다른 프로세스는 종래의 1-2-3-4-5-6-7-8의 순서로 액세스해서 프리 차지 지연을 유발하는 대신에 7-8-1-2-3-4-5-6의 순서로 8개의 블록을 액세스하도록 구성될 수 있다.
도 2는 본 발명에 따라 비 순차 블록 내 액세스를 사용하는 예시적인 버퍼 시스템을 도시한다. 기록 포인트(210)로부터 시작된 다수의 화살표로 도시된 바와 같이, 본 발명에서의 기록 포인터(210)는 버퍼(100)에서 복수의 메모리 소자(B8, B9,...) 또는 블록 중 어느 하나를 가리킬 수 있도록 구성된다. 이 예는 위의 예시적인 라인 세그먼트 액세스 시나리오와 관련되어 제공되며, 여기서 8 라인 세그먼트의 블록이 액세스된다. 이 예를 사용해서, 메모리 소자(B8)는 제 1 라인 세그먼트에 대응하는 8개의 픽셀 값을 저장하도록 구성되고, 메모리 소자(B9)는 제 2 라인 세그먼트에 대응하는 8개의 픽셀 값을 저장하도록 구성된다. 위의 예에서, 8라인 세그먼트의 데이터가 가장 먼저 추출되면, 기록 포인터(210)는 8 라인 세그먼트에 대응하는 8픽셀 값을 저장하도록 구성되는 메모리 소자(Bf)만을 가리킨다. 후속해서, 제 1 라인 세그먼트의 데이터가 추출되면, 기록 포인터(210)는 8개의 픽셀 값의 8개의 세트 각각이 메모리 소자(B8-Bf)에 로딩될 때까지 메모리 소자(B8)를 가리킨다.
블록(B8-Bf) 내의 메모리 액세스가 비 순차식으로, 또는 블록에 대해 비 제로 오프셋을 사용해서 순차식으로 될 수 있지만, 첫번째 8×8 블록으로부터 두번째 8×8 블록으로의 블록 레벨의 메모리 액세스는 도 2의 화살표(211)로 도시된 바와 같이 순차식으로 될 수 있다. 따라서, 상기 설명된, 순차 한계점 파라미터에 기초한, 신뢰할만한 이중 액세스 프로세스의 조정을 블록 내 레벨로 적용시킬 수 없는 경우에도, 블록 레벨로 달성될 수 있다.
본 발명의 제 1 측면에 따라서, 블록 내의 메모리 소자 각각이 적절한 데이터를 사용해서, 로딩될 때까지 판독 포인터(220)가 블록(B8-Bf)을 지나가지 않도록, 한계점(230)은 메모리 소자의 블록(B8-Bf)의 개시점으로 설정되도록 구성되며, 기록 포인터(210)는 임의의 순서로 이 블록에 데이터를 제공한다.
이 블록 송신이 완료되면, 기록 포인터(210)는 8개의 메모리 소자 중 다음 블록으로 전진되며, 한계점(230)은 블록(B8-Bf)의 끝으로 설정된다. 그 후, 판독 포인터(220)는 블록(B8-Bf)으로 가서 예시적인 인코더로의 데이터의 전송을 가능하게 할 수 있다. 이런식으로, 블록 레벨의 한계점 파라미터(230)를 제어함으로써, 신뢰할만한 버퍼 액세스가 제공될 수 있다.
위의 설명이 블록 내에서의 비순차 기록 액세스 동안의 블록 레벨의 판독 액세스를 제어하는 기술을 제공하고 있지만, 이와 동일한 프로세스가 버퍼(100)로부터의 비순차 판독 동안 블록 레벨로 기록 액세스를 제공하는데 사용될 수 있다. 예컨대, 판독 포인터(220)는 8개의 메모리 소자를 우선적으로 판독해서, 위에서 설명된 버퍼(100)로의 비순차 기록 액세스와 유사하게, 이 값을 8개의 메모리 소자의 다른 값을 포함하는 라인 버퍼에 저장하도록 구성될 수 있다. 이 실시예에서, 기록 포인터(210)는 8개의 메모리 소자 각각이 판독될 때까지 특정 블록을 초과하지 않도록 제한될 것이다. 알려진 바와 같이, 여기에 개시된 원리를 다른 버퍼로의 비 순차 기록 액세스에 적용하는 것도 본 개시물의 견지에서 당업자에게는 자명하겠지만, 본 발명은 참조 및 이해를 용이하게 하게 위해서, 버퍼로의 비 순차 기록 액세스의 패러다임을 사용해서 제공된다.
도 3은 본 발명에 따른 버퍼 관리 시스템(300)의 예시적인 블록도를 나타낸다. 도시된 바와 같이, 버퍼 관리 시스템(300)은 송신 디바이스 또는 소자(310)로부터 수신 디바이스 또는 소자(320)로의 데이터의 전송을 관리한다. 본 발명에 따라서, 버퍼 관리자(350)는 블록 레벨 순차 기록 액세스에 기초해서, 판독 액세스용 한계점(230)을 결정한다. 판독 액세스에 사용되는 특정 프로토콜에 따라서, 버퍼 관리자(350)는 한계점(230)을 지나서 메모리 소자에 액세스하는 것을 차단함으로써 한계점(230)을 조정하거나, 한계점(230)의 자가 조정을 위해 수신 디바이스(320)에 한계점(230)을 통신시킨다. 도 2 및 도 3의 원형 화살표(212)는 블록 내 메모리 액세스를 나타내는 것으로 순차식이 되거나 되지 않을 수 있으며, 반면에 원형 화살표(211)는 순차식 블록 대 블록 메모리 액세스를 나타낸다. 본 발명의 일 특성에 따라서, 버퍼 관리자(350)는 잠재적으로 비순차식인 블록 내 액세스(212)가 공정 중에 있을 때, 판독 포인터(220)가 블록을 초과하지 않도록 한계점(230)을 결정한다.
본 발명의 제 2 측면에 따라서, 시스템(300)의 성능은 메모리 액세스의 시퀀싱을 상위 레벨의 시퀀싱 순서와 일치시키는 시퀀스를 결정함으로써 강화된다. 시퀀스 방향이 각각의 다음 블록 액세스에 따라 우선 증가 어드레스 시퀀스로, 이후에는 감소 어드레스 시퀀스로 변화하는, 예시적인 메모리 액세스를 가정한다. 판독 프로세스 동안, 증가 어드레스 시퀀스라고 가정하면, 버퍼 관리자(350)는 블록이 감소 어드레스 순서로 기록되는 동안에는 판독 포인터(220)가 블록을 초과하는 것을 차단하고, 블록이 증가 어드레스 순서로 기록되는 동안에는 판독 포인터(220)가 블록을 초과하는 것을 허용하도록 구성되는 것이 바람직하며, 이는 기록 시퀀스가 상위 레벨 판독 시퀀싱과 같은 동일한 방향이기 때문이다. 이런식으로, 판독 포인터(220)는 블록 내 기록 프로세스가 상위 레벨 시퀀싱의 방향과 반대인, 블록 액세스의 절반 동안만 지연된다.
또한, 위에서 설명된 초기 비 제로 블록 내 오프셋을 가진 순차 액세스는 7-8-1-2-3-4-5-6과 같은 순서라고 가정한다. 일 실시예에서, 종래의 상위 레벨 순차 액세스는 하위 어드레스로부터 상위 어드레스로 행해지는 것으로 가정하면, 블록 내 순차 액세스는 블록 시퀀싱과 같은 방향으로, 즉 로우에서 하이 방향으로 발생되며, 마지막 아이템이 액세스된 이후에 첫번째 아이템으로의 순환 리셋된다. 기록 포인터(210)가 초기에 "8"에 가 있으면, 8개의 데이터 아이템 하단(below)의 메모리 위치 중 적어도 일부가 아직 기록되지 않았기 때문에, 판독 포인터(220)를 통한 메모리 액세스는 블록 내에서 제외된다. 그러나, 기록 포인터(210)가 "2"에 가 있으면, 판독 포인터는 기록 포인터가 "1"이였을 때 저장된 데이터 아이템에 액세스하는 것이 허용될 수 있다. 유사하게, 기록 포인터(210)가 "4"에 가 있으면, 아직 기록되지 않은 메모리 위치로부터 값을 판독할 염려없이 판독 포인터(220)는 아이템(1, 2, 3) 중 어느 것에도 액세스할 수 있다.
본 발명에 따라서, 버퍼 관리자(350)는 메모리 기록 소자(written-to memory element) "하단"의 임의의 소자가 아직 기록되지 않은(즉, 아직 "유효" 상태가 아닌) 동안 한계점(230)을 유지하며, 각각의 다른 소자가 유효 상태인 메모리 소자에 대응하는 값(230')을 리셋하도록 구성된다. 이런식으로, 블록 내 기록 포인터가 블록 레벨 시퀀싱과 일치되자마자, 판독 액세스가 개시될 수 있다. 본 설명에서, "하단(below)"이란 블록 레벨 시퀀스의 방향에서, 해당 소자 이전의 메모리 소자를 의미하는 것으로 정의된다. 즉, 블록 레벨 시퀀싱이 로우에서 하이 방향이라면, '하단'의 메모리 소자는 해당 소자보다 더 낮은 어드레스 또는 인덱스를 가지며, 반면에 블록 레벨 시퀀싱이 하이에서 로우 방향이라면, '하단'의 메모리 소자는 해당 소자보다 더 높은 어드레스 또는 인덱스를 갖는다.
하단의 메모리 소자가 모두 유효한 시점을 결정하는 데 다양한 기술이 사용될 수 있다. 바람직한 실시예에서, 도 2에 도시된 바와 같이 기록 포인터(210)는 블록 어드레스(250)와 비교할 때, 오프셋(260)에 대응한다. 블록 내 시퀀스의 시퀀싱이 블록 대 블록 시퀀스와 같은 방향이여서(하이에서 로우로, 또는 로우에서 하이로), 일단 오프셋(260)이 0이 되면, 어드레스(250)에서의 블록 내의 모든 후속하는 기록 포인터(210) 액세스는 모든 '하단' 메모리 소자가 액세스되고, 따라서 유효 상태가 되도록 행해질 것이다.
위의 예에서, 참조를 용이하게 하기 위해, 고정 블록 크기가 사용된다. 당업자에게 자명한 바와 같이, 위에 설명된 프로세스를 구현하기 위해 요청되는 유일한 파라미터는 블록의 개시점 및 블록의 종점(또는, 동일하게 블록의 크기)이다. 추가적으로 블록의 크기는 각각의 상호 작용에 따라 변할 수 있다.
도 4는 본 발명의 바람직한 실시예에 따른 버퍼 관리 시스템에서의 메모리 액세스 한계점을 결정하는 예시적인 논리도이고, 도 5는 도 4의 로직에 대응하는 메모리 액세스의 트래킹을 위한 예시적인 타이밍 도를 도시하고 있다. 예시적인 실시예에서, "랩(wrap)" 신호는 하나 이상의 '하단' 메모리 소자가 어드레스(250)에서 스킵되어서 기록되지 않도록, 기록 포인터(210:도 2)가 초기에 오프셋되는 시점을 나타내는 신호이다. "유휴(idle)" 신호는 비 기록 상태를 나타낸다(다른 방안으로, 판독 포인터가 오프셋이면, "유휴" 신호는 비 판독 상태를 나타냄).
랩 신호 또는 유휴 신호가 어써트(assert)되면, NOR 게이트(410)는 한계점(230)을 만들기 위해 선택기(420)를 통해서 블록 어드레스(250)를 선택한다. 랩 신호 또는 유휴 신호 어느 것도 어써트되지 않은 경우, NOR 게이트(410)는 블록 어드레스(250)와 오프셋(260)의 합을 선택해서 한계점(230)을 만든다. 즉, 현재 활성 기록 포인터(210)가 모든 '하단' 어드레스들이 스킵되지 않도록 되어 있으면, 한계 파라미터(230)는 기록 포인터(210)와 일치하도록 설정된다(본 실시예에서, '하단'의 정의를 사용하면, 판독 포인터(220)는 한계점의 '하단'으로 제한될 것이다).
도 5는 도 4의 로직에 대응하는 메모리 액세스의 트래킹을 위한 타이밍도를도시하고 있다. 본 실시예에서, 2블록의 동작이 도시되며, 블록(510)은 어드레스(0)부터 어드레스(7)까지를 포함하고, 블록(511)은 어드레스(8)부터 (f:16진법)까지를 포함한다. 제 1 블록(510)은 초기에 어드레스(6)에서 액세스되고, 이후에 7에서 액세스되며, 어드레스(0)로 리셋된 후, 1-5에서 차례로 액세스된다. 제 2 블록(511)은 어드레스 "d"에서 우선 액세스되고, 이후에 e 및 f에서 액세스되고, 그 후 8로 리셋된 후에 9, a, b, c에서 차례로 액세스된다. 편의를 위해서, 포인터 어드레스(510, 511)에 대응하는 오프셋 값 및 블록 값은 각각 520, 521 및 550, 551로 나타낸다.
본 실시예에 도시된 바와 같이, 어드레스에서 제 2 블록(511)을 개시함으로써, 제 2 블록(511)의 제 1 오프셋 값(5)은 제 1 블록(510)의 마지막 오프셋 값과 같아진다. 위에 설명된 바와 같이, 각각의 새로운 오프셋 값이 메모리 액세스 동작 또는 라인 버퍼로의 데이터 라인의 판독과 같은 다른 시간이 많이 걸리는 동작을 요청하는 경우에, 도 5에 도시된 시퀀스는 이전의 오프셋 값을 유지함으로써 블록 액세스마다 이러한 동작 중 하나를 제거한다.
제 1 블록(510)이 어드레스(6, 7)에서 액세스되는 동안, 버퍼 관리자(350:도 3)는 랩 신호(530)를 어써트하고, 이로써 한계점(560)을 블록 어드레스(550)로 설정한다. 랩 신호가 디어써트되어서(deassert:530') 블록 내 시퀀싱이 블록 레벨 시퀀싱과 일치한다는 것을 나타내면, 한계점(560)은 블록 어드레스(550)와 오프셋(520)의 조합인 어드레스(510)와 일치하도록 설정된다. 유사하게, 제 2 블록(511)이 어드레스(d, e, f)에서 액세스되면 한계점(560)은 블록 어드레스(551)로설정되고, 이후에 블록 어드레스(551, 521)의 조합으로 설정된다.
본 발명의 바람직한 실시예에서, 한계점(560)의 통신은 그레이 코드 시퀀스를 통해서 이루어지며, 그 결과 수신 시스템이 변동 동안 한계점을 판독하면, 종래의 그레이 코드 시퀀스의 사용에 관해 설명된 바와 같이, 변동 전의 값이 되거나 변동 직후의 값이 된다. 블록 어드레스(510)에 대응하는 기록 포인터를 트래킹하기 위해서, 트랙 신호(570)가 제공되어서 한계점(560)을 수신 시스템에 전송한다. 기록 포인터가 "1"로 전진한 이후에만, 판독 포인터는 어드레스 "0"으로 전진할 수 있다. 이하에서, 트랙 신호는 시퀀스대로 어드레스(1-7)를 트래킹한다. 활성 한계점(560)에 대응하는 갭 또는 점프없이 트래킹 신호(570)의 전체 신호를 제공함으로써, 트래킹 신호에 대응하는 그레이 코드 시퀀스는 수신 신호로의 신뢰할만한 통신을 제공한다. 즉, 예컨대 시점(501)에서, 한계점(560)은 실제로 8이 되어서 수신 시스템이 0-7 중 임의의 값에 액세스할 수 있다는 것을 나타낸다. 그러나, 시점(501) 이전에, 한계점은 5이다. 한계점의 값이 변하는 동안 수신기가 한계점을 판독하려고 하기 때문에, 5에서 8로의 한계점의 변화가 신뢰할만하게 송신되지 않을 수도 있다. 그레이 코드 시퀀싱이 이러한 신뢰성을 제공하지만, 시퀀스가 연속적인 경우에만이다. 트랙 신호(570)는 시퀀스에 갭이나 점프가 없는 연속 시퀀스를 제공한다.
위의 설명은 본 발명의 원리를 설명한 것이다. 당업자는 여기에 설명되지는 않았지만, 본 발명의 원리를 실시하며, 첨부된 청구범위의 사상과 범주 내에 드는 다양한 장치가 고안될 수 있다는 것을 이해할 것이다.

Claims (16)

  1. 버퍼 시스템으로서,
    제 1 포인터 및 제 2 포인터를 통해서 액세스되도록 구성된 버퍼와,
    상기 제 1 포인터에 기초해서 상기 제 2 포인터를 제한하도록 구성된 버퍼 관리자를 포함하며,
    상기 제 1 포인터는 상기 버퍼로의 순차 블록 레벨 액세스 및 상기 버퍼로의 독립 블록 내 액세스(an independent within-block access)를 제공하도록 구성되고,
    상기 버퍼 관리자는 상기 제 1 포인터의 상기 순차 블록 레벨 액세스에 대응하는 제한값으로 상기 제 2 포인터를 제한하도록 구성되는
    버퍼 시스템.
  2. 제 1 항에 있어서,
    상기 버퍼 관리자는, 상기 버퍼로의 상기 독립 블록 내 액세스가 상기 버퍼로의 상기 순차 블록 레벨 액세스에 대응하면, 상기 제한값을 상기 제 1 포인터에 대응하게 리셋하도록 구성되는
    버퍼 시스템.
  3. 제 1 항에 있어서,
    상기 제 1 포인터는 블록 어드레스 및 오프셋 어드레스를 포함하며,
    상기 버퍼 관리자는
    상기 버퍼로의 상기 독립 블록 내 액세스가 상기 순차 블록 레벨 액세스에 대응하지 않으면, 상기 제한값을 상기 블록 어드레스에 대응하도록 설정하고,
    상기 버퍼로의 상기 독립 블록 내 액세스가 상기 순차 블록 레벨 액세스에 대응하면, 상기 제한값을 상기 블록 어드레스와 상기 오프셋 어드레스의 조합(a combination)에 대응하도록 설정하는
    버퍼 시스템.
  4. 제 1 항에 있어서,
    상기 제 1 포인터 및 상기 제 2 포인터는
    상기 버퍼에 데이터를 기록하는 기록 포인터에 대응하고,
    상기 버퍼로부터 데이터를 판독하는 판독 포인터에 대응하는
    버퍼 시스템.
  5. 제 1 항에 있어서,
    상기 제 1 포인터는 블록 어드레스 및 오프셋 어드레스를 포함하되,
    상기 블록 어드레스는 상기 순차 블록 레벨 액세스에 대응하고,
    상기 오프셋 어드레스는 상기 독립 블록 내 액세스에 대응하며,
    상기 버퍼 관리자는 상기 오프셋 액세스의 변화를 상기 순차 블록 레벨 액세스들 사이에서 최소화하도록 또한 구성되는
    버퍼 시스템.
  6. 제 1 항에 있어서,
    상기 버퍼 관리자는 상기 제 1 포인터를 통한 상기 버퍼의 블록 레벨 액세스가 완료되기 전에 상기 제한값을 전진시키도록 또한 구성되는
    버퍼 시스템.
  7. 제 6 항에 있어서,
    상기 버퍼 관리자는 상기 제한값의 전진에 대응해서 그레이 코드 시퀀스를 통해서 상기 제한값을 송신하도록 또한 구성되는
    버퍼 시스템.
  8. 제 1 항에 있어서,
    상기 버퍼 관리자는 그레이 코드 시퀀스를 통해서 상기 제한값을 송신하도록 또한 구성되는
    버퍼 시스템.
  9. 버퍼로의 액세스를 제어하는 버퍼 관리 시스템으로서,
    상기 버퍼로의 제 1 액세스가 비 순차식이면 랩 신호(a wrap signal)를 어써트하도록 구성되고, 상기 랩 신호에 따라 상기 버퍼로의 제 2 액세스를 제한하도록 또한 구성되는 버퍼 관리자를 포함하는
    버퍼 관리 시스템.
  10. 제 9 항에 있어서,
    상기 버퍼로의 상기 제 1 액세스는 블록 어드레스 및 오프셋 어드레스에 기초한 액세스를 포함하고,
    상기 버퍼로의 상기 제 2 액세스는 상기 랩 신호가 어써트되면 상기 블록 어드레스로 제한되고, 상기 랩 신호가 디어써트(deassert)되면 상기 블록 어드레스와 상기 오프셋 어드레스의 조합으로 제한되는
    버퍼 관리 시스템.
  11. 제 10 항에 있어서,
    상기 제 2 액세스의 제한값의 변화는 그레이 코드 시퀀스를 통해서 송신되는
    버퍼 관리 시스템.
  12. 제 10 항에 있어서,
    상기 버퍼 관리자는 상기 버퍼로의 상기 제 1 액세스가 종료되면 유휴 신호(an idle signal)를 어써트하도록 더 구성되고,
    상기 유휴 신호가 어써트되면 상기 버퍼로의 상기 제 2 액세스는 상기 블록 어드레스로 또한 제한되는
    버퍼 관리 시스템.
  13. 제 9 항에 있어서,
    상기 제 1 액세스 및 제 2 액세스는
    상기 버퍼로의 기록 액세스와,
    상기 버퍼로부터의 판독 액세스
    에 대응하는
    버퍼 관리 시스템.
  14. 버퍼로의 액세스를 제어하는 방법에 있어서,
    상기 버퍼로의 제 1 액세스에 대응하는 블록 어드레스 및 오프셋 어드레스를 결정하는 단계와,
    상기 오프셋 어드레스가 상기 블록 어드레스에 대해서 비 순차식인 시점을 결정하는 단계와,
    상기 오프셋 어드레스가 비 순차식일 때, 상기 버퍼로의 제 2 액세스를 상기 블록 어드레스로 제한하는 단계
    를 포함하는 버퍼로의 액세스 제어 방법.
  15. 제 14 항에 있어서,
    상기 오프셋 어드레스가 상기 블록 어드레스에 대해서 순차식인 시점을 결정하는 단계와,
    상기 오프셋 어드레스가 순차식일 때, 상기 버퍼로의 상기 제 2 액세스를 상기 블록 어드레스와 상기 오프셋 어드레스의 조합으로 제한하는 단계
    를 포함하는 버퍼로의 액세스 제어 방법.
  16. 제 14 항에 있어서,
    상기 제 2 액세스를 제한하는 단계는 상기 블록 어드레스의 변화에 대응해서 그레이 코드 시퀀스를 결정하는 단계를 포함하는
    버퍼로의 액세스 제어 방법.
KR10-2004-7003012A 2001-08-29 2002-08-21 버퍼 시스템, 버퍼 관리 시스템 및 버퍼로의 액세스 제어방법 KR20040039315A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/941,478 2001-08-29
US09/941,478 US7457894B2 (en) 2001-08-29 2001-08-29 Synchronization of non-sequential moving pointers
PCT/IB2002/003416 WO2003019350A1 (en) 2001-08-29 2002-08-21 Buffer system with sequential and non-sequential block access

Publications (1)

Publication Number Publication Date
KR20040039315A true KR20040039315A (ko) 2004-05-10

Family

ID=25476541

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7003012A KR20040039315A (ko) 2001-08-29 2002-08-21 버퍼 시스템, 버퍼 관리 시스템 및 버퍼로의 액세스 제어방법

Country Status (6)

Country Link
US (1) US7457894B2 (ko)
EP (1) EP1425656A1 (ko)
JP (1) JP2005501329A (ko)
KR (1) KR20040039315A (ko)
CN (1) CN1549963A (ko)
WO (1) WO2003019350A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395208B2 (en) * 2002-09-27 2008-07-01 Microsoft Corporation Integrating external voices
JP3926374B2 (ja) * 2005-08-15 2007-06-06 株式会社ソニー・コンピュータエンタテインメント バッファ管理方法およびバッファ管理装置
US7620787B2 (en) 2006-01-26 2009-11-17 Intel Corporation Optimizing memory accesses for network applications using indexed register files
JP2010160653A (ja) * 2009-01-07 2010-07-22 Renesas Electronics Corp リングバッファ回路及びその制御回路
FR2948473A1 (fr) * 2009-07-21 2011-01-28 St Ericsson Sa St Ericsson Ltd Circuit d'interface comportant une memoire de type fifo
US9093133B2 (en) 2013-01-03 2015-07-28 Stmicroelectronics S.R.L. Buffer for ordering out-of-order data, and corresponding integrated circuit and method for managing a buffer
US9710415B2 (en) 2014-11-03 2017-07-18 Nxp Usa, Inc. Asynchronous FIFO buffer with Johnson code write pointer
CN107409101B (zh) * 2015-03-30 2021-06-22 瑞典爱立信有限公司 下行链路物理层的天线缓冲管理
CN105933240A (zh) * 2016-04-27 2016-09-07 长沙丰灼通讯科技有限公司 一种有线和无线结合的数据高效传输方法
CN114089946B (zh) * 2022-01-20 2022-04-19 深圳云豹智能有限公司 一种fifo装置和数据处理系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2187006B (en) * 1986-02-25 1990-01-10 Sony Corp Random access memory apparatus
AU609646B2 (en) * 1988-10-14 1991-05-02 Digital Equipment Corporation Method and apparatus for detecting impending overflow and/or underrun of elasticity buffer
US5016221A (en) * 1989-12-01 1991-05-14 National Semiconductor Corporation First-in, first-out (FIFO) memory with variable commit point
US5864713A (en) * 1996-02-12 1999-01-26 Hewlett-Packard Company Method for determining if data should be written at the beginning of a buffer depending on space available after unread data in the buffer
GB2312058B (en) * 1996-04-12 2000-08-09 Sony Uk Ltd Data buffer
US5974516A (en) * 1996-10-18 1999-10-26 Samsung Electronics Co., Ltd. Byte-writable two-dimensional FIFO buffer having storage locations with fields indicating storage location availability and data ordering
US6145061A (en) * 1998-01-07 2000-11-07 Tandem Computers Incorporated Method of management of a circular queue for asynchronous access
DE19850650C2 (de) 1998-11-03 2000-09-07 Texas Instruments Deutschland Verfahren zum Übertragen von Daten
WO2000079378A1 (fr) * 1999-06-22 2000-12-28 Seiko Epson Corporation Dispositif de memoire en liste directe (fifo)
US6625440B1 (en) * 2000-01-31 2003-09-23 Trw Inc. Drum memory controller
US6587112B1 (en) * 2000-07-10 2003-07-01 Hewlett-Packard Development Company, L.P. Window copy-swap using multi-buffer hardware support
US6553448B1 (en) * 2001-03-01 2003-04-22 3Com Corporation Method for unit distance encoding of asynchronous pointers for non-power-of-two sized buffers
US6977948B1 (en) * 2001-08-13 2005-12-20 Utstarcom, Inc. Jitter buffer state management system for data transmitted between synchronous and asynchronous data networks

Also Published As

Publication number Publication date
CN1549963A (zh) 2004-11-24
US20030046498A1 (en) 2003-03-06
EP1425656A1 (en) 2004-06-09
JP2005501329A (ja) 2005-01-13
US7457894B2 (en) 2008-11-25
WO2003019350A1 (en) 2003-03-06

Similar Documents

Publication Publication Date Title
US9048856B2 (en) Data bus inversion apparatus, systems, and methods
US5854911A (en) Data buffer prefetch apparatus and method
US5179372A (en) Video Random Access Memory serial port access
US7234007B2 (en) Adjustable elasticity FIFO buffer have a number of storage cells equal to a frequency offset times a number of data units in a data stream
US6134607A (en) Method and apparatus for controlling data flow between devices connected by a memory
US7436728B2 (en) Fast random access DRAM management method including a method of comparing the address and suspending and storing requests
US5526508A (en) Cache line replacing system for simultaneously storing data into read and write buffers having multiplexer which controls by counter value for bypassing read buffer
US6131151A (en) Processing high-speed digital datastreams with reduced memory
US6473838B1 (en) Data transfer system for multiple network processors using dual DRAM storage
KR20040039315A (ko) 버퍼 시스템, 버퍼 관리 시스템 및 버퍼로의 액세스 제어방법
CN104185083A (zh) 一种自适应丢帧方法与装置
US8261023B2 (en) Data processor
KR100676981B1 (ko) 데이터 처리 장치 및 방법과 컴퓨터 판독가능한 기록 매체
US6008823A (en) Method and apparatus for enhancing access to a shared memory
CN213069802U (zh) 非同源时钟数据传输系统
US6859851B1 (en) Buffer pre-loading for memory service interruptions
KR101560015B1 (ko) 메모리 영역으로의 복수의 프로세서의 액세스를 제어하는 방법 및 상기 방법을 구현하기 위한 메시지 메모리를 구비한 통신 모듈
US20020003839A1 (en) MPEG picture processing apparatus and data transferring method using the apparatus
US6876664B1 (en) Asynchronous data buffer and a method of use thereof
CN112052204B (zh) 非同源时钟数据传输系统
KR100243010B1 (ko) 이더넷 버퍼메모리 제어기
JP2000099450A (ja) バ―ストデ―タ転送の受信装置
CN105553878A (zh) 一种基于fc-av协议的提高ddr2带宽利用率的接收视频数据存储方法
KR20020053265A (ko) 데이터 처리 장치 및 방법
JPH1115605A (ja) ディスクアレイ装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid