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

데이터 처리 장치 Download PDF

Info

Publication number
KR100417482B1
KR100417482B1 KR10-2001-0001605A KR20010001605A KR100417482B1 KR 100417482 B1 KR100417482 B1 KR 100417482B1 KR 20010001605 A KR20010001605 A KR 20010001605A KR 100417482 B1 KR100417482 B1 KR 100417482B1
Authority
KR
South Korea
Prior art keywords
instruction
program
instructions
control device
parallel
Prior art date
Application number
KR10-2001-0001605A
Other languages
English (en)
Other versions
KR20010070512A (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)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (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-아키텍처를 "EPIC(명백한 병렬 명령 컴퓨팅 Explicit Parallel Instruction Computing)"라 부르고 있다. 번역 시에 병렬성을 인식하기 위해 몇 개의 미리 정해진 플래그가 설정되어 있다. 그 결과, 상기 프로세서는 병렬적으로 실행되는 명령어가 언제 프로그램 흐름에 나타나고 그에 상응하게 반응하는지를 간단하게 확인할 수 있다. 그 외에도 이는 파워 PC 프로세서의 수퍼 스칼라 아키텍처에서 사용되는 완전한 병렬성에서와 같은, 예컨대 이중 하드웨어보다 더 싸다. 거기에서 프로그램 실행 시간 동안 병렬성이 확인되고 나서, 상기 병렬성에 대해 적절한 반응이 이루어진다. 그러나 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 : 분기 제어 장치12 : 프로그램 메모리 15: 명령어 출력 실렉터16, 17 : 명령 해독기 18 : 레지스터19, 20 : 명령어 실행 유니트 21, 22 : 버스
23 : 메모리 24 : 출력 버스25: 서브버스 31, 34 : 멀티플렉서32, 33 : 프로그램 카운터 36 : 어드레스37 : 프로세스 번호 PC0 : 어드레스 포인터
상기 목적은 제 1 항의 특징을 갖는 데이터 처리 장치에 의해 달성된다. 바람직한 실시예는 종속항에 제시된다.
상기와 같은 데이터 처리 장치는 통신 분야에서 예컨대 LAN-분야의 프로토콜 스택의 층인 1 내지 3의 처리를 위한 네트워크 프로세서로서, ATM(비동기 전송 모드 Asynchronous Transfer Mode)-스위치에서, IP(인터넷 프로토콜 Internet Protocol)-루터에서, 특히 DSL(디지털 가입자 회선 Digital Subscriber Line)-방법, 이서네트 및 케이블 모뎀에 기초하는 프레임 릴레이에 이용되는 것이 바람직하다. 특히 앞서 언급한 분야에서 다양한 과제의 처리, 예컨대 다양한 프로토콜의 처리를 위한 독립적인 프로세스가 자주 나타난다. 다중 쓰레드라고 불리우며 병렬로 진행되는 그러한 프로세스는 통신 영역에서 기초 분야로서 넓게 확산되고 있다. 프로그래밍될 수 있는 IP/ATM-인터페이스(인터넷 프로토콜/비동기 전송 모드-입출력 처리 장치)에서 예컨대 여러 데이터 접속의 제어를 위한 또는 분리된 데이터 시프트 오퍼레이션의 제어를 위한 독립적인 프로세스가 실행된다.
그러나 본 발명에 따른 데이터 처리 장치는 앞서 언급한 적용 분야에만 이용되는 것이 아니라 병렬 프로세스가 나타나는 모든 분야에서 이용될 수 있다. 이에 대한 예는 제어를 목적으로 하거나 사무실에서나 개인적으로 사용되는 컴퓨터에서 매우 일반적으로 볼 수 있다. 이와 같은 이용은 일반적으로 프로세스가 높은 성능으로 병렬로 처리되어야 할 경우에 중요해진다.
본 발명은
- 프로그램 메모리를 가지며, 상기 프로그램 메모리에 다수(N)의 독립적인 프로세스를 포함하는 적어도 하나의 컴파일러가 저장되며, 상기 컴파일러는 병렬성 및 한 프로세스의 다수의 명령어를 포함하는 많은 번들에 대한 정보를 가지며;
- 상기 프로그램 메모리를 어드레스하는 분기 제어 장치를 가지며;
- 실행된 프로세스에 따라서 전환되는 데이터 및 플래그의 저장을 위한 레지스터를 가지며,
- 상기 프로그램 메모리와 분기 제어 장치로부터 번들을 페치하는 동작과 상기 명령어 내에 포함되어 있으며 상기 프로그램의 컴파일링 시간을 위해 구성되는 정보에 따라 명령어를 출력하는 동작을 제어하는 프로그램 흐름 제어 장치를 갖는, 적어도 2개의 독립적인 프로세스(쓰레드)의 병렬 처리를 위한 데이터 처리 장치에 관한 것이다.
본 발명의 기초 사상은 독립적인 병렬 프로세스에서 데이터와 명령어의 종속성은 병렬 처리를 위한 단일 프로그램 흐름(Single Sequential Program Flow)에서보다 더 작다는데 있다. 프로그램을 기계 코드로 번역 또는 컴파일할 때 프로그램의 병렬성이 조사되고 병렬성을 특징화한 정보나 특별한 플래그를 제공받게 된다.
상기 데이터 처리 장치의 아키텍처는 단일 프로그램 아키텍처(Single Thread Architecture)에 대해 호환된다. 병렬로 실행될 수 있는 명령어는 클록 사이클 내에서 프로그램 메모리로부터 페치된다. 각각의 개별적인 병렬 프로세스에 우선 순위가 할당된다. 상기 데이터 처리 장치가 분기 제어 장치(Branch-Control-Unit)에 의해 데이터와 명령어를 상기 프로그램 메모리로부터 페치하는 페치 단계(Fetch-Phase) 후에, 어떤 프로세스가 미리 주어진 우선 순위에 따라서 그리고 번역 시에 설정된 플래그 또는 병렬성에 대한 정보에 따라 먼저 실행되는지가 분기 제어 장치에 의해 결정된다.
이를 위해, 상기 데이터 처리 장치는 예컨대 프로그램 카운터(Program-Counter), 레지스터 파일, ALU(산술 논리 장치 Arithmetic Logic Unit)-플래그와 같은 병렬 프로그램의 다양한 스테이터스를 저장하기 위한 레지스터를 갖는다. 상기 레지스터는 처리될 프로세스에 따라 전환될 수 있고 상기 프로세스의 데이터를 저장하는데 이용된다(소위 문맥 전환).
상기 데이터 처리 장치의 바람직한 실시예에서 N개 명령어 버퍼는 상기 프로그램 메모리 뒤에 병렬로 연결되어, 상기 프로그램 메모리로부터 판독된 명령어를 저장한다.
바람직하게는 명령어 출력 실렉터는, 상기 명령어가 명령어 버퍼로부터 판독되어 N개의 명령어를 병렬로 출력하는 방식으로 프로그램 흐름 제어 장치에 의해 제어된다.
병렬 처리에 있어서 액티브 프로세스에 상응하여 분기 제어 장치 내에 제공된 프로그램 카운터 및 명령 해독기(Instruction-Decoder)와 같은 중앙 유니트가 증가되는데, 예컨대 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)에 연결되어 있으며, 상기 버스(BUS1, BUS2)(21, 22)에 의해 데이터가 저장되어 있는 메모리(23)로의 액세스가 이루어진다. 상기 메모리(23)는 바람직하게는 기록/판독 메모리(RAM)이다.
하기에는 위에서 설명한 배열의 기능이 설명된다:
상기 프로그램 코드는 고정 길이로 부호화된다. 상기 프로세스의 프로그램은 반드시 분리되어야 하는 것은 아니며 오히려 하나의 프로그램 안에 통합될 수도 있다. 프로세스 또는 쓰레드의 기점은 프로세스 또는 쓰레드-번호의 세팅을 위한 부가의 기능에 결합된 점프에 상응한다. 그러한 기점의 포맷은 다음과 같다:
RUN Thread_nr Priority Jump_Adr
그러므로 상기 프로세스는 명령어(RUN)를 통해 호출되며, 이때 쓰레드-번호(Thread_nr), 우선 순위(Priority) 및 프로그램 메모리 내 프로세스 코드가 있는 점프 어드레스(Jump_Adr)가 제공되거나 할당된다.
상기 명령어는 언제나 하나 또는 2개의 명령어를 포함하는 번들(Bundles)로 저장되어 있다. 컴파일링 시에 상기 ILP는 명령어 번들이 병렬적으로 실행될 수 있도록 조사된다. 이것이 의미하는 바는 상기 프로그램(들)의 컴파일링 동안 어느 명령어가 서로 독립적이며 병렬로 실행될 수 있는지가 조사된다는 것이다. 그런 경우 2개의 독립적인 명령어는 번들로 "패킹(packing)된다". 그 외에도, 다른 번들의 명령어 역시 병렬로 실행될 수 있다. 그러므로 어쨌든 한 번들의 명령어, 그리고 경우에 따라서는 다른 번들 또는 다른 프로세스의 명령어가 병렬로 실행될 수 있다. 각각의 번들은 그 다음 번들의 길이 정보를 제공하는 플래그를 갖는다. 상기 플래그에 따라서 상기 어드레스 포인터가 계산된다. 상기 어드레스 포인터(PC0)에 의해 프로그램 메모리(12)를 어드레싱할 때 상기 플래그는 한 명령어 번들의 최대 길이를 어드레스할 수 있는 비트폭을 갖는다.
상기 프로그램 메모리로부터 상기 명령어를 페치하는 것은(Instruction Fetch) 다음과 같이 이루어진다: 상기 프로그램 메모리(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)를 가지며, 상기 가산기(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)에 의해 출력된다. 2와 2B가 의미하는 바는 2개의 값이 명령어 버퍼(IA 또는 IB)로부터 출력되거나 명령어 버퍼(IA 또는 IB) 내에 로딩되는 것이며, 1A와 1B는 단 하나의 값의 로딩(리로딩) 또는 출력을 의미한다.
본 발명의 목적에 따라 하드웨어 비용이 비교적 적게 들도록 형성된, 2개 이상의 프로세스(쓰레드)를 병렬로 실행할 수 있는 데이터 처리 장치나 프로세서가 제공된다.

Claims (12)

  1. - 프로그램 메모리(12)를 가지며, 상기 프로그램 메모리(12)에 다수(N)의 독립적인 프로세스를 포함하는 적어도 하나의 컴파일러가 저장되어 있으며, 상기 컴파일러는 병렬성 및 한 프로세스의 많은 명령어를 포함하는 다수의 번들에 대한 정보를 가지며;
    - 상기 프로그램 메모리(12)를 어드레스하는 분기 제어 장치(11)를 가지며;
    - 실행된 프로세스에 따라서 전환되는 데이터와 플래그의 저장을 위한 레지스터(18)를 가지며,
    - 상기 프로그램 메모리(12)와 분기 제어 장치(11)로부터 번들을 페치하는 것과 상기 명령어 내에 포함되며 상기 프로그램의 컴파일링 시간을 위해 구성된 정보에 따라 명령어를 출력하는 것을 제어하는 프로그램 흐름 제어 장치(10)를 갖는 것을 특징으로 하는 적어도 2개의 독립적인 프로세스(쓰레드)의 병렬 처리를 위한 데이터 처리 장치.
  2. 제 1항에 있어서,
    N개 명령어 버퍼(13, 14)는 병렬로 상기 프로그램 메모리(12) 뒤에 배열되며 상기 프로그램 메모리(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)에 공급되며, 상기 가산기(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 KR20010070512A (ko) 2001-07-25
KR100417482B1 true 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100899258B1 (ko) * 2006-04-12 2009-05-27 야마하 가부시키가이샤 디지털 신호 처리 장치

Families Citing this family (10)

* 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
CN100342367C (zh) * 2002-05-10 2007-10-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
US7996520B2 (en) 2007-09-19 2011-08-09 Cisco Technology, Inc. Behavioral classification of communication sessions using active session initiation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537561A (en) * 1990-11-30 1996-07-16 Matsushita Electric Industrial Co., Ltd. Processor
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
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
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

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6105127A (en) * 1996-08-27 2000-08-15 Matsushita Electric Industrial Co., Ltd. Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
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
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
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537561A (en) * 1990-11-30 1996-07-16 Matsushita Electric Industrial Co., Ltd. Processor
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
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100899258B1 (ko) * 2006-04-12 2009-05-27 야마하 가부시키가이샤 디지털 신호 처리 장치

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2500036B2 (ja) ハイブリッドパイプライン接続プロセッサおよびその処理方法
EP0782071B1 (en) Data processor
KR100208889B1 (ko) 병렬처리장치 및 병렬처리방법
US6912638B2 (en) System-on-a-chip controller
KR0178078B1 (ko) 2개의 명령이 동시 실행 가능한 데이타 프로세서
US5446849A (en) Electronic computer which executes squash branching
JPH0895824A (ja) データ処理装置及びデータ処理方法
EP1323032A1 (en) Restarting translated instructions
KR100417482B1 (ko) 데이터 처리 장치
KR100493126B1 (ko) 데이터정밀도모드표시기를구비한다중파이프라인형마이크로프로세서
US20060265569A1 (en) Processor for improving instruction utilization using multiple parallel processors and computer system equipped with the processor
JP2003525476A (ja) プログラムの命令を実行するための装置及び方法
US6256725B1 (en) Shared datapath processor utilizing stack-based and register-based storage spaces
KR100472706B1 (ko) 복수의 독립 전용 프로세서를 갖는 디지털 신호 프로세서
GB2239535A (en) Accelerating store operations in a RISC computer
US20040210747A1 (en) Storage registers for a processor pipeline
JP2006525583A (ja) 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP3102399B2 (ja) データ処理装置及び方法
JP2002229776A (ja) 複数組の命令組を実行するためのデータ処理装置
JPH03163627A (ja) 命令処理装置
JPH04205625A (ja) 並列処理計算機
JPH0425937A (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