KR20010070512A - 데이터 처리 장치 - Google Patents

데이터 처리 장치 Download PDF

Info

Publication number
KR20010070512A
KR20010070512A KR1020010001605A KR20010001605A KR20010070512A KR 20010070512 A KR20010070512 A KR 20010070512A KR 1020010001605 A KR1020010001605 A KR 1020010001605A KR 20010001605 A KR20010001605 A KR 20010001605A KR 20010070512 A KR20010070512 A KR 20010070512A
Authority
KR
South Korea
Prior art keywords
instruction
program
control unit
instructions
parallel
Prior art date
Application number
KR1020010001605A
Other languages
English (en)
Other versions
KR100417482B1 (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 KR20010070512A publication Critical patent/KR20010070512A/ko
Application granted granted Critical
Publication of KR100417482B1 publication Critical patent/KR100417482B1/ko

Links

Classifications

    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명은 상기 데이터 처리 장치, 특히 LAN, ATM-스위치, IP-라우터, DSL, 이서네트 또는 병렬적으로 처리하려는 프로세스의 수에 상응하게 인스트럭션 버퍼, 인스트럭션 디코더 및 인스트럭션 실행 유니트를 가지며 프로그램 플로우 제어 유니트가 병렬 처리를 제어하는 케이블 모뎀이 기초하는 프레임 릴레이와 같은 분야에서 이용되는 층 1 내지 7 프로토콜 스택의 처리를 위한 네트워크 프로세서에 관한 것이다.

Description

데이터 처리 장치{DATA PROCESSING DEVICE}
본 발명은 2개 이상의 독립적인 프로세스(쓰레드)의 병렬 처리를 위한 데이터 처리 장치에 관한 것이다.
US-A-5,941,983에는 다수의 독립적인 프로세스(쓰레드)를 포함하는 컴파일러가 저장되어 있는 프로그램 메모리로 독립적인 프로세스를 병렬 처리하기 위한 데이터 처리 장치가 공지되어 있으며, 이 때 상기 컴파일러는 병렬 및 하나의 프로세스의 다수 인스트럭션을 포함하는 많은 번들에 대한 정보를 가지고 있다.
WO 99/21088 A1에는 플래그와 데이터의 저장을 위한 레지스터를 가지는 쓰레드-체인지오버 로직으로 프로세스(쓰레드)를 병렬로 처리하기 위한 데이터 처리 장치가 공지되어 있다.
US-A-5,404,469에는 스태틱 인터리빙 기술에 이용되는 데이터 처리 장치가 공지되어 있다(멀티-쓰레디드-마이크로프로세서).
데이터 처리 장치나 프로세서의 스루풋과 속도는 주지하다시피 파이프라이닝과 클록 주파수의 증가를 통해 커진다.
하드웨어 비용을 높여, 즉 상기 프로세서의 유니트를 늘려, 데이터 처리율이 커질 수도 있다. 이를 위해 2개의 컨셉이 공지되어 있는, 즉 멀티프로세서-아키텍쳐 및 인스트럭션 레벨 패럴렐리즘(ILP = Instruction Level Parallelism)이다.
오늘날 ILP는 병렬 처리를 위한 컨셉으로서 확고한 위치를 차지하고 있다. 그에 반해 상기 멀티프로세서-아키텍쳐는 인터프로세서-커뮤니케이션이 복잡하기 때문에 덜 효과적이다.
상기 ILP-컨셉을 위한 예는 Texas Instruments사의 C6x-제품계열의 디지털 신호 프로세서의 VLIW(Very Large Instruction Word)-아키텍쳐이다. Intel과 Hewlett-Packard사의 새로운 IA-64-아키텍쳐 역시 ILP-컨셉에 기초하고 있다. 앞서 언급한 상기 양 아키텍쳐에서 병렬성은 프로그램 코드의 번역 동안 확인된다. Intel사는 IA-64-아키텍쳐를 "Explicit Parallel Instruction Computing(EPIC)"라부르고 있다. 번역 시에 병렬성을 인식하기 위해 몇 개의 미리 정해진 플래그가 세워져 있다. 그 결과, 상기 프로세서는 병렬적으로 실행되는 인스트럭션이 언제 프로그램 플로우에 나타나고 그에 상응하게 반응하는지를 간단하게 확인할 수 있다. 그 외에도 이는 상기 파워 PC 프로세서의 슈퍼스칼라 아키텍쳐에서 이용되는 완전한 병렬성에서처럼 예를 들어 2배의 하드웨어보다 더 싸다. 거기에서 프로그램 실행 시간 동안 병렬성이 확인되고, 그 후 상기 병렬성에 대해 적절한 반응이 이루어진다. 그러나 ILP로 인한 이득은 데이터 및 제어 동작의 고유 상관관계를 통해 제한된다. 그러한 상관관계를 피하기 위해 비용이 큰 예비 작업이 - 예를 들어 프로그래밍 시에 데이터 및 제어 동작 상관관계의 고려 - 필요하며, 이는 다시 개발 프로세스의 전체 비용을 높인다.
1995년의 22차 컴퓨터 아키텍쳐 국제 심포지엄에 발표된, D. M. Tullsen, S. J. Eggers, H. M. Levy의 논문 "Simultaneous Multithreading: Maximizing On-Chip Parallelism"에는 칩 평면에 상기 병렬성을 최대화하기 위해 동시적 멀티쓰레딩의 컨셉이 제안되어 있다. 이를 위해 다수의 독립적인 프로세스, 인스트럭션 시퀀스 또는 프로그램 플로우(쓰레드)가 클록 사이클에서 슈퍼스칼라 프로세서의 다수 유니트에 전달된다. 상기 동시적 멀티쓰레딩의 목적은 병렬성의 이용하에서 한 프로세서의 모든 유니트를 동시에 이용하며 그 결과 느린 메모리를 통해 야기되는, 상기 프로세서-성능에 대한 큰 반응 시간의 영향을 줄일 수 있다는데 있다.
싱글-칩-멀티프로세서는 1997년에 IEEE-Computer의 79 내지 85쪽에 발표된, L. Hammond, B.A. Nayfeh, K. Olukotun의 논문 "A single-chip Multiprocessor"에개시되어 있다. 상기 논문에 특히 SM과 CMP 사이의 차이가 성능이라는 점에서 상술된다. 그 외에도 제안된 것은 집적 회로의 집적 밀도가 빠르게 커지기 때문에 멀티프로세서-아키텍쳐가 병렬 프로세스의 처리에 이용된다는 것이다.
본 발명의 목적은 하드웨어 비용이 비교적 적으면서, 2개 이상의 프로세스(쓰레드)를 병렬로 실행할 수 있는 데이터 처리 장치나 프로세서를 제공하는데 있다.
도 1 본 발명에 따른 데이터 처리 장치의 블록도,
도 2 프로그램 메모리, 프로그램 플로우 콘트롤 유니트 및 명령 출력 실렉터의 결선을 상세하게 보여주는 블록도,
도 3 브랜치 콘트롤 유니트를 포함하는 블록도,
도 4 상기 프로그램 플로우 콘트롤 유니트의 동작을 설명하는 상태도.
*도면의 주요부분에 대한 부호의 설명*
10 : 플로우 콘트롤 유니트 11 : 브랜치 콘트롤 유니트
16, 17 : 인스트럭션 디코더 18 : 레지스터
23 : 메모리
상기 목적은 제 1 항의 특징을 포함하는 데이터 처리 장치를 통해 달성된다. 선호되는 실시예는 종속항에서 파악된다.
그러한 데이터 처리 장치는 예를 들어 LAN-분야의 프로토콜 스택의 층 1 내지 3의 처리를 위한 네트워크 프로세서로서 통신 분야에서, ATM-스위치에서, IP-라우터에서, 특히 DSL-방법, 이서네트 및 케이블 모뎀에 기초하는 프레임-릴레이에 이용되는 것이 바람직하다. 특히 앞서 언급한 분야에서 종종 다양한 과제의 처리, 예를 들어 다양한 프로토콜의 처리를 위한 독립적인 프로세스가 나타난다. 멀티플 쓰레드로도 불리며 병렬로 진행되는 그러한 프로세스는 통신 영역에서 기초 분야로서 넓게 확산되고 있다. 프로그램가능한 IP/ATM-인터페이스(인터넷 프로토콜/비동기 트랜스퍼 모드-입출력-프로세싱-유니트)에서 예를 들어 여러 데이터 커넥션의 제어를 위한 또는 분리된 데이터 시프트 오퍼레이션의 제어를 위한 독립적인 프로세스가 실행된다.
그러나 본 발명에 따른 데이터 처리 장치의 이용은 앞서 언급한 적용 분야에 국한되지 않으며 병렬 프로세스가 나타나는 모든 분야에서 이용될 수 있다. 그에 대한 예는 제어를 목적으로 하거나 사무실에서 또는 개인적으로 이용되는 컴퓨터에서는 완전히 일반적이기도 하다. 일반적으로 프로세스가 큰 성능으로 병렬로 처리되어야 하는 경우에 그 이용은 중요해진다.
본 발명은
- 프로그램 메모리를 가지며, 상기 프로그램 메모리에 다수(N)의 독립적인 프로세스를 포함하는 적어도 하나의 컴파일러가 저장되어 있으며, 상기 컴파일러는 병렬성 및 한 프로세스의 다수 인스트럭션을 포함하는 많은 번들에 대한 정보를 가지며;
- 상기 프로그램 메모리를 어드레스하는 브랜치 콘트롤 유니트를 가지며;
- 실행되는 프로세스에 따라서 스위치오버되는 데이터와 플래그의 저장을 위한 레지스터를 가지며,
- 상기 프로그램 메모리와 브랜치 콘트롤 유니트로부터 번들을 가져오는 동작과 상기 인스트럭션에 들어있으며 상기 프로그램의 컴파일링 시간을 위해 구성되는 정보에 따라서 인스트럭션을 전달하는 동작을 제어하는 프로그램 플로우 콘트롤 유니트를 가지는, 적어도 2개의 독립적인 프로세스(쓰레드)의 병렬 처리를 위한 데이터 처리 장치에 관한 것이다.
본 발명의 기초 사상은 독립적인 병렬 프로세스에서 데이터와 인스트럭션의 상관관계는 병렬처리를 위한 싱글 시퀀셜 프로그램 플로우에서보다 더 적다는데 있다. 프로그램을 머쉰 코드로 번역 또는 컴파일할 때 병렬 프로그램이 조사되고 병렬을 특징화한 정보나 특별한 플래그를 제공받게 된다.
상기 데이터 처리 장치의 아키텍쳐는 싱글 쓰레드 아키텍쳐에 대해 컴패터블하다. 병렬로 실행될 수 있는 인스트럭션은 클록 사이클에서 프로그램 메모리로부터 호출된다. 각각의 개별적인 병렬 프로세스에 우선 순위가 할당된다. 상기 데이터 처리 장치가 브랜치 콘트롤 유니트에 의해 데이터와 인스트럭션을 상기 프로그램 메모리로부터 호출하는 페치 페이즈 후에, 어느 프로세스가 주어진 우선 순위에 따라서 그리고 번역 시에 세워진 플래그 또는 구성된 병렬에 대한 정보에 따라서 먼저 실행되는지가 플로우 콘트롤 유니트에 의해 결정된다.
상기 데이터 처리 장치는 예를 들어 프로그램 카운터, 레지스터 파일, ALU-플래그와 같은 병렬 프로그램의 스테이터스 베어리어블의 저장을 위한 레지스터를 갖는다. 상기 레지스터는 처리하려는 프로세스에 따라서 체인지오버되고 상기 프로세스의 데이터의 저장에 이용된다(소위 콘텍스트-스위치).
상기 데이터 처리 장치의 선호되는 실시예에서 N개 인스트럭션 버퍼는 상기 프로그램 메모리 뒤에 병렬로 배열되고 이것으로부터 판독된 인스트럭션을 저장한다.
바람직하게는 인스트럭션 이슈 실렉터는 상기 인스트럭션이 인스트럭션 버퍼로부터 판독되고 N개 인스트럭션이 병렬로 이슈되도록 프로그램 플로우 콘트롤 유니트에 의해 제어된다.
상기 병렬 처리를 위해 병렬의 액티브 프로세스에 알맞게 브랜치 콘트롤 유니트에서 프로그램 카운터와 인스트럭션 디코더와 같은 중앙 유니트가 늘어나는, 예를 들어 2배가 된다. 이를 위해 각각의 병렬 프로세스에 대해 부가적인 유니트가 반드시 제공되는 것이 아니라 그 만큼의 프로세스가 동시에 병렬로 실행된다는 것이다. 그러므로 예를 들어 하나의 프로그램이 5개의 다른 병렬 프로세스를 가지지만, 그 5개의 프로세스 중 2개만이 액티브되면, 상기 중앙 유니트가 배가되는 것으로 충분하다. 비싼 ILP-아키텍쳐와 비교하여, 하드웨어가 적게 필요해진다. 병렬 프로세스의 처리를 위한 특별한 구성을 인스트럭션(인스트럭션 버퍼와 인스트럭션 이슈 실렉터)을 가져오기 위한 그리고 브랜치하기 위한 (브랜치 콘트롤 유니트) 유니트가 갖는다. 제시된 아키텍쳐는 프로그램 및 데이터 캐시와 함께 이용될 수도 있고 그것 없이 이용될 수도 있다.
바람직하게는 N개 인스트럭션 디코더는 전달된 인스트럭션의 디코딩에 이용된다.
특히 선호되는 것은 적어도 2개의 인스트럭션 실행 유니트는 디코딩되는 N개 인스트럭션의 실행에 이용된다.
그 외에도 적어도 2개의 버스가 제공되고, 이것은 데이터용 메모리를 상기 N개 인스트럭션 실행 유니트에 연결시킨다.
하나 또는 그 이상의 번들의 인스트럭션은 특히 바람직하게는 병렬로 실행될 수 있다.
바람직하게는 브랜치 콘트롤 유니트는 번들을 어드레스하는 어드레스 포인터를 이슈한다.
상기 브랜치 콘트롤 유니트는 다른 선호되는 실시예에서
- 제 1 의 멀티플렉서와 제 2 의 멀티플렉서,
- 가산기 및
- N개 프로그램 카운터를 가지며,
- 이 때 상기 프로그램 플로우 콘트롤 유니트에 의해 하나의 번들에 있는 많은 인스트럭션이 가산기에 제공되며, 상기 가산기는 많은 인스트럭션과 어드레스 포인터를 가산하며,
- 프로그램 점프나 기능 호출을 위한 어드레스와 프로세스 번호가 프로그램 플로우 콘트롤 유니트에 의해 제 1 의 멀티플렉서에 제공되며,
- 제 1 의 멀티플렉서를 이용해 상기 가산기의 출력 신호나 프로그램 점프나 기능 호출을 위한 어드레스가 액티브 프로세스에 할당된 프로그램 카운터에 기록되며,
- 제공받는 프로세스 번호에 의해 제어된 제 2 의 멀티플렉서에 의해 방금 액티브된 프로세스에 할당된 프로세스 카운터의 내용이 새로운 어드레스 포인터로서 이슈된다.
상기 프로그램 플로우 콘트롤 유니트에 서브버스를 매개로 상기 프로그램 메모리의 출력 버스로부터
- 인스트럭션의 병렬 실행을 인디케이트하는 적어도 하나의 비트가, 및/또는
- 그 다음 인스트럭션 번들의 길이를 인디케이트하기 위한 적어도 하나의 비트가, 및/또는
- 상기 인스트럭션 번들에 있는 하나 또는 그 이상의 NOP의 인디케이트,
- 상기 인스트럭션의 프로세스의 우선 순위가
제공된다.
프로세스가 프로세스 번호, 우선 순위 및 상기 프로세스가 프로그램 메모리에 저장되어 있는 메모리 어드레스의 할당을 통해 호출된다.
상기 데이터 처리 장치는 층 1 내지 7 프로토콜 스택의 처리를 위한 네트워크 프로세서로서 LAN, ATM-스위치, IP-라우터, DSL, 이서네트 또는 케이블 모뎀이 기초하는 프레임 릴레이와 같은 분야에서 이용된다. 특히 상기 적용 분야에서 병렬 처리는 중요하므로, 본 발명에 따른 데이터 처리 장치는 특히 유리하게 이용될 수 있다.
도면과 관련하여 상기 데이터 처리 장치의 실시예의 다음과 같은 설명으로부터 상기 구성의 기능이 설명된다.
하기에서 상기 브랜치 콘트롤 유니트는 branch control unit라고, 프로그램 플로우 콘트롤 유니트는 flow control unit라고, 인스트럭션 실행 유니트는 execution unit라고, 인스트럭션 이슈 실렉터는 instruction issue selector라고도 한다.
도 1에는 2개의 프로세스 또는 쓰레드의 병렬 처리를 위한 데이터 처리 장치의 블록도가 도시되어 있다. 프로그램 메모리(12)에 저장된 프로그램은 브랜치 콘트롤 유니트(BCU)(11)에 의해 어드레스 포인터(PC0)를 지나 어드레스된다. 상기 BCU(11)에서 2개 이상의 프로그램 카운터는 여러 프로세스 또는 쓰레드를 위해 제공되어 있다. 상기 프로그램 카운터는 지금 막 액티브된 프로세스에 할당된다. 어느 프로세스가 지금 막 진행되는지에 따라서, 즉 상기 데이터 처리 장치에 의해 처리되는지에 따라서 어드레스 포인터(PC0)로서 그에 상응하는 프로그램 카운터의 내용이 이용된다.
상기 프로그램 메모리(12) 뒤에 병렬 처리되는 2개의 프로세스를 위한 2개의 인스트럭션 버퍼(IA 13, IB 14)가 배열되어 있다. 상기 인스트럭션 버퍼는 상기 프로그램 메모리로부터 판독된 인스트럭션을 저장한다.
플로우 콘트롤 유니트(10)는 상기 BCU(11)뿐만 아니라 상기 인스트럭션 버퍼(13, 14)도 제어한다. 상기 인스트럭션 버퍼(13, 14) 뒤에 인스트럭션 이슈 실렉터(15)가 배열되어 있으며, 상기 인스트럭션 이슈 실렉터에 의해 인스트럭션이 상기 인스트럭션 버퍼(13, 14)로부터 2개의 인스트럭션 디코더(16, 17)로 멀티플렉스된다.
상기 인스트럭션 디코더(16, 17)에 병렬 프로세스의 제로 플래그, 캐리 플래그, 오버플로우 플래그의 저장을 위한 레지스터(18)가 제공된다. 상기 레지스터(18)는 데이터와 상기 액티브 프로세스의 모드를 저장하기 위한 2개 이상의 레지스터 파일을 갖고 있다.
상기 레지스터(18) 뒤에는 2개의 실행 유니트(EX1, EX2)(19, 20)가 배열되어 있다. 상기 양 유니트는 인스트럭션의 실행에 이용된다. 이를 위해 양 유니트(EX1, EX2)(19, 20)는 각각 2개의 버스(BUS1, BUS2)(21, 22)에 연결되어 있으며, 상기 버스에 의해 데이터가 저장되어 있는 메모리(23)로의 액세스가 이루어진다. 상기 메모리(23)는 바람직하게는 기록/판독 메모리(RAM)이다.
하기에서는 위에서 설명한 배열의 기능이 설명된다:
상기 프로그램 코드는 고정 길이로 부호화된다. 상기 프로세스의 프로그램은 반드시 분리되어야 하는 것은 아니며 오히려 하나의 프로그램 안에 통합될 수도 있다. 프로세스 또는 쓰레드의 스타팅 포인트는 프로세스 또는 쓰레드-번호의 세팅을 위한 부가의 기능에 결합된 점프에 상응한다. 그러한 스타팅 포인트의 포맷은 다음과 같다:
RUN Thread_nr Priority Jump_Adr
그러므로 상기 프로세스는 인스트럭션(RUN)을 통해 호출되며, 이 때 쓰레드-번호(Thread_nr), 우선 순위(Priority) 및 프로그램 메모리의 프로세스 코드가 있는 점프 어드레스(Jump_Adr)가 제공 또는 할당된다.
상기 인스트럭션은 언제나 하나 또는 2개의 인스트럭션을 포함하는 번들로 저장되어 있다. 컴파일링 시에 상기 ILP는 인스트럭션 번들이 병렬적으로 실행될 수 있도록 조사된다. 이것이 의미하는 바는 상기 프로그램(들)의 컴파일링 동안 어느 인스트럭션이 서로 독립적이며 병렬로 실행될 수 있는지가 조사된다는 것이다. 그런 경우 2개의 독립적인 인스트럭션은 번들로 "묶인다". 그 외에도, 다른 번들의 인스트럭션 역시 병렬로 실행될 수 있다. 그러므로 어쨌든 한 번들의 인스트럭션은 경우에 따라서는 다른 번들 또는 다른 프로세스의 인스트럭션으로서 병렬로 실행될 수 있다. 각각의 번들은 그 다음 번들의 길이 정보를 제공하는 플래그를 갖는다. 상기 플래그에 따라서 상기 어드레스 포인터가 계산된다. 상기 어드레스 포인터(PC0)에 의해 프로그램 메모리(12)를 어드레싱할 때 그것은 한 인스트럭션 번들의 최대 길이를 어드레스할 수 있는 비트폭을 갖는다.
상기 프로그램 메모리로부터 상기 인스트럭션을 꺼내오는 것은(인스트럭션 페치) 다음과 같이 이루어진다: 상기 프로그램 메모리(12)는 상기 어드레스 포인터(PC0)를 통해 어드레스된다(상기 어드레스 포인터(PC0)는 한 번들의 스타트 어드레스를 가리킨다): 그 후 인스트럭션 번들은 상기 인스트럭션 버퍼(13 또는 14) 중 하나에서 판독된다. 이어서, 또 다른 인스트럭션 번들이 읽혀지고 상기 인스트럭션 버퍼(13 또는 14) 중 다른 것에 기록된다. 이 때 상기 제 2 의 인스트럭션 번들은 제 1 의 인스트럭션 번들과 다른 프로세스에 속한다. 그러므로 2개의 액티브 프로세스가 처리될 수있다. 전부 2개 이상의 프로세스가 제공되지만, 프로세서는 다른 실시예에서는 단지 2개의 액티브 프로세스를 병렬적으로 실시할 수 있다. 인스트럭션 버퍼, 인스트럭션 디코더 및 실행 유니트와 같은 유니트를 늘림으로써 2개 이상의 프로세스 역시 액티브 상태가 되는, 즉 병렬로 처리될 수 있다. 페치 사이클마다 어쨌든 2개의 인스트럭션 번들이 상기 프로그램 메모리(12)로부터 인스트럭션 버퍼(13, 14)로 전송된다.
멀티플렉서-로직을 포함하는 인스트럭션 이슈 실렉터(15)에 의해 인스트럭션 번들의 인스트럭션 또는 NOP (No Operations)이 상기 인스트럭션 버퍼(13, 14)로부터 이슈된다. 상기 인스트럭션 또는 NOP는 복호화를 위해 인스트럭션 디코더(16, 17)에 제공된다. 2개의 인스트럭션이 한 인스트럭션 번들로부터, 즉 2개의 인스트럭션이 상기 인스트럭션 버퍼(13 또는 14)로부터 또는 각각의 인스트럭션이 상기인스트럭션 버퍼(13, 14)로부터 상기 인스트럭션 이슈 실렉터(15)에 의해 선택된다. 상기 인스트럭션 이슈 실렉터(15)에 의해 이슈되는 인스트럭션이 NOP이면, 상기 프로세서는 파워 다운 모드가 된다.
상기 인스트럭션 버퍼(13, 14)와 상기 인스트럭션 이슈 실렉터(15)로부터 상기 인스트럭션의 이슈 및 선택은 플로우 콘트롤 유니트(10)에 의해 제어된다. 이는 도 2를 이용해 설명된다. 상기 프로그램 메모리(12)로부터 판독되는 인스트럭션 번들이 인스트럭션 버스에 의해 인스트럭션 버퍼(13, 14)에 전달된다. 인스트럭션 버스(25)에 의해 인스트럭션 번들의 그 다음 정보가 상기 플로우 콘트롤 유니트(10)에 제공된다.
- 인스트럭션의 병렬 실행을 나타내는 비트 또는 그 다음 인스트럭션 번들의 길이를 나타내는 비트. 고정 길이의 프로그램 코드의 경우에 상기 길이의 인디케이션이 불필요하다.
- 상기 인스트럭션 번들에 하나 또는 다수의 NOP의 인디케이션, 이 때 NOP는 다른 프로세스의 다른 인스트럭션으로 대체될 수 있다.
- 실제 프로세스, 즉 쓰레드-버스(28)에 의한 프로세스의 번호.
- 상기 양 프로세스의 우선 순위.
상기 플로우 콘트롤 유니트(10)는 페치 콘트롤 버스(26)를 매개로 상기 인스트럭션 버퍼(13, 14)를 제어하고 이슈 실렉트 버스(27)를 매개로 인스트럭션 이슈 실렉터(15)를 제어한다. 상기 플로우 콘트롤 유니트(10)의 내부 모드는 상기 양 프로세스의 인스트럭션 버퍼(13, 14)에서 상기 남아있는 인스트럭션의 수를 가리킨다. 상기 플로우 콘트롤 유니트(10)는 출력 신호에 다음을 이슈한다:
- 프로그램 카운터의 인크리멘팅을 위한 신호. 상기 신호는 하나의 인스트럭션을 포함하는 인스트럭션 번들에 대해 0, 2개의 인스트럭션을 포함하는 인스트럭션 번들에 대해 2.
- 상기 페치 콘트롤 버스(26)에 의해 페치 콘트롤 신호가 상기 인스트럭션 버퍼(13, 14)를 동작시킨다.
- 상기 이슈 실렉트 버스(27)에 의해 이슈 실렉트 신호는 상기 인스트럭션 이슈 실렉터(15)를 제어한다.
상기 인스트럭션 이슈 실렉터(15) 뒤에 배열된 인스트럭션 디코더(16, 17)는 제공되는 인스트럭션을 복호한다. 상기 프로세스 번호와 각각의 프로세스의 우선 순위가 레지스터(18)에 저장되어 있다.
도 3에는 브랜치 콘트롤 유니트(11)의 구성이 도시되어 있다. 상기 브랜치 콘트롤 유니트(11)는 가산기(30)를 가지며, 상기 가산기는 어드레스 포인터(PC0)와 인스트럭션 번들 버스(35)에 의해 제공되는 신호(M)를 가산한다. 상기 신호(M)는 하나의 인스트럭션을 포함하는 인스트럭션 번들에 대해 0이거나 2개의 인스트럭션을 포함하는 인스트럭션 번들에 대해서는 2이다. 그 결과 실제 프로그램 카운터 값은 1 또는 2 만큼 증가되는, 즉 하나 또는 2개의 인스트럭션을 포함하는 인스트럭션 번들이 판독되는지 여부에 의존적이다. 상기 가산기(30)의 출력값은 제 1 의 멀티플렉서(31)에 제공된다. 상기 제 1 의 멀티플렉서(31)는 상기 가산기(30)로부터 제공되는 신호나 브랜치 콘트롤 버스(36)에 의해 제공되는 신호를 이용해 점프와 기능 호출을 제어하기 위해 2개의 프로그램 카운터(32, 33) 중 하나를 스위칭시킨다. 어디에 프로그램 카운터가 기록하는지는 쓰레드 버스(37)에 의해 제공되는 프로세스 번호(TNr)에 의존적이다. 상기 양 액티브 프로세스의 각각에 프로그램 카운터가 할당된다. 예를 들어 상기 프로세스 번호 4의 2개의 인스트럭션을 포함하는 인스트럭션 번들이 상기 프로그램 메모리로부터 판독되면, 상기 신호(M)는 2와 같으며 상기 제 1 의 멀티플렉서가 상기프로세스 번호 4에 할당된 프로그램 카운터(PC1) (33)에 값(PC0+2)을 기록한다. 제 2 의 멀티플렉서(34)에 의해 상기 양 프로그램 카운터(32, 33) 중 하나가 어드레스 포인터(PC0)로서 이슈된다. 다시 상기 프로세스 번호는 상기 양 프로그램 카운터 중 어느 것이 이슈되는지를 제어한다.
도 4에는 상기 플로우 콘트롤 유니트(10)의 상태도가 도시되어 있다. 상기 플로우 콘트롤 유니트는 각각 다른 값(A, B)으로 표시된 4개의 다른 상태(38 내지 41)를 갖는다. 상기 값(A, B)은 몇 개의 인스트럭션이 상기 인스트럭션 버퍼(IA 또는 IB)(13 또는 14)에 위치하는지에 대한 정보를 제공한다. 도면에 도시된 상태도에서 프로세스 A의 우선 순위는 프로세스 B의 우선 순위보다 더 크다.
상태 전이 때마다 상기 상태도에서 어느 액션이 실시되는지가 제시되어 있는, 즉 인스트럭션 이슈 실렉터(15)를 통해 상기 인스트럭션 버퍼(IA 및/또는 IB)(13 및/또는 14)로부터 상기 값(A 및/또는 B) 중 하나 또는 2개의 이슈 또는 상기 프로그램 메모리로부터 인스트럭션 버퍼(IA 및/또는 IB)(13 및/또는 14)에 하나 또는 2개의 인스트럭션의 로딩이 제시되어 있다. NOP 역시 인스트럭션 이슈 실렉터(15)에 의해 출력된다. 2A와 2B가 의미하는 바는 2개의 값이 인스트럭션 버퍼(IA 또는 IB)로부터 이슈되거나 그것에 로딩되는 것이며, 1A와 1B는 단 하나의 값의 로딩 또는 이슈를 의미한다.
본 발명의 목적에 따라 하드웨어 비용이 비교적 적으면서, 2개 이상의 프로세스(쓰레드)를 병렬로 실행할 수 있는 데이터 처리 장치나 프로세서가 제공된다.

Claims (12)

  1. - 프로그램 메모리(12)를 가지며, 상기 프로그램 메모리에 많은(N) 독립적인 프로세스를 포함하는 적어도 하나의 컴파일러가 저장되어 있으며, 상기 컴파일러는 병렬 및 한 프로세스의 다수 인스트럭션의 많은 번들에 대한 정보를 가지며;
    - 상기 프로그램 메모리(12)를 어드레스하는 브랜치 콘트롤 유니트(11)를 가지며;
    - 실행되는 프로세스에 따라서 스위치오버되는 데이터와 플래그의 저장을 위한 레지스터(18)를 가지며,
    - 상기 프로그램 메모리(12)와 브랜치 콘트롤 유니트(11)로부터 번들을 가져오는 것과 상기 인스트럭션에 들어있으며 상기 프로그램의 컴파일링 시간을 위해 구성되는 정보에 따라서 인스트럭션을 이슈하는 것을 제어하는 프로그램 플로우 콘트롤 유니트(10)를 가지는 것을 특징으로 하는 적어도 2개의 독립적인 프로세스(쓰레드)의 병렬 처리를 위한 데이터 처리 장치.
  2. 제 1 항에 있어서,
    N개 인스트럭션 버퍼(13, 14)는 병렬로 상기 프로그램 메모리(12) 뒤에 배열되며 이것으로부터 판독된 인스트럭션을 저장하는 것을 특징으로 하는 데이터 처리 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    인스트럭션 이슈 실렉터(15)는 상기 인스트럭션이 상기 인스트럭션 버퍼(13, 14)로부터 판독되며 N개 인스트럭션을 병렬로 이슈하도록 상기 프로그램 플로우 콘트롤 유니트(10)에 의해 제어되는 것을 특징으로 하는 데이터 처리 장치.
  4. 제 1 항 또는 제 2 항에 있어서,
    N개 인스트럭션 디코더(16, 17)는 이슈된 인스트럭션의 복호화를 위해 제공되는 것을 특징으로 하는 데이터 처리 장치.
  5. 제 1 항 또는 제 2 항에 있어서,
    2개 이상의 인스트럭션 실행 유니트(19, 20)가 복호화되는 N개 인스트럭션의 실행을 위해 제공되는 것을 특징으로 하는 데이터 처리 장치.
  6. 제 1 항 또는 제 2 항에 있어서,
    데이터를 위한 메모리(23)에 N개 인스트럭션 실행 유니트(19, 20)를 연결시키는 적어도 2개의 버스(21, 22)가 제공되는 것을 특징으로 하는 데이터 처리 장치.
  7. 제 1 항 또는 제 2 항에 있어서,
    하나 또는 다수의 번들의 인스트럭션은 병렬로 실행되는 것을 특징으로 하는데이터 처리 장치.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 브랜치 콘트롤 유니트(11)가 번들을 어드레스하는 어드레스 포인터(PC0)를 이슈하는 것을 특징으로 하는 데이터 처리 장치.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 브랜치 콘트롤 유니트(11)는
    - 제 1 의 멀티플렉서(31)와 제 2 의 멀티플렉서(34),
    - 가산기(30) 및
    - N개 프로그램 카운터(32, 33)를 가지며,
    - 상기 프로그램 플로우 콘트롤 유니트(10)에 의해 하나의 번들의 상기 인스트럭션의 수(35)가 상기 가산기(30)에 제공되며, 상기 가산기는 상기 인스트럭션의 수(35)와 어드레스 포인터(PC0)를 가산하며,
    - 프로그램 점프나 기능 호출을 위한 어드레스(36)와 프로세스 번호(37)가 프로그램 플로우 콘트롤 유니트(10)에 의해 제 1 의 멀티플렉서(31)에 제공되며,
    - 제 1 의 멀티플렉서(31)를 이용해 상기 가산기(30)의 출력 신호나 프로그램 점프나 기능 호출을 위한 어드레스(36)가 액티브 프로세스에 할당된 프로그램 카운터에 기록되며,
    - 제공받는 프로세스 번호(37)에 의해 제어된 제 2 의 멀티플렉서(34)에 의해 방금 액티브된 프로세스에 할당된 프로세스 카운터(32, 33)의 내용이 새로운 어드레스 포인터(PC0)로서 이슈되는 것을 특징으로 하는 데이터 처리 장치.
  10. 제 1 항 또는 제 2 항에 있어서,
    상기 프로그램 플로우 콘트롤 유니트(10)에 서브버스(25)를 매개로 상기 프로그램 메모리(12)의 출력 버스(24)로부터
    - 인스트럭션의 병렬 실행을 인디케이트하는 적어도 하나의 비트가, 및/또는
    - 그 다음 인스트럭션 번들의 길이를 인디케이트하기 위한 적어도 하나의 비트가, 및/또는
    - 상기 인스트럭션 번들에 있는 하나 또는 그 이상의 NOP의 인디케이트,
    - 상기 인스트럭션의 프로세스의 우선 순위가
    제공되는 것을 특징으로 하는 데이터 처리 장치.
  11. 제 1 항 또는 제 2 항에 있어서,
    프로세스가 프로세스 번호, 우선 순위 및 상기 프로세스가 프로그램 카운터에 저장되어 있는 메모리 어드레스를 메모리 어드레스의 할당을 통해 호출되는 것을 특징으로 하는 데이터 처리 장치.
  12. 제 1 항 또는 제 2 항에 있어서,
    상기 데이터 처리 장치는 층 1 내지 7 프로토콜 스택의 처리를 위한 네트워크 프로세서로서 LAN, ATM-스위치, IP-라우터, DSL, 이서네트 또는 케이블 모뎀이 기초하는 프레임 릴레이와 같은 분야에서 이용되는 것을 특징으로 하는 데이터 처리 장치.
KR10-2001-0001605A 2000-01-12 2001-01-11 데이터 처리 장치 KR100417482B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10000960A DE10000960C1 (de) 2000-01-12 2000-01-12 Datenverarbeitungsvorrichtung
DE10000960.3 2000-01-12

Publications (2)

Publication Number Publication Date
KR20010070512A true KR20010070512A (ko) 2001-07-25
KR100417482B1 KR100417482B1 (ko) 2004-02-05

Family

ID=7627270

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0001605A KR100417482B1 (ko) 2000-01-12 2001-01-11 데이터 처리 장치

Country Status (6)

Country Link
US (1) US20010016899A1 (ko)
EP (1) EP1117037B1 (ko)
JP (1) JP3702184B2 (ko)
KR (1) KR100417482B1 (ko)
CN (1) CN1147786C (ko)
DE (2) DE10000960C1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050195743A1 (en) * 2000-04-03 2005-09-08 P-Cube Ltd. Real time charging of pre-paid accounts
US7042886B2 (en) * 2001-12-06 2006-05-09 P-Cube Ltd. Apparatus, method, and computer program for wire-speed classification and pre-processing of data packets in an ATM network
US7254632B2 (en) * 2002-04-26 2007-08-07 P-Cube Ltd. Apparatus and method for pattern matching in text based protocol
JP4276168B2 (ja) * 2002-05-10 2009-06-10 マイクロソフト コーポレーション 資源についての並行、分散ネットワークの協調
US20050240380A1 (en) * 2004-03-31 2005-10-27 Jones Kenneth D Reducing context memory requirements in a multi-tasking system
CN100489783C (zh) * 2004-06-28 2009-05-20 李晓波 在单计算机上可在同一时刻执行多道程序的方法及系统
US7599361B2 (en) * 2004-07-02 2009-10-06 P-Cube Ltd. Wire-speed packet management in a multi-pipeline network processor
US7400585B2 (en) * 2004-09-23 2008-07-15 International Business Machines Corporation Optimal interconnect utilization in a data processing network
US20070217490A1 (en) * 2005-03-15 2007-09-20 Bae Systems Plc Modem
JP4404065B2 (ja) * 2006-04-12 2010-01-27 ヤマハ株式会社 デジタル信号処理装置
US7996520B2 (en) 2007-09-19 2011-08-09 Cisco Technology, Inc. Behavioral classification of communication sessions using active session initiation

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2911278B2 (ja) * 1990-11-30 1999-06-23 松下電器産業株式会社 プロセッサ
GB9123271D0 (en) * 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5944816A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute multiple threads including interrupt service routines
CN1147785C (zh) * 1996-08-27 2004-04-28 松下电器产业株式会社 执行多个指令流的多程序流程同时处理器
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US5941983A (en) * 1997-06-24 1999-08-24 Hewlett-Packard Company Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6324639B1 (en) * 1998-03-30 2001-11-27 Matsushita Electric Industrial Co., Ltd. Instruction converting apparatus using parallel execution code
US6317820B1 (en) * 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
JP2000305781A (ja) * 1999-04-21 2000-11-02 Mitsubishi Electric Corp Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体
US6404752B1 (en) * 1999-08-27 2002-06-11 International Business Machines Corporation Network switch using network processor and methods

Also Published As

Publication number Publication date
CN1147786C (zh) 2004-04-28
JP2001249807A (ja) 2001-09-14
DE50014979D1 (de) 2008-04-03
US20010016899A1 (en) 2001-08-23
EP1117037A3 (de) 2005-08-10
DE10000960C1 (de) 2001-12-20
CN1304088A (zh) 2001-07-18
EP1117037B1 (de) 2008-02-20
JP3702184B2 (ja) 2005-10-05
EP1117037A2 (de) 2001-07-18
KR100417482B1 (ko) 2004-02-05

Similar Documents

Publication Publication Date Title
US5357617A (en) Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
JP2918631B2 (ja) デコーダ
KR0160602B1 (ko) 데이터 처리장치
US7003652B2 (en) Restarting translated instructions
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
JP3797471B2 (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
US6237077B1 (en) Instruction template for efficient processing clustered branch instructions
KR100284789B1 (ko) N-지로 분기를 갖는 슈퍼스칼라 또는 초장 명령어 워드컴퓨터에서 다음 명령어를 선택하는 방법 및 장치
US7000094B2 (en) Storing stack operands in registers
US6912638B2 (en) System-on-a-chip controller
JPH0895824A (ja) データ処理装置及びデータ処理方法
EP1137984A2 (en) A multiple-thread processor for threaded software applications
US5446849A (en) Electronic computer which executes squash branching
KR100493126B1 (ko) 데이터정밀도모드표시기를구비한다중파이프라인형마이크로프로세서
KR100417482B1 (ko) 데이터 처리 장치
JP2003525476A (ja) プログラムの命令を実行するための装置及び方法
US6256725B1 (en) Shared datapath processor utilizing stack-based and register-based storage spaces
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
EP1623318A2 (en) Processing system with instruction- and thread-level parallelism
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US20020083306A1 (en) Digital signal processing apparatus
GB2239535A (en) Accelerating store operations in a RISC computer
JPH0425937A (ja) 情報処理装置
JPH03163627A (ja) 命令処理装置

Legal Events

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

Payment date: 20130125

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140117

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150116

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee