KR100279744B1 - 동기화 전용 레지스터 파일을 갖는 단일칩 다중처리 마이크로프로세서 - Google Patents

동기화 전용 레지스터 파일을 갖는 단일칩 다중처리 마이크로프로세서 Download PDF

Info

Publication number
KR100279744B1
KR100279744B1 KR1019980044348A KR19980044348A KR100279744B1 KR 100279744 B1 KR100279744 B1 KR 100279744B1 KR 1019980044348 A KR1019980044348 A KR 1019980044348A KR 19980044348 A KR19980044348 A KR 19980044348A KR 100279744 B1 KR100279744 B1 KR 100279744B1
Authority
KR
South Korea
Prior art keywords
packet
microprocessor
processors
synchronization
ilp
Prior art date
Application number
KR1019980044348A
Other languages
English (en)
Other versions
KR20000030955A (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 정선종
Priority to KR1019980044348A priority Critical patent/KR100279744B1/ko
Publication of KR20000030955A publication Critical patent/KR20000030955A/ko
Application granted granted Critical
Publication of KR100279744B1 publication Critical patent/KR100279744B1/ko
Priority to US10/429,143 priority patent/US20040030873A1/en

Links

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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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
    • 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/30141Implementation provisions of register files, e.g. ports
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 단일칩 다중처리형 마이크로프로세서에 관한 것이다. 단일칩 다중처리 마이크로프로세서 내부의 프로세서(10a,...,10n) 상호간에 쓰레드 또는 타스크 수준 병렬처리를 효과적으로 지원하기 위하여 동기화 명령어 전용 레지스터 파일(20)을 제공하여 메모리 접근없이 동기화 명령어를 처리할 수 있게 하여 성능을 향상시킨다. 또한 단일칩 다중처리 마이크로프로세서의 경우 복수개의 내부 프로세서들이 각각 서로 다른 명령어 스트림을 처리하므로 칩 외부 정합장치를 통한 전송 요구는 기존의 마이크로프로세서에 비해 훨씬 높아진다. 따라서 고속화가 가능하고 높은 대역폭을 제공하기 위해, 2차 캐쉬 제어기(50), 링 제어기/패킷 버퍼(40), 패킷 송신기(60), 패킷 수신기(80), 임시버퍼(70)로 구성된 단방향 입출력 분리형 링 정합장치를 단일칩 다중처리 마이크로프로세서의 외부 정합장치로서 제공한다.

Description

동기화 전용 레지스터 파일을 갖는 단일칩 다중처리 마이크로프로세서
본 발명은 명령어 수준 병렬처리 기법(Instruction Level Parallelism; 이하, 'ILP'라 칭함)구조의 기존 마이크로프로세서가 갖고 있는 성능 한계를 극복하기 위하여 ILP와 쓰레드 또는 타스크 수준 병렬 처리(Thread Level Parallelism or Task Level Parallelism; 이하, 'TLP'라 칭함)를 동시에 수용하여 성능을 향상시킬 수 있는 단일칩 다중처리형 마이크로프로세서 구조에 관한 것이다.
현재 사용중인 상용 마이크로프로세서들(Pentium-II, UltraSPARC, Alpha21264등)은 대부분이 ILP를 지원하는 수퍼스칼라 구조를 가진다. 수퍼스칼라 구조는, 단일 명령어 스트림의 제한된 명령어 윈도우내에서 명령어 상호간에 존재하는 병렬성을 찾아 복수개의 명령어를 동시에 수행시키는 구조이다. 이를 위하여 분기예측, 레지스터 재명명, 비순차 실행 등 복잡한 하드웨어 구조를 가진다. ILP구조의 또 다른 구조인 VLIW구조는 하드웨어는 간단하나 수퍼스칼라구조에서 하드웨어가 처리하는 명령어간 병렬성 추출을 컴파일러가 수행하여 하드웨어 복잡도를 낮춘다. 이러한 ILP구조의 단점은 제한된 명령어 윈도우내에서 명령어 간 병렬성을 찾는데서 발생하는데, 일반적인 견해에 따르면 4∼6 웨이(way)가 적합하고 8 웨이 이상은 성능 향상 효과가 없는 것으로 보고되고 있다. 따라서 각 연구기관에서 ILP구조보다 진보된 새로운 마이크로프로세서 구현 구조에 대한 연구 활발히 진행되었으며, 대안으로 단일칩 다중처리 구조와 다중쓰레드 구조가 나오게 되었다.
단일칩 다중처리 구조는, 복수개의 ILP프로세서를 하나의 칩에 집적하는 구조로 이미 보편화된 SMP(Symmetric Multi-Processor) 시스템을 단일칩화 한것이다. 구조가 간단하고 보편화된 기술을 사용하므로서 하드웨어 및 소프트웨어 개발이 쉬운 장점을 가지고 있으며, 이미 개발된 순차 프로그램 및 병렬 프로그램을 수정없이 사용할 수 있는 장점이 있다.
단일칩 다중 쓰레드 구조는, 단일 프로세스를 구성하는 복수개의 밀결합(tightly-coupled) 쓰레드를 동시에 처리하는 기법으로서, 그 구조는 단일칩 다중처리 구조와 유사하지만, 단일칩 다중처리 구조와는 달리 쓰레드간 종속성 문제를 해결하는 하드웨어를 내장해야 하며, 컴파일러를 비롯한 소프트웨어 개발이 어려운 단점이 있다.
단일칩에 여러 개의 프로세서를 집적하는 구조는 과거에도 시도되었었다. 하지만, 초기에는 대부분이 어레이 프로세서 또는 벡터 프로세서 형태로 복수개의 ALU(산술 논리 연산장치)가 특정한 토폴로지로 연결되고 외부 호스트에 의해서 제어되었다. 이후 프로세서와 메모리로 구성된 엘리먼트를 복수개 집적한 형태가 등장하였으나 역시 어레이 프로세서 형태로 구성되었으며 대부분이 이미지 처리, 수치 연산등을 위한 보조 프로세서(Accelerator)로 사용되었다. 최근에 대학 및 연구기관에 단일칩 다중처리 프로세서에 대한 논문 발표가 다수 있었으나 주로 성능 평가를 수행하기 위한 기본 구조의 제안 형태이며, 복수개의 프로세서를 1차 캐쉬 공유형, 2차 캐쉬 공유형, 메모리 공유형 형태로 구성하고 있으며 내부 프로세서 상호간 연결은 공통 버스를 사용한다.
최근 LSI사에 의해서 단일칩 다중처리 구조가 특허로 등록되었다. LSI사의 특허는 단일칩 다중처리 마이크로프로세서 내부의 각 프로세서간에 내부 데이터 버스외에 별도의 동기식 버스를 두고 이를 통하여 내부 프로세서 상호간에 인터럽트를 송수신하는 구조를 갖는다.
다중 쓰레드 구조의 경우는 크게 두가지 형태를 갖는다.
첫번째 구조는, 복수개의 명령어 스트림(쓰레드)으로 부터 복수개의 명령어를 패치하여 동시에 수행시키는 구조인데, 이 경우에 명령어를 패치하는 디스패쳐가 복수개의 명령어 스트림으로부터 명령어를 패치하고 패치된 명령어를 연산장치에 이슈한다. 이슈된 연산은 각 쓰레드별로 별도의 레지스터 파일을 사용하여 연산을 수행한다. 이 구조는 복수개의 프로세서를 집적하는 구조가 아니고, 기존의 수퍼스칼라 구조에서 프로그램 카운터와 레지스터 파일을 복수개 유지하면서 디스패쳐가 복수개의 쓰레드를 제어하는 방식으로 쓰레드화된 수퍼스칼라 구조라 할 수 있다.
두번째 구조는, 쓰레드 프로세서라 불리우는 단위 프로세서를 복수개 집적하고, 각 쓰레드 프로세서가 쓰레드 파이프라인에 의해서 수행하는 방식으로 수퍼쓰레드 방식으로 불린다. 이 구조는 주 쓰레드 프로세서가 종속 쓰레드 프로세서에게 쓰레드를 포크(fork)시키는 방식으로 이를 위하여 컴파일러 지시자를 사용하여 프로그램을 작성해야 하고, 이를 인식할 수 있는 컴파일러가 필요하다. 또한 각 쓰레드 프로세서는 쓰레드 포크를 위하여 쓰레드 관련 파라미터를 타 쓰레드 프로세서에게 전송할 수 있는 하드웨어가 필요하며, 쓰레드 간 데이터 종속성 문제를 해결하기 위하여 별도의 메모리 버퍼가 필요하다.
시스템 구성을 위한 일반적인 외부 정합 장치를 살펴보면 다음과 같다.
일반적으로 마이크로프로세서는 마이크로프로세서 외부에 위치한 메모리에서 PCB상에 구현된 연결망을 통하여 프로그램과 관련 데이터를 읽어와서 처리한 후, 결과를 다시 메모리에 저장하게 된다. 또한 복수개의 마이크로프로세서를 사용하여 다중처리 시스템을 구현할 경우에도 PCB상에 구현된 연결망을 통하여 서로 통신하게 된다. 이때, 메모리 접근은 물론 다중처리 지원을 위한 캐쉬 일관성 프로토콜 유지 및 마이크로프로세서 상호간 통신도 수행하게 된다. 기존 상용 마이크로프로세서는 상기와 같이 마이크로프로세서의 외부와의 데이터 송수신을 위하여 일반적으로 버스 정합장치를 사용한다. 버스 정합장치를 갖는 기존의 마이크로프로세서를 사용하여 시스템을 구성할 경우에는 마이크로프로세서 상호간 또는 마이크로프로세서와 메모리간의 연결을 공유버스 구조로 연결하게 된다.
공유버스 구조는 비교적 물리적 구현 및 스누핑 캐쉬 프로토콜의 구사가 용이하지만, 토폴로지 특성상 동작 주파수를 높이는데(100 MHz 이하) 한계가 있으며, 시스템 구성시 공유버스에서 병목현상을 야기하는 문제점을 가지고 있다. 또한 공유버스의 특성상 동작주파수와 데이터 전송폭에 의해 대역폭이 고정되므로 확장성이 낮은 단점을 가지고 있다. 따라서 현재 500MHz 이상의 동작속도를 갖는 마이크로프로세서들의 경우 칩 내부와 외부 정합장치의 속도차이는 더욱 커지고 있으며, 이로 인하여 외부 정합장치가 마이크로프로세서의 병목 위치로 지목받고 있다.
이러한 문제점을 해결하고자 Sun Microsystem사에서는 UltraSPARC 마이크로프로세서에 UPA(UltraSPARC Port Architecture)라는 기술을 사용하여 최대 4개의 마이크로프로세서를 크로스바 구조로 연결하며, 프로세서 동작주파수와 동일한 동작주파수에서 데이터를 전송할 수 있게 하고 있다.
또한, Sun Microsystem사 이외의 다른 마이크로프로세서 생산업체에서는 공유버스 정합장치를 제공하고 있으며, 그 동작속도는 대부분이 100 MHz 이하이다.
단일칩 다중처리 마이크로프로세서 구조는, 복수개의 프로세서를 하나의 마이크로프로세서로 집적하는 구조로서, 기존의 단일 프로세서형 마이크로프로세서와는 달리 복수개의 명령어 스트림을 처리한다. 따라서 복수개의 메모리 접근 스트림이 존재하게 되며, 이로 인하여 캐쉬의 워킹셋(working set)이 증가하게 되어 기존의 마이크로프로세서에 비해 많은 외부 데이터 전송 요구가 발생한다. 따라서 다중처리형 마이크로프로세서의 경우 버스 정합장치를 외부 데이터 전송에 사용한다면, 단일 프로세서형 마이크로프로세서의 경우보다 더 심각한 병목현상을 야기하게 되며, 시스템을 구성할 경우 공유버스는 시스템의 병목 위치가 된다.
본 발명에서는 ILP와 TLP를 동시에 지원하기 위하여 ILP 프로세서를 하나의 마이크로프로세서에 복수개 집적하여 단일칩 다중처리 마이크로프로세서를 구성하고, 그 단일칩 다중처리 마이프로세서 내부에 동기화 전용 레지스터 파일을 두어 내부 프로세서의 동기화 명령어 처리시 메모리 접근 없이 명령어를 처리할 수 있도록 함으로써, 단일칩 다중처리 마이크로프로세서의 성능을 향상시키는데 하나의 목적이 있다. 이와 같은 목적을 달성하기 위한 본 발명의 단일칩 다중처리형 마이크로프로세서는, 복수개의 ILP 프로세서와, 상기 복수개의 ILP 프로세서를 연결하는 내부버스와, 그리고 상기 복수개의 ILP 프로세서가 동시에 접근하여 동기화 명령어를 수행하기 위해 다중 포트를 갖는 동기화 전용 레지스터 파일로 구성된 것이다.
또한, 본 발명에서는 단일칩 다중처리 마이크로프로세서 설계에 있어서, 공유버스 정합장치 대신 단방향 입출력 분리형 링 정합장치를 칩 외부 정합장치(interface)로 사용함으로써, 고속의 높은 입출력 대역폭을 제공하는 링 연결망을 구성하여 시스템을 구성하도록 하여, 공통 버스 구조의 시스템에서 발생하는 병목현상을 제거하여 단일칩 다중처리 마이크로프로세서 및 이를 사용하는 시스템의 성능을 향상시키는데 다른 목적이 있다. 이 목적을 달성하기 위해 상기와 같이 구성된 단일칩 다중처리형 마이크로프로세내에 포함되는 칩 외부 정합장치는, 상기 복수개의 ILP 프로세서가 내부버스를 통해 메모리 접근 요구시에 그 요구가 캐쉬 적중으로 판단되면 메모리 접근 요구를 처리하는 2차 캐쉬 제어기와, 상기 메모리 접근 요구를 내부 버스를 통해 수신하여 그 요구가 2차 캐쉬 제어기에 의해 캐쉬 적중이 아닌 것으로 판단시의 그 메모리 접근 요구와 내부 버스를 통해 수신되는 입출력 장치 접근 요구 및 마이크로프로세서 상호간 통신 등을 패킷으로 변환하여 패킷 송신기에 전달함과 함께 외부에서 입력되는 데이터를 상기 복수개의 ILP프로세서에 전송하는 링 제어기/패킷 버퍼와, 상기 변환된 패킷과 임시버퍼를 통해 수신되는 패킷을 송신하는 패킷 송신기와, 그리고 입력되는 패킷의 수신여부를 판단하여 수신해야할 패킷이면 상기 링 제어기/패킷 버퍼에 전달하고 아니면 임시버퍼를 통하여 상기 송신기에 전송하는 패킷 수신기로 구성되어, 고속 데이터 전송 및 시스템 구성시 유연한 확장성 보장과 병목 현상을 제거할 수가 있다.
도 1은 본 발명의 단일칩 다중처리형 마이크로프로세서의 구성도,
도 2는 단일칩 다중처리형 마이크로프로세서의 외부 입출력 신호의 설명도,
도 3은 본 발명의 단일칩 다중처리형 마이크로프로세서를 사용한 실시예에 따른 시스템의 구성도.
<도면의 주요 부분에 대한 부호의 설명〉
10a,...,10n : ILP 프로세서 20 : 동기화 전용 레지스터 파일
30 : 내부버스 40 : 링 제어기/패킷 버퍼
50 : 2차 캐쉬 제어기 60 : 패킷 송신기
70 : 임시 버퍼 80 : 패킷 수신기
100 : 단일칩 다중처리형 마이크로프로세서
본 발명에서 사용하는 단일칩 다중처리형 마이크로프로세서는 동기화 명령어 처리시 동기화 전용 레지스터 파일을 사용하며, 메모리 접근 및 입출력 장치 접근과 마이크로프로세서간 통신을 위한 외부 데이터 전송을 단방향 입출력 분리형 링 정합장치를 사용하여 수행한다.
이하, 본 발명을 첨부된 도면에 의거하여 상세히 설명한다.
도 1은 본 발명의 단일칩 다중처리형 마이크로프로세서(100)의 구성도이다.
도 1에 도시된 바와 같이, 단일칩 다중처리형 마이크로프로세서는, 복수개의 ILP 프로세서(10a,...,10n)와 2차캐쉬 제어기(50)와, 링 제어기/패킷 버퍼(40)를 내부 버스(30)를 사용하여 연결한 구조를 갖는다. 복수개의 ILP 프로세서(10a,...,10n)는 다중포트 레지스터 파일로 구성된 동기화 전용 레지스터 파일(20)을 사용하여 동기화 명령어를 수행한다. 링 제어기/패킷 버퍼(40)는 내부 버스(30)를 통하여 발생한 외부 데이터 전송 요구를 패킷 송신기(60)를 통하여 전송하고, 외부에서 입력되는 데이터는 패킷 수신기(80)를 통하여 수신되어 링 제어기/패킷 버퍼(40)와 내부 버스(30)를 거쳐 해당 ILP 프로세서에게 전달된다. 또한, 패킷 수신기(80)로 입력된 데이터 중 해당 단일칩 다중처리 마이크로프로세서를 목적지로 하지 않는 데이터는 임시버퍼(70)에 임시로 저장되었다가, 패킷 송신기(60)를 통하여 방출된다.
위에서 언급된 본 발명의 복수개의 ILP 프로세서(10a,...,10n)는 각각 독립된 쓰레드 또는 타스크를 처리한다. 이때 복수개의 ILP 프로세서(10a,...,10n)는 칩 외부에 위치한 공유 메모리에 공유 데이터를 설정하고 이를 통하여 상호 통신하게 된다. 각 ILP 프로세서(10a,...,10n)들은, 공유 데이터에 대한 상호 배제 접근을 위하여 잠금 변수를 사용하게 되며 잠금 변수에 대한 접근은 인출 및 가산(Fetch-and-add), 시험 및 설정(Test-and-set), 비교 및 스왑(Compare-and-swap)등의 동기화 명령어를 수행하여 처리한다.
상기와 같은 동기화 명령어들은 공유 메모리에 위치한 잠금 변수를 상대로 동작함으로써 매 수행시 한번의 주소변환과 두번의 메모리 접근이 요구되어진다. 또한 복수개의 ILP 프로세서(10a,...,10n)에 의해서 접근 경쟁이 발생할 경우 접근 권한을 획득하지 못한 ILP 프로세서는 비지-재시도(Busy-retry)를 수행하게 되어 트래픽을 증가시킨다.
이러한 현상을 개선하기 위하여 본 발명에서는 동기화 전용 레지스터 파일(20)을 단일칩 마이크로프로세서 내부에 위치시키고, 이를 사용하여 동기화 명령어를 수행한다.
단일칩 다중처리 마이크로프로세서에서 복수개의 쓰레드(또는 타스크)가 공유 데이터와 잠금 변수를 사용하여 병렬 수행할때는,
1. 마스터 쓰레드(또는 타스크)를 수행하는 칩 내부의 임의의 ILP 프로세서는 잠금 변수 초기화를 수행하며, 이때 잠금 변수를 공유 메모리에서 읽어와서 동기화 레지스터 파일(20)의 임의의 레지스터에 복사한다.
2. 마스터 쓰레드(또는 타스크)를 수행하는 ILP 프로세서는 자식 쓰레드(또는 타스크)를 포크한다.
3. 마스터 쓰레드(또는 타스크)를 수행하는 ILP 프로세서와 자식 쓰레드(또는 타스크)를 수행하는 ILP프로세서들은 동기화 레지스터 파일에 위치한 잠금 변수에 대하여 동기화 명령어(Fetch-and-add, Test-and-set, Compare-and-swap등)를 수행하여 공유 데이터에 대한 상호 배제 접근 권리를 획득한다. 이때 동기화 명령어의 수행 대상은 동기화 레지스터 파일에 위치한 잠금 변수이므로 주소 변환 및 메모리 접근은 발생하지 않는다.
4. 상기 3과 같은 방법으로 공유 데이터를 사용하여 통신하며 작업이 종료되면 마스터 쓰레드(또는 타스크)를 수행하는 ILP 프로세서는 동기화 레지스터 파일(20)에 있는 잠금 변수를 메모리에 갱신한다.
5. 본 발명에 의한 단일칩 다중처리 마이크로프로세서를 복수개 사용하여 시스템을 구축하고 복수개의 단일칩 다중처리 마이크로프로세서간 통신에 사용되는 잠금 변수는 종래의 방식대로 공유 메모리에 잠금 변수를 위치시고 공유 메모리를 대상으로 동기화 명령어를 수행한다.
본 발명과 같은 동기화 명령어 처리를 위하여 각 ILP프로세서는 동기화 전용 레지스터 파일을 사용하는 전용 명령어를 지원해야 하며, 전용 명령어를 사용할 수 있도록 컴파일러의 지원이 요구된다. 또한 콘텍스트 스위칭이 발생할 경우, 칩 내부의 모든 ILP 프로세서(10a,...,10n)들은 동시에 스위칭되며, 이때 마스터 프로세서로 지정된 특정 ILP 프로세서는 동기화 레지스터 파일을 대피시키고, 리로드(reload)하는 책임을 져야 한다.
단일칩 다중처리 마이크로프로세서 내부의 ILP 프로세서(10a,...,10n)간 통신을 상기와 같이 동기화 전용 레지스터 파일(20)을 사용하므로서 잠금 변수에 대한 동기화 명령어 수행시 발생하는 주소 변환 동작과 메모리 접근을 줄이고, 잠금 변수에 대한 경쟁시 발생하는 내부 버스(30) 및 외부 정합장치의 비지-재시도 현상을 제거하여 단일칩 다중처리 마이크로프로세서 및 이를 사용하여 구성한 시스템의 성능을 향상시킨다.
도 1을 참조하여 단일칩 다중처리 마이크로프로세서의 외부 정합장치 구성과 동작을 메모리 접근 요구를 예를 들어 설명하면 다음과 같다.
단일칩 다중처리형 마이크로프로세서 내부의 ILP 프로세서(10a,...,10n)는 내부 버스(30)에 메모리 읽기 또는 쓰기 요구를 발생한다. 발생한 메모리 요구는 2차 캐쉬 제어기(50)와 링 제어기/패킷 버퍼(40)에 수신되고, 2차캐쉬 제어기(50)는 캐쉬 적중 여부를 판단한다. 메모리 요구가 캐쉬 적중으로 판단되면 2차캐쉬 제어기(50)는 2차 캐쉬 데이터 램의 접근을 통하여 메모리 요구를 처리한다. 발생한 메모리 요구가 2차캐쉬 제어기(50)에 의해 오류로 판단되거나, 캐쉬 일관성 프로토콜에 의해 타 마이크로프로세서의 캐쉬 또는 메모리 갱신 요구가 발생하면 링 제어기/패킷 버퍼(40)는 해당 메모리 요구를 패킷으로 변환하여 패킷 송신기(60)에 전달한다. 송신기(60)는 해당 패킷을 링 연결망에 전송한다.
메모리 또는 타 마이크로프로세서에서 전송되는 데이터를 받는 과정은 다음과 같다.
패킷 수신기(80)로 입력되는 패킷은 수신기(80)에 의해 해독되어 수신 여부를 판단한다. 해당 패킷이 수신해야할 패킷일 경우에는 패킷을 수신하여 링 제어기/패킷버퍼(40)에 전달하고, 링 제어기/패킷 버퍼는 해당 패킷을 내부 버스(30)에 전달한다.
만일 수신기(80)로 입력되는 패킷이 자신이 수신할 패킷이 아니면 임시버퍼(70)를 통하여 패킷 송신기(60)로 전송한다. 패킷 송신기(60)는 해당 패킷을 링 연결망에 전송한다.
단방향 링 정합장치를 갖는 단일칩 다중처리 마이크로프로세서(100)의 외부 입출력 신호는 도 2에 도시된 바와 같다.
도 2를 참조하면, 클럭(111)은 마이크로프로세서의 주클럭으로 사용되며 동시에 송신기(60) 및 수신기(80)의 데이터 전송시 동작 클럭으로 사용된다. 리셋(112)은 초기화 신호이고, ID(113)신호는 링 연결망상에서 단일칩 다중처리 마이크로프로세서의 위치를 표현하는 신호선이고, 기타신호(114)는 단일칩 다중처리 마이크로프로세서의 시험 및 디버깅 등을 위한 신호이다.
2차 캐쉬 데이터 램 접근을 위해서는 캐쉬 어드레스(119), 캐쉬데이터(121) 그리고 읽기 또는 쓰기 및 전송 크기를 제어하는 제어신호(120)를 갖는다.
단방향 입출력 분리형 링 연결망 정합을 위하여 패킷입력(117)과 패킷 출력(115) 그리고, 송수신되는 패킷의 유효함과 에러정보, 흐름제어정보를 갖는 패킷제어신호(118, 116)를 갖는다.
도 3은 상기 도 1과 같은 구성과 도 2와 같은 입출력 신호를 갖는 단일칩 다중처리형 마이크로프로세서를 사용한 시스템 구성의 실시예이다.
도 3에서 프로세서(100a, 100b, 100c, 100d)는 본 발명의 단일칩 다중처리 마이크로프로세서이고, 메모리 모듈(200a, 200b, 200c)은 단일칩 다중처리 마이크로프로세서와 동일한 링 정합장치와 메모리 제어기를 포함한다. 입출력 버스 브릿지(300)는 역시 동일한 링 정합장치를 가지며 링 연결망과 입출력 버스(400) 프로토콜 사이의 변환을 담당한다.
도 3에서 시스템을 구성하는 프로세서(100a, 100b, 100c, 100d)와 메모리 모듈(200a, 200b, 200c), 입출력 브릿지(300)는 본 발명에 의한 단방향 입출력 분리형 링 정합장치를 갖는다. 시스템을 구성하는 각 요소는 패킷 송신기(60)에서 출력되는 패킷출력(115)와 패킷제어신호(116)를 이웃하는 요소의 패킷 수신기(80)로 전달되는 패킷입력(117)과 패킷제어신호(118)에 연결한다. 상기와 같은 방식으로 이웃하는 요소간에 패킷출력과 패킷입력을 점대점 연결하여, 시스템을 구성하는 모든 요소를 단방향 링 연결망으로 연결한다. 전송 요구를 발생하는 요소는 패킷출력(115)을 통하여 전송 요구를 발생하고, 해당 요구에 대한 응답을 패킷입력(117)을 통해서 받는다. 전송 요구에 응답하는 요소는 패킷입력(117)을 통하여 요구를 받고 해당 응답을 패킷출력(115)을 통해서 전송한다. 시스템을 구성하는 각 요소는 ID(113)신호를 사용하여 링 연결망상에서의 위치를 인식하고, 패킷 구성시 목적지 정보와 송신자 정보 구성에 사용하며, 입력되는 패킷에 들어있는 목적지 정보와 자신의 ID(113)를 비교하여 수신 여부를 판단한다.
이상과 같이 복수개의 ILP 프로세서를 단일칩에 집적한 본 발명의 단일칩 다중처리 마이크로프로세서는, 내부의 ILP 프로세서간에 공유 데이터를 사용하여 통신하게 된다. 이때 공유 데이터에 대한 상호 배제 접근을 위하여 잠금 변수에 대한 동기화 명령어를 사용하게 되며, 이때 잠금 변수에 대한 메모리 접근과 비지-재시도 현상이 발생하게 되어 단일칩 마이크로프로세서 및 이를 사용하는 시스템의 성능 저하 원인이 된다.
본 발명은 이를 개선하기 위하여 잠금 변수를 임시 저장할 수 있는 동기화 전용 레지스터 파일을 제공하고 이를 통하여 잠금 변수에 대한 동기화 명령어를 수행하여 일반적인 동기화 명령어 수행시 발생하는 주소변환 및 메모리 접근을 줄이고, 내부 버스 및 외부 정합장치에서 발생하는 비지-재시도 현상을 방지하여 단일칩 마이크로프로세서 및 이를 사용한 시스템의 성능을 향상시킬 수 있는 효과가 있다.
버스구조는 하나의 신호선이 복수개의 점에 연결되어야 하는 구조적 특성으로 인하여 전기적 신호의 전송지연시간 및 임피던스 제어의 어려움등으로 동작주파수를 100MHz 이상으로 높이기 어려운 단점이 있다. 또한 버스구조는 동작주파수와 전송데이터 폭에 의해서 대역폭이 고정되어 시스템의 확장성을 보장하지 못한다. 본 발명에서 제안하는 단일칩 다중처리형 마이크로프로세서는 단방향 점대점 연결에 의한 링 연결망을 사용하여 시스템을 구성할 수 있도록 단방향 입출력 분리형 링 정합장치를 마이크로프로세서가 가짐으로써, 상기와 같은 버스구조의 단점을 극복할 수 있다.
또한 차세대 마이크로프로세서 구조로 연구되고 있는 단일칩 다중처리형 마이크로프로세서의 경우, 기존의 단일처리형 마이크로프로세서에 비해 외부 데이터 송수신량이 높고 이로 인하여 외부 정합단에서 병목현상을 야기할 수 있다. 본 발명은 외부 데이터 송수신을 위하여 고속 주파수로 동작이 가능한 입출력 분리형 링 정합장치를 제공하여 단일칩 다중처리형 마이크로프로세서의 성능을 향상시킬 수 있는 효과가 있다.

Claims (4)

  1. 마이크로프로세서에 있어서,
    복수개의 ILP(명령어 수준 병렬처리기법) 프로세서;
    상기 복수개의 ILP 프로세서를 연결하는 내부버스; 및
    상기 복수개의 ILP 프로세서가 동시에 접근하여 동기화 명령어를 수행하기 위해 다중 포트를 갖는 동기화 전용 레지스터 파일로 구성된 것을 특징으로 하는 단일칩 다중처리 마이크로프로세서.
  2. 제 1 항에 있어서,
    내부의 ILP 프로세서간에 공유 메모리를 사용하여 내부 ILP프로세서 간에 상호 통신할 때, 공유 데이터에 대한 상호 배제 접근을 위해 사용되는 잠금변수를,
    상기 동기화 전용 레지스터 파일에 임시 저장하고 이를 사용하여 동기화 명령어를 수행하는 것을 특징으로 하는 단일칩 다중처리 마이크로프로세서.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 동기화 전용 레지스터 파일을 사용하여 동기화를 수행하는 전용 동기화 명령어를 명령어 세트에 포함하는 것을 특징으로 하는 단일칩 다중처리 마이크로프로세서.
  4. 제 1 항에 있어서,
    상기 복수개의 ILP 프로세서가 내부버스를 통해 메모리 접근 요구시에 그 요구가 캐쉬 적중으로 판단되면 메모리 접근 요구를 처리하는 2차 캐쉬 제어기;
    상기 메모리 접근 요구를 내부 버스를 통해 수신하여 그 요구가 2차 캐쉬 제어기에 의해 캐쉬 적중이 아닌 것으로 판단된 그 메모리 접근 요구와, 마이크로프로세서간 통신 요구 및 입출력 장치 접근 요구를 패킷으로 변환하고, 그 패킷을 패킷 송신기에 전달함과 함께 외부에서 입력되는 데이터를 내부 버스를 통하여 상기 복수개의 ILP프로세서에 전송하는 링 제어기/패킷 버퍼;
    상기 변환된 패킷과 임시버퍼를 통해 수신되는 패킷을 송신하는 패킷 송신기; 및
    외부에서 입력되는 패킷의 수신여부를 판단하여 수신해야할 패킷이면 상기 링 제어기/패킷 버퍼에 전달하고 아니면 임시버퍼를 통하여 상기 송신기에 전송하는 패킷 수신기로 구성된 단방향 입출력 분리형 링 정합장치를 외부 정합장치로서 더 포함하는 것을 특징으로 하는 단일칩 다중처리형 마이크로프로세서.
KR1019980044348A 1998-10-22 1998-10-22 동기화 전용 레지스터 파일을 갖는 단일칩 다중처리 마이크로프로세서 KR100279744B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019980044348A KR100279744B1 (ko) 1998-10-22 1998-10-22 동기화 전용 레지스터 파일을 갖는 단일칩 다중처리 마이크로프로세서
US10/429,143 US20040030873A1 (en) 1998-10-22 2003-05-05 Single chip multiprocessing microprocessor having synchronization register file

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980044348A KR100279744B1 (ko) 1998-10-22 1998-10-22 동기화 전용 레지스터 파일을 갖는 단일칩 다중처리 마이크로프로세서

Publications (2)

Publication Number Publication Date
KR20000030955A KR20000030955A (ko) 2000-06-05
KR100279744B1 true KR100279744B1 (ko) 2001-02-01

Family

ID=19554997

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980044348A KR100279744B1 (ko) 1998-10-22 1998-10-22 동기화 전용 레지스터 파일을 갖는 단일칩 다중처리 마이크로프로세서

Country Status (1)

Country Link
KR (1) KR100279744B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100871731B1 (ko) * 2007-05-22 2008-12-05 (주) 시스메이트 네트워크 인터페이스 카드 및 그 카드에서 수행되는 트래픽 분할 처리 방법, 상기 네트워크 인터페이스 카드를 포함하는 다중처리 시스템

Also Published As

Publication number Publication date
KR20000030955A (ko) 2000-06-05

Similar Documents

Publication Publication Date Title
US10521357B1 (en) Computing in parallel processing environments
TWI628594B (zh) 用戶等級分叉及會合處理器、方法、系統及指令
De Dinechin et al. A clustered manycore processor architecture for embedded and accelerated applications
Van der Wijngaart et al. Light-weight communications on Intel's single-chip cloud computer processor
Forsell A scalable high-performance computing solution for networks on chips
Blumrich et al. Virtual memory mapped network interface for the SHRIMP multicomputer
US8732416B2 (en) Requester based transaction status reporting in a system with multi-level memory
EP0901659B1 (en) Parallel processor with redundancy of processor pairs and method
US10394747B1 (en) Implementing hierarchical PCI express switch topology over coherent mesh interconnect
Chen et al. Supporting distributed shared memory on multi-core network-on-chips using a dual microcoded controller
Abadal et al. WiSync: An architecture for fast synchronization through on-chip wireless communication
JP2007272895A (ja) コンピュータプロセッサアレイの操作方法および装置
CN112199173B (zh) 双核cpu实时操作系统数据处理方法
US20040030873A1 (en) Single chip multiprocessing microprocessor having synchronization register file
US7165166B2 (en) Data processing system, data processing apparatus and control method for a data processing apparatus
US20170147345A1 (en) Multiple operation interface to shared coprocessor
Leibson et al. Configurable processors: a new era in chip design
KR100279744B1 (ko) 동기화 전용 레지스터 파일을 갖는 단일칩 다중처리 마이크로프로세서
CN111008042A (zh) 基于异构流水线的高效通用处理器执行方法及系统
US20220224605A1 (en) Simulating network flow control
Buono et al. Run-time mechanisms for fine-grained parallelism on network processors: The tilepro64 experience
Chadwick Communication centric, multi-core, fine-grained processor architecture
Shim et al. Knapp: A packet processing framework for manycore accelerators
Meakin Multicore system design with xum: The extensible utah multicore project
Gupta Design Decisions for Tiled Architecture Memory Systems

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: 20091029

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee