KR20060053246A - 컴퓨터 프로세서 시스템 - Google Patents

컴퓨터 프로세서 시스템 Download PDF

Info

Publication number
KR20060053246A
KR20060053246A KR1020050096454A KR20050096454A KR20060053246A KR 20060053246 A KR20060053246 A KR 20060053246A KR 1020050096454 A KR1020050096454 A KR 1020050096454A KR 20050096454 A KR20050096454 A KR 20050096454A KR 20060053246 A KR20060053246 A KR 20060053246A
Authority
KR
South Korea
Prior art keywords
instructions
hardware
memory
processors
channel
Prior art date
Application number
KR1020050096454A
Other languages
English (en)
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 KR20060053246A publication Critical patent/KR20060053246A/ko

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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

비동기식 파이 계산법에 기초한 기계 코드(machine code)를 직접 실행시키도록 설계된 프로세서가 공개되어있다. 이러한 프로세서는 파이 계산법에 기초한 프로그램을 실행하기 위한 스케일링가능(scalable)하고 느슨하게 연결된 구조를 제공하도록 의도된 멀티 프로세서 시스템의 구성요소일 수 있다.
파이 계산법, 기계 코드, 기계어, 프로세서, 컴파일러

Description

컴퓨터 프로세서 시스템{MESSAGE-PASSING PROCESSOR}
도 1은 36 비트 메모리 워드의 예시적인 실시예를 나타내는 도면.
도 2는 본 발명에 따른 프로세서 구조의 예시적인 실시예에 대한 블럭도.
도 3은 VHDL 시뮬레이터(simulator)로부터의 사용자 인터페이스를 나타내는 도면.
도 4는 논리 분석기로부터의 사용자 인터페이스를 나타내는 도면.
도 5a 및 5b는 각각 전형적인 종래 기술 프로세싱 시스템 및 본 발명에 따른 프로세싱 시스템에 대한 기능적 블럭도.
도 6은 본 발명의 양상이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시하는 블럭도.
<도면의 주요 부분에 대한 부호의 설명>
13: 제어 유닛
14: 데이터 레지스터
21: 프로세서
25: ALU 서비스
27: 포트
[문헌1] 미국 특허 출원 제10/816,558호 "PROCESS LANGUAGE FOR MICROPROCESSORS WITH FINITE RESOURCES" (2004년 3월 11일)
일반적으로, 본 발명은 컴퓨터 프로세서에 관한 것이다. 특히, 본 발명은 비동기식 파이 계산법에 기초한 기계 코드를 직접적으로 실행하도록 설계된 프로세서에 관한 것이다.
파이 계산법은, 예를 들어 셀폰이 한 기지국에서 다른 기지국으로 이동할 때, 통신 링크가 동적으로 재조직될 수 있는 느슨하게 연결된(loosely coupled) 메시지 전달 시스템들을 효율적으로 모델링하는 방식을 제공한다. 파이 계산법은 로빈 밀너(Robin Milner), "Communicating and mobile systems: the pi-calculus", 캠브리지 유니버시티 프레스(1999년)에 상세하게 설명되어 있다. 처음에는 형식적으로 이러한 시스템을 추론하기 위해 이 모델이 이용되었으며, 보다 최근에는 시스템을 실제로 구현하기 위해 파이 계산법 기반 프로그래밍 언어가 제안되고 있다. 또한, 본래의 파이 계산법은 메시지 송신이 수신기의 승인을 받는 동기식 모델이었다. 메시지가 응답을 기다릴 필요 없이 송신될 수 있는 비동기식 파이 계산법이 개발되고 있다(즉, 인터넷).
파이 계산 접근법에 기초한 포멀리즘(formalism)은 정밀한 방식으로 통신 시스템의 움직임을 추론하는 것을 허용한다. 예를 들어, 한 포멀리즘은 2개의 병행 프로세스를 분석하여, 그들의 통신이 소정의 프로토콜을 따른다는 것을 보증할 수 있었다. 파이 계산법에 기초한 언어로 작성된 프로그램에는, 등가의 분석을 임의의 C# 코드로 수행하는 하려고 하는 것보다, 수동적인 또는 자동적인 분석이 용이하게 행해질 수 있게 하는 질서(discipline)가 부과되어 있다.
몇몇 사람들에게, 파이 계산법이 프로그래밍 언어의 기초를 형성할 수 있다는 것은 급진적인 개념이었지만, 몇몇 프로젝트는 이 접근법이 많은 이점을 가질 수 있다는 점을 보여준다. 파이 계산법에 기초한 프로그래밍 언어는 느슨하게 연결된 메시지 전달 시스템 및 특히 웹 서비스를 설계 및 구현하기 위해 개발되고 있다. 파이 계산법의 한 실제 어플리케이션은 웹 서비스에 대한 "약정"을 분석하는 것을 포함한다.
파이 계산법에 기초한 프로그래밍 언어를 채용하는 예시적인 시스템은 통상적인 시스템 소프트웨어[예를 들어, 공통 언어 런타임("CLR")] 및 통상적인 프로세서 구조(예를 들어, 인텔사 x86 프로세서)의 최상위에서 실행됨으로써 동작한다. 그러나, 이것은, 시스템 구조 또는 프로세서가 느슨하게 연결된 메시지 전달 프로그램을 직접적으로 실행할 수 있을 때, 바람직할 것이다. 즉, 파이 계산법 레벨 코드와 통상적인 명령어 세트 구조 간의 의미 차이(semantic gap)를 좁히기 위해, 파이 계산법 기반 프로그램을 직접적으로 실행하는 메시지 전달 프로세서 시스템을 갖는 것이 바람직할 수 있다.
이것은 또한, 프로세서가 더 추가됨에 따라 이러한 시스템이 스케일링될 수 있음을 보증하기 위해, 이러한 시스템이 적절한 프로세서 및 메모리 구조로 설계되 어 있을 때 바람직하다. 즉, 이것은, x86 구조의 경우와 같은 단일 프로세싱 엔진에 집중된 상당한 복잡성을 통해서가 아니라, 다수의 단순하고 소형인 프로세서들의 스케일링가능한 배치를 통해서 이러한 프로세서들이 성능을 달성할 수 있을 때, 바람직하다. 느슨하게 연결된 구조에 기초한 소형 프로세서들은 성능과 파워의 트레이드오프(trade off)를 용이하게 한다. 파워가 낮은 어플리케이션에 대해서는, 단지 단일 프로세서만을 배치시킬 필요가 있을 수 있다. 인터넷 검색 가속 또는 생물학적 컴퓨팅과 같은 계산적으로 복잡한 태스크에 대해서는, 수백 개의 프로세서를 배치시키는 것이 바람직할 수 있다.
여기에 설명된 본 발명은 통상적인 프로세서 상에 파이 계산법 기반 프로그램을 효율적으로 구현하기에 적절한 중간 컴파일 기술(intermediate compilation technology)을 제공하며, 또한 파이 계산법 프리미티브(pi-culculus primitive)에 기초한 새로운 명령어 세트 구조를 제공한다. 파이 계산법에 대한 프로세서의 본보기는 설계되어 실제 하드웨어 상에 구현되어 있다.
본 발명은 파이 계산법 기반 프로그램을 하드웨어 상에서 직접적으로 실행시키기 위한 명령 세트 구조 및 프로세서 디자인을 제공한다. 본 발명의 프로세서의 예시적인 실시예가 기본적인 오퍼레이팅 시스템 커널을 가질 수 있지만, 다수의 프로세서, 문맥 전환 등을 관리하기 위한 코드를 작성할 필요는 없다. 예를 들어, 태스크 전환은 하드웨어 내에서 프로세서에 의해 수행될 수 있으며, 코드의 병행 가능성은 파이 계산법 기반 프로그램을 이용하여 증명될 수 있다. 이는 또한 코드 가 또 다른 프로세서 또는 심지어는 원격 위치에서 동작하게 한다.
이러한 구조는 "느슨하게 연결되어 있다"고 설명될 수 있다. 즉, 다른 기기 상에서 실행되고 있는 프로그램의 몇몇 컴포넌트들은 메시지를 전달함으로써 서로 통신할 수 있다. 통상적인 프로세서에서는, 컴포넌트가 특정한 태스크의 수행을 요청하고, 그 요청에 대한 응답을 기다릴 것이다. 느슨하게 연결된 구조에서는, 전형적으로 프로세싱 흐름을 제어하는 중앙 프로세서가 없다. 특정 프로세서는 단지 어떤 함수의 수행을 요청하는 메시지를 송신한 후, 전형적으로 첫 번째 요청에 대한 응답을 기다리지 않고, 다음에 무엇을 수행하도록 프로그램되어 있든지 상관없이, 그것을 수행하기 위해 이동한다. 그러므로, 이러한 시스템은 비동기식이다. 결국, 응답은 기술된 규칙의 몇몇 세트에 따라 메시지를 송신한 프로세서 또는 또 다른 프로세서에 의해 수신될 것이다. 이 유형의 구조는 프로세서가 가능한 최대한 독립적으로 (및 따라서 병행적으로) 프로세스할 수 있게 하는 느슨하게 연결된 프레임워크를 제공함으로써, 실리콘 칩의 전력을 보다 효율적으로 이용하도록 도울 수 있다.
그러나, 이러한 느슨하게 연결된 구조에서는, 제어되고 예측가능한 방식으로 전달되는 이러한 메시지의 출력을 정규화하는 이론이 요구된다. 비동기식 파이 계산법이 이러한 이론을 제공한다. 본 발명에 따른 프로세서는 비동기식 파이 계산법에 초점을 맞추고 있다. 파이 계산법 프리미티브에 따르는 명령어 세트는 하드웨어적으로 정의되어 있다. 또한, 프로세서는 전형적으로 소프트웨어에 의해 수행되는 함수인 스레드(thread)들 사이에 자신을 스케줄링한다. 예를 들어, 본 발명 에 따른 프로세서 시스템은 FPGA 하드웨어 상에서 직접적으로 동작하는 웹 서비스의 디자인 및 구현에 이용될 수 있다.
비동기식 파이 계산법에 기초한 명령어 세트 구조를 직접적으로 실행하는 프로세서의 예시적인 실시예가 이제 설명될 것이다. 이러한 프로세서는 자연어 레벨 개념과 기계 코드 레벨 구현 간의 의미 차를 줄임으로써 비동기식 파이 계산법에 기초한 언어로 작성된 프로그램을 실행시키는 데 이용할 수 있는 엔진을 제공한다.
파이 계산법은 채널 네임(channel name)이 전송 매체 및 전송되는 데이터 둘다의 역할을 할 수 있는 프로세스 대수(process algebra)이다. 그러므로, 파이 계산법은 모바일 시스템으로 알려진 자율적인 에이전트의 시스템을 모델링하는 데 이용될 수 있다. 모바일 시스템은 개별적인 컴포넌트들이 임의적으로 자유롭게 선택하는 방식으로 상호작용하는 통신 네트워크의 한 형태이다. 파이 계산법은 셀룰러폰 네트워크, 인터넷 및 객체 지향 소프트웨어 프로그램처럼 다양한 병행 계산 시스템 내에서의 상호작용을 모델링하도록 개발되고 있다. 이는 업무 프로세스 모델링 언어(BPML)와 같은 BPMI.org가 개발한 업무 프로세스 사양, 마이크로소프트사의 XLANG, BPEL4WS의 프리커서(precusor)의 기초에 이용된다.
비동기식 파이 계산법은 출력 프리픽싱(output-prefixing) 및 선택에 관한 명시적인 연산자를 포함하지 않는 파이 계산법의 서브세트이다. 비동기식 파이 계산법에 기초한 명령어 세트의 예시적인 실시예 중 기본 구성요소는 다음과 같은 7 개의 명령어를 포함할 수 있다.
NEW - 새로운 통신 채널을 동적으로 생성하기 위한 명령어;
SEND2 - 한 쌍의 워드를 비동기식으로 송신하기 위한 (직접 또는 간접적인) 명령어;
RECEIVE2 - 채널로부터 한 쌍의 워드를 판독하기 위한 명령어;
SELECT - 채널의 리스트에 주의를 기울이고 있다가 그 중 하나의 채널 상에 데이터가 나타나면 소정의 액션을 실행시키기 위한 명령어;
PAR - 프로세서 상에서 동작 중인 프로세스의 리스트에 새로운 프로세스를 추가하기 위한 명령어;
SERVE - 채널 상에 방금 도착한 데이터 값을 처리하기 위한 새로운 프로세스를 생성하기 위한 명령어; 및
HALT - 프로세스의 실행을 중지시키기 위한 명령어.
본 발명에 따르면, 각각의 하드웨어 회로는 상기 설명된 명령어 각각을 수행하도록 정의될 수 있다. 본 발명에 따르는 시스템은 하나 이상의 이러한 명령어를 포함한다. 소프트웨어가 파이 계산법 프리미티브에 기초한 프로그래밍 언어로 작성되어 있을 것이라고 기대되기 때문에, 소프트웨어가 실행되는 기기는 파이 계산법 프리미티브에 대응하는 하드웨어 명령어를 이용하여 관리될 수 있다. 그러므로, 본 발명에 따른 시스템에서, 파이 계산법 모델은 "상부에서부터 하부로" 적용될 수 있다. 각각의 명령어를 수행하는 하드웨어 프로세서의 예시적인 실시예에 대한 하드웨어 정의 언어("HDL") 설명은 부록에 제공되어 있다.
2부분으로 구성되는 비동기식 송신을 선택하면, 동기식 송신은 제2 독립변수로서 "연속 채널(continuation channel)"을 전달함으로써 모델링될 수 있다. 수신기는 메시지를 획득하면, 더미 값(dummy value)을 연속 채널로 내려보내 송신기에게 송신하여 수신을 확인시킬 수 있다[즉, 기본 핸드쉐이크 프로토콜(hand shake protocol)]. RECEIVE2 명령어는 실제로 SELECT 명령어의 변형된 경우임을 명심해야 한다. 그것은 효율성을 위한 프리미티브 명령어로서 제공되는데, 이는 프로그램이 전형적으로 비결정론적 선택보다 많은 수신을 갖기 때문이다.
이러한 7개의 명령어를 이용함으로써 임의의 컴퓨터적 함수[즉, 프로세서가 "튜링 컴플릿(Turing complete)"함]의 실행 및 모델 데이터 유형을 제공받는다. 그러나, 효율성을 위해, 32 비트 무부호 정수(32-bit unsigned integer)가 기본 데이터 유형으로 지원되는 것이 바람직하다. 채널도 또한 32 비트 주소로 나타내질 수 있다.
비동기식 파이 계산법으로 작성된 프로그램은 전형적으로 채널을 통해 통신하거나 새로운 채널을 생성하려고 하는 프로세스의 집합이다. 하나의 프로세스가 채널을 통해 또 다른 프로세스로 메시지를 송신하는 경우, 메시지가 송신되는 동안 상호작용이 일어날 수 있다. 송신하고 있는 프로세스는 죽을 수 있으며 (비동기식 송신을 뒤따르는 액션은 없음), 수신자는 방금 수신한 새로운 데이터 값으로 실행을 재개할 수 있다. 그러므로, 프로그램의 실행은 프로세스들 간의 일련의 상호작용에 대응할 수 있다.
바람직한 실시예에서, 36 비트 값을 갖는 메모리를 지원할 수 있는 FPGA 하 드웨어가 채용될 수 있다. 도 1은 36 비트 메모리 워드의 예시적인 실시예를 나타낸다. 도시된 바와 같이, 연산 코드(op-code)(및 채널 상태 정보)는 4개의 최상위 비트(즉, 도 1에 도시된 바와 같이 가장 좌측에 있는 4개의 비트)에 저장될 수 있다. 32 비트 값은 36 비트 워드의 나머지(즉, 가장 우측에 있는 32개의 비트)에 저장될 수 있다.
전형적으로, 대부분의 명령어의 제1 독립변수는 채널일 것이다. 채널은 범용 메모리 공간 내의 주소로 나타내질 수 있다. 명령어 세트 구조는 채널을 그것의 절대 주소로 식별할 필요가 없다. 대신, 채널은 절대 채널 주소를 포함하는 "변수"를 통해 간접적으로 참조될 수 있다. 예를 들어, NEW 연산 코드는 로컬 변수를 지정하는 독립변수(즉, 현재 "스택 프레임"으로부터의 오프셋)에 의해 호출될 수 있으며, 새롭게 할당된 채널의 주소는 저장되어야 한다.
SEND2 명령어는 또한 동일한 방식으로, 즉, 채널의 실제 주소를 포함하는 스택 프레임 상의 로컬 변수를 식별함으로써 통신에 이용할 채널을 지정할 수 있다. SEND2 명령어는 로컬 변수의 컨텐츠를 관찰하고 그것(예를 들어, 채널의 절대 주소)을 송신함으로써, 로컬 변수를 지정할 수 있는 간접적인 독립변수를 송신할 수 있다. 이에 의해, 채널이 채널을 통해 송신될 수 있으며, 이것은 파이 계산법의 기초적 특성이다. SEND2 명령어는 직접적인 모드 독립변수도 송신할 수 있다. 송신 명령어의 또 다른 모드는 네스팅된 영역(nested scope) 내에서 값이 송신되도록 허용한다. 이 연산 코드는, 네스팅된 절차 및 함수들이 파스칼과 같은 언어에 이용될 때, 스택 프레임에 접근하기 위한 NS32016 프로세서 내의 명령어와 유사하다.
새로운 프로세스는 힙(heap) 상에 새로운 태스크 프레임을 할당함으로써 SERVE 코맨드에 의해 자식을 생성할 수 있다. 이 태스크 프레임의 제1 워드는 인클로징 태스크 프레임(enclosing task frame)을 가리키고 있다.
병행 및 분산 어플리케이션의 보다 큰 클래스로 프로파일링하는 것이 바람직할 수 있으므로, 알려진 기술을 이용하여 쓰레기 수집기(garbage collector)가 구현될 수 있다. 따라서, 또 다른 실시예에서, 기존 스택 프레임은 복제 및 확장될 수 있으며, 쓰레기 수집을 용이하게 한다. 이러한 실시예에서, SERVE 연산 코드는 상이한 프로세서 상에서 생성된 프로세스를 자유롭게 인스턴스화할 수 있다.
컴파일링된 어셈블리의 제1 워드는 초기 태스크 프레임의 주소를 포함할 수 있으며, 제2 워드는 그것의 크기를 포함할 수 있다. 이것은 런타임 시스템이 힙의 초기 주소를 취할 수 있게 한다(이용하게 함). 그 결과, 프로그램 코드는 메모리 주소 2에서부터 시작할 수 있다.
종종, 한 집합의 채널들에 동시에 주의를 기울이다가, 그들 중 한 채널에 데이터가 나타나면 적절한 액션을 취하고 다른 채널들에는 더 이상 주의를 기울이지 않기를 원할 수 있다. 이 함수는 SELECT 명령어에 의해 수행될 수 있는데, SELECT 명령어는 채널 및 주소 쌍의 리스트가 후속한다. 프로세서는 주의를 기울일 채널들을 미지정된 순서로 검사하고, 한 채널이 데이터를 가질 때, 대응하는 코드가 실행될 수 있다.
명령어 세트는 독립변수에 지정된 절대 주소에 오프셋을 합산함으로써, PAR 및 SELECT 명령어[고정된 상태인 특정 채널의 주소를 모듈로(modulo)함]에 용이하 게 재할당가능한 기계 코드가 허용가능하게 되도록 설계될 수 있다. 명령어 세트 구조는 프로세스가 어떻게 스케줄링되는지 또는 얼마나 많은 데이터 항목이 특정 채널 상에 수용될 수 있는지에 대해서 언급할 필요가 없다. 공정성과 같은 다른 것들을 포함하는 이러한 고려사항은 특정 구조를 구현함으로써 설정될 수 있다.
명령어 세트 구조는 집약적인 수치 처리 어플리케이션보다는, 제어 및 프로토콜 기반 어플리케이션에 적합하게 설계될 수 있다. 예를 들어, 수치 집약적인 서브컴포넌트를 통합하기 위한 효율적 방식은, 이 함수를 위한 소정의 특수 목적 하드웨어를 설계하고 정규 채널에 액세스하는 데 이용되는 것과 완전히 동일한 채널 프로토콜을 이용하여 그 하드웨어와 통신하는 것이다.
다른 명령어들이 본 발명의 취지를 벗어나지 않고서 명령어 세트에 추가될 수 있음을 명심해야 한다. 이러한 명령어의 예는 동기식 송신과 단일 송신 및 수신을 포함한다. 그러나, 이러한 추가적인 명령어들을 포함함으로써 요구되는 실리콘 영역의 증가는 그들의 포함에 의해 기인할 수 있는 약간 증가된 성능을 정당화하지 않을 수 있다. 예를 들어, 동기식 전송이 어떤 종류의 어플리케이션에서는 통상적인 것일 수 있지만, 그들의 원격 구현은 결국 소정의 종류의 핸드쉐이크 프로토콜(상기 나타낸 연속 전달 기반 엔코딩이 행하는 것)로 변형된다. 그러므로, 약간 큰 프로그램(및 연속 채널)을 저장하기 위해 요구되는 다소의 여분 바이트에 대한 비용으로 인한 손해, 및 로컬 세팅 내의 몇몇 사이클의 손실로 인한 손해를 견디는 편이 바람직할 수 있다.
하드웨어 플랫폼 및 프로세서 구조
본 발명에 따라 메시지 전달 프로세서 시스템에 채용될 수 있는 하드웨어 플랫폼, 또는 "보드"의 예시적인 실시예는 멀티미디어 시스템을 구성하는 다양한 자원들에 연결된 필드 프로그래머블 게이트 어레이("FPGA")를 포함할 수 있다. 본 발명에 따라 설계된 하나 또는 복수의 (예를 들어, 10개) 프로세서를 포함할 수 있는 FPGA는 완전히 독립적인 복수의 메모리 뱅크 (예를 들어, 각각이 2MB ZBT 메모리일 수 있음), 비디오 입출력 논리, 오디오 입출력, 이더넷 인터페이스, 직렬 입력, 키보드 입력, 마우스 입력, 컴팩트 플래시 인터페이스(Compact Flash Interface), 다양한 스위치 및 LED에 연결될 수 있다.
파이 계산법 프로세서에 대해 상기 설명된 명령어 세트 구조는 통상적인 의미에서 어떤 레지스터도 요청하지 않는다. FPGA 구조는 수많은 듀얼 포트 메모리(dual-ported memory)(예를 들어, 바람직한 실시예에서는 56개)를 제공하는데, 이 듀얼 포트 메모리 각각의 크기는, 예를 들어 18K일 수 있다. 이러한 FPGA는 프로그램 및 데이터용 캐시뿐만 아니라 메시지 전달 시스템에서 이용되는 채널을 나타내는 데 이용될 수 있다. 메인 메모리는, 보다 큰 메모리 칩[예를 들어, 바람직한 실시예에서는 2MB의 뱅크(bank) 5개]과의 통신을 관리하는 "SDRAM" 제어기를 통해 액세스될 수 있다. 예를 들어, 가산기, 멀티플렉서, 및 직렬 포트 통신을 위한 UART와 같은 하드웨어 자원에의 접속을 제공하는 소정의 특정 채널들이 있을 수 있다. 다른 프로세서에 속해 있는 채널에는 스위치 네트워크를 통해 도달할 수 있다. 본 발명에 따른 프로세서 구조의 예시적인 실시예에 대한 블럭도가 도 2에 도시된다.
사용자의 프로그램 내의 논리적 채널은 2층의 계층적 메모리 내의 전역 주소(global address)로 나타내질 수 있다. 프로세서의 한 메모리 포트는 고속 클럭킹되는 인터페이스(fast clocked interface)를 통해 로컬 캐시에게 직접적으로 말할 수(speak) 있다. 또 다른 포트는 하나 이상의 프로세서를 범용 메모리 공간으로 연결시키는 메모리 "스위치"에게 말할 수 있다. 이러한 메모리들 사이의 인터페이스는 고정된 사이클의 동기식 인터페이스가 필요 없다. 인터페이스는 프로세서를 지원하는 기초 계산 모델과 같은 메모리 전달 시스템일 수 있는데, 여기서, 이 메모리 전달 시스템은 원격 메모리에 있는 컨텐츠를 요청하는 메모리 트랜젝션(예를 들어, 메시지)을 비동기식으로 송신한다. 이러한 분해(decoupling)는, 특정 프로세서에 대한 데이터를 포함하는 로컬 메모리로의 고성능 링크를 유지하면서도 스케일링가능한 메모리 구조가 배치될 수 있게 한다.
32 비트 주소 워드는 특정 프로세서를 식별하는 고급 비트와 그룹 내에서의 위치를 식별하는 저급 비트로 나뉠 수 있다. 그러므로, 고급 비트를 시험함으로써 채널이 국부적으로 통신하는지를 판정할 수 있다. 이 구조가 종래 명령어 세트 구조 상에서의 컴파일에 대한 디딤돌로서 이용되면, 이 조직은 몇몇의 채널 기반 컴퓨터 조작을 레지스터 기반 동작으로 대체시키는 최적화를 허용할 수 있다.
명령어 세트 구조의 또 다른 특징은 그것이 어떤 산술적 동작(arithmetic operation)도 포함할 필요가 없다는 것이다. 대부분의 컴퓨팅 구성요소는 가산기 및 멀티플렉서와 같은 외부 프로세스에 의해 모델링될 수 있다. 이것은 어떻게 2개의 수를 합산하고 그 결과를 직렬 포트에 기록하는지를 보여주는 다음의 파이 계 산법 마이크로 어셈블리의 일부에 의해 예시될 수 있다:
Figure 112005057862490-PAT00001
이 코드는 가산기가 결과를 반환하기 위한 새로운 채널(k1)을 생성한다. 그 후 2개의 프로세스를 병렬로 실행한다. 하나의 프로세스는 특정한 가산기 채널에게 합산할 값을 포함하는 2개의 채널(x,y) 및 결과를 반환하기 위한 채널(k)을 송신한다. 다른 프로세스는 채널 k1 상의 결과에 주의를 기울인 후, 예를 들어 시스템의 RS232 포트에 연결된 장치 상에서의 디스플레이를 위해 UART에 합산을 기록한다.
이러한 채널 기반 동작은 통상적인 프로세서에서의 실행을 위한 정규 x86 또는 RISC-기반 ADD 동작으로 변형될 수 있음을 이해해야 한다. 이러한 명령어들을 외부화하면, 훨씬 더 작은 명령어 세트를 갖게 되어, 프로세서가 훨씬 더 컴팩트해지고, 따라서 주어진 다이(die) 영역 내에 이러한 프로세서들을 보다 더 많이 구현할 수 있게 된다.
예를 들어, 본 발명을 따르는 기본 파이 계산법 프로세서의 단일 프로세서 실시예는 논리 셀 592개, 플립플롭 308개, 및 중간 크기 FPGA의 18K 듀얼 포트 메모리 블럭(dual-ported memory block)(예를 들어, XC2V2000) 2개를 포함할 수 있는데, 이것은 사용가능한 논리적 자원의 약 3%를 나타낸 것이다. 이것은 전형적으로 2개 이상의 프로세서에 의해 공유되는 SDRAM 제어기에 대한 자원을 포함하지 않는 다.
예시적인 실시예의 본보기는 10 나노초 이하 동안 매 사이클을 실행하도록 설계 및 구축되었는데, 이것은 100MHz의 동작 주파수를 제공한다. 예를 들어, 이것은 인텔사의 "펜티엄" 프로세서와 같은 다수의 알려진 프로세서의 동작 주파수보다 현저하게 낮은 동작 주파수지만, 매우 복잡한 프로세서 하나를 만들기보다 단순한 프로세서의 개수를 늘림으로써 성능이 향상될 수 있다. 또한, FPGA의 본보기를 만드는 기술은 전형적으로 주문형 실리콘 구현보다 어느 정도 느리다. 따라서, 예를 들어, 본 발명에 따른 프로세서는 90nm CMOS 실리콘 프로세서 상에서 1GHz 보다 빠르게 실행해야 함을 이해해야 한다.
스위치 매트릭스는 다수의 파이 계산법 프로세서들을 통신적으로 연결하는 데 이용될 수 있다. 현재 이용가능한 최대 FPGA 상에서는, 최고 100개의 파이 계산법 프로세서가 서로 연결될 수 있다고 예상된다.
본 발명에 따른 프로세서 시스템의 예시적인 실시예는 마이크로 어셈블러, 디어셈블러, 및 프로세서용 부트 메모리를 초기화하는 코드 생성기를 포함할 수 있다. 본보기를 만들 때, 프로세서는 VHDL 코드로 구현될 수 있는데, 이것은 잘 알려진 툴을 이용하여 논리적 넷리스트(netlist)에 합성될 수 있다.
마이크로 어셈블러는 파이 계산법 프로그램 컴파일러의 후미에 덧붙여지도록 설계될 수 있다. 파이 계산법에 기초한 프로그램은 또한 마이크로 어셈블러 내에 직접적으로 작성될 수도 있었다. 예를 들어, 다음의 어셈블리 프로그램의 일부는 비동기식 파이 계산법 프레임워크 내의 메시지 2개를 동기식으로 전송할 것을 엔코 딩한 것이다:
Figure 112005057862490-PAT00002
이 프로그램은 통신 채널 1개 및 연속 채널(continuation channel) 2개를 생성한 후, 다음의 동작을 병렬로 수행한다: a) 값 5와 연속 k1을 포함한 쌍을 chan1에 보낸다; b) 연속 k1에 대한 응답을 기다렸다가 값 7과 연속 k2를 포함하는 쌍을 chan1에 보낸다; c) 연속 k2에 대한 응답을 기다렸다가 그 프로세스를 죽인다; 및 d) chan1 상에서의 전송을 기다렸다가 소정의 데이터가 수신될 때마다 그것을 처리하기 위한 개별적인 프로세스를 포크(fork)한다. (이 경우 특정 채널 FFEE에 기록함으로써 몇몇 출력을 기록함)
이 프로그램은 다음과 같은 어셈블리 코드로 컴파일링될 수 있다:
Figure 112005057862490-PAT00003
프로세서가 기초적인 오퍼레이팅 시스템 커널을 갖고 있지만, 멀티 프로세서, 문맥 스위치 등을 관리하기 위한 코드를 작성할 필요가 없을 수 있다. 이러한 태스크들은 프로세서에 의해 수행될 수 있다. 코드의 병행 가능성은 PAR 및 SERVE 연산 코드를 이용하여 증명될 수 있다. 이 시스템은 어떤 주어진 프로세서 또는 심지어 원격 위치 상에서도 코드를 자유롭게 실행시킬 수 있다.
생성된 어셈블리 코드는 프로세서의 부트 메모리에 대한 초기화 정보로 변환될 수 있고, 이 프로그램의 정확한 사이클 실행(cycle accurate execution)은 이러 한 명령어가 800나노초 내에 완료될 수 있음을 나타내는 VHDL 시뮬레이터를 이용하여 결정될 수 있다(도 3). 실험적 설정은 상기 설명된 실제 하드웨어 상에서 컴파일링된 파이 계산법 프로그램을 실행시키는 데 이용되며, 그들의 진행과정은 내부 상태를 검사하기 위해, 플래싱 LED, 하이퍼터미널(HyperTerminal) 등을 통해서 그리고 논리 분석기를 이용하여 모니터링되었다(도 4 참조).
도 5a 및 5b는 전형적으로 각각 종래 기술 프로세싱 시스템(10) 및 본 발명에 따르는 프로세싱 시스템(20)에 대한 기능 블럭도이다. 도 5a에 도시된 바와 같이, 복수의 프로세서(11)는, 예를 들어 버스일 수 있는 통신 경로(12)에 연결될 수 있다. 각각의 프로세서(11)는 제어 유닛(13), 데이터 레지스터(14) 및 ALU(15)를 포함할 수 있다. 제어 유닛(13)은 명령어 실행을 수행한다. 데이터 레지스터(14)는 제어 유닛에 의해 조작된 데이터를 포함한다. ALU(15)는 가산, 감산, 논리 동작, 마스킹(masking) 및 시프팅(shifting)(곱하기 및 나누기)을 수행한다. RAM(16)은 또한 통신 경로(12)에 연결되어 있다. 프로세서(11)는 RAM(16)에 액세스(즉, 판독 및 기록)할 수 있다. 프로세서들은 RAM에의 액세스를 공유한다. 각각의 프로세서는, 프로그램 명령어 세트를 순차적으로 실행하고, 필요에 따라 자기 자신의 ALU, 데이터 레지스터, 공유 메모리에 액세스한다.
도 5b에 도시된 바와 같이, 복수의 명령어 프로세서(21)는 통신 경로(22)에 연결될 수 있다. RAM(26), ALU 서비스(25) 및 포트(27)도 또한 통신 경로(22)에 연결될 수 있다. 프로세서(21)는 ALU 서비스 및 RAM에의 액세스를 공유한다. 프로세서(21)는 또한 포트(27)를 공유한다. 본 발명에 따른 시스템(20)에서, 프로그 램은 네트워크를 통해 전달된 메시지를 통해 실행될 수 있다. 예를 들어, 명령어 프로세서(21)는 명령어 스트림을 포함한 메시지를 수신할 수 있다. 명령어 프로세서(21)는 명령어 스트림 상에서 동작할 수 있고, 프로세스시에는, 공유 RAM(26), 공유 ALU 서비스(25) 및 공유 포트(27)에 액세스할 수 있다. 명령어 프로세서는 포트에서부터 데이터를 판독하고 데이터를 포트 상에 저장할 수 있다. 이러한 시스템은 단순히 명령어 프로세서(21)를 통신 네트워크에 추가함으로써 스케일링될 수 있다.
예시적인 컴퓨팅 환경
도 6은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 예시한다. 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 일례일 뿐 본 발명의 이용 또는 기능에 대한 영역에 어떤 제한을 두기 위한 것은 아니다. 컴퓨팅 환경(100)이 예시적인 오퍼레이팅 환경(100)에 예시된 임의의 하나의 컴포넌트 또는 컴포넌트의 조합에 관련된 종속성 또는 요구사항을 갖는 것으로 고려되어서는 안된다.
본 발명은 수많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경 또는 구성과 함께 동작한다. 본 발명이 적절하게 이용될 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예는 개인용 컴퓨터, 서버 컴퓨터, 핸드핼드 장치, 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱박스, 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이에만 제한된 것은 아 니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 문맥으로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정한 태스크를 수행하고 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 태스크가 통신 네트워크 또는 다른 데이터 전송 매체를 통해 링크된 원격 프로세싱 장치에 의해 수행되는 분산 컴퓨팅 환경에서 구현될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈 및 다른 데이터는 메모리 저장 장치를 포함하는 국부 및 원격 컴퓨터 저장 매체 모두에 위치할 수 있다.
도 6을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태인 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)를 포함할 수 있지만, 이에만 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스, 메모리 제어기, 주변 버스 및 다양한 버스 구조 중 임의의 것을 이용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 임의의 것일 수 있다. 예를 들어, 이러한 구조는 ISA 버스, MCA 버스, EISA 버스, VESA 로컬 버스, (메자닌 버스라고도 알려진) PCI 버스를 포함하지만, 이에만 제한되는 것은 아니다.
컴퓨터(110)는 전형적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함한다. 예를 들어, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에만 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보를 저장하기 위한 임의의 방법 또는 기술로 구현될 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 디스크 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 이용할 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에만 제한되는 것은 아니다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에 구현하고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하도록 하나 또는 그 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접 유선 연결과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하지만, 이에만 제한되는 것은 아니다. 상기 임의의 것의 조합도 컴퓨터 판독가능 매체의 영역에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리의 형태인 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에, 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기 본 입출력 시스템(133)(BIOS)은 전형적으로 ROM(131)에 저장된다. RAM(132)은 전형적으로 프로세싱 유닛(120)에 즉각적으로 액세스가능하고/하거나 현재 그것 상에서 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들어, 도 6은 오퍼레이팅 시스템(134), 어플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 예시하지만, 이에만 제한되는 것은 아니다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 6에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(140), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 6에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨 터(110)를 위한 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 6에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 어플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 어플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 어플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리 적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 6에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 6은 메모리 장치(181)에 상주하는 원격 어플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다.
상기 설명된 바와 같이, 본 발명의 예시적인 실시예는 다양한 컴퓨팅 장치에 관련하여 설명되어 있지만, 기본 개념은 어떤 컴퓨팅 장치 또는 시스템에도 적용될 수 있다.
여기에 설명된 다양한 기술은 하드웨어, 소프트웨어, 또는 적절할 경우에 그 둘의 조합에 관련하여 구현될 수 있다. 그러므로, 본 발명의 방법 및 장치, 또는 그것의 특정 양상 또는 일부분은 플로피 디스켓, CD-ROM, 하드 드라이브 또는 임의의 다른 기기 판독가능 저장 매체와 같은 유형 매체에 임베딩된 프로그램 코드의 형태(즉, 명령어)를 취할 수 있는데, 여기서 프로그램 코드가 컴퓨터와 같은 기기에 로드되고 그 기기에 의해 실행되면, 그 기기는 본 발명을 실행시키기 위한 장치가 된다. 프로그래밍가능 컴퓨터 상에서 프로그램 코드를 실행할 경우에, 컴퓨팅 장치는 일반적으로 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 구성요소를 포함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함할 것이다. 바래진다면, 프로그램(들)은 어셈블리 언어 또는 기계어로 구현될 수 있다. 어떤 경우에서든, 언어는 컴파일링된 또는 인터프리팅된 언어일 수 있고, 하드웨어 구현에 조합될 수 있다.
본 발명의 방법 및 장치는 전기선 또는 전기 케이블, 광섬유, 또는 임의의 다른 전송 형태와 같은 몇몇 전송 매체를 통해 전송될 수 있는 프로그램 코드의 형태로 구현된 통신을 통해 구현될 수도 있는데, 여기서 프로그램 코드가 EPROM, 게이트 어레이, 프로그램가능 논리 장치(PLD), 클라이언트 컴퓨터 등과 같은 기기에 수신 및 로드되고 그것에 의해 실행되면, 기기는 본 발명을 구현하는 장치가 된다. 범용 프로세서 상에서 구현될 때, 프로그램 코드는 프로세서와 조합하여, 본 발명의 함수를 호출하도록 동작하는 고유 장치를 제공한다. 추가적으로, 본 발명에 관 련하여 이용되는 임의의 저장 기술은 언제나 하드웨어와 소프트웨어의 조합일 수 있다.
그러므로, 비동기식 파이 계산법에 기초하는, 기계 코드를 직접적으로 실행하도록 설계된 하드웨어 프로세서들이 설명되어 있다. 본 발명이 다양한 특징들로 설명된 특정한 선호되는 실시예에 관련하여 설명되어 있지만, 다른 유사한 실시예가 이용될 수 있으며, 본 발명을 벗어나지 않으면서 본 발명을 구현하는 설명된 실시예에 대한 수정물 또는 추가물이 만들어질 수 있음을 이해해야 한다. 그러므로, 본 발명은 임의의 단일 실시예에 한정되기 보다는, 오히려 다음의 청구항에 따르는 범위 및 영역 내에 구성되어야 한다.
예를 들어, FPGA가 "가상 하드웨어"에 대한 가능성을 제공, 즉 런타임시에 하드웨어를 칩 안으로 그리고 칩 밖으로 동적으로 스와핑(swap)시켜야함을 이해해야 한다. 이 기능을 활용하기 위해 손으로 정교하게 만든 시도가 많이 이루어졌지만, 동적 재구성을 위한 만족스러운 모델은 없다. 예를 들어, 파이 계산법과 같은 모바일 프로세서 대수의 응용가능성이 이러한 시스템을 모델링하기 위해 연구될 수 있다. 단조롭고 재구성가능한 기술은 어떤 동작이 하드웨어 가속을 요구하는지를 동적으로 결정할 수 있는 미래의 오퍼레이팅 시스템에 대해 매우 유용할 수 있었다.
또 다른 최근 기술상의 발전은 초고속 직렬 링크의 이용이다. 실리콘 칩은 다수의 10GB 직렬 트랜스시버(transceiver)에의 액세스를 갖고 있는데, 그 10GB 직렬 트랜스시버는 (칩 간, 보드 레벨 및 그 이상) 고속 통신을 구현하는 데 이용될 수 있다. 이러한 파워를 이용하는 것은 느슨하게 연결된 시스템에 대한 프로토콜을 조심스럽게 설계 및 구현할 필요가 있을 수 있다.
또한, 상기 설명된 예시적인 구조에서, 제1 메시지가 이미 채널에서 대기하고 있으면, 제2 메시지는 송신될 수 없다(즉, 그 채널에 배치될 수 없음)는 것을 이해해야 한다. 대신, 제1 메시지가 제거될 때까지 기다려야 한다. 따라서, 상기 설명된 예시적인 구조는 몇몇에 의해 순수한 의미의 "비동기식"이 아니라고 고려될 수 있는데, 이는 수신 코맨드는 시간제한을 갖지만 송신 코맨드는 그렇지 않은 경우, 및 송신 코맨드가 메시지를 포스팅(post)할 때, 수신기는 그것에 대해 모를 경우와 같은 경우이다. 이러한 "준비동기식" 구조를 동기식 구조로 바꾸는 것이 쉬워야 함이 이해되어야 한다(예를 들어, 수신자가 메시지를 포스팅할 때, 수신기는 함수를 실행시키고, 송신자는 그 함수에 대한 응답을 받음). 동기식 구조는 코드로 구현되기 용이할 수 있기 때문에, 어떤 응용에서는 비동기식 구조보다 유용할 수 있다.
부록
이 부록은 비동기식 파이 계산법 프리미티브에 기초한 명령어를 수행하는 하드웨어 프로세서의 예시적인 실시예에 대한 하드웨어 정의 언어 설명을 포함한다. 여기에 제공된 HDL 설명은 단지 예시적인 것이며, 임의의 개수의 하드웨어 정의도 비동기식 파이 계산법 프리미티브에 기초한 명령어를 수행하는 프로세서를 설명할 수 있었음을 이해해야 한다.
Figure 112005057862490-PAT00004
Figure 112005057862490-PAT00005
Figure 112005057862490-PAT00006
Figure 112005057862490-PAT00007
Figure 112005057862490-PAT00008
Figure 112005057862490-PAT00009
Figure 112005057862490-PAT00010
----------------------------------------------------------
-- 직접적인 Cp-Code 를 송신함
----------------------------------------------------------
-- 사이클1: 연산 코드, 채널 ID 이용가능함
-- 판독할 채널 주소를 셋업함
-- 사이클2: 채널 주소 이용함, 판독할 컨텐츠를 셋업함
-- 사이클3: 채널이 꽉 차면 블러킹함, 그렇지 않으면
-- 당면한 독립변수를 판독하도록 셋업함
-- 사이클4: 당면한 독립변수 이용가능함, 채널의 제1 슬롯에
-- 당면한 독립변수를 기록하도록 셋업함
-- 간접 독립변수를 판독하도록 셋업하고,
-- 태스크 리스트로부터 이 프로세서를 삭제하도록 셋업함
-- 사이클5: 간접 독립변수가 이용가능하므로
-- 채널 내의 제2 슬롯에 이것을 기록하도록 셋업함
-- 사이클6: 간접 독립변수의 기록의 완료함,
-- 주의: 사이클5 및 6의 병합을 고려.
Figure 112005057862490-PAT00011
Figure 112005057862490-PAT00012
Figure 112005057862490-PAT00013
------------------------------------------------------------
-- PAR 연산 코드 상태
------------------------------------------------------------
Figure 112005057862490-PAT00014
-------------------------------------------------------------------
-- RECEIVE 연산 코드 상태
-------------------------------------------------------------------
Figure 112005057862490-PAT00015
Figure 112005057862490-PAT00016
---------------------------------------------------------
-- 실행 모드에 대해 준비된 연산 코드 및 arg 1을 판독함
---------------------------------------------------------
Figure 112005057862490-PAT00017
---------------------------------------------------------
-- 패칭된 명령어 + arg1을 실행함
---------------------------------------------------------
Figure 112005057862490-PAT00018
Figure 112005057862490-PAT00019
----------------------------------------------------------------
-- NEW Cp-Code
----------------------------------------------------------------
Figure 112005057862490-PAT00020
----------------------------------------------------------------
-- 프로그램 및 플래시 LED를 버림
----------------------------------------------------------------
Figure 112005057862490-PAT00021
Figure 112005057862490-PAT00022
Figure 112005057862490-PAT00023
Figure 112005057862490-PAT00024
Figure 112005057862490-PAT00025
Figure 112005057862490-PAT00026
Figure 112005057862490-PAT00027
Figure 112005057862490-PAT00028
Figure 112005057862490-PAT00029
Figure 112005057862490-PAT00030
Figure 112005057862490-PAT00031
본 발명은 본 발명은 비동기식 파이 계산법에 기초하여 기계 코드를 직접적으로 실행하도록 설계된 프로세서를 제공한다.

Claims (27)

  1. 컴퓨터 프로세서 시스템에 있어서,
    적어도 하나의 프로세서를 포함하고,
    상기 프로세서는 파이 계산법 프리미티브(pi-calculus primitive)에 기초하여 하드웨어 명령어를 수행하도록 적응된 전자 회로를 포함하는 컴퓨터 프로세서 시스템.
  2. 제1항에 있어서, 상기 파이 계산법 프리미티브는 비동기식 파이 계산법 프리미티브인 컴퓨터 프로세서 시스템.
  3. 제1항에 있어서, 상기 적어도 하나의 프로세서는 복수의 전자 회로를 더 포함하고, 상기 복수의 전자 회로 각각은 대응하는 파이 계산법 프리미티브 세트에 기초하여 하드웨어 명령어 세트의 각 하드웨어 명령어를 수행하도록 적응된 컴퓨터 프로세서 시스템.
  4. 제3항에 있어서, 상기 하드웨어 명령어 세트는 워드(word)의 쌍을 비동기식으로 송신하기 위한 명령어 및 채널로부터 워드의 쌍을 판독하기 위한 명령어를 포함하는 컴퓨터 프로세서 시스템.
  5. 제4항에 있어서, 상기 워드의 쌍을 비동기식으로 송신하기 위한 명령어는 본 명세서의 부록에 제공된 SEND2 명령어의 하드웨어 정의 언어 설명에 적어도 부분적으로 기초하는 컴퓨터 프로세서 시스템.
  6. 제4항에 있어서, 상기 채널로부터 워드의 쌍을 판독하기 위한 명령어는 본 명세서의 부록에 제공된 RECEIVE2 명령어의 하드웨어 정의 언어 설명에 적어도 부분적으로 기초하는 컴퓨터 프로세서 시스템.
  7. 제4항에 있어서, 상기 하드웨어 명령어 세트는,
    새로운 통신 채널을 동적으로 생성하기 위한 명령어;
    채널의 리스트에 주의를 기울이고 있다가, 데이터가 상기 리스트 내의 채널 중 하나에 나타나면 액션을 실행시키기 위한 명령어;
    상기 프로세서 상에서 동작중인 프로세스들의 리스트에 새로운 프로세스를 추가하기 위한 명령어;
    채널 상에서 수신한 데이터 값을 처리하기 위한 새로운 프로세스를 생성하기 위한 명령어; 및
    프로세스의 실행을 정지하기 위한 명령어
    중 적어도 하나를 포함하는 컴퓨터 프로세서 시스템.
  8. 제7항에 있어서, 상기 새로운 통신 채널을 동적으로 생성하기 위한 명령어는 본 발명의 부록에 제공된 NEW 명령어의 하드웨어 정의 언어 설명에 적어도 부분적으로 기초하는 컴퓨터 프로세서 시스템.
  9. 제7항에 있어서, 상기 채널의 리스트에 주의를 기울이기 위한 명령어는 본 발명의 부록에 제공된 SELECT 명령어의 하드웨어 정의 언어 설명에 적어도 부분적으로 기초하는 컴퓨터 프로세서 시스템.
  10. 제7항에 있어서, 상기 새로운 프로세스를 추가하기 위한 명령어는 본 발명의 부록에 제공된 PAR 명령어의 하드웨어 정의 언어 설명에 적어도 부분적으로 기초하는 컴퓨터 프로세서 시스템.
  11. 제7항에 있어서, 상기 새로운 프로세스를 생성하기 위한 명령어는 본 발명의 부록에 제공된 SERVE 명령어의 하드웨어 정의 언어 설명에 적어도 부분적으로 기초하는 컴퓨터 프로세서 시스템.
  12. 제7항에 있어서, 상기 프로세스의 실행을 정지하기 위한 명령어는 본 발명의 부록에 제공된 HALT 명령어의 하드웨어 정의 언어 설명에 적어도 부분적으로 기초하는 컴퓨터 프로세서 시스템.
  13. 컴퓨터에 이용되는 회로 보드에 있어서,
    각각이, 대응하는 파이 계산법 프리미티브 세트에 기초하여 하드웨어 명령어 세트의 각 하드웨어 명령어를 수행하도록 적응된 복수의 프로세서; 및
    상기 복수의 프로세서 각각에 연결된 메모리
    를 포함하는 회로 보드.
  14. 제13항에 있어서, 상기 메모리는 듀얼 포트 메모리(dual-ported memory)인 회로 보드.
  15. 제14항에 있어서, 상기 듀얼 포트 메모리는 메시지 전달 시스템(message-passing system)에 이용되는 채널을 나타내는 회로 보드.
  16. 제15항에 있어서, 상기 듀얼 포트 메모리는 프로그램 및 데이터를 위한 캐시로 동작하는 회로 보드.
  17. 제13항에 있어서, 상기 메모리는 SDRAM 제어기를 통해 액세스되는 회로 보드.
  18. 제17항에 있어서, 상기 SDRAM 제어기는 보다 큰 메모리와의 통신을 관리하는 회로 보드.
  19. 제13항에 있어서, 하드웨어 자원으로의 연결을 제공하는 하나 이상의 채널을 더 포함하는 회로 보드.
  20. 제13항에 있어서, 상기 프로세서들이 다른 프로세서가 소유한 채널에 액세스할 수 있게 하는 스위치 네트워크를 더 포함하는 회로 보드.
  21. 제13항에 있어서, 상기 프로세서들은 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA)로 구현된 회로 보드.
  22. 제13항에 있어서, 상기 프로세서들이 실리콘 칩 내에 구현된 회로 보드.
  23. 컴퓨터 프로세서 시스템에 있어서,
    통신 경로; 및
    상기 통신 경로에 독립적으로 연결된 복수의 프로세서
    를 포함하고,
    상기 프로세서 각각은 대응하는 파이 계산법 프리미티브 세트에 기초하여 하드웨어 명령어 세트의 각 하드웨어 명령어를 수행하도록 적응된 컴퓨터 프로세서 시스템.
  24. 제23항에 있어서,
    상기 통신 경로에 연결된 프로세싱 서비스를 더 포함하고.
    상기 프로세서 각각은 상기 통신 경로를 통해 상기 프로세싱 서비스에 액세스할 수 있는 시스템.
  25. 제23항에 있어서,
    상기 통신 경로에 연결된 메모리를 더 포함하고.
    상기 프로세서 각각은 상기 통신 경로를 통해 상기 메모리에 액세스할 수 있는 시스템.
  26. 제23항에 있어서,
    상기 통신 경로에 연결된 메모리를 더 포함하고.
    상기 프로세서 각각은 상기 통신 경로를 통해 상기 메모리로부터 판독하고 상기 메모리에 기록할 수 있는 시스템.
  27. 하드웨어 명령어를 수행하는 프로세서에 있어서,
    복수의 전자 회로를 포함하고,
    상기 전자 회로의 각각은 본 발명의 부록에 제공된 하드웨어 정의 언어 정의문 중 하나에 의해 적어도 부분적으로 정의되는 프로세서.
KR1020050096454A 2004-10-28 2005-10-13 컴퓨터 프로세서 시스템 KR20060053246A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/977,755 2004-10-28
US10/977,755 US20060095724A1 (en) 2004-10-28 2004-10-28 Message-passing processor

Publications (1)

Publication Number Publication Date
KR20060053246A true KR20060053246A (ko) 2006-05-19

Family

ID=35709333

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050096454A KR20060053246A (ko) 2004-10-28 2005-10-13 컴퓨터 프로세서 시스템

Country Status (5)

Country Link
US (1) US20060095724A1 (ko)
EP (1) EP1653346A3 (ko)
JP (1) JP2006155600A (ko)
KR (1) KR20060053246A (ko)
CN (1) CN1766841A (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US7840682B2 (en) 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US8667184B2 (en) * 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US20080092146A1 (en) * 2006-10-10 2008-04-17 Paul Chow Computing machine
US7870365B1 (en) 2008-07-07 2011-01-11 Ovics Matrix of processors with data stream instruction execution pipeline coupled to data switch linking to neighbor units by non-contentious command channel / data channel
US7958341B1 (en) 2008-07-07 2011-06-07 Ovics Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory
US8145880B1 (en) 2008-07-07 2012-03-27 Ovics Matrix processor data switch routing systems and methods
US8131975B1 (en) 2008-07-07 2012-03-06 Ovics Matrix processor initialization systems and methods
US8327114B1 (en) 2008-07-07 2012-12-04 Ovics Matrix processor proxy systems and methods

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0150072B1 (ko) * 1995-11-30 1998-10-15 양승택 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치
EP0960372A2 (en) * 1997-10-29 1999-12-01 Koninklijke Philips Electronics N.V. Method and system for synchronizing block-organized data transfer
US6708239B1 (en) * 2000-12-08 2004-03-16 The Boeing Company Network device interface for digitally interfacing data channels to a controller via a network
JP2003102722A (ja) * 2001-09-27 2003-04-08 Ge Medical Systems Global Technology Co Llc 医療機器システム及びそのサーバ及びクライアント、並びにそれらの制御方法及びコンピュータプログラム及び記憶媒体
US7203924B2 (en) * 2002-04-30 2007-04-10 Microsoft Corporation Behavioral analysis for message-passing application programs
JP4276168B2 (ja) * 2002-05-10 2009-06-10 マイクロソフト コーポレーション 資源についての並行、分散ネットワークの協調
US7685566B2 (en) * 2003-07-03 2010-03-23 Microsoft Corporation Structured message process calculus

Also Published As

Publication number Publication date
US20060095724A1 (en) 2006-05-04
CN1766841A (zh) 2006-05-03
EP1653346A2 (en) 2006-05-03
EP1653346A3 (en) 2006-05-10
JP2006155600A (ja) 2006-06-15

Similar Documents

Publication Publication Date Title
KR20060053246A (ko) 컴퓨터 프로세서 시스템
CN111868702A (zh) 用于可配置空间加速器中的远程存储器访问的装置、方法和系统
CN111767080A (zh) 用于可配置空间加速器中的操作的设备、方法和系统
Wang et al. Spread: A streaming-based partially reconfigurable architecture and programming model
So et al. Improving usability of FPGA-based reconfigurable computers through operating system support
US20090222252A1 (en) Data driven logic simulation chip and toolchain
Stravers et al. Homogeneous multiprocessing and the future of silicon design paradigms
Ha et al. Hardware-software codesign of multimedia embedded systems: the peace
Kirchhoff et al. A Real‐Time Capable Dynamic Partial Reconfiguration System for an Application‐Specific Soft‐Core Processor
He et al. Fecaffe: Fpga-enabled caffe with opencl for deep learning training and inference on intel stratix 10
Saldana et al. Using Partial Reconfiguration and Message Passing to Enable FPGA‐Based Generic Computing Platforms
Barba et al. OOCE: Object-oriented communication engine for SoC design
Kosciuszkiewicz et al. Run-time management of reconfigurable hardware tasks using embedded linux
Taylor Design decision in the implementation of a raw architecture workstation
Chien et al. MORPH: a system architecture for robust high performance using customization (an NSF 100 TeraOps point design study)
Kaouane et al. SysCellC: Systemc on cell
Chevobbe et al. Reducing reconfiguration overheads in heterogeneous multicore RSoCs with predictive configuration management
Asthana et al. Design of an active memory system for network applications
Saldaña et al. Using partial reconfiguration in an embedded message-passing system
Butko et al. Open2C: Open-source generator for exploration of coherent cache memory subsystems
Göhringer Reconfigurable multiprocessor systems: Handling hydras heads--a survey
CN107818071A (zh) 一种基于fpga的硬件线程实现方法
Bansal PRESENT crypto-core as closely-coupled coprocessor for efficient embedded socs
Kelm et al. Operating system interfaces: bridging the gap between cpu and fpga accelerators
Clemente Barreira Técnicas de planificación en entornos reconfigurables para aplicaciones multimedia (Scheduling techniques in reconfigurable environments for multimedia applications)

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