KR20010102181A - 원형 어드레스 레지스터 - Google Patents

원형 어드레스 레지스터 Download PDF

Info

Publication number
KR20010102181A
KR20010102181A KR1020017010384A KR20017010384A KR20010102181A KR 20010102181 A KR20010102181 A KR 20010102181A KR 1020017010384 A KR1020017010384 A KR 1020017010384A KR 20017010384 A KR20017010384 A KR 20017010384A KR 20010102181 A KR20010102181 A KR 20010102181A
Authority
KR
South Korea
Prior art keywords
register
circular
address
index
value
Prior art date
Application number
KR1020017010384A
Other languages
English (en)
Other versions
KR100841548B1 (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 롤페스 요하네스 게라투스 알베르투스
Publication of KR20010102181A publication Critical patent/KR20010102181A/ko
Application granted granted Critical
Publication of KR100841548B1 publication Critical patent/KR100841548B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/5055Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination in which one operand is a constant, i.e. incrementers or decrementers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49931Modulo N reduction of final result

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

원형 어드레싱 처리를 용이하게 하는 장치 및 대응 프로그래밍 인스트럭션이 제공된다. 그 장치는 특정 경계 내에 있도록 제약된 어드레스 출력을 제공하도록 구성된다. 어드레스가 그 경계를 초과하게 될 "원형 증가"나 "원형 감소" 인스트럭션이 실행될 때, 그 어드레스는 다른 경계로 리세트된다. 또한, 바람직한 일 실시예에 있어서, 프로그래밍 인스트럭션은 어드레스가 각각의 경계에 있다는 것을 나타내는 조건 플래그를 설정한다. 원형 어드레싱 동작과 관련하여 이들 "경계" 플래그를 제공함으로써, 다중 워드 데이터 항목이 효율적으로 처리될 수 있다. 메모리 내의 N 인접 워드의 베이스 어드레스는 원형 레지스터로 로딩되고, 원형 어드레싱 인스트럭션은 N 인접 어드레스의 각각의 워드를 차례로 액세스하는 데 사용된다. 경계 플래그는 다중 워드 데이터 항목의 최종 워드가 액세스될 때 설정된다. 따라서, 이 경계 플래그는 다중 워드 데이터 항목의 N 워드의 처리의 종료를 시그널링하는 데 사용될 것이고, 다음 다중 워드 데이터 항목의 로딩을 트리거하거나 현재 데이터 항목에 대한 다음 동작을 트리거하는 등에 사용될 수 있다. 또한, 기타 조건 플래그가 다중 워드 데이터 항목의 처리를 용이하게 하는 데 제공된다.

Description

원형 어드레스 레지스터{CIRCULAR ADDRESS REGISTER}
원형 리스트는 흔히 선입 선출 버퍼(FIFO(First-in First-out) buffer)를 구현하는 데 이용된다. FIFO 모델은 리스트의 최상단에 신규 항목을 추가하고, 리스트의 최하단으로부터 기존 항목을 삭제하는 항목 리스트를 나타낸다. 사실상, FIFO는 L개의 데이터 항목으로 이루어진 리스트로서 구성되어, 그 리스트에 데이터 항목이 추가될 때 다음 가용 어드레스 L+1이 부여되고, 그 리스트로부터 데이터 항목이 삭제될 때 그 리스트에 남아있는 각 데이터 항목의 어드레스는 1씩 감소된다. 각 잔여 데이터 항목이 리스트에서 하향 이동할 때마다 데이터 항목은 리스트로부터 제거되지만, 비능률적이다. 그 대신, 규정된 리스트의 "최하단(bottom)"이 1씩 상승될 때마다 데이터 항목이 제거된다. 리스트의 각 데이터 항목의 논리 어드레스는, 계속해서 증가되는 리스트 내의 그의 물리적인 위치에 의해서 규정되는 것이 아니라, 이 리스트의 규정된 최하단으로부터의 거리에 의해서 규정된다. "제거된" 데이터 항목이 리스트의 "최하단" 아래의 물리적인 위치에 남아 있을 수 있더라도, 그들은 더 이상 리스트의 논리적인 어드레스 공간 내에 있지 않고, 더 이상 L 항목의 리스트의 일부로 고려되지 않는다. 당업자에게 명백한 바와 같이, 데이터 항목이 제거된 하부의 물리적인 위치에 대응하여 각 데이터 항목의 물리적인 재배치를 하지 않고서, 각 추가 데이터 항목에 이용되는 물리적인 위치를 지속적으로 전진시키면, 결국 이들 데이터 항목을 수용하는데 물리적인 자원이 전부 소비될 것이다.
원형 리스트는 N 개의 인접 물리적 메모리 위치들과, 신규 데이터 항목을 리스트로 추가하는 대응 제어 메카니즘으로서 구현되고, 이 물리적 메모리 위치들의 선두에서 시작해서, 인접 위치들의 끝에 도달할 때까지 각각의 다음 가용 물리적 위치로 계속된다. 이 인접 위치들의 끝에 도달한 후 다음 데이터 항목이 도착하면, 이 다음 데이터 항목은 인접 위치들의 선두에 저장된 이전 데이터 항목 대신에 인접 위치들의 선두에 배치된다. 각각의 다음 데이터 항목은 인접 위치들의 끝이 다시 초과될 때까지 각각의 다음 물리적 위치에 이전 저장된 데이터 항목 대신에 각각의 다음 물리적 위치에 배치되며, 다시 초과하면 다음 데이터 항목은 인접 위치들의 선두에 배치된다. 이러한 프로세스는 언제나 N 개의 인접 물리적 메모리 위치들을 초과하여 소비하지 않고서 무한히 계속된다. 그러나, 다음 데이터 항목에 의해서 대체되는 이전 데이터 항목이 리스트로부터 개념적으로 "제거된" 데이터 항목이어야 한다는 점에 유의해야 한다. 즉, 리스트의 논리적 길이 L은 인접 위치의 물리적 길이 N을 결코 초과할 수 없다. 종래의 실시예에 있어서, 제어 메카니즘은 포인터를 리스트의 논리적인 '최하단"으로 유지하고, 리스트로부터 제거된 각 데이터 항목에 따라서 그것을 갱신한다. 또한, 포인터를 리스트의 논리적 "최상단"으로 유지하고, 리스트에 추가된 각 데이터 항목에 따라서 그것을 갱신한다. 또한, 제어 메카니즘은, 리스트의 "최상단"이 리스트의 "최하단"과 일치할 때 신규 데이터 항목의 추가를 억제하고, 신규 데이터 항목이 리스트로 배치되기 전에 (리스트에서 가장 오래된 항목의 제거에 의해서) 리스트의 "최하단"이 전진되기를 기다린다.
일반적으로, 원형 리스트와 연관된 포인터의 증가 및 감소를 제어하는데 다중 프로그래밍 인스트럭션들이 요구된다. 인스트럭션은 포인터가 물리적 인접 메모리 위치의 상한이나 하한에 도달했는지를 테스트해서, 이에 따라 원형 어드레싱 효과를 제공하도록 포인터를 조절해야만 한다.
발명의 개요
본 발명의 목적은 원형 리스트의 이용을 용이하게 하는 장치를 제공하는 것이다. 본 발명의 다른 목적은 원형 리스트의 사용을 용이하게 되도록 장치를 프로그래밍하는 태스크를 쉽게 하는 것이다. 본 발명의 또 다른 목적은, 원형 어드레싱 프로세스로서 다중 워드 데이터 항목을 모델링하여 다중 워드 데이터 항목의 이용을 쉽게 하도록 장치를 프로그래밍하는 태스크를 쉽게 하는 것이다.
이들 목적 및 기타 목적은 원형 어드레싱 프로세스를 용이하게 하는 장치 및대응 프로그래밍 인스트럭션을 제공함으로써 달성된다. 그 장치는 특정 경계(specified bounds) 내에 있도록 제약된 어드레스 출력을 제공하도록 구성된다. 어드레스가 그 경계를 초과하게 하는 "원형 증가"나 "원형 감소" 인스트럭션이 실행될 때, 그 어드레스는 다른 경계로 리세트된다. 또한, 바람직한 일 실시예에 있어서, 프로그래밍 인스트럭션은 어드레스가 각 경계에 있다는 것을 나타내는 조건 플래그를 설정한다. 원형 어드레싱 동작과 관련하여 이들 "경계" 플래그를 제공함으로써, 다중 워드 데이터 항목이 능률적으로 처리될 수 있다. 메모리 내의 N 인접 워드들의 베이스 어드레스는 원형 레지스터로 로딩되고, 원형 어드레싱 인스트럭션은 N 인접 워드들의 각 어드레스를 차례로 액세스하는 데 사용된다. 경계 플래그는 다중 워드 데이터 항목의 최종 워드가 액세스될 때 설정된다. 따라서, 이 경계 프래그는 다중 워드 데이터 항목의 N 워드들의 처리 종료를 시그널링하는 데 사용될 것이고, 다음 다중 워드 데이터 항목의 로딩을 트리거하거나 현재 데이터 항목에 대한 다음 동작을 트리거하는 등에 사용될 수 있다. 또한, 기타 조건 플래그가 다중 워드 데이터 항목의 처리를 용이하게 하는 데 제공된다.
본 발명은 컴퓨터 및 프로그래밍 시스템에 관한 것으로서, 보다 구체적으로는 원형 리스트(circular list)를 사용하거나 혹은 다중 워드 피연산자(multiple-word operand)를 반복적으로 처리하는 시스템의 프로그래밍에 관한 것이다.
도 1은 본 발명에 따른 원형 어드레싱을 제공하는 처리 시스템의 예시적인 블록도,
도 2는 본 발명에 따른 원형 어드레스 레지스터의 예시적인 블록도.
첨부된 도면을 참조해서, 본 발명을 더욱 상세히 설명한다.
도면에 있어서, 동일한 참조 번호는 유사하거나 대응하는 특징부 또는 기능을 나타낸다.
도 1은 원형 어드레싱 방안을 통해서 인접 저장 소자 d0-dN-1(111-119)로 이루어진 메모리(110)를 액세스하는 데 사용되는 원형 어드레스 레지스터(200)를 포함하는 처리 시스템(100)을 도시한 도면이다. 원형 어드레스 레지스터(200)는 예컨대, 상술한 원형 리스트에 대응하는 인접 저장 소자(111-119)에 대한 어드레스(101)를 제공한다. 원형 어드레스 레지스터(200)에 포함되는 어드레스(101)는 증가(102)되거나 감소(103)되어, 각기 포인터를 상향 또는 하향으로 전진시킬 수 있다. 원형 어드레스 레지스터(200)는 메모리 소자(111-119)의 어드레스 범위에 대응하는 연관된 상한 및 하한(upper and lower bound)을 판정하도록 구성된다. 바람직한 실시예에 있어서, 어드레스 레지스터(200)가 메모리 소자(111-119)를 원형 리스트나 버퍼로서 처리하도록 구성되면, 베이스 어드레스 Ad(121) 및 크기 N(122)이 제공된다.
프로세서(120)는, 프로그램 인스트럭션(150)에 응답해서, 소정 동작을 실시하도록 원형 어드레스 레지스터(200)에 커맨드(123)를 내린다. 후속 커맨드(123)는 본 발명에 따른 어드레스 레지스터(200)에 적용할 수 있다.
본 명세서에서 숫자 "1"을 사용한 것은 참조하기 쉽게하기 위한 것임에 유의해야 한다. 본 기술 분야에서 흔한 것으로, "워드(word)" 의 크기는 소자 d0-dN-1(111-119)을 어드레싱 하는데 사용되는 척도(scale)와 다를 수도 있다. 즉, 예를 들어, 소자 d0-dN-1(111-119)이 32 비트의 워드를 포함하도록 구성될 수도 있는 반면, 어드레스(101)는 8 비트의 바이트(bytes)나 16 비트의 워드의 측면에서 명시될 수도 있다. 본 명세서에 사용되는 바와 같이, "워드"라는 용어는 소자 d0-dN-1(111-119)의 크기로 규정되고, 원형 어드레스 레지스터(200)에 포함된 어드레스(101)의 증가 및 감소는 1 워드 크기씩 어드레스(101)를 변경하는 것에 대응된다.
당업자라면, 본 발명을 고려하여 상술한 동작을 달성할 수 있는 원형 어드레스 레지스터의 다양한 실시예를 명백히 알 수 있을 것이다. 최소한의 실시예에서는 원형 증가 동작이나 원형 감소 동작 중 어느 하나를 포함할 수 있지만, 본 발명의 바람직한 일 실시예에 있어서는 둘 다 제공된다. 또한, 본 발명의 바람직한 일 실시예에 있어서는, 후술되는 바와 같이 원형 어드레스 레지스터(200)의 통상의 이용 및/또는 대안적 사용을 용이하게 하도록 기타 동작이 제공된다. 위에서 규정된 바와 같은 원형 증가 동작 및 원형 감소 동작을 직접적으로 구현을 하려면, 원형어드레스 레지스터(200)에 포함되는 현재 어드레스(101)와 비교하기 위해서, 베이스 어드레스 Ad(121) 및 N(122)이 저장되어야 함에 유의해야 한다.
도 2는 본 발명에 따른 원형 어드레스 레지스터(200)의 바람직한 실시예를 도시한 도면이다. 원형 어드레스 레지스터(200)는 커맨드 프로세서(210), 인덱스 레지스터(220) 및 어드레스 레지스터(230)를 포함한다. 어드레스 레지스터(230)는 원형 어드레싱 기법을 달성하는 데 사용될 수 있는 어드레스 Aout(231)을 포함한다. 도 1에 도시된 바와 같이, 출력 어드레스 Aout(231)은 일반적으로 어드레싱된 메모리 소자(111-119)의 어드레스(101)에 대응될 것이다. 후술하는 바와 같이, 본 발명에 따른 원형 어드레스 레지스터(200)는 원형 어드레싱 기능에 추가하여 계수 기능(counting function) 등 다른 애플리케이션에 이용될 수 있기 때문에, 다른 참조 번호가 사용된다.
인덱스 레지스터(220)는 0부터 N-1까지의 범위의 인덱스(221)를 포함하고, 원형 어드레싱 애플리케이션에 있어서는 베이스 어드레스 Ain(201)에 대한 어드레싱된 메모리 소자의 상대적 위치에 대응된다. 도 1에 도시된 바와 같이, 입력 베이스 어드레스 Ain(201)은 일반적으로 원형 리스트의 베이스 어드레스 Ad(121)에 대응하거나, 후술하는 다중 워드 데이터 항목 또는 계수 번호의 베이스 어드레스에 대응할 것이다. 파라미터 N(122)은 특정 애플리케이션용으로 구성되는 원형 어드레스 레지스터(200)에 대해 고정값일 수도 있고, 또는 원형 어드레스 레지스터가 특정 용도로 구성될 경우, 가변으로 설정될 수도 있다. N이 고정일 경우, N은 원형 어드레스 레지스터(200) 내에 포함되므로, 프로세서(120)에 의해서 제공될 필요가 없다. 인덱스 레지스터(220)의 크기에 의해서 N(123)의 최대값이 결정된다. 예를 들어, 인덱스 레지스터(220)가 3비트로 이루어지면, N은 8 이하여야 된다. 마찬가지로, 어드레스 레지스터(230)의 크기에 의해서 어드레스(231)의 최대 범위가 결정된다.
바람직한 실시예에 따른 커맨드 프로세서(210)는 커맨드 입력(123)을 수신하여, 이 입력(123)에 따라서 다음 동작을 지원한다.
동작 (1) "Load_L"은 어드레스 레지스터(230)에 입력 어드레스 Ain(201)을 로딩한다. 이후, 이 입력 어드레스 Ain(201)이 원형 어드레싱 애플리케이션의 문맥(context)에 사용될 경우에는, 참조의 편의상 베이스 어드레스 또는 어드레스 공간의 하한이라고 칭한다. 동작 (1) "Load_L"은 어드레스 공간의 하한의 워드에 대응하는 인덱스를 0으로 설정한다.
동작 (2) "Load_U"는 어드레스 레지스터(230)에 어드레스 공간의 상한 Ain(201)을 로딩하고, 어드레스 공간의 상한의 워드에 대응하는 인덱스를 N-1로 설정한다. 이 상이한 로딩 동작 (1) "Load_L"과 (2) "Load_U"는, 어드레스 및 인덱스를 각각의 해당 개시 조건으로 초기화함으로써, 로우에서 하이로의(low-to-high) 데이터 액세스나 하이에서 로우로의(high-to-low) 데이터 액세스를 용이하게 한다.
동작 (3) "Circular Increment"는 원형 증가 어드레싱 기능을 구현한다. 인덱스가 상한(Index=N-1)에 있을 때, 다음 원형 증가 동작 (3)은 어드레스 Aout(231)의 현재 값으로부터 N-1을 빼서 어드레스 Aout(231)을 어드레스 하한으로 리세트하고, 어드레스 하한의 워드에 대응하는 인덱스를 0으로 설정한다. 반면에, 인덱스가 상한에 있지 않으면, 다음 원형 증가 동작 (3)은 어드레스 레지스터 및 인덱스 레지스터의 현재 내용을 증가시킨다.
동작 (4) "Circular Decrement"는 원형 감소 어드레싱 기능을 구현한다. 인덱스가 하한(index=0)에 있으면, 다음 원형 감소 동작 (4)은 어드레스 Aout(231)의 현재 값에 N-1을 가산하여 어드레스 Aout(231)을 어드레스 상한으로 리세트하고, 어드레스 상한의 워드에 대응하는 인덱스를 N-1로 리세트한다. 반면에, 인덱스가 그의 하한에 있지 않으면, 다음 원형 감소 동작(4)은 어드레스 레지스터 및 인덱스 레지스터의 현재 내용을 감소시킨다.
동작 (5) "Increment"는 통상의 증가 동작의 변형된 형태를 구현한다. 증가 동작 (5)는 통상의 레지스터 증가 동작과 마찬가지로 상한 어드레스에 관계없이 Aout(231)을 증가시킨다. 증가 동작 (5)는 원형 증가 동작 (3)과 동일한 방식으로 인덱스를 수정하여, 인덱스를 통해서 " 모듈로 N(modulo N)" 업 카운팅(up-counting) 기능을 수행한다.
동작 (6) "Decrement"는 통상의 감소 동작의 변형된 형태를 구현한다. 감소양식 (6)은 통상의 레지스터 감소 동작과 마찬가지로 하한 어드레스에 관계없이 Aout(231)을 감소시킨다. 감소 동작 (6)은 원형 감소 동작 (4)와 동일한 방식으로 인덱스를 수정하여 인덱스를 통해서 "모듈로 N" 다운 카운팅 기능을 수행한다.
인덱스 레지스터(220)를 사용함으로써, 많은 효과를 거둘 수 있음에 주목해야 한다. 인덱스가 0인지에 대한 테스트(Index=? 0)는 대응 어드레스에 대한 테스트(Address>=? Ad)보다 적은 논리 소자로 구현될 수 있다. 또한, 리스트의 크기인 파라미터 N이 가용 어드레스 공간보다 실질적으로 크기가 작은 경우가 종종 있기 때문에, 인덱스가 인덱스의 상한과 같은지에 대한 테스트(Index=? N-1)는 어드레스의 상한에 대한 테스트(Address>=? Ad+(N-1))보다 적은 논리 소자로 구현될 수 있다. 인덱스 레지스터(220)를 제공하고, 그의 내용을 어드레스 레지스터(230)의 내용과 상관시킴으로써, 베이스 어드레스(Ad)가 유지될 필요가 없고, N이 어드레스 공간보다 작다고 가정하면, 전반적인 저장 공간 요건이 감소된다. 마찬가지로, 어드레스 Aout(231)을 상한이나 하한으로 리세트하기 위해서 어드레스 레지스터 Aout(231)의 현재 내용에 N-1을 가산하거나 감산하는 것은, 일반적으로 베이스 어드레스 Ad에 N-1을 가산하고 그 합을 어드레스 레지스터(230)로 로딩하는 것보다 적은 회로와 라우팅(routing)으로 구현될 수 있다.
또한, 커맨드 프로세서(210)는 후술하는 바와 같이 원형 리스트 및 다중 워드 동작을 용이하게 하는 "경계" 조건 플래그(211, 212)와 같은 (Index=? 0) 비교 및 (Index=? N-1) 비교의 상태를 제공한다. 선택적으로, 커맨드 프로세서(210)는인덱스(221)의 다른 상태를 식별하는, 인덱스(221)의 각각의 값에 대한 별개의 플래그를 포함하는 하나 이상의 플래그(213)를 제공할 수 있다. 또한, 선택적으로, 인덱스(221)는 원형 어드레스 레지스터(200)로부터의 출력으로서 제공될 수도 있다.
경계 플래그(211, 212)는 N 워드 데이터 항목의 처리를 용이하게 하는 데 제공된다. N 워드 데이터 항목의 최종 워드가 어드레스 상한이나 어드레스 하한에서 액세스되면, 데이터 항목이 로우에서 하이로의 방식으로 액세스되는지 또는 하이에서 로우로의 방식으로 액세스되는지에 따라서, 해당 경계 플래그(211, 212)가 설정된다. 당업자에게 주지된 바와 같이, 이 설정된 플래그는 N 워드 프로세스의 종료를 트리거하거나, N 워드 데이터 항목에 대한 다른 프로세스를 시작하거나, 메모리 소자(110-119)의 내용에 다음 N 워드 데이터 항목을 로딩하는데 사용될 수 있다.
상술한 바와 같이, 다중 어드레스 레지스터(200)는 원형 리스트의 처리를 용이하게 하도록 구성된 레지스터들로서 자주 이용된다. 예를 들어, 한 쌍의 레지스터는 상술한 "최상단(top) 리스트 포인터 및 "최하단(bottom)" 리스트 포인터를 제공하도록 구성될 수 있다. 또한, 예를 들어, 다중 데이터 항목에 대한 파이프라인 동작을 용이하게 하도록, 다중 어드레스 레지스터(200)는 메모리 소자(110-119)의 다중 세트를 액세스하기 위해 구성될 수도 있다. 도 2에 도시된 바와 같이, 바람직한 일 실시예에 있어서, 다음 어드레스(215)도 원형 어드레스 레지스터로부터의 출력으로서 제공되어, 파이프라인 동작을 용이하게 할 수 있다. 또한, 다음 다음 어드레스(next-next-address)와 같은 추가 어드레스도 3단 파이프 라인 등을 용이하게 하는 데 제공될 수 있다.
임의의 레지스터가 인덱스 레지스터 및 어드레스 레지스터(230)로서 이용될 수 있지만, 원형 어드레싱 기능을 수행하도록 최적화된 전용 레지스터(special purpose register)를 사용하는 것이 바람직하다. 즉, 예를 들어, 처리 시스템이 한정된 어드레스 공간 내의 데이터 항목을 처리하도록 구성된 경우, 어드레스 레지스터(230)는 이 한정된 어드레스 공간을 충분히 수용할 수 있을 정도로 넓기만 하면 된다. 마찬가지로, 처리 시스템이 N 워드 데이터 항목을 처리하도록 구성된 경우, 인덱스 레지스터(220)는 어드레스 레지스터의 크기에 관계없이 이 크기 N을 충분히 수용할 수 있을 정도로 넓기만 하면 된다.
상술한 실시예는 단지 본 발명의 원리를 설명한 것이다. 따라서, 당업자라면, - 비록 본 명세서 내에 명확히 기재되거나 도시되어 있지 않더라도 - 본 발명의 사상 및 범주 내에서 본 발명의 원리를 구체화하는 다양한 장치를 고안할 수 있음을 알 수 있을 것이다. 예를 들어, 도 2에 도시된 바와 같이, 옵션의 Aout=? 0 플래그(214)가 "Load_L" 및 "Decrement" 동작이나 "Increment" 동작과 함께 효율적 계수 기능을 용이하게 하는데 제공될 수도 있다. 즉, 어드레스 레지스터(230)의 내용이 어드레스 포인터가 될 필요 없이, 계수값 M으로 로딩될 수도 있다. 후속하는 감소 동작은 Aout=? 0의 플래그의 설정을 야기하여, M 계수의 완료를 신호로 시그널링할(signaling) 것이다. 이들 및 기타 시스템 구성과 최적화된 특징은, 본 발명의 관점에서 당업자에게 명백할 것이고, 첨부된 특허 청구 범위의 범주 내에 포함된다.

Claims (14)

  1. 처리 시스템(100)에 있어서,
    프로그램 인스트럭션(150)을 실행하도록 구성된 프로세서(120)와,
    프로세서(120)로부터의 커맨드(123)를 수신하도록 구성된, 연관된 상한 및 하한을 갖는 원형 어드레스 레지스터(200)를 포함하되,
    상기 커맨드(123)는,
    원형 어드레스 레지스터(200)의 내용(content)(101)을 증가시키고, 상기 내용(101)이 상기 상한에 도달한 후 상기 내용(101)을 상기 하한으로 리세트하는 원형 증가 커맨드(102)와,
    원형 어드레스 레지스터(200)의 내용(101)을 감소시키고, 상기 내용(101)이 상기 하한에 도달한 후 상기 내용(101)을 상기 상한으로 리세트하는 원형 감소 커맨드(103) 중 적어도 하나를 포함하는
    처리 시스템(100).
  2. 제 1 항에 있어서,
    상기 원형 어드레스 레지스터(200)는,
    상기 내용(101)이 상기 하한 및 상한 중 적어도 하나와 동일할 때, 적어도 하나의 경계 플래그(211, 212)를 어써트(assert)하도록 구성되는 처리시스템(100).
  3. 제 1 항에 있어서,
    상기 원형 어드레스(200)는,
    상기 내용(101)의 값이 0일 때, 내용 = 0 플래그(a content-equal-zero flag)(214)를 어써트하도록 추가로 구성되는 처리 시스템(100).
  4. 제 1 항에 있어서,
    상기 상한과 하한 사이의 범위 내에 있는 관련 어드레스를 갖는 인접 메모리 소자(111-119)를 구비하는 메모리(110)를 더 포함하는 처리 시스템(100).
  5. 제 1 항에 있어서,
    상기 원형 어드레스 레지스터(200)는,
    상기 원형 어드레스 레지스터(200)의 내용(101)을 포함하도록 구성된 어드레스 레지스터(230)와,
    상기 내용(101)으로 로딩된 베이스 어드레스(201)에 대한 상기 원형 어드레스 레지스터(200)의 내용(101)에 대응하는 인덱스(221)를 제공하도록 구성된인덱스 레지스터(220)를 포함하는 처리 시스템(100).
  6. 제 5 항에 있어서,
    상기 하한은 상기 인덱스(221)가 0을 갖는 것에 대응하고,
    상기 상한은 상기 인덱스(221)가 특정값을 갖는 것에 대응하는 처리 시스템(100).
  7. 제 6 항에 있어서,
    상기 어드레스 레지스터(230)는, 최대 상한을 포함하도록 최소 크기로 구성되고,
    상기 인덱스 레지스터(220)는, 상기 최대 상한과 다른 최대 특정값을 포함하도록 최소 크기로 구성되는 처리 시스템(100).
  8. 제 7 항에 있어서,
    상기 커맨드(123)는,
    상기 상한과 관계없이 상기 원형 어드레스 레지스터(200)의 내용(101)을 증가시키도록 구성되는 증가 커맨드와,
    상기 하한과 관계없이 상기 원형 어드레스 레지스터(200)의 내용(101)을 감소시키도록 구성되는 감소 커맨드 중 적어도 하나를 더 포함하는 처리 시스템(100).
  9. 제 1 항에 있어서,
    상기 원형 어드레스 레지스터(200)는,
    상기 내용(101)의 값이 0일 때, 내용 = 0 플래그(214)를 어써트하도록 추가로 구성되는 처리 시스템(100).
  10. 레지스터(230)를 갱신하는 방법에 있어서,
    상기 레지스터(230)에 베이스 어드레스(201)를 로딩하는 단계와,
    인덱스 레지스터(230)에 초기값을 로딩하는 단계와,
    상기 인덱스 레지스터(220)가 경계값(a bound value)을 포함하면, 상기 레지스터(230)에 제 1 값을 가산하고, 상기 인덱스 레지스터(220)를 사전 규정된 값으로 리세트하는 단계와,
    상기 인덱스 레지스터(220)가 상기 경계값을 포함하지 않으면, 상기 레지스터(230) 및 인덱스 레지스터(220)에 제 2 값을 가산하는 단계
    를 포함하는 레지스터(230) 갱신 방법.
  11. 제 10 항에 있어서,
    상기 초기값은 0에 대응하고,
    상기 경계값은 상한(upper limit)에 대응하고,
    상기 제 1 값은 상기 경계값의 음수에 대응하며,
    상기 제 2 값은 1에 대응하는 레지스터(230) 갱신 방법.
  12. 제 10 항에 있어서,
    상기 초기값은 상한에 대응하고,
    상기 경계값은 0에 대응하고,
    상기 제 1 값은 상기 초기값에 대응하며,
    상기 제 2 값은 -1에 대응하는 레지스터(230) 갱신 방법.
  13. 원형 어드레스 레지스터(200)에 있어서,
    인덱스(221)를 포함하도록 구성되는 인덱스 레지스터(220)와,
    어드레스(231)를 포함하도록 구성되는 어드레스 레지스터(230)와,
    상기 인덱스 레지스터(220)와 상기 어드레스 레지스터(230)에 동작 가능하게 접속되어, 레지스터 커맨드(123)와 인덱스(221)에 따라, 상기 어드레스레지스터(230)와 상기 인덱스 레지스터(220)를 갱신하도록 구성되는 커맨드 프로세서(210)를 포함하는 원형 어드레스 레지스터(200).
  14. 제 13 항에 있어서,
    상기 커맨드 프로세서(210)는
    상기 레지스터 커맨드(210)가 원형 증가 커맨드(102)와 원형 감소 커맨드(103) 중 적어도 하나일 때,
    상기 인덱스(221)가 경계값과 같으면, 제 1 값을 상기 어드레스(231)에 가산하고, 상기 인덱스(221)를 사전결정된 값으로 리세트하며,
    상기 인덱스(221)가 상기 한계값과 다르면, 제 2 값을 상기 어드레스(231) 및 상기 인덱스(221)에 가산함으로써,
    상기 어드레스 레지스터(230)를 갱신하도록 구성되는
    원형 어드레스 레지스터(200).
KR1020017010384A 1999-12-17 2000-12-05 처리 시스템 KR100841548B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/466,404 1999-12-17
US09/466,404 US6782447B2 (en) 1999-12-17 1999-12-17 Circular address register

Publications (2)

Publication Number Publication Date
KR20010102181A true KR20010102181A (ko) 2001-11-15
KR100841548B1 KR100841548B1 (ko) 2008-06-26

Family

ID=23851625

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017010384A KR100841548B1 (ko) 1999-12-17 2000-12-05 처리 시스템

Country Status (6)

Country Link
US (1) US6782447B2 (ko)
EP (1) EP1183599B1 (ko)
JP (1) JP2003517676A (ko)
KR (1) KR100841548B1 (ko)
TW (1) TW521211B (ko)
WO (1) WO2001044921A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US7039789B2 (en) * 2002-03-11 2006-05-02 Texas Instruments Incorporated Circular addressing algorithms providing increased compatibility with one or more higher-level programming languages
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US7873810B2 (en) * 2004-10-01 2011-01-18 Mips Technologies, Inc. Microprocessor instruction using address index values to enable access of a virtual buffer in circular fashion
WO2006073512A1 (en) 2005-08-11 2006-07-13 Mips Technologies, Inc. Microprocessor instruction to enable access of a virtual buffer in circular fashion
US7315937B2 (en) * 2004-10-01 2008-01-01 Mips Technologies, Inc. Microprocessor instructions for efficient bit stream extractions
US7296029B2 (en) * 2004-10-12 2007-11-13 International Business Machines Corporation Environmentally responsive oscillating circular affinity index
US8219782B2 (en) * 2008-09-18 2012-07-10 Xilinx, Inc. Address generation
EP2641188B1 (en) * 2010-11-16 2018-07-11 Tibco Software Inc. Locking and signaling for implementing messaging transports with shared memory
US10180829B2 (en) * 2015-12-15 2019-01-15 Nxp Usa, Inc. System and method for modulo addressing vectorization with invariant code motion

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4202035A (en) * 1977-11-25 1980-05-06 Mcdonnell Douglas Corporation Modulo addressing apparatus for use in a microprocessor
US4809156A (en) 1984-03-19 1989-02-28 Trw Inc. Address generator circuit
US4908748A (en) 1987-07-28 1990-03-13 Texas Instruments Incorporated Data processing device with parallel circular addressing hardware
US5032986A (en) * 1987-07-28 1991-07-16 Texas Instruments Incorporated Data processing device with parallel circular addressing hardware
FR2666916A1 (fr) * 1990-09-19 1992-03-20 Alcatel Radiotelephone Vanne regulatrice de debit.
US5623621A (en) 1990-11-02 1997-04-22 Analog Devices, Inc. Apparatus for generating target addresses within a circular buffer including a register for storing position and size of the circular buffer
JP2692384B2 (ja) * 1990-12-29 1997-12-17 日本電気株式会社 アドレス生成回路
FR2718262B1 (fr) * 1994-03-31 1996-05-24 Sgs Thomson Microelectronics Mémoire tampon à adressage modulo.
US5659698A (en) * 1994-11-01 1997-08-19 Motorola, Inc. Method and apparatus for generating a circular buffer address in integrated circuit that performs multiple communications tasks
US5659700A (en) 1995-02-14 1997-08-19 Winbond Electronis Corporation Apparatus and method for generating a modulo address
US5983333A (en) * 1997-08-27 1999-11-09 Lucent Technologies Inc. High speed module address generator

Also Published As

Publication number Publication date
US20030105917A1 (en) 2003-06-05
US6782447B2 (en) 2004-08-24
TW521211B (en) 2003-02-21
KR100841548B1 (ko) 2008-06-26
JP2003517676A (ja) 2003-05-27
EP1183599B1 (en) 2013-08-14
WO2001044921A2 (en) 2001-06-21
WO2001044921A3 (en) 2001-11-08
EP1183599A2 (en) 2002-03-06

Similar Documents

Publication Publication Date Title
KR100339904B1 (ko) 캐시 프로세스용 시스템 및 방법
US7599287B2 (en) Tokens in token buckets maintained among primary and secondary storages
US8516163B2 (en) Hardware-based concurrent direct memory access (DMA) engines on serial rapid input/output SRIO interface
US5634046A (en) General purpose use of a stack pointer register
US20200364054A1 (en) Processor subroutine cache
KR100841548B1 (ko) 처리 시스템
US5636362A (en) Programmable high watermark in stack frame cache using second region as a storage if first region is full and an event having a predetermined minimum priority
US6873180B2 (en) Multi-access FIFO queue
US20030110166A1 (en) Queue management
WO2005081113A2 (en) Memory allocation
CN113900974B (zh) 一种存储装置、数据存储方法及相关设备
US20110113197A1 (en) Queue arrays in network devices
US6502183B2 (en) Stack oriented data processing device
US7290119B2 (en) Memory accelerator with two instruction set fetch path to prefetch second set while executing first set of number of instructions in access delay to instruction cycle ratio
US20030131162A1 (en) Non-destructive read FIFO
EP2590082A1 (en) Cache memory apparatus, cache control method, and microprocessor system
US6976110B2 (en) Method and apparatus for reducing interrupt latency by dynamic buffer sizing
US6415365B1 (en) Write buffer for use in a data processing apparatus
US20040268085A1 (en) Memory interface circuit
US6886159B2 (en) Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
US10963402B1 (en) Using age matrices for managing entries in sub-queues of a queue
KR19980056298A (ko) 환형 큐를 이용한 동적 데이터 블럭 전송 장치 및 방법
US20020032846A1 (en) Memory management apparatus and method
US6944725B2 (en) Reciprocally adjustable dual queue mechanism
CN113474761A (zh) 用于配置多个核心独立外围设备的可编程任意序列直接存储器存取控制器

Legal Events

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

Payment date: 20130531

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 12