KR20090019806A - Circular register arrays of a computer - Google Patents

Circular register arrays of a computer Download PDF

Info

Publication number
KR20090019806A
KR20090019806A KR1020087028864A KR20087028864A KR20090019806A KR 20090019806 A KR20090019806 A KR 20090019806A KR 1020087028864 A KR1020087028864 A KR 1020087028864A KR 20087028864 A KR20087028864 A KR 20087028864A KR 20090019806 A KR20090019806 A KR 20090019806A
Authority
KR
South Korea
Prior art keywords
registers
stack
array
register
bit
Prior art date
Application number
KR1020087028864A
Other languages
Korean (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
Priority claimed from US11/441,812 external-priority patent/US7913069B2/en
Priority claimed from US11/441,818 external-priority patent/US7934075B2/en
Priority claimed from US11/441,784 external-priority patent/US7752422B2/en
Priority claimed from US11/503,372 external-priority patent/US7617383B2/en
Application filed by 브이엔에스 포트폴리오 엘엘씨 filed Critical 브이엔에스 포트폴리오 엘엘씨
Publication of KR20090019806A publication Critical patent/KR20090019806A/en

Links

Images

Classifications

    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

A stack processor comprises a data stack with a T register, an S register, and eight hardwired bottom registers which function in a circular repeating pattern. The stack processor also comprises a return stack containing an R register, and eight hardwired bottom registers which function in a circular repeating pattern. The circular register arrays described herein eliminate overflow and underflow stack conditions.

Description

컴퓨터의 순환 레지스터 어레이{CIRCULAR REGISTER ARRAYS OF A COMPUTER}Circular register array in a computer {CIRCULAR REGISTER ARRAYS OF A COMPUTER}

본 출원은 2006년 6월 30일에 출원된 미국 가출원 No. 60/818,084에 대한 우선권을 주장하는 것으로서, 이는 2006년 5월 26일에 출원된 시리얼 넘버 11/441, 818, "Method and Apparatus for Monitoring Inputs to a Computer"의 일부계속출원(CIP)이고, 이것은 또한 2006년 2월 16일에 출원된 시리얼 넘버 11/355,513, "Asynchronous Power Saving Computer"의 일부계속출원이다. 본 출원은 또한 2006년 3월 31일에 출원된 가출원 No. 60/788,265와, 2006년 5월 3일에 출원된 가출원 No. 60/797,345에 대한 우선권을 주장한다. 상기의 모든 인용 출원들은 본 명세서에 참조로서 통합되어 있다.This application is filed on June 30, 2006, in US Provisional Application No. Priority to 60 / 818,084, which is part of the continuous application (CIP) of serial number 11/441, 818, "Method and Apparatus for Monitoring Inputs to a Computer," filed May 26, 2006, which is It is also part of the serial application 11 / 355,513, filed on February 16, 2006, entitled "Asynchronous Power Saving Computer." This application also claims provisional application no. 60 / 788,265, and provisional application No. filed May 3, 2006. Claim priority on 60 / 797,345. All of the above cited applications are incorporated herein by reference.

본 발명은 컴퓨터 및 컴퓨터 프로세서들 분야에 관한 것으로서, 특히 스택 컴퓨터 프로세서 내부의 스택의 보다 효율적인 이용방법 및 이용수단에 관한 것이다.TECHNICAL FIELD The present invention relates to the field of computers and computer processors, and more particularly, to more efficient use and means of use of a stack inside a stack computer processor.

스택 머신들은 CICS(Complex Instruction Set Computer)보다 프로세서가 덜 복합하고, 전체 시스템도 CICS 머신 또는 RICS(Reduced Instruction Set Computer)중 어느 것보다 덜 복잡하다. 덜 복잡하면서도, 이들은 양호한 성능을 위한 캐시 제어 하드웨어 또는 복잡한 컴파일러들을 필요로 하지 않는다. 이들은 또한 경쟁력 있는 성능(raw performance)과, 대다수의 프로그래밍 환경들에서 주어진 가격에 대해 탁월한 성능을 보여준다. 그들의 제 1 성공적 애플리케이션 영역은 실시간 임베디드 제어 환경에서, 성능에 있어서 다른 시스템 설계 방식들을 압도한다. 스택들은 대다수가 미리 프로그램 메모리 내에 유지되었는데, 새로운 스택 머신들은 별개의 메모리 칩들을 유지하거나 또는 스택들을 위한 온-칩 메모리 영역을 유지한다. 이들 스택 머신들은 매우 빠른 서브루틴 호출 능력을 제공하고, 인터럽트 핸들링 및 태스크 스위칭에 대한 탁월한 성능을 제공한다.Stacked machines have less processor complexity than Complex Instruction Set Computers (CICS), and the overall system is less complex than either CICS machines or Reduced Instruction Set Computers (RICs). While less complex, they do not require cache control hardware or complex compilers for good performance. They also show excellent raw performance and excellent performance for a given price in most programming environments. Their first successful application area outweighs other system design approaches in performance in a real-time embedded control environment. Most of the stacks have been previously held in program memory, while new stack machines either maintain separate memory chips or maintain on-chip memory areas for the stacks. These stack machines provide very fast subroutine call capability and provide excellent performance for interrupt handling and task switching.

그러나, 스택 오버플로우 또는 언더플로우 조건들에 대한 어떠한 하드웨어 검출도 존재하지 않는다. 스택 오버플로우는 이용가능한 레지스터들의 수가 충분하지 않은 때에 발생하고, 이는 스택에 계속하여 입력시켜, 하위 레지스터(들)이 겹쳐쓰여지게(overwritten) 한다. 스택 언더플로우는 모든 레지스터들이 비워진(emptied) 때에 발생하며, 의도하지 않은 결과 또는 부정확한 결과를 만들어 내는 스택의 팝핑(popping)이 계속되게 한다. 어느 다른 스택 프로세서들은 스택 포인터들과 메모리 관리를 사용하여, 스택 포인터가 스택에 할당된 메모리의 범위를 넘어서는 때에 에러 조건이 플래그되게(flagged) 한다. 미국 특허 No. 6,367,005(Zahir et al.)는 스택 오버플로우의 이벤트 내에서 더 많은 이용가능한 레지스터들을 제공하기 위해 레지스터 스택의 충분한 레지스터들을 메모리에 저장하는 레지스터 스택 엔진을 개시한다. 레지스터 스택 엔진은 또한 상기 엔진이 스택 언더플로우의 이벤트 내의 레지스터들의 적절한 개수를 복구할 수 있을 때까지 마이크로프로세서를 지연시킨다. However, there is no hardware detection for stack overflow or underflow conditions. Stack overflow occurs when there are not enough registers available, which continues to enter the stack, causing the lower register (s) to be overwritten. Stack underflow occurs when all registers are emptied and causes the stack's popping to continue, producing unintended or incorrect results. Some other stack processors use stack pointers and memory management to cause an error condition to be flagged when the stack pointer goes beyond the range of memory allocated to the stack. U.S. Patent No. 6,367,005 (Zahir et al.) Discloses a register stack engine that stores enough registers in a register stack in memory to provide more available registers within the event of a stack overflow. The register stack engine also delays the microprocessor until the engine can recover the proper number of registers in the event of stack underflow.

미국 특허 No. 6,219,685는 동작의 결과를 임계값과 비교하는 방법을 개시하고 있다. 그러나, 이러한 방식은 끝수를 떼어(rounded down) 임계값과 같아지는 결과들(오버플로우 예외를 일으킬 것임)과 임계값과 동일하게 발생하는 결과들을 구별하지 못한다. 상기 특허에 의해 개시된 또 다른 방법은 하드웨어 플래그들을 판독하고 기록하여 오버플로우 또는 언더플로우 조건들을 식별하는 것이다. 그러나, 명령들은 반드시 순차적으로 수행되어야 하므로, 레지스터 판독/기록에 후속하는 어느 명령들은 상기 판독/기록 동작이 완료될 때까지는 진행할 수 없고, 이는 느린 프로세스를 야기한다.U.S. Patent No. 6,219,685 discloses a method of comparing the result of an operation to a threshold. However, this approach does not distinguish between results that equal the threshold (which will cause an overflow exception) and results that occur equal to the threshold. Another method disclosed by the patent is to read and write hardware flags to identify overflow or underflow conditions. However, since the instructions must be executed sequentially, any instructions following the register read / write cannot proceed until the read / write operation is completed, which causes a slow process.

메모리 내에 스택이 있는 경우, 오버플로우 또는 언더플로우가 스택 아이템을 겹쳐쓰거나 스택의 일부가 되지 않은 스택 아이템을 사용할 것이다. 스택 내부의 오버플로우 또는 언더플로우를 제거하거나 감소시키는 향상된 방법에 대한 요구가 존재한다.If there are stacks in memory, overflow or underflow will use stack items that either overwrite stack items or are not part of the stack. There is a need for an improved method of eliminating or reducing overflow or underflow within a stack.

본 발명의 목적은 듀얼 스택 프로세서의 데이터 스택과 리턴 스택이 스택 포인터에 의해 액세스되는 메모리 내의 어레이들이 아닌, 개별 전용 시프트 레지스터에 의해 액세스되는 하드와이어(hardwire)인 방법 및 장치를 제공하는 것이다.It is an object of the present invention to provide a method and apparatus in which the data stack and return stack of a dual stack processor are hardwires accessed by individual dedicated shift registers, rather than arrays in memory accessed by stack pointers.

본 발명의 또 다른 목적은 데이터 또는 리턴 스택의 오버플로우 및 언더플로우를 제거하거나 감소시키는 것이다.It is another object of the present invention to eliminate or reduce overflow and underflow of data or return stacks.

본 발명의 또 다른 목적은 하나의 양방향 스택 레지스터의 1 비트 스택 레지스터들 사이의 전기적 연결들의 길이를 최소화하여, 필요한 드라이버 사이즈를 최소화하고 버퍼링을 최소화하는 것이다.It is another object of the present invention to minimize the length of electrical connections between the 1 bit stack registers of one bidirectional stack register, thereby minimizing the required driver size and minimizing buffering.

이들 목적들 및 다른 목적들은, 여기에 기술된 발명, 즉 종래의 스택이 순환적, 반복되는 패턴으로 동작하는 레지스터들의 어레이로 대체되는 발명에 의해 달성될 수 있다. 이 순환적, 반복되는 패턴은, 교대(교번:alternating)하는 패턴으로 전기적으로 상호접속된 복수의 1 비트 시프트 레지스터들을 포함하는 연관된 양-방향 시프트 레지스터의 이용을 통해 달성된다. 이러한 구성은 스택의 바깥쪽으로부터의 판독을 방지하고, 의도하지 않은 빈 레지스터 값을 판독하는 것을 방지한다.These and other objects can be achieved by the invention described herein, that is, the invention in which a conventional stack is replaced by an array of registers operating in a circular, repeating pattern. This cyclical, repeating pattern is achieved through the use of an associated bi-directional shift register comprising a plurality of 1-bit shift registers electrically interconnected in an alternating pattern. This configuration prevents reading from the outside of the stack and prevents reading unintended empty register values.

상기에 기술된 듀얼 스택 프로세서는 독립적으로 기능하는 프로세서로서 기능할 수 있거나, 상호접속된 컴퓨터 어레이 내의 다른 유사한 프로세스들 또는 상이한 프로세서들과 함께 사용될 수 있다. The dual stack processor described above can function as an independently functioning processor or can be used with other similar processors or different processors in an interconnected computer array.

도 1은 스택 컴퓨터의 일반적 레이아웃을 도시하는 블록 다이어그램이다.1 is a block diagram illustrating a general layout of a stack computer.

도 2는 본 발명에 따른 데이터 스택이다.2 is a data stack in accordance with the present invention.

도 3은 스택의 단일 레지스터에 대한 상세한 도면이다.3 is a detailed view of a single register of the stack.

도 4는 본 발명에 따른 리턴 스택이다.4 is a return stack in accordance with the present invention.

도 5는 본 발명에 따른 컴퓨터 어레이에 대한 도면이다.5 is a diagram of a computer array in accordance with the present invention.

도 6은 도 5의 상호접속 데이터 버스들에 대한 상세한 도면이자 도 5의 컴퓨터들의 서브세트를 도시하고 있는 상세한 다이어그램이다.FIG. 6 is a detailed diagram of the interconnect data buses of FIG. 5 and a detailed diagram illustrating a subset of the computers of FIG.

도면에서 동일한 참조 번호들은 동일하거나 유사한 구성요소들을 나타내는 바, 본 발명은 이러한 도면들을 참조로 하여 기술된다. 본 발명이 본 발명의 목적들을 달성하기 위한 모드들의 관점에서 기술되어 있지만, 당업자는 본 출원에서 주장되는 발명의 범위 또는 사상을 벗어나지 않은 범위에서 본 발명의 목적들을 달성할 수 있는 다양한 변형들이 존재함을 이해할 수 있을 것이다.The same reference numbers in the drawings represent the same or similar components, the present invention is described with reference to these drawings. Although the present invention has been described in terms of modes for achieving the objects of the present invention, there are various modifications that will enable those skilled in the art to achieve the objects of the present invention without departing from the scope or spirit of the invention as claimed in this application. You will understand.

본 명세서에 기술된 본 발명의 실시예들 및 변형들은 단지 예시적인 것으로서 본 발명의 범위를 제한하는 것이 아니다. 구체적으로 언급되지 아니하였더라도, 본 발명은 다양하게 변형될 수 있는 것이기에, 본 발명의 각 실시형태들과 구성요소들은 출원된 발명의 사상 및 범위 내에서 다양한 애플리케이션들에 대해 수정되거나 생략될 수 있다.The embodiments and variations of the invention described herein are illustrative only and are not intended to limit the scope of the invention. Although not specifically mentioned, the present invention may be variously modified, and thus, each embodiment and component of the present invention may be modified or omitted for various applications within the spirit and scope of the disclosed invention.

도 1은 본 발명에 사용되는 것과 같은 듀얼 스택 컴퓨터(12)의 일반적 레이아웃을 도시하고 있는 블록 다이어그램이다. 상기 컴퓨터(12)는 일반적으로 그것의 RAM(24)과 ROM(26)을 갖는 자기 포함된 컴퓨터이다.1 is a block diagram illustrating the general layout of a dual stack computer 12 as used in the present invention. The computer 12 is generally a self contained computer with its RAM 24 and ROM 26.

상기 컴퓨터(12)의 다른 기본적인 구성요소들은 R 레지스터(29)를 포함하는 리턴 스택(28), 명령 영역(30), ALU(또는 프로세서)(32), 데이터 스택(34), 그리고 디코딩 명령들을 위한 디코딩 로직 섹션(36)이다. 상기 컴퓨터는 데이터 스택(34)과 별개의 리턴 스택(28)을 갖는 듀얼 스택 컴퓨터이다. 당업자는 이러한 예에서의 상기 컴퓨터(12)와 같은 스택 기반 컴퓨터들의 동작에 대해 일반적으로 친숙할 것이다.The other basic components of the computer 12 include a return stack 28, an instruction region 30, an ALU (or processor) 32, a data stack 34, and decoding instructions, including an R register 29. Decoding logic section 36. The computer is a dual stack computer with a return stack 28 separate from the data stack 34. Those skilled in the art will generally be familiar with the operation of stack-based computers, such as the computer 12 in this example.

현재 기술된 실시예에서, 상기 명령 영역(30)은 여러 개의 레지스터를 포함하는데, 이 예에서는 상기 레지스터들(40)은 A 레지스터(40a), B 레지스터(40b), P 레지스터(40c)를 포함한다. 이 예에서는, 상기 A 레지스터(40a)는 풀 18-비트 레지스터이고, 상기 B 레지스터(40b)와 상기 P 레지스터(40c)는 9-비트 레지스터이다.In the presently described embodiment, the instruction area 30 includes several registers, in which the registers 40 include the A register 40a, the B register 40b, and the P register 40c. do. In this example, the A register 40a is a full 18-bit register, and the B register 40b and the P register 40c are 9-bit registers.

본 발명은, 데이터 및 리턴 스택들이, 주기적, 반복되는, 또는 순환적 패턴으로 동작하는 레지스터들의 어레이를 포함하여 구성되는 스택 컴퓨터 프로세서를 개시하고 있다. 상기 데이터 스택과 리턴 스택은 많은 선행 기술에서의 컴퓨터들처럼 스택 포인터에 의해 액세스되는 메모리 내의 어레이들이 아니다.The present invention discloses a stack computer processor in which data and return stacks comprise an array of registers operating in a periodic, repeating, or cyclical pattern. The data stack and return stack are not arrays in memory that are accessed by the stack pointer like many prior art computers.

도 2는 본 발명에 따른 18-비트 데이터 스택에 대한 실시예를 개시하고 있다. 상기 데이터 스택 내의 상위 2 개의 레지스터들은 18-비트 T 레지스터, 18-비트 S 레지스터이다. 상기 데이터 스택의 나머지 부분은 8 개의 추가적인 18-비트 하드웨어 레지스터들을 포함하는데, 이들은 이 예에서 S2부터 S9로 참조된다. 순환적 레지스터 어레이, S2-S9는 T 레지스터 및 S 레지스터가 없는 때에도 동작할 수 있다. 그러나, S2-S9 레지스터들과 함께 적어도 S 레지스터가 존재하는 것은 더욱 빠른 액세스 회로를 제공하고 최적 타이밍을 제공하여, 순환 레지스터 어레이의 보다 높은 동작 속도를 제공한다. 또한, 상기 S 레지스터는 어드레스 가능한 S2-S9 레지스터들과 프로세서 시스템의 나머지 부분 사이에서 버퍼로서 동작한다. 이는 S2-S9 레지스터들과 프로세서 시스템의 나머지 부분 사이에서 타이밍 독립성을 제공한다.2 discloses an embodiment for an 18-bit data stack in accordance with the present invention. The upper two registers in the data stack are an 18-bit T register, an 18-bit S register. The rest of the data stack contains eight additional 18-bit hardware registers, which in this example are referred to as S 2 through S 9 . The circular register array, S 2 -S 9 , can operate even in the absence of the T register and the S register. However, the presence of at least an S register along with the S 2 -S 9 registers provides faster access circuitry and provides optimal timing, providing higher operating speed of the circular register array. The S register also acts as a buffer between the addressable S 2 -S 9 registers and the rest of the processor system. This provides timing independence between the S 2 -S 9 registers and the rest of the processor system.

이 실시예는 또한 복수의 1 비트 시프트 레지스터들을 포함하는 양-방향 시 프트 레지스터를 포함한다. 1 비트 시프트 레지스터들의 개수는 하위 레지스터들의 개수와 일치하고, 이 하위 스택 레지스터는 S 레지스터 아래에 위치한 S2-S9이다. 각 1 비트 시프트 레지스터는 도 2에 도시된 바와 같이 대응되는 S2-S9 스택 레지스터들에 연결되어 있다. 1 비트 시프트 레지스터들은 교번하는 패턴으로 전기적으로 상호접속되어 있어서, 순차적 순환 상호접속 패턴으로 동작하는 스택의 S2-S9 레지스터들은 도 2에 도시된 바와 같이 S2-> S4-> S6-> S8-> S9-> S7-> S5-> S3-> S2로 주어진다. 하위 스택 레지스터들의 이 순차적 선택은 순환적 반복 패턴으로 동작한다. 1 비트 시프트 레지스터들의 상호접속 도선들은 3 개보다 더 많은 인접한 시프트 레지스터들에 확장되지는 않고, 이는 하위 시프트 레지스터와 상위 시프트 레지스터를 연결하는 긴 도선이 필요하지 않게 한다. 이들 짧은 도선들은 더 작은 드라이버를 필요로 하고, 버퍼링이 또한 최소화된다. 주어진 실시예는 순환 레지스터 어레이에 대한 8 개의 추가적인 스택 레지스터들을 이용한다. 그러나, 4 개의 다단자(multiple)들에 사용되는 하위 레지스터들의 다른 조합들도 또한 사용될 수 있다.This embodiment also includes a bi-directional shift register that includes a plurality of one bit shift registers. The number of 1-bit shift registers matches the number of lower registers, which are S 2 -S 9 located below the S register. Each one bit shift register is coupled to corresponding S 2 -S 9 stack registers as shown in FIG. 2. The 1-bit shift registers are electrically interconnected in an alternating pattern, so that the S 2 -S 9 registers of the stack operating in a sequential cyclic interconnect pattern are shown as S 2- > S 4- > S 6 as shown in FIG. -> S 8- > S 9- > S 7- > S 5- > S 3- > S 2 This sequential selection of lower stack registers operates in a circular repeating pattern. The interconnect leads of one bit shift registers do not extend to more than three adjacent shift registers, which eliminates the need for long leads connecting the lower and upper shift registers. These short leads require smaller drivers and buffering is also minimized. The given embodiment uses eight additional stack registers for the circular register array. However, other combinations of lower registers used for four multiples may also be used.

도 2는 또한 T 레지스터, S 레지스터와 함께 S2-S9 레지스터들을 상호접속하는 판독 버스 및 기록 버스를 개시하고 있다. 양-방향 시프트 레지스터의 각 1 비트 시프트 레지스터는 S2-S9 어레이 내부의 대응되는 하위 스택 레지스터에 연결되고, 여기서 시프트 레지스터의 단 하나의 비트는 동시에 1로서 판독되고(on되고), 다른 모든 비트들은 0으로서 판독된다. 파워-업에서, 시프트 레지스터는 하나의 비트를 1로, 다른 모든 비트들을 0으로 정확히 설정하는 것을 포함하게끔 초기화된다. 주어진 예에서, 시프트 레지스터의 상위(top) 비트는 S2를 가리키거나 판독하고, 상호접속된 인접 레지스터 S4에 기록한다. 2 also discloses a read bus and a write bus that interconnect the S 2 -S 9 registers with the T register, S register. Each 1-bit shift register of the bi-directional shift register is connected to the corresponding lower stack register inside the S 2 -S 9 array, where only one bit of the shift register is simultaneously read on (on) and all other The bits are read as zeros. In power-up, the shift register is initialized to include exactly setting one bit to one and all other bits to zero. In the given example, the top bit of the shift register indicates or reads S 2 and writes to the interconnected adjacent register S 4 .

T 레지스터, S 레지스터, 그리고 S2-S9 레지스터들에 의해 10개의 셀로 이루어진 후입 선출(deep push down) 스택이 형성된다. 하위 9 개의 레지스터들이 순환적 버퍼이기 때문에, 하드웨어는 오버플로우 또는 언더플로우하지 않고 랩(wrap)한다. 10개보다 더 많은 레지스터를 스택에 입력하여 그들 모두를 다시 되돌려받기를 기대하여서는 안 되며, 스택의 하위부분으로부터 영구적으로 취해진 마지막 8 개의 아이템들의 더 많은 카피들을 취하는 것은 가능하다. 에러를 의미하는 언더플로우는 존재하지 않는다. 8 개의 워드들(또는 4개, 2개 또는 1개)의 패턴을 복제하는 것이 가장 빠른 방법일 수 있는데, 이는 프로그램이 스택으로부터 값들을 취하는 것을 유지하는 경우에 하위 8 개는 되풀이하여 판독될 것이기 때문이다. The T register, S register, and S 2 -S 9 registers form a deep push down stack of 10 cells. Since the lower nine registers are circular buffers, the hardware wraps without overflow or underflow. You shouldn't expect to get more than 10 registers on the stack and get them all back, and it's possible to take more copies of the last eight items that are permanently taken from the lower part of the stack. There is no underflow that means an error. Duplicating a pattern of eight words (or four, two or one) may be the fastest way, if the lower eight will be read repeatedly if the program keeps taking values from the stack. Because.

유사하게, 스택 포인터들이 스택이 어느 곳으로 이동하게 하는 것을 의미하는 스택 오버플로우는 일어나지 않는다. 스택은 유한하기 때문에, 만약 10 개보다 많은 아이템이 스택에 입력되는 경우에는, 마지막 10개만이 남아있을 것이다: 먼저인 10개 이후의 아이템은 각각 S2-S9 레지스터들 중 하나를 겹쳐쓸(overwrite) 것이다. 스택을 소정의 위치로 '초기화'할 필요는 없으며, 스택이 있는 어느 곳이든 그곳으로부터 스택을 이용하는 것을 시작함에 의해 스택이 비었음(empty)을 단지 선 언한다.Similarly, no stack overflow occurs, which means that the stack pointers cause the stack to move somewhere. Because the stack is finite, if more than 10 items are entered into the stack, only the last 10 items will remain: the first 10 items after that will each overwrite one of the S 2 -S 9 registers ( overwrite). There is no need to 'initialize' the stack to a given location, but just declare that the stack is empty by starting using the stack from anywhere in the stack.

도 3은 데이터 또는 리턴 스택 내부의 각 레지스터에 대한 확장된 도면이다. 각 18 비트 레지스터는 0부터 17까지 번호가 붙여진 18 개의 래치들을 포함하여 구성된다. 18 개의 입력 패스 게이트들(0부터 17까지 번호 붙여짐)의 세트가 존재하는데, 이들 각각은 판독 버스 및 기록 버스를 통해 상기 18 개의 래치들에 연결되어 있다. 또한, 18 개의 출력 패스 게이트들(0부터 17까지 번호 붙여짐)의 세트가 존재하는데, 이들 각각은 상기 판독 버스와 상기 기록 버스를 통해 상기 18 개의 래치들에 연결되어 있다. 상기 입력 패스 게이트들은 인버터 증폭기들의 기록 제어에 의해 제어되고; 상기 출력 패스 게이트들은 인버터 증폭기들의 판독 제어에 의해 제어된다.3 is an expanded view of each register within a data or return stack. Each 18-bit register contains 18 latches numbered 0 through 17. There are a set of 18 input pass gates (numbered 0 through 17), each of which is connected to the 18 latches via a read bus and a write bus. There is also a set of 18 output pass gates (numbered 0 through 17), each of which is connected to the 18 latches via the read bus and the write bus. The input pass gates are controlled by write control of inverter amplifiers; The output pass gates are controlled by read control of the inverter amplifiers.

도 4는 본 발명에 따른 18-비트 스택을 개시하고 있다. 리턴 스택 내의 상위 레지스터는 18-비트 R 레지스터이고, 8 개의 추가적인 18-비트 하드웨어 레지스터들은 상기 R 레지스터 아래에 존재하며, 여기서는 R1-R8로 참조번호가 부여된다. 하위 8 개의 레지스터들, R1-R8은 반복되는 순환 어레이로서 교대하는 패턴으로 기능하는데, 이는 상기에 개시된 데이터 스택과 유사하다.4 discloses an 18-bit stack in accordance with the present invention. The upper register in the return stack is an 18-bit R register, and eight additional 18-bit hardware registers are below the R register, where R 1 -R 8 are referenced. The lower eight registers, R 1 -R 8 , function in an alternating pattern as a repeating circular array, similar to the data stack disclosed above.

순환 레지스터 어레이, R1-R8은 R 레지스터가 존재하지 않는 경우에도 동작할 수 있다. 그러나, R1-R8 레지스터들과 함께 R 레지스터가 존재하는 것은 더 빠른 액세스 회로를 제공하고 최적 타이밍을 제공하여, 순환 레지스터 어레이의 동작 속 도가 빨라진다. 또한, R 레지스터는 R1-R8 어드레스 가능한 레지스터들과 프로세서 시스템의 나머지 부분 사이에서 버퍼로서 동작하는데, 이는 R1-R8 어드레스 가능한 레지스터들과 프로세서 시스템의 나머지 부분 사이에서 타이밍 독립성을 제공한다.The circular register arrays, R 1 -R 8 , can operate even when no R register is present. However, the presence of the R register along with the R 1 -R 8 registers provides faster access circuitry and provides optimal timing, which speeds up the operation of the circular register array. In addition, R register provides an independent timing between R 1 -R 8 address to act as a buffer between the remainder of the available register and the processor system, which is R 1 -R 8 remainder of the addressable register and the processor system .

이 실시예는 또한 복수의 1 비트 시프트 레지스터들을 포함하는 양-방향 시프트 레지스터를 포함하여 구성된다. 1 비트 시프트 레지스터들의 개수는 추가적인 하위 레지스터들인, R 레지스터 아래의 R1-R8의 개수와 일치한다. 각 1 비트 시프트 레지스터는 도 4에 도시된 바와 같이 대응되는 R1-R8 하위 스택 레지스터에 연결된다. 상기 양-방향 시프트 레지스터의 상기 1 비트 시프트 레지스터들은 교번하는 패턴으로 전기적으로 상호접속되어 있어서, 순차적인 순환 상호접속 패턴으로 동작하는 스택의 R1-R8 레지스터들은 도 4에 도시된 바와 같이 R1-> R3-> R5-> R7-> R8-> R6-> R4-> R2-> R1과 같이 주어진다. 레지스터들의 이 순환적 선택은 순환적 반복 패턴으로 동작한다. 시프트 레지스터의 상호접속 도선들은 3 개보다 많은 인접한 1 비트 시프트 레지스터들로 확장하지는 않고, 이는 하위 1 비트 시프트 레지스터와 상위 1 비트 시프트 레지스터를 연결하는 긴 도선이 필요하지 않게 한다. 이들 짧은 도선들은 더 작은 드라이버를 필요로 하고, 버퍼링이 또한 최소화된다. 8 개의 추가적인 리턴 레지스터들이 주어진 실시예에서 개시되어 있지만, 4개의 다단자(multiple)들인 다른 하위 레지스터 조합들도 이 순환 레지스터 어레이에 사용될 수 있다. 판독 버스와 기록 버스는 R1-R8 레지스터들을 상호접속시킨다. 시프트 레 지스터의 각 1 비트 레지스터는 R1-R8 어레이 내부의 대응되는 스택 레지스터에 연결된다. 시프트 레지스터의 단 하나의 비트가 동시에 1로서 판독되고(on되고), 다른 모든 비트들은 0으로서 판독된다. 파워-업에서, 시프트 레지스터는 하나의 비트를 1로, 다른 모든 비트들을 0으로 정확히 설정하는 것을 포함하게끔 초기화된다. 주어진 예에서, 시프트 레지스터의 상위 비트는 R1를 가리키거나 판독하고, 상호접속된 인접 레지스터 R3에 기록한다. This embodiment also comprises a bi-directional shift register comprising a plurality of 1 bit shift registers. The number of one bit shift registers corresponds to the number of R 1 -R 8 below the R register, which is an additional lower register. Each one bit shift register is coupled to the corresponding R 1 -R 8 lower stack register as shown in FIG. 4. The 1-bit shift registers of the bi-directional shift register are electrically interconnected in an alternating pattern such that the R 1 -R 8 registers of the stack operating in a sequential cyclic interconnect pattern are R as shown in FIG. 4. 1- > R 3- > R 5- > R 7- > R 8- > R 6- > R 4- > R 2- > R 1 This recursive selection of registers operates in a recursive repeating pattern. The interconnect leads of the shift register do not extend to more than three adjacent 1-bit shift registers, which eliminates the need for long leads connecting the lower 1-bit shift register and the upper 1-bit shift register. These short leads require smaller drivers and buffering is also minimized. Eight additional return registers are disclosed in the given embodiment, but other lower register combinations of four multiples may also be used in this circular register array. The read bus and write bus interconnect the R 1 -R 8 registers. Each 1-bit register of the shift register is connected to the corresponding stack register inside the R 1 -R 8 array. Only one bit of the shift register is read (on) at one time and all other bits are read as zero. In power-up, the shift register is initialized to include exactly setting one bit to one and all other bits to zero. In the given example, the upper bits of the shift register indicate or read R 1 and write to the interconnected adjacent register R 3 .

본 발명에서, 스택 오버플로우 또는 언더플로우 조건들의 하드웨어 검출이 존재하지 않는다. 일반적으로, 선행 기술 프로세서들은 스택 포인터들과 메모리 관리 또는 그와 유사한 것들을 사용하여, 스택 포인터가 스택에 할당된 메모리의 범위를 넘어서는 때에 에러 조건이 플래그(flagged)된다. 스택들이 메모리에 할당되거나 유지되는 때에, 오버플로우 또는 언더플로우는 스택 아이템을 겹쳐쓰기(overwrite)하거나 스택 아이템을 의도된 것과 다르게 사용할 수 있다. 그러나, 본 발명의 하위 레지스터들은 순환 어레이로서 기능하기 때문에, 스택들은 스택 영역을 벗어나서 오버플로우하거나 언더플로우할 수 없다. 대신에, 순환 어레이들은 레지스터들의 어레이 주위에서 단지 랩(wrap)할 것이다. 스택들이 유한한 깊이를 갖기 때문에, 스택 수단의 상위에 어느 것을 입력하게 되면 하위 부분은 겹쳐쓰이게 된다. 주어진 실시예에서, 10 개를 초과하는 아이템들을 데이터 스택에 입력하거나, 리턴 스택에 9 개를 초과하는 아이템들을 입력하게 되면, 스택의 하위 부분에서 아이템이 겹쳐쓰여지는 결과를 낳을 수밖에 없다. In the present invention, there is no hardware detection of stack overflow or underflow conditions. Generally, prior art processors use stack pointers and memory management or the like to flag an error condition when the stack pointer goes beyond the range of memory allocated to the stack. When stacks are allocated or maintained in memory, overflow or underflow may overwrite the stack item or use the stack item differently than intended. However, because the lower registers of the present invention function as a circular array, the stacks cannot overflow or underflow beyond the stack area. Instead, circular arrays will only wrap around an array of registers. Since the stacks have a finite depth, entering anything above the stack means will overwrite the lower part. In a given embodiment, entering more than 10 items into the data stack, or entering more than nine items into the return stack will result in items being overwritten in the lower portion of the stack.

스택들 상의 아이템들의 개수를 기록하고 각 스택들이 유지할 수 있는 개수보다 많은 아이템들을 입력하지 않는 것은 소프트웨어의 책임이다. 하드웨어는 스택의 하위 부분에서의 아이템들의 겹쳐쓰기를 검출하지 않거나 그것을 에러로서 플래그하지 않을 것이다. 소프트웨어가 여러 방식으로 스택들의 하위 부분에서 순환 어레이들을 이용할 수 있음을 주목해야 한다. 일 예로서, 소프트웨어는 스택이 어느 시각에 "비었음(empty)"을 단순히 가정할 수 있다. 오래된 아이템들은, 그것들이 스택이 채워짐에 따라 손실되게 되는 하위 부분으로 밀리게 될 것이므로, 오래된 아이템들을 스택으로부터 삭제할 필요는 없어서, 스택이 비어있음을 가정하기 위해 프로그램을 초기화하지 않아도 된다.It is the software's responsibility to record the number of items on the stacks and not enter more items than each stack can hold. The hardware will not detect the overwriting of items in the lower part of the stack or flag it as an error. It should be noted that software can use circular arrays in the lower portion of the stacks in several ways. As one example, the software may simply assume that the stack is "empty" at some time. Older items will be pushed into the lower part where they will be lost as the stack is filled, so there is no need to delete old items from the stack, so there is no need to initialize the program to assume that the stack is empty.

이용될 수 있는 또 다른 이점은 레지스터 아이템들을 재사용을 위해 재로드(reload)할 필요 없이 레지스터 아이템들을 재사용하는 것이다. 이들 스택들의 하위 8 개의 아이템들은 또한 스택 랩(wrap)의 이점을 이용하는 루프들에서 판독되거나 기록될 수 있다. 2 회의 데이터 스택 판독 이후에, T와 S는 하위 8 개의 스택 레지스터들의 순환 어레이로부터 2 개 아이템들의 카피들을 가질 것이다. 8 회의 판독을 더 거친 이후에, T와 S는 스택 랩을 이용하여 하위로부터 다시 판독되는 동일한 값으로 다시 재로드될 것이다. 아이템들을 복제하거나 스택으로 되돌려 기록하지 않고 이 8 개의 아이템들이 스택의 시퀀스 내에서 판독될 수 있는 횟수에는 제한이 없다. 데이터 스택 또는 리턴 스택에서의 8개, 4개, 또는 2 개의 셀들로 반복될 수 있는 파라미터들의 세트를 통해 순환하는 알고리즘들은, 스택 에러가 아닌 경우에 하위 레지스터들이 단지 랩(wrap)함에 따라, 스택으로부터 파라미터들을 반 복적으로 판독할 수 있다. Another advantage that can be used is to reuse register items without having to reload the register items for reuse. The lower eight items of these stacks can also be read or written in loops that take advantage of the stack wrap. After two data stack reads, T and S will have copies of two items from the circular array of lower eight stack registers. After 8 more reads, T and S will be reloaded back to the same value read back from the bottom using the stack wrap. There is no limit to the number of times these eight items can be read in a sequence of stacks without duplicating or writing back to the stack. Algorithms that cycle through a set of parameters that can be repeated in eight, four, or two cells in a data stack or return stack are stacks as the lower registers only wrap if not a stack error. Parameters can be read repeatedly from.

본 발명이 듀얼 스택 18-비트 프로세서의 데이터 스택과 리턴 스택에 대한 실시예로 기술되었지만, 다른 비트 사이즈의 프로세서들도 본 발명과 함께 이용될 수 있다.Although the present invention has been described as an embodiment for the data stack and return stack of a dual stack 18-bit processor, other bit size processors may also be used with the present invention.

상기에 기술된 순환 레지스터 어레이들은 단일 듀얼 스택 프로세서에 대해 기술되었다. 그러나, 상기에 기술된 순환 레지스터 어레이들은 또한 도 5에 도시된 컴퓨터 어레이(10)와 같은 여러 자기-포함(self-contained) 컴퓨터들의 어레이에도 이용될 수 있다. 이 컴퓨터 어레이(10)는 복수의(도시된 예에서는 24개) 컴퓨터들(때때로 이 어레이의 예에서는 "코어" 또는 "노드"들로 언급된다)을 갖는다. 도시된 예에서, 컴퓨터들(12) 모두는 단일 다이(14)에 위치한다. 본 발명에 따르면, 컴퓨터들(12) 각각은 일반적으로 컴퓨터에 독립적으로 기능한다. 컴퓨터들(12)은 복수의 상호접속 데이터 버스들(16)에 의해 상호접속되어 있다. 이 예에서는, 데이터 버스들(16)은 양방향 비동기 고속 병렬 데이터 버스들인데, 이는 본 발명의 범위 내에 있는 것으로서, 본 발명의 범위 내의 다른 상호접속 수단들도 동일한 목적으로 사용될 수 있을 것이다.The circular register arrays described above have been described for a single dual stack processor. However, the circular register arrays described above may also be used in an array of several self-contained computers, such as the computer array 10 shown in FIG. This computer array 10 has a plurality of (24 in the example shown) computers (sometimes referred to as "cores" or "nodes" in the example of this array). In the example shown, all of the computers 12 are located on a single die 14. In accordance with the present invention, each of the computers 12 generally functions independently of the computer. Computers 12 are interconnected by a plurality of interconnect data buses 16. In this example, the data buses 16 are bidirectional asynchronous high speed parallel data buses, which are within the scope of the present invention, and other interconnecting means within the scope of the present invention may be used for the same purpose.

컴퓨터(12e)는 어레이(10)의 주변에 있지 않은 컴퓨터들(12) 중 하나에 대한 예이다. 즉, 컴퓨터(12e)는 4 개의 직각으로 인접한 컴퓨터들(12a, 12b, 12c, 12d)를 갖는다. 컴퓨터들(12a부터 12e)의 이 그룹화는, 예시적인 것으로서 어레이(10)의 컴퓨터들(12) 간 통신들에 대한 보다 상세한 논의와의 관계에서 여기서부터 이용될 것이다. 도 5에서 확인할 수 있는 바와 같이, 컴퓨터(12e)와 같은 내부 컴퓨 터들은 버스들(16)을 통해 직접 통신할 수 있는 대상인 4 개의 다른 컴퓨터들(12)을 가질 것이다. 하기의 논의에서, 상기에서 논의된 원리들은, 어레이(10)의 주변에 있는 컴퓨터들(12)이 상기 컴퓨터들(12) 중 단지 다른 3 개와 직접 통신하거나, 코너 컴퓨터들(12)의 경우 단지 다른 2개의 컴퓨터와 직접 통신할 것으로 기대되는 모든 컴퓨터들(12)에 적용된다. Computer 12e is an example of one of computers 12 that is not in the periphery of array 10. That is, the computer 12e has four orthogonally adjacent computers 12a, 12b, 12c, 12d. This grouping of computers 12a through 12e will be used herein in the context of a more detailed discussion of communications between the computers 12 of the array 10 as illustrative. As can be seen in FIG. 5, internal computers such as computer 12e will have four other computers 12 that are the objects that can communicate directly via buses 16. In the discussion that follows, the principles discussed above allow computers 12 in the periphery of the array 10 to communicate directly with only the other three of the computers 12, or in the case of corner computers 12 only. This applies to all computers 12 that are expected to communicate directly with the other two computers.

도 6은 컴퓨터들(12) 중 단지 일부를 도시하고 있는 도 5의 일부에 대한 보다 상세한 도면으로서, 특히, 컴퓨터들(12a부터 12e)을 도시하고 있다. 도 6은 또한 각각 판독 라인(18), 기록 라인(20), 그리고 복수의 데이터 라인들(22)(이 예에서는 18개)를 갖는 데이터 버스들(16)을 보여주고 있다. 이 데이터 라인들(22)은 하나의 18-비트 명령 워드의 모든 비트들을 일반적으로 병렬로 동시에 전송할 수 있다.FIG. 6 is a more detailed view of a portion of FIG. 5 showing only some of the computers 12, in particular showing the computers 12a through 12e. 6 also shows data buses 16 with read lines 18, write lines 20, and a plurality of data lines 22 (18 in this example). These data lines 22 can transmit all bits of one 18-bit command word, generally in parallel at the same time.

진보적인 본 방법에 따르면, 컴퓨터(12e)와 같은 컴퓨터(12)는 그것의 판독 라인들(18) 중 1개, 2개, 3개, 또는 4개 전부를 하이(high)로 세팅할 수 있어서, 1개, 2개, 3개, 또는 4개의 인접 컴퓨터들(12) 각각으로부터 데이터를 수신할 준비를 할 수 있다. 유사하게, 컴퓨터(12)는 또한 그것의 기록 라인들(20) 중 1개, 2개, 3개, 또는 4개 전부를 하이(high)로 세팅할 수 있다.According to the inventive method, a computer 12, such as computer 12e, can set one, two, three, or all four of its read lines 18 high. , One, two, three, or four adjacent computers 12 may be ready to receive data. Similarly, computer 12 may also set one, two, three, or all four of its write lines 20 to high.

인접한 컴퓨터들 중 하나(12a, 12b, 12c, 또는 12d)가 기록 라인(20)을 그 자신과 컴퓨터(12e) 사이의 기록 라인(20)을 하이(high)로 세팅하는 때에, 만약 컴퓨터(12e)가 이미 대응되는 판독 라인(18)을 하이(high)로 세팅하였다면, 워드는 결합된 데이터 라인들(22)을 통해 컴퓨터(12a, 12b, 12c 또는 12d)로부터 컴퓨 터(12e)로 전송된다. 그 다음, 전송 컴퓨터(12)는 전송하는 것은 기록 라인(20)을 자유롭게 하고 수신 컴퓨터(이 예에서는 12e)는 기록 라인(20) 및 판독 라인(18) 모두를 로우(low)가 되게 한다. 수신 컴퓨터(12e)의 상기 동작은 데이터가 수신되었음을 전송 컴퓨터(12)에 통지할 것이다.When one of the adjacent computers 12a, 12b, 12c, or 12d sets the write line 20 high between itself and the computer 12e, if the computer 12e Has already set the corresponding read line 18 high, the word is transmitted from computer 12a, 12b, 12c or 12d to computer 12e via combined data lines 22. . The transmitting computer 12 then transmits frees the write line 20 and the receiving computer (12e in this example) causes both the write line 20 and the read line 18 to be low. This operation of the receiving computer 12e will notify the sending computer 12 that data has been received.

도 1에 도시된 바와 같이, 본 발명의 이 실시예에서, 컴퓨터(12)는 상기에 기술된 바와 같이 인접 컴퓨터들(12)과 통신을 위한 4 개의 통신 포트들(38)을 갖는다. 이 통신 포트들(38)은 오프(off) 상태, 수신 상태(신호들을 컴퓨터(12)에 공급하기 위해), 전송 상태(컴퓨터(12)로부터 신호들을 전송)를 갖는 3-가지 상태의 드라이버이다. 특정 컴퓨터(12)가 컴퓨터(12e)의 예와 같이 어레이(도 5)의 내부에 있지 않은 경우에는, 하나 이상의 통신 포트들(38)이 그 특정 컴퓨터에서 적어도 상기에 기술된 목적으로는 사용되지 않을 것이다. 그러나, 다이의 에지에 접하는 그러한 통신 포트들(38)은 추가적인 회로를 가질 수 있는데, 이는 그러한 컴퓨터(12) 내로 설계되거나 또는 컴퓨터(12) 외부에 설계되는데, 컴퓨터(12)와 결합되어, 그러한 통신 포트(38)가 외부 I/O 포트(39)(도 5)처럼 동작하게 한다. 그러한 외부 I/O 포트(39)의 예는 USB 포트, RS232 시리얼 버스 포트, 병렬 통신 포트, 아날로그-대-디지털 및/또는 디지털-대-아날로그 변환 포트, 그리고 많은 다른 가능한 포트들을 포함하고, 이에 국한되지는 아니한다. 도 5에서, "에지" 컴퓨터(12f)는 외부 I/O 포트(39)를 통해 외부 장치(82)와 통신하는 결합된 인터페이스 회로(80)와 함께 도시되어 있다.As shown in FIG. 1, in this embodiment of the present invention, the computer 12 has four communication ports 38 for communicating with neighboring computers 12 as described above. These communication ports 38 are three-state drivers with an off state, a receive state (to supply signals to the computer 12), and a transmit state (send signals from the computer 12). . If a particular computer 12 is not inside the array (FIG. 5) as in the example of computer 12e, one or more communication ports 38 are not used at least for the purposes described above in that particular computer. Will not. However, such communication ports 38 at the edge of the die may have additional circuitry, which is designed into such a computer 12 or external to the computer 12, in combination with the computer 12, such that The communication port 38 causes it to operate like the external I / O port 39 (FIG. 5). Examples of such external I / O ports 39 include, but are not limited to, USB ports, RS232 serial bus ports, parallel communication ports, analog-to-digital and / or digital-to-analog conversion ports, and many other possible ports. It is not limited. In FIG. 5, an "edge" computer 12f is shown with coupled interface circuit 80 that communicates with an external device 82 via an external I / O port 39.

본 발명의 가치와 범위를 벗어나지 않는 한도에서 다양한 수정들이 가해질 수 있다. 예를 들어, 본 발명은 특정 컴퓨터들(12)을 이용하는 것으로 기술되어 있지만, 진보적인 실시형태들 중 다수 또는 전부가 다른 컴퓨터 설계, 다른 컴퓨터 어레이 등에 쉽게 이용될 수 있다.Various modifications may be made without departing from the spirit and scope of the invention. For example, although the invention is described as using particular computers 12, many or all of the inventive embodiments may be readily utilized in other computer designs, other computer arrays, and the like.

본 발명이 우선 단일 다이(14) 상의 어레이(10) 상의 어레이(10) 내의 컴퓨터들(12) 간의 통신들에 관하여 개시되어 있지만, 동일한 원리들 및 방법들은 예컨대 컴퓨터(120)와 그것의 전용 메모리 간의 통신, 또는 어레이(10) 내의 컴퓨터(12)와 외부 장치 간의 통신과 같은 다른 내부-장치 통신들을 달성하는데에 이용되거나, 수정되어 이용될 수 있다. Although the present invention is first described with respect to communications between computers 12 in array 10 on array 10 on single die 14, the same principles and methods are for example computer 120 and its dedicated memory. It may be used or modified to achieve other inter-device communications such as inter-communication, or communication between the computer 12 and an external device in the array 10.

유사하게, 본 발명은 본 명세서에서 듀얼 스택 프로세서에 대해 개시되어 있지만, 본 발명은 단일 스택 프로세서 또는 2 개보다 많은 개수의 스택들을 포함하는 프로세서에 대해서도 또한 이용될 수 있다.Similarly, although the present invention is disclosed herein with respect to a dual stack processor, the present invention may also be used for a single stack processor or a processor including more than two stacks.

상기의 모든 내용은 단지 본 발명의 이용가능한 실시예들에 대한 예들의 일부일 뿐이다. 당업자는 본 발명의 범위 및 사상을 벗어나지 않는 한도에서 많은 다양한 수정안들 및 대안들이 이루어질 수 있음을 쉽게 파악할 수 있을 것이다. 따라서, 본 명세서의 개시사항은 본 발명의 범위를 제한하는 것이 아니라, 첨부된 특허청구범위가 본 발명의 전체 범위를 포괄하는 것으로 해석되어야 한다. All of the above is merely a part of examples of available embodiments of the present invention. Those skilled in the art will readily appreciate that many various modifications and alternatives may be made without departing from the scope and spirit of the invention. Accordingly, the disclosure of this specification should not be construed as limiting the scope of the invention, but rather as the appended claims cover the full scope of the invention.

Claims (42)

데이터 및 코드를 저장하기 위한 메모리와;A memory for storing data and codes; 상기 데이터 및 코드를 프로세싱하는 프로세서와; 그리고A processor for processing the data and code; And 상기 프로세서에 의해 스택(stack)으로서 이용될 수 있는 복수의 하드웨어 레지스터들을 포함하여 구성되는 스택 컴퓨터.A stack computer comprising a plurality of hardware registers that can be used as a stack by the processor. 제 1 항에 있어서,The method of claim 1, 상기 복수의 하드웨어 레지스터들의 레지스터들은 미리 결정된 반복 시퀀스에 따라 순방향 순서(forward order)로 또는 역방향 순서(reverse order)로 액세스되는 것을 특징으로 하는 스택 컴퓨터.And wherein the registers of the plurality of hardware registers are accessed in forward order or reverse order according to a predetermined iteration sequence. 제 2 항에 있어서,The method of claim 2, 상기 레지스터들이 상기 순방향 순서로 액세스되는 때에, 상기 시퀀스 내의 상기 레지스터들 중 첫 번째 레지스터는 상기 시퀀스 내의 상기 레지스터들 중 마지막 레지스터 이후에 액세스되고;When the registers are accessed in the forward order, the first of the registers in the sequence is accessed after the last of the registers in the sequence; 상기 레지스터들이 상기 역방향 순서로 액세스되는 때에, 상기 레지스터들 중 상기 마지막 레지스터는 상기 레지스터들 중 상기 첫 번째 레지스터 이후에 액세스되는 것을 특징으로 하는 스택 컴퓨터. And when the registers are accessed in the reverse order, the last one of the registers is accessed after the first one of the registers. 제 1 항에 있어서,The method of claim 1, 복수의 단일 비트 레지스터들을 포함하는 양-방향 시프트 레지스터를 더 포함하여 구성되며, 상기 단일 비트 레지스터 각각의 출력은 적어도 부분적으로 액세스를 제어하기 위해 상기 레지스터들 중 연관된 하나의 레지스터에 결합되고, 상기 양-방향 시프트 레지스터는 상기 단일 비트 레지스터들을 따라 비트를 시프트함으로써 스택 포인터로서 기능하는 것을 특징으로 하는 스택 컴퓨터.And further comprising a bi-directional shift register comprising a plurality of single bit registers, wherein the output of each of the single bit registers is coupled to an associated one of the registers at least in part to control access, the amount A direction shift register serving as a stack pointer by shifting bits along the single bit registers. 제 1 항에 있어서,The method of claim 1, 상기 단일 비트 레지스터들 중 마지막 레지스터는 상기 단일 비트 레지스터들 중 첫 번째 레지스터에 결합되어, 상기 단일 비트 레지스터들은 상기 단일 비트 레지스터들을 따라 시프트되는 상기 비트에 대한 순환 경로(circular path)를 제공하는 것을 특징으로 하는 스택 컴퓨터. A last one of the single bit registers is coupled to a first one of the single bit registers, the single bit registers providing a circular path for the bit shifted along the single bit registers Stack computer. 적어도 하나의 데이터 레지스터를 포함하는 데이터 스택과; 그리고A data stack comprising at least one data register; And 적어도 하나의 리턴 레지스터를 포함하는 리턴 스택을 포함하여 구성되며;A return stack comprising at least one return register; 상기 데이터 스택 및 상기 리턴 스택 각각은 18 비트 명령 워드를 수용(accommodate)할 수 있는 것을 특징으로 하는 스택 컴퓨터 프로세서.And wherein each of the data stack and the return stack can accept an 18 bit instruction word. 제 6 항에 있어서,The method of claim 6, 상기 적어도 하나의 데이터 레지스터는 스택(T) 레지스터의 상위부(top)를 포함하는 것을 특징으로 하는 스택 컴퓨터 프로세서. And said at least one data register comprises a top of a stack (T) register. 제 7 항에 있어서,The method of claim 7, wherein 상기 적어도 하나의 데이터 레지스터는 상기 스택(S) 레지스터 상의 제 2 위치를 더 포함하는 것을 특징으로 하는 스택 컴퓨터 프로세서.And said at least one data register further comprises a second location on said stack (S) register. 제 6 항에 있어서,The method of claim 6, 상기 적어도 하나의 리턴 레지스터는 상위 레지스터(R)를 포함하는 것을 특징으로 하는 스택 컴퓨터 프로세서.And said at least one return register comprises an upper register (R). 제 6 항에 있어서,The method of claim 6, 상기 데이터 스택은 하드웨어 레지스터들의 어레이를 더 포함하는 것을 특징으로 하는 스택 컴퓨터 프로세서.And the data stack further comprises an array of hardware registers. 제 6 항에 있어서,The method of claim 6, 상기 리턴 스택은 하드웨어 레지스터들의 어레이를 더 포함하는 것을 특징으로 하는 스택 컴퓨터 프로세서.And the return stack further comprises an array of hardware registers. 제 10 항에 있어서,The method of claim 10, 상기 어레이는 순환 패턴으로 동작하는 것을 특징으로 하는 스택 컴퓨터 프 로세서.And the array operates in a cyclical pattern. 제 11 항에 있어서,The method of claim 11, 상기 어레이는 순환 패턴으로 동작하는 것을 특징으로 하는 스택 컴퓨터 프로세서.And the array operates in a cyclical pattern. 컴퓨터 프로세서 제작방법으로서:To build a computer processor: 복수의 명령 워드들을 상기 프로세서의 대응되는 복수의 명령 셀들에 입력하는 단계와; 그리고Inputting a plurality of command words into corresponding plurality of command cells of the processor; And 상기 복수의 명령 워드들을 프로세싱하는 단계를 포함하며, Processing the plurality of command words, 상기 입력 및 상기 프로세싱으로 인하여 명령들의 어떠한 오버플로우 또는 언더플로우도 일어나지 않는 것을 특징으로 하는 컴퓨터 프로세서 제작방법.Wherein no overflow or underflow of instructions occurs due to said input and said processing. 제 14 항에 있어서,The method of claim 14, 상기 입력하는 단계는 모든 이용가능한 명령 셀들을 채우는 것을 포함하는 것을 특징으로 하는 컴퓨터 프로세서 제작방법.And the inputting step comprises filling all available instruction cells. 제 15 항에 있어서,The method of claim 15, 상기 입력하는 단계는 상기 모든 이용가능한 명령 셀들이 채워진 후에 추가적인 명령 워드들을 입력하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 프로 세서 제작방법.The inputting step further comprises inputting additional command words after all of the available command cells have been filled. 제 16 항에 있어서,The method of claim 16, 상기 입력하는 단계 및 상기 프로세싱하는 단계는 소프트웨어 구현 포인터를 이용함이 없이 수행되는 것을 특징으로 하는 컴퓨터 프로세서 제작방법.And wherein said inputting and processing are performed without using a software implementation pointer. 제 14 항에 있어서,The method of claim 14, 상기 프로세싱하는 단계는 상기 복수의 명령 워드들을 재로드(reload)함이 없이 상기 복수의 명령 워드들을 반복적으로 재사용하는 것을 포함하는 것을 특징으로 하는 컴퓨터 프로세서 제작방법.And said processing comprises repeatedly reusing said plurality of instruction words without reloading said plurality of instruction words. 레지스터들의 어레이; 및An array of registers; And 시프트 레지스터를 포함하여 구성되며:It consists of a shift register: 상기 시프트 레지스터는 전기적 도선들로 상호접속된 복수의 1 비트 시프트 레지스터를 포함하며, 상기 복수의 1 비트 시프트 레지스터의 개수는 상기 레지스터들의 어레이 내의 레지스터들의 개수와 일치하는 것을 특징으로 하는 컴퓨터 프로세서.And the shift register comprises a plurality of one bit shift registers interconnected by electrical leads, wherein the number of the plurality of one bit shift registers coincides with the number of registers in the array of registers. 제 19 항에 있어서,The method of claim 19, 상기 레지스터들의 어레이 위에 위치한 적어도 하나의 레지스터를 더 포함하 여 구성되는 것을 특징으로 하는 컴퓨터 프로세서.And at least one register located above the array of registers. 제 19 항에 있어서,The method of claim 19, 상기 레지스터들의 어레이는 상기 어레이를 상호접속시키는 판독 버스 및 기록 버스를 더 포함하는 것을 특징으로 하는 컴퓨터 프로세서.And the array of registers further comprises a read bus and a write bus interconnecting the array. 제 19 항에 있어서,The method of claim 19, 상기 레지스터들의 어레이는 순환 패턴으로 동작하는 것을 특징으로 하는 컴퓨터 프로세서.And said array of registers operate in a circular pattern. 제 20 항에 있어서,The method of claim 20, 상기 레지스터들의 어레이는 스택된(stacked) 것을 특징으로 하는 컴퓨터 프로세서.And the array of registers are stacked. 제 23 항에 있어서,The method of claim 23, 상기 1 비트 시프트 레지스터들은 교번하는 식으로(alternating pattern) 상기 전기적 도선들에 의해 상호접속되는 것을 특징으로 하는 컴퓨터 프로세서.And the one bit shift registers are interconnected by the electrical leads in an alternating pattern. 제 19 항에 있어서,The method of claim 19, 상기 프로세서는 데이터 스택인 것을 특징으로 하는 컴퓨터 프로세서.And the processor is a data stack. 제 25 항에 있어서,The method of claim 25, 상기 레지스터들의 어레이는 8 개의 데이터 레지스터들로 구성되는 것을 특징으로 하는 컴퓨터 프로세서.And said array of registers is comprised of eight data registers. 제 25 항에 있어서,The method of claim 25, 상기 레지스터들의 어레이는 4개의 데이터 레지스터들이 다수 개 모여 구성되는 것을 특징으로 하는 컴퓨터 프로세서.And wherein the array of registers consists of a plurality of four data registers. 제 24 항에 있어서,The method of claim 24, 상기 프로세서는 리턴 스택인 것을 특징으로 하는 컴퓨터 프로세서. And the processor is a return stack. 제 28 항에 있어서,The method of claim 28, 상기 레지스터들의 어레이는 8 개의 리턴 레지스터들로 구성되는 것을 특징으로 하는 컴퓨터 프로세서.And said array of registers is comprised of eight return registers. 제 28 항에 있어서,The method of claim 28, 상기 레지스터들의 어레이는 4 개의 리턴 레지스터들이 다수 개 모여 구성되는 것을 특징으로 하는 컴퓨터 프로세서.And wherein the array of registers consists of a plurality of four return registers. 레지스터들의 어레이; 및An array of registers; And 상기 레지스터들의 어레이에 배선에 의해 연결된(hardwired) 양-방향 시프트 레지스터를 포함하여 구성되는 컴퓨터 프로세서로서:A computer processor comprising a bi-directional shift register hardwired to an array of registers: 상기 양-방향 시프트 레지스터는 전기적 도선들에 의해 상호접속된 복수의 1 비트 시프트 레지스터들을 더 포함하여 구성되며, 상기 복수의 1 비트 시프트 레지스터들의 개수는 상기 레지스터들의 어레이 내의 레지스터들의 개수와 일치하는 것을 특징으로 하는 컴퓨터 프로세서.The bi-directional shift register further comprises a plurality of one bit shift registers interconnected by electrical leads, wherein the number of the plurality of one bit shift registers coincides with the number of registers in the array of registers. Characterized by a computer processor. 제 31 항에 있어서,The method of claim 31, wherein 상기 레지스터들의 어레이 위에 위치한 적어도 하나의 레지스터를 더 포함하여 구성되는 것을 특징으로 하는 컴퓨터 프로세서.And at least one register located above the array of registers. 제 31 항에 있어서,The method of claim 31, wherein 상기 시프트 레지스터는 상기 레지스터들의 어레이에 대한 하드웨어 포인터로서 기능하는 것을 특징으로 하는 컴퓨터 프로세서.And the shift register serves as a hardware pointer to the array of registers. 제 31 항에 있어서,The method of claim 31, wherein 판독 버스와 기록 버스를 더 포함하여 구성되는 것을 특징으로 하는 컴퓨터 프로세서.And a read bus and a write bus. 제 31 항에 있어서,The method of claim 31, wherein 상기 복수의 1 비트 시프트 레지스터들 각각은 상기 레지스터들의 어레이의 관련 레지스터에 대응되는 것을 특징으로 하는 컴퓨터 프로세서.Wherein each of the plurality of one bit shift registers corresponds to an associated register of the array of registers. 제 35 항에 있어서,36. The method of claim 35 wherein 상기 복수의 1 비트 시프트 레지스터들 중에서, 단지 하나의 시프트 레지스터만이 1 회에 활성화되는 것을 특징으로 하는 컴퓨터 프로세서. Of said plurality of one bit shift registers, only one shift register is activated at a time. 제 31 항에 있어서,The method of claim 31, wherein 상기 레지스터들의 어레이는 상기 어레이를 상호접속시키는 판독 버스와 기록 버스를 더 포함하는 것을 특징으로 하는 컴퓨터 프로세서.And the array of registers further comprises a read bus and a write bus interconnecting the array. 제 31 항에 있어서,The method of claim 31, wherein 상기 복수의 1 비트 시프트 레지스터들은 전기적 도선들에 의해 상호접속되어, 드라이버의 사이즈 및 버퍼링이 최소화되는 것을 특징으로 하는 컴퓨터 프로세서.And the plurality of one bit shift registers are interconnected by electrical leads to minimize driver size and buffering. 제 31 항에 있어서,The method of claim 31, wherein 상기 전기적 도선들 모두는 최대 3개의 인접한 1 비트 시프트 레지스터들 사이에서 확장되는 것을 특징으로 하는 컴퓨터 프로세서.And all of the electrical leads extend between up to three adjacent one bit shift registers. 제 39 항에 있어서, The method of claim 39, 상기 레지스터들의 어레이는 8 개의 레지스터들로 구성되는 것을 특징으로 하는 컴퓨터 프로세서.And said array of registers is comprised of eight registers. 제 31 항에 있어서,The method of claim 31, wherein 상기 프로세서는 데이터 스택인 것을 특징으로 하는 컴퓨터 프로세서.And the processor is a data stack. 제 31 항에 있어서,The method of claim 31, wherein 상기 프로세서는 리턴 스택인 것을 특징으로 하는 컴퓨터 프로세서.And the processor is a return stack.
KR1020087028864A 2006-05-26 2007-05-25 Circular register arrays of a computer KR20090019806A (en)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US11/441,818 2006-05-26
US11/441,812 US7913069B2 (en) 2006-02-16 2006-05-26 Processor and method for executing a program loop within an instruction word
US11/441,784 2006-05-26
US11/441,818 US7934075B2 (en) 2006-02-16 2006-05-26 Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array
US11/441,812 2006-05-26
US11/441,784 US7752422B2 (en) 2006-02-16 2006-05-26 Execution of instructions directly from input source
US81808406P 2006-06-30 2006-06-30
US60/818,084 2006-06-30
US11/503,372 US7617383B2 (en) 2006-02-16 2006-08-11 Circular register arrays of a computer
US11/503,372 2006-08-11

Publications (1)

Publication Number Publication Date
KR20090019806A true KR20090019806A (en) 2009-02-25

Family

ID=38779252

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087028864A KR20090019806A (en) 2006-05-26 2007-05-25 Circular register arrays of a computer

Country Status (3)

Country Link
JP (1) JP2009538488A (en)
KR (1) KR20090019806A (en)
WO (1) WO2007139964A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170007624A (en) 2015-07-09 2017-01-19 국민대학교산학협력단 combination generating system for emotional-lighting color connected with playing sound source, method for the same, and computer-readable recording medium for the same

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179734A (en) * 1984-03-02 1993-01-12 Texas Instruments Incorporated Threaded interpretive data processor
JPH06101235B2 (en) * 1986-02-18 1994-12-12 松下電子工業株式会社 Semiconductor integrated circuit device
JPS63161584A (en) * 1986-12-24 1988-07-05 Mitsubishi Electric Corp Semiconductor integrated circuit device
JPS63168748A (en) * 1987-01-07 1988-07-12 Matsushita Electric Ind Co Ltd Address control circuit
US4899307A (en) * 1987-04-10 1990-02-06 Tandem Computers Incorporated Stack with unary encoded stack pointer
US6449709B1 (en) * 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
US6725361B1 (en) * 2000-06-16 2004-04-20 Transmeta Corporation Method and apparatus for emulating a floating point stack in a translation process
DE10121745A1 (en) * 2001-05-04 2002-11-14 Systemonic Ag Method and arrangement for a stack with a memory divided into data groups with several elements

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170007624A (en) 2015-07-09 2017-01-19 국민대학교산학협력단 combination generating system for emotional-lighting color connected with playing sound source, method for the same, and computer-readable recording medium for the same

Also Published As

Publication number Publication date
WO2007139964A3 (en) 2009-01-15
JP2009538488A (en) 2009-11-05
WO2007139964A2 (en) 2007-12-06

Similar Documents

Publication Publication Date Title
US7617383B2 (en) Circular register arrays of a computer
US5677864A (en) Intelligent memory architecture
US5649149A (en) Integrated content addressable memory array with processing logical and a host computer interface
US5860085A (en) Instruction set for a content addressable memory array with read/write circuits and an interface register logic block
US6519674B1 (en) Configuration bits layout
US20090144485A1 (en) Process for automatic dynamic reloading of data flow processors (dfps) and units with two- or three-dimensional programmable cell architectures (fpgas, dpgas, and the like)
CN111063379B (en) Memory device and method of operating the same for reading a paged media stream
JPH10326254A (en) Microcontroller system and method for communication with interface logic circuit
JP4034738B2 (en) Data mask mapping information acquisition method
CA2403675A1 (en) Enhanced memory algorithmic processor architecture for multiprocessor computer systems
KR20100077026A (en) Serial interface nand
US20100023730A1 (en) Circular Register Arrays of a Computer
US20030097526A1 (en) High-speed first-in-first-out buffer
US20060004980A1 (en) Address creator and arithmetic circuit
US4460972A (en) Single chip microcomputer selectively operable in response to instructions stored on the computer chip or in response to instructions stored external to the chip
JP2006507555A (en) Data mask mapping to hardware by controller programming
JPH0155499B2 (en)
US5317750A (en) Microcontroller peripheral expansion bus for access to internal special function registers
US7228393B2 (en) Memory interleaving
KR20090019806A (en) Circular register arrays of a computer
US6230238B1 (en) Method and apparatus for accessing misaligned data from memory in an efficient manner
EP0020972B1 (en) Program controlled microprocessing apparatus
EP1821198A1 (en) Circular register arrays of a computer
US6175518B1 (en) Remote register hierarchy accessible using a serial data line
JPH0721103A (en) Data transfer device

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