KR100939398B1 - 광대역 네트워크들을 위한 컴퓨터 아키텍쳐에서의 외부데이터 인터페이스 - Google Patents

광대역 네트워크들을 위한 컴퓨터 아키텍쳐에서의 외부데이터 인터페이스 Download PDF

Info

Publication number
KR100939398B1
KR100939398B1 KR1020077007209A KR20077007209A KR100939398B1 KR 100939398 B1 KR100939398 B1 KR 100939398B1 KR 1020077007209 A KR1020077007209 A KR 1020077007209A KR 20077007209 A KR20077007209 A KR 20077007209A KR 100939398 B1 KR100939398 B1 KR 100939398B1
Authority
KR
South Korea
Prior art keywords
data
memory
apu
delete delete
value
Prior art date
Application number
KR1020077007209A
Other languages
English (en)
Other versions
KR20070064432A (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 KR20070064432A publication Critical patent/KR20070064432A/ko
Application granted granted Critical
Publication of KR100939398B1 publication Critical patent/KR100939398B1/ko

Links

Images

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
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명에 따른 시스템 구성은 처리 요소(PE;processing element), 입력/출력(I/O; input/output) 인터페이스 장치 및 공유 메모리를 포함한다. PE는 적어도 하나의 처리 유닛(PU; processing unit) 및 하나 이상의 부가 처리 유닛(APU; attached processing unit)들을 포함한다. APU들 중 적어도 하나는 I/O 인터페이스 장치에 결합된 외부 장치에 대하여 데이터를 판독하고 기록함으로써 I/O 기능을 수행한다. 데이터는, 데이터 레벨 동기화 메커니즘을 이용하고 공유 메모리를 경유하여 APU 및 I/O 인터페이스 장치 사이에서 교환된다.
Figure R1020077007209
처리 요소, 인터페이스 장치, 공유 메모리, APU

Description

광대역 네트워크들을 위한 컴퓨터 아키텍쳐에서의 외부 데이터 인터페이스{External data interface in a computer architecture for broadband networks}
본 출원은: 미국 특허 출원들, 2001년 3월 22일에 출원된 제09/816,004호 출원 "광대역 네트워크들에 대한 컴퓨터 아키텍쳐 및 소프트웨어 셀(cell)들"; 2001년 3월 22일에 출원된 제09/815,554호 출원 "광대역 네트워크들에 대한 컴퓨터 아키텍쳐의 데이터 동기화(synchronization)를 위한 시스템 및 방법"; 2001년 3월 22일에 출원된 제09/816,020호 출원 "광대역 네트워크들에 대한 컴퓨터 아키텍쳐의 메모리 보호 시스템 및 방법"; 2001년 3월 22일에 출원된 제09/815,558호 출원 "광대역 네트워크들을 위한 컴퓨터 아키텍쳐의 자원 헌납 시스템 및 방법"; 및 2001년 3월 22일에 출원된 제09/816,752호 출원 "광대역 네트워크들을 위한 컴퓨터 아키텍쳐의 처리 모듈들(processing modules)"의 일부 계속 출원이다.
본 발명은, 컴퓨터 프로세서(processor)들 및 컴퓨터 네트워크들을 위한 아키텍쳐, 특히 광대역 환경에서의 컴퓨터 프로세서들 및 컴퓨터 네트워크들을 위한 아키텍쳐에 관한 것이다.
사무실 네트워크들에서 사용되는 근거리 네트워크(LAN; local area network)들 및 인터넷과 같은 광범위 네트워크들과 같은 현재 컴퓨터 네트워크들의 컴퓨터 들 및 컴퓨팅 장치들은 주로 독립 컴퓨팅 용도로 설계되었다. 컴퓨터 네트워크에서의 데이터 및 응용 프로그램들의 공유는 이러한 컴퓨터들 및 컴퓨팅 장치들의 주요 설계 목적이 아니었다. 이러한 컴퓨터들 및 컴퓨팅 장치들은 모토롤라(Motorola), 인텔(Intel), 텍사스 인스트루먼츠(Texas Instruments), 소니(Sony) 등과 같은 다양한 다른 제조사들에 의해 만들어진 넓은 범위의 다른 프로세서들을 이용하여 고안되었다. 이러한 프로세서들 각각은, 자신의 특정 명령 세트 및 명령 세트 아키텍쳐(ISA; instruction set architecture), 즉 주 연산 유닛들을 위한 자신의 특정 세트의 어셈블리 언어 명령들(assembly language instructions) 및 구조, 및 이러한 명령들을 수행하기 위한 메모리 유닛(unit)들을 가진다. 그러므로, 프로그래머(programmer)는, 이러한 프로세서들을 위한 어플리케이션(application)들을 쓰기 위해 각각의 프로세서의 명령 세트 및 ISA를 이해하는 것이 필요하다. 오늘날의 컴퓨터 네트워크들에서의 컴퓨터들 및 컴퓨팅 장치들의 이러한 혼성 조합은 데이터 및 어플리케이션들의 처리 및 공유를 복잡하게 한다. 동일한 어플리케이션의 복수 버젼들은 이러한 혼성 환경에 적응하는 데에 필요하다.
광역 네트워크들, 특히 인터넷에 연결된 컴퓨터들 및 컴퓨팅 장치들의 유형들은 광범위하다. 개인 컴퓨터(PC; personal computer)들 및 서버들에 추가하여, 이러한 컴퓨팅 장치들은 휴대 전화들, 이동식 컴퓨터들, 개인 휴대용 정보 단말기(PDA; personal digital assistant)들, 셋톱(set top) 박스들, 디지털 텔레비젼(DTV; digital television)들 등을 포함한다. 이러한 컴퓨터들 및 컴퓨팅 장치들 사이의 데이터들 및 어플리케이션들의 공유는 상당한 문제점들을 가지고 있다.
다수의 기술들이 이러한 문제점들을 극복하기 위한 시도로서 이용되어 왔다. 이러한 기술들은, 고성능 인터페이스들 및 복잡한 프로그래밍 기술들을 포함한다. 이러한 해결책들은 종종 처리 능력의 상당한 증가를 필요로 한다. 또한, 이러한 해결책들은 어플리케이션들을 처리하고 데이터를 네트워크들을 통하여 전송하는 데에 필요한 시간의 상당한 증가를 종종 일으킨다.
데이터는 전형적으로 대응하는 어플리케이션들로부터 인터넷을 통하여 전송된다. 이러한 방법은, 어플리케이션으로, 어플리케이션에 대응하는 각각의 세트의 전송된 데이터를 보낼 필요성을 방지한다. 이러한 방법은 필요한 대역폭의 양을 최소화하지만, 종종 사용자들 사이의 좌절을 일으킨다. 전송된 데이터에 알맞은 어플리케이션 또는 가장 최신의 어플리케이션은 고객의 컴퓨터에서 이용할 수 없다. 이러한 방법은, 복수의 다른 ISA들에 대한 다수의 버젼(version)들의 각각의 어플리케이션의 기록 및 네트워크에서 프로세서들에 의해 이용되는 명령 세트들을 필요로 한다.
자바(Java) 모델은 이러한 문제점을 해결하려고 하고 있다. 이러한 모델은, 엄격한 보안 프로토콜을 따르는 작은 어플리케이션("애플릿(applet)")을 이용한다. 애플릿들은 고객 컴퓨터("고객")에 의해 실행되기 위해 네트워크를 통하여 서버(server) 컴퓨터로부터 보내진다. 다른 버젼들의 동일한 애플릿을 다른 ISA들을 이용하는 고객들로 보내야 하는 것을 방지하기 위해, 모든 자바 애플릿들은 고객의 자바 가상 기계에서 실행된다. 자바 가상 기계는 자바 ISA 및 자바 명령 세트를 가지는 컴퓨터를 에뮬레이트(emulate)하는 소프트웨어이다. 그러나 이러한 소프트웨 어는 고객의 ISA 및 고객의 명령 세트에서 실행된다. 자바 가상 기계의 한 버젼은 고객들의 각각의 다른 ISA 및 명령 세트에 제공된다. 그러므로, 복수의 다른 버젼들의 각각의 애플릿은 필요하지 않다. 각각의 고객은 특정한 ISA 및 명령 세트를 위한 알맞은 자바 가상 기계만을 다운로드하여 모든 자바 애플릿들을 실행시킨다.
각각의 다른 ISA 및 명령 세트에 대한 어플리케이션의 다른 버젼들을 기록해야 하는 문제점에 대한 해결책을 제공하더라도, 자바 처리 모델은 고객의 컴퓨터에 대한 소프트웨어의 추가적인 계층을 필요로 한다. 소프트웨어의 이러한 추가적인 계층은 프로세서의 처리 속도를 상당히 감소시킨다. 속도에서의 이러한 감소는 실시간 멀티미디어 어플리케이션들에 대하여 특히 의미심장하다. 다운로드 자바 애플릿은 또한 바이러스들, 처리 오작동들 등을 포함한다. 이러한 바이러스들 및 오작동들은 고객의 데이터베이스를 오염시키고 다른 손상을 일으킬 수 있다. 자바 모델에서 이용되는 보안 프로토콜이 소프트웨어 "샌드박스(sandbox)"를 이용함으로써 이러한 문제점을 극복하려고 할 지라도, 이러한 소프트웨어 구동 보안 모델은 종종 이용에 있어서 위험하고 훨씬 더 많은 처리를 필요로 한다.
실시간 멀티미디어 네트워크 어플리케이션들은 점점 더 중요해지고 있다. 이러한 네트워크 어플리케이션들은 매우 빠른 처리 속도들을 필요로 한다. 초당 수천 메가비트(megabit)들의 데이터가 이러한 어플리케이션들에 대하여 필요할 수 있다. 네트워크들, 특히 인터넷의 현재 아키텍쳐, 및 자바 모델에서 실시되는 프로그래밍 모델은, 이러한 처리 속도들에 도달하는 것을 어렵게 한다.
그러므로, 새로운 컴퓨터 아키텍쳐, 컴퓨터 네트워크들에 대한 새로운 아키 텍쳐 및 새로운 프로그래밍 모델이 필요하다. 이러한 새로운 아키텍쳐 및 프로그래밍 모델은, 추가적인 연산 부담들을 부과하지 않고 다양한 네트워크 사이에서 데이터 및 어플리케이션들을 공유하는 문제점들을 극복해야 한다. 이러한 새로운 컴퓨터 아키텍쳐 및 프로그래밍 모델은 네트워크의 부분들 사이의 어플리케이션들 및 데이터를 공유하는 데에서 내재하는 보안 문제를 극복해야 한다.
본 발명에 따르면 광대역 네트워크들에서의 고속 처리 컴퓨터 아키텍쳐가 제공된다. 특히, 본 발명에 따르면, 시스템은 데이터를 전달하기 위한 인터페이스 장치 및 데이터를 저장하기 위한 메모리를 포함하고, 메모리는, 적어도 하나의 메모리 위치 및 메모리 위치와 관련된 상태 정보를 포함하고, 상태 정보는 제 1 필드(filed) 및 주소 필드를 포함하며, 제 1 필드의 값이 제 1 값과 같고 주소 필드의 값이 제 2 값과 같을 때, 데이터의 관련된 메모리 위치로의 다음의 기록은 관련된 메모리 위치 내에 저장된 데이터가 주소 필드 값에 의해 표현된 주소에 기록되게 한다.
본 발명의 실시형태에서, 시스템 구성은 처리 요소, 입력/출력(I/O; input/output) 인터페이스 장치 및 공유 메모리를 포함한다. 처리 요소(PE; processing element)는 적어도 하나의 처리 유닛(PU; processing unit) 및 하나 이상의 부가 처리 유닛(APU; attached processing unit)들을 포함한다. 적어도 하나의 APU들은 I/O 인터페이스 장치에 연결된 외부 장치로부터 데이터를 판독하고 상기 외부 장치에 데이터를 기록함으로써 I/O 기능을 수행한다. 데이터는, 데이터 레벨 동기화 메커니즘(data level synchronization mechanism)을 이용하여 공유 메모리를 경유하여 APU 및 I/O 인터페이스 장치 사이에서 교환된다. 특히, 공유 메모리는 데이터를 저장하기 위한 적어도 하나의 메모리 위치와 관련된 적어도 하나의 상태 정보 위치를 포함하고, 상태 정보 위치는 제 1 필드 및 주소 필드를 포함하고, 제 1 필드의 값이 제 1 값과 같고 주소 필드의 값이 제 2 값과 같을 때, 데이터의 관련된 메모리 위치로의 다음의 기록은 관련된 메모리 위치 내에 저장된 데이터가 주소 필드 값에 의해 표현된 주소에 기록되게 하는 것을 특징으로 한다.
도 1은 본 발명에 따른 컴퓨터 네트워크의 전체 아키텍쳐를 도시한다.
도 2는 본 발명에 따른 프로세서 요소(PE; processor element)의 구조를 도시하는 다이어그램이다.
도 3은 본 발명에 따른 광대역 엔진(BE; broadband engine)의 구조를 도시하는 다이어그램이다.
도 4는 본 발명에 따른 부가 처리 유닛의 구조를 도시하는 다이어그램이다.
도 5는 본 발명에 따른 프로세서 요소, 비쥬얼라이저(VS; visualizer) 및 광 인터페이스의 구조를 도시하는 다이어그램이다.
도 6은 본 발명에 따른 프로세서 요소들의 하나의 조합을 도시하는 다이어그램이다.
도 7은 본 발명에 따른 프로세서 요소들의 또 다른 조합을 도시한다.
도 8은 본 발명에 따른 프로세서 요소들의 또 다른 조합을 도시한다.
도 9는 본 발명에 따른 프로세서 요소들의 또 다른 조합을 도시한다.
도 10은 본 발명에 따른 프로세서 요소들의 또 다른 조합을 도시한다.
도 11a는 본 발명에 따른 칩 패키지(chip package) 내의 광 인터페이스들의 통합을 도시한다.
도 11b는 도 11a의 광 인터페이스들을 이용하는 일 실시형태에 따른 프로세서들의 다이어그램이다.
도 11c는 도 11a의 광 인터페이스들을 이용하는 또 다른 실시형태에 따른 프로세서들의 다이어그램이다.
도 12a는 본 발명에 따른 메모리 시스템의 구조를 도시한다.
도 12b는 본 발명에 따른 제 1 광대역 엔진으로부터 제 2 광대역 엔진으로의 데이터 기록을 도시한다.
도 13은 본 발명에 따른 프로세서 요소를 위한 공유 메모리의 구조의 다이어그램이다.
도 14a는 도 13에서 도시된 메모리의 뱅크(bank)를 위한 하나의 구조를 도시한다.
도 14b는 도 13에서 도시된 메모리의 뱅크를 위한 또 다른 구조를 도시한다.
도 15는 본 발명에 따른 직접 메모리 접근 제어기를 위한 구조를 도시한다.
도 16은 본 발명에 따른 직접 메모리 접근 제어기를 위한 또 다른 구조를 도시한다.
도 17a 내지 도 17o는 본 발명에 따른 데이터 동기화 동작을 도시한다.
도 18은 본 발명의 데이터 동기화 구조에 따른 메모리 위치의 다양한 상태들을 도시하는 3상 메모리 다이어그램이다.
도 19는 본 발명에 따른 하드웨어 샌드박스에 대한 키(key) 제어 테이블의 구조를 도시한다.
도 20은 본 발명에 따른 하드웨어 샌드박스에 대한 메모리 접근 키들을 저장하기 위한 구조를 도시한다.
도 21은 본 발명에 따른 하드웨어 샌드박스에 대한 메모리 접근 제어 테이블의 구조를 도시한다.
도 22는, 도 19의 키 제어 테이블 및 도 21의 메모리 접근 제어 테이블을 이용하는 메모리 샌드박스에 접근하기 위한 단계들의 순서도이다.
도 23은 본 발명에 따른 소프트웨어 셀의 구조를 도시한다.
도 24는 본 발명에 따라 원격 절차 호출들을 APU들에 배포하기 위한 단계들의 순서도이다.
도 25는 본 발명에 따라 스트리밍(streaming) 데이터를 처리하기 위한 전용 파이프라인(pipeline)의 구조를 도시한다.
도 26a 내지 26b는 본 발명에 따라 스트리밍 데이터의 처리에서 도 25의 전용 파이프라인에 의해 수행되는 단계들의 순서도들이다.
도 27은 본 발명에 따른 스트리밍 데이터의 처리를 위한 전용 파이프라인을 위한 또 다른 구조를 도시한다.
도 28은 본 발명에 따라 APU들에 의해 어플리케이션들 및 데이터의 병렬 처 리를 조정하기 위한 절대 타이머(absolute timer)에 대한 구조를 도시한다.
도 29 내지 30은 본 발명의 원리들에 따라 데이터 레벨 동기화를 이용하는 구성들에 대한 예시적 실시형태들을 도시한다.
도 31 내지 32는 본 발명의 원리들에 따라 데이터 레벨 동기화를 수행하는 데에 사용하기 위한 예시적 순서도들을 도시한다.
도 33 내지 34는 APU와 외부 장치 사이의 데이터 레벨 동기화의 사용을 도시한다.
도 35는 본 발명의 원리들에 따른 예시적인 데이터 레벨 동기화 상태 정보를 도시한다.
도 36은 본 발명의 원리들에 따른 데이터 레벨 동기화를 이용하는 구성에 대한 또 다른 예시적 실시형태를 도시한다.
도 37은 예시적인 핸드셰이킹 시퀀스(handshaking sequence)를 도시한다.
도 38은 본 발명의 원리들에 따른 데이터 레벨 동기화를 이용하는 구성에 대한 또 다른 예시적 실시형태를 도시한다.
도 39는 본 발명의 원리들에 따른 데이터 레벨 동기화를 이용하는 구성에 대한 또 다른 예시적 실시형태를 도시한다.
도 40은 본 발명의 원리들에 따른 데이터 레벨 동기화 수행에서 사용하기 위한 또 다른 예시적 순서도를 도시한다.
도 41은 APU와 외부 장치 사이의 데이터 레벨 동기화 사용의 또 다른 실시예를 도시한다.
도 42는 본 발명의 원리들에 따라 데이터 레벨 동기화를 이용하는 구성에 대한 또 다른 예시적 실시형태를 도시한다.
본 발명에 따른 컴퓨터 시스템(101)을 위한 전체 아키텍쳐는 도 1에서 도시된다.
이러한 도면에 도시된 것처럼, 시스템(101)은 복수의 컴퓨터들 및 컴퓨팅 장치들에 연결된 네트워크(104)를 포함한다. 네트워크(104)는 LAN, 인터넷과 같은 광역 네트워크, 또는 다른 컴퓨터 네트워크일 수 있다.
네트워크(104)에 연결된 컴퓨터들 및 컴퓨팅 장치들은, 예를 들어 고객 컴퓨터들(106), 서버 컴퓨터들(108), 개인 휴대 정보 단말기(110), 디지털 텔레비젼(112) 및 다른 유무선 컴퓨터들 및 컴퓨팅 장치들을 포함한다. 네트워크(104)의 멤버들에 의해 이용되는 프로세서들은 같은 공통 컴퓨팅 모듈로부터 만들어진다. 이러한 프로세서들은 모두 동일한 ISA를 가지는 것이 바람직하고 동일한 명령 세트에 따라서 처리를 수행한다. 특정 프로세서 내에 포함된 모듈들의 개수는 프로세서에 의해 요구되는 처리 능력에 의존한다.
예를 들어, 시스템(101)의 서버들(108)이 고객들(106)보다 데이터 및 어플리케이션들의 더 많은 처리를 수행하기 때문에, 서버들(108)은 고객들(106)보다 더 많은 컴퓨팅 모듈들을 포함한다. 한편, PDA들(110)은 가장 적은 양의 처리를 수행한다. 그러므로, PDA들(110)은 가장 작은 개수의 컴퓨팅 모듈들을 포함한다. DTV(112)는 고객들(106)의 컴퓨팅 모듈과 서버들(108) 사이의 일정한 수준의 처리 를 수행한다. 그러므로, DTV(112)는 고객들(106)의 컴퓨팅 모듈과 서버들(108) 사이의 다수의 컴퓨팅 모듈들을 포함한다. 이하에서 논의되는 것처럼, 각각의 컴퓨팅 모듈은, 네트워크(104)를 통해 전송되는 데이터 및 어플리케이션들의 병렬 처리를 수행하기 위한 처리 제어기 및 복수의 동일한 처리 유닛들을 포함한다.
시스템(101)에 대한 이러한 동종의 구성은, 융통성, 처리 속도 및 처리 효율을 촉진한다. 시스템(101)의 각각의 부분은 하나 이상( 또는 몇몇 부분)의 동일한 컴퓨팅 모듈을 이용하여 처리를 수행하기 때문에, 데이터 및 어플리케이션들의 실제적인 처리를 수행하는 특정 컴퓨터 또는 컴퓨팅 장치는 중요하지 않다. 게다가, 특정 애플리케이션 및 데이터의 처리는 네트워크의 부분들 사이에서 공유될 수 있다. 시스템을 통해 시스템(101)에 의해 처리되는 데이터 및 어플리케이션들을 포함하는 셀들을 유일하게 식별함으로써, 처리 결과들은 이러한 처리가 어디에서 일어나는 지에 관계없이 처리를 요청하는 컴퓨터 또는 컴퓨팅 장치에 전송될 수 있다. 이러한 처리를 수행하는 모듈들이 공통된 구조를 가지고 공통된 ISA를 이용하기 때문에, 프로세서들 사이의 양립가능성을 성취하기 위한 소프트웨어의 추가 계층의 연산 부담이 방지된다. 이러한 아키텍쳐 및 프로그래밍 모델은 예를 들어 실시간 멀티미디어 어플리케이션들을 실행하는 데에 필요한 처리 속도를 촉진한다.
시스템(101)에 의해 촉진되는 처리 속도들 및 효율성들을 더욱 이용하기 위해, 이러한 시스템에 의해 처리되는 데이터 및 어플리케이션들은 유일하게 식별되고 일정하게 포맷(format)된 소프트웨어 셀들(102)로 패키징(packaging)된다. 각각의 소프트웨어 셀(102)은 어플리케이션들 및 데이터를 모두 포함하거나 포함할 수 있다. 각각의 소프트웨어 셀은 네트워크(104) 및 시스템(101)을 통하여 셀을 광범위하게 식별하기 위한 ID를 포함한다. 소프트웨어 셀들 구조의 이러한 균일성 및 네트워크를 통한 소프트웨어 셀들의 유일한 식별은 네트워크의 컴퓨터 또는 컴퓨팅 장치에서 어플리케이션들 및 데이터의 처리를 촉진한다. 예를 들어, 고객(106)은 소프트웨어 셀(102)을 조직적으로 세울 수 있지만, 고객(106)의 처리 용량 때문에 이러한 소프트웨어 셀을 처리를 위해 서버(108)로 전송한다. 그러므로, 소프트웨어 셀들은, 네트워크에 대한 자원 처리 능력에 기초하여, 처리를 위해 네트워크(104)를 통해 이동한다.
시스템(101)의 프로세서들 및 소프트웨어 셀들의 동종 구조는 오늘날의 혼성 네트워크들의 많은 문제점들을 방지한다. 예를 들어, 자바 가상 기계와 같은 가상 기계들과 같은 명령 세트를 이용하여 ISA에 대한 어플리케이션들을 처리하려고 하는 비효율적인 프로그래밍 모델들이 방지된다. 그러므로 시스템(101)은 오늘날의 네트워크들보다 훨씬 더 효과적이고 효율적으로 광대역 처리를 수행할 수 있다.
네트워크(104)의 모든 부분들에 대한 기본 처리 모듈은 프로세서 요소(PE; processor element)이다. 도 2는 PE의 구조를 도시한다. 도 2에 도시된 것처럼, PE(201)는 처리 유닛(PU; processing unit; 203), 직접 메모리 접근 제어기(DMAC; direct memory acess controller; 205) 및 복수의 부가 처리 유닛(APU; attached processing unit)들, 즉 APU(207), APU(209), APU(211), APU(213), APU(215), APU(217), APU(219) 및 APU(221)을 포함한다. 로컬 PE 버스(bus)(223)는 데이터 및 어플리케이션들을 APU들, DMAC(205) 및 PU(203) 사이에서 전송한다. 로컬 PE 버 스(223)는 예를 들어 통상의 아키텍쳐를 가질 수 있거나 패킷 스위치 네트워크(packet switch network)로서 이용될 수 있다. 패킷 스위치 네트워크로서의 이용은, 더 많은 하드웨어를 필요로 하는 반면에 이용가능 대역폭을 증가시킨다.
PE(201)는 디지털 로직을 실시하기 위한 다양한 방법들을 이용하여 구성될 수 있다. PE(201)는 바람직하게는 실리콘 기판의 시모스(CMOS; complementary metal oxide semiconductor)를 이용하는 단일 집적 회로로서 구성된다. 기판들에 대한 선택적인 재료들은, 갈륨 아시나이드(gallium arsinide), 갈륨 알루미늄 아시나이드(gallium aluminum arsinide) 및 광범위한 불순물들을 이용하는 소위 Ⅲ-B 화합물들을 포함한다. PE(201)는, 예를 들어 초고속 단자속양자 로직(rapid single-flux-quantum(RSFQ) logic)과 같은 반도체 물질을 이용하여 실시될 수 있다.
PE(201)는 높은 대역폭 메모리 연결(227)을 통하여 DRAM(dynamic random access memory; 225)과 결합된다. DRAM(225)는 PE(201)에 대한 주 메모리로서 기능을 한다. DRAM(225)이 바람직하게는 동적 임의 접근 메모리일지라도, DRAM(225)는 정적 임의 접근 메모리(SRAM; static random access memory), 자기 임의 접근 메모리(MRAM; magnetic random access memory), 광 메모리 또는 홀로그래픽(holographic) 메모리와 같은 다른 수단을 이용하여 실시될 수 있다. DMAC(205)는 DRAM(225)과 PE(201)의 APU들 및 PU 사이의 데이터의 전송을 촉진한다. 이하에서 논의되는 것처럼, DMAC(205)는 각각의 APU에 대해 APU만이 데이터를 기록하고 APU만이 데이터를 판독할 수 있는 DRAM(225) 내의 독점 영역을 지정할 수 있다. 이 러한 독점 영역은 "샌드박스"로서 지정된다.
PU(203)는 예를 들어 데이터 및 어플리케이션들의 독자적 처리를 가능하게 하는 표준 프로세서일 수 있다. 동작에서, PU(203)는 APU들에 의해 데이터 및 어플리케이션들의 처리를 예정하고 조정한다. APU들은 바람직하게는 단일 명령 복수 데이터(SIMD; single instruction multiple data) 프로세서들이다. PU(203)의 제어하에서, APU들은 병렬 및 독립 방식으로 이러한 데이터 및 어플리케이션들의 처리를 수행한다. DMAC(205)는 공유 DRAM(225) 내에 저장된 데이터 및 어플리케이션들로의 PU(203) 및 APU들에 의한 접근들을 제어한다. PE(201)가 바람직하게는 8개의 APU들을 포함할지라도, 다소의 APU들은 필요한 처리 능력에 의존하여 PE 내에서 이용될 수 있다. PU(203) 및 APU들 중 모두 또는 일부는 동일한 하드웨어 구조 및/또는 기능성을 가질 수 있다. 각각의 프로세서들은, 필요하다면, 소프트웨어에 의해 제어하는 또는 제어되는 프로세서들로서 구성될 수 있다. 예를 들어, 도 3에서, PE(201)는 동일한 아키텍쳐를 가지는 9개의 프로세서들을 포함할 수 있다. 9개의 프로세서들 중 하나는 (PU(203)와 같은) 제어하는 프로세서로서 고안될 수 있고, 나머지 프로세서들은 (APU들(207, 209, 211, 213, 215, 217, 219 및 221)과 같은) 제어되는 프로세서들로서 고안될 수 있다. 또한, PE(201)와 같은 다수의 PE들은, 향상된 처리 능력을 제공하기 위해 함께 결합되거나 패키징될 수 있다.
예를 들어, 도 3에 도시된 것처럼, 4개의 PE들은, 네트워크(104)의 부분에 대한 단일 프로세서를 형성하기 위해 하나 이상의 칩 패키지들 내에서 패키징되거나 결합될 수 있다. 이러한 구성은 광대역 엔진으로 고안된다. 도 3에 도시된 것처 럼, BE(301)는 4개의 PE들, 즉, PE(303), PE(305), PE(307) 및 PE(309)를 포함한다. 이러한 PE들 사이의 통신들은 BE 버스(311)를 통해 이루어진다. 광대역폭 메모리 연결(313)은 공유 DRAM(315)과 이러한 PE들 사이의 통신을 제공한다. BE 버스(311) 대신에, BE(301)의 PE들 사이의 통신들은 DRAM(315) 및 이러한 메모리 연결을 통하여 일어날 수 있다.
입력/출력 인터페이스(input/output(I/O) interface; 317) 및 외부 버스(319)는 광대역 엔진(301) 및 네트워크(104)의 다른 부분들 사이의 통신들을 제공한다. BE(301)의 각각의 PE는 PE의 APU들에 의해 수행되는 어플리케이션들 및 데이터의 병렬 및 독립 처리에 유사한 병렬 및 독립 방식으로 데이터 및 어플리케이션들의 처리를 수행한다.
도 4는 APU의 구조를 도시한다. APU(402)는 로컬 메모리(406), 레지스터들(410), 4개의 부동 소수점 유닛들(412) 및 4개의 정수 유닛들(414)을 포함한다. 그러나 필요한 처리 능력에 의존하여, 다소의 부동 소수점 유닛들(512) 및 정수 유닛들(414)이 이용될 수 있다. 바람직한 실시형태에서, 로컬 메모리(406)는 128 킬로바이트의 스토리지(storage)를 포함하고, 레지스터들(410)의 용량은 128×128 비트이다. 부동 소수점 유닛들(412)은 바람직하게는 초당 320억 부동 소수점 동작들(32 GFLOPS; 32 billoin floating point operations per second)의 속도로 동작하고, 정수 유닛들(414)은 초당 320억 동작들(32 GOPS; 32 billion operations per second)의 속도로 동작하는 것이 바람직하다.
로컬 메모리(402)는 캐시 메모리가 아니다. 로컬 메모리(402)는 바람직하게 는 SRAM으로서 구성된다. APU에 대한 캐시 일관성 지지는 불필요하다. PU는 PU에 의해 개시된 직접 메모리 접근에 대한 캐시 일관성 지지를 필요로 할 수 있다. 캐시 일관성 지지는 APU에 의해 개시된 직접 메모리 접근들 또는 외부 장치들로부터의 접근들에 대하여 필요하지 않다.
APU(402)는 어플리케이션들 및 데이터를 APU로 전송하기 위한 버스(404)를 포함한다. 바람직한 실시형태에서, 이러한 버스는 1024 비트 폭이다. APU(402)는 내부 버스들(408, 420 및 418)을 포함한다. 바람직한 실시형태에서, 버스(408)는 256 비트의 폭을 가지고 로컬 메모리(406)와 레지스터들(410) 사이의 통신들을 제공한다. 버스들(420 및 418)은 레지스터들(410)과 부동 소수점 유닛들(412) 사이, 및 레지스터들(410)과 정수 유닛들(414) 사이의 통신들을 제공한다. 바람직한 실시형태에서, 레지스터들(410)로부터 부동 소수점 또는 정수 유닛들로의 버스들(418 및 420)의 폭은 384 비트이고, 부동 소수점 또는 정수 유닛들로부터 레지스터들(410)로의 버스들(418 및 420)의 폭은 128 비트이다. 이러한 유닛들로부터 레지스터들(410)로보다는 레지스터들(410)로부터 부동 소수점 또는 정수 유닛들로의 이러한 버스들의 더 큰 폭이, 처리 동안의 레지스터들(410)로부터의 더 큰 데이터 흐름을 수용한다. 최대 3개의 단어들이 각각의 계산에 필요하다. 그러나 각각의 계산의 결과는 보통 오직 한 단어이다.
도 5 내지 10은 네트워크(104)의 프로세서들의 모듈 구조를 도시한다. 예를 들어, 도 5에 도시된 것처럼, 프로세서는 단일 PE(502)를 포함한다. 이상에서 논의된 것처럼, 이러한 PE는 전형적으로 PU, DMAC 및 8개의 APU들을 포함한다. 각각의 APU는 로컬 스토리지(local storage; LS)를 포함한다. 반면에, 프로세서는 비쥬얼라이저(visualizer; VS)의 구조를 포함할 수 있다. 도 5에 도시된 것처럼, VS(505)는 PU(512), DMAC(514) 및 4개의 APU들, 즉, APU(516), APU(518), APU(520) 및 APU(522)를 포함한다. PE의 다른 4개의 APU들에 의해 일반적으로 점유되는 칩 패키지 내의 공간은, 이 경우에 픽셀 엔진(508), 이미지 캐시(510) 및 음극선관 제어기(cathode ray tube controller; CRTC; 504)에 의해 점유된다. PE(502) 또는 VS(505)에 필요한 통신들의 속도에 의존하여, 광 인터페이스(506)는 또한 칩 패키지에서 포함될 수 있다.
이러한 표준 모듈 구조를 이용하면, 프로세서들의 많은 다른 변화들이 쉽고 효율적으로 구성될 수 있다. 예를 들어, 도 6 내에 도시된 프로세서는 2개의 칩 패키지, 즉, BE를 포함하는 칩 패키지(602) 및 4개의 VS들을 포함하는 칩 패키지(604)를 포함한다. 입출력 장치(I/O; input/output; 606)는 칩 패키지(602)의 BE와 네트워크(104) 사이의 인터페이스를 제공한다. 버스(608)는 칩 패키지(602)와 칩 패키지(604) 사이의 통신들을 제공한다. 입출력 프로세서(IOP; input output processor; 610)는 입출력 장치(606)로 그리고 입출력 장치(606)로부터의 데이터 흐름을 제어한다. 입출력 장치(606)는 ASIC(application specific integrated circuit)으로서 제조될 수 있다. VS들로부터의 출력은 비디오 신호(612)이다.
도 7은 네트워크(104)의 다른 부분들로의 초고속 통신들을 제공하기 위한 2개의 광 인터페이스들(704 및 706)을 가진 BE(702)에 대한 칩 패키지를 도시한다. BE(702)는 네트워크(104)에 대한 서버로서 기능을 할 수 있다. 도 8의 칩 패키지는 2개의 PE들(802 및 804) 및 2개의 VS들(806 및 808)을 포함한다. 입출력 장치(810)는 칩 패키지와 네트워크(104) 사이의 인터페이스를 제공한다. 칩 패키지로부터의 출력은 비디오 신호이다. 이러한 구성은 예를 들어 그래픽 워크 스테이션(graphics work station)으로서 기능을 할 수 있다.
도 9는 또 다른 구성을 도시한다. 이러한 구성은 도 8에서 도시된 구성의 처리 능력의 절반을 가진다. 2개의 PE들 대신에, 하나의 PE(902)가 제공되고, 2개의 VS들 대신에, 하나의 VS(904)가 제공된다. 입출력 장치(906)는 도 8에 도시된 입출력 장치의 대역 폭의 절반을 가진다. 그러나 이러한 프로세서 역시 그래픽 워크 스테이션으로서 기능을 할 수 있다.
마지막 구성이 도 10에 도시된다. 이러한 프로세서는 단일 VS(102)와 입출력 장치(1004)로 구성된다. 이러한 구성은 예를 들어 PDA로서 기능을 할 수 있다.
도 11a는 광 인터페이스의 네트워크(104)의 프로세서의 칩 패키지로의 통합을 도시한다. 이러한 광 인터페이스들은 광 신호들을 전기 신호들로 그리고 전기 신호들을 광 신호들로 변환하고, 예를 들어 갈륨 아시나이드, 알루미늄 갈륨 아시나이드, 게르마늄 및 다른 원소들 또는 화합물들을 포함하는 다양한 물질들로부터 구성될 수 있다. 도 11a에 도시된 것처럼, 광 인터페이스(1104 및 1106)는 BE(1102)의 칩 패키지 상에 조립된다. BE 버스(1108)는 BE(1102)의 PE들, 즉 PE(1110), PE(1112), PE(1114), PE(1116), 및 이러한 광 인터페이스들 사이의 통신을 제공한다. 광 인터페이스(1104)는 2개의 포트들, 즉 포트(1118) 및 포트(1120)를 포함하고, 광 인터페이스(1106)는 또한 2개의 포트들, 즉 포트(1122) 및 포 트(1124)를 포함한다. 포트들(1118, 1120, 1122 및 1124)은 각각 광 도파관들(1126, 1128, 1130 및 1132)에 연결된다. 광 신호들은, 광 인터페이스들(1104 및 1106)의 포트들을 경유하여 이러한 광 도파관들을 통해 BE(1102)로 그리고 BE(1102)로부터 전송된다.
복수의 BE들은, 이러한 광 도파관들 및 각각의 BE의 4개의 광 포트들을 이용하여 다양한 구성들로 함께 연결될 수 있다. 예를 들어, 도 11b에 도시된 것처럼, BE(1152), BE(1154), BE(1156)와 같은 2개 이상의 BE들이 이러한 광 포트들을 통하여 직렬적으로 연결될 수 있다. 이러한 실시예에서, BE(1152)의 광 인터페이스(1166)는 광 포트들을 통하여 BE(1154)의 광 인터페이스(1160)의 광 포트들로 연결된다. 유사한 방식으로, BE(1154)의 광 인터페이스(1162)의 광 포트들은 BE(1156)의 광 인터페이스(1164)의 광 포트들에 연결된다.
매트릭스(matrix) 구성이 도 11c에 도시되어 있다. 이러한 구성에서, 각각의 BE의 광 인터페이스는 2개의 다른 BE들에 연결되어 있다. 도 11c에 도시된 것처럼, BE(1172)의 광 인터페이스(1188)의 광 포트들 중 하나는 BE(1176)의 광 인터페이스(1182)의 광 포트에 연결되어 있다. 광 인터페이스(1188)의 다른 광 포트는 BE(1178)의 광 인터페이스(1184)의 광 포트에 연결되어 있다. 유사한 방식으로 BE(1174)의 광 인터페이스(1190)의 하나의 광 포트는 BE(1178)의 광 인터페이스(1184)의 다른 광 포트에 연결되어 있다. 광 인터페이스(1190)의 다른 광 포트는 BE(1180)의 광 인터페이스(1186)의 광 포트에 연결되어 있다. 이러한 매트릭스 구성은 다른 BE들과 유사한 방식으로 확장될 수 있다.
직렬 구성 또는 매트릭스 구성을 이용하여, 네트워크(104)에 대한 프로세서는 임의의 요망되는 크기와 능력으로 구성될 수 있다. 물론, 다른 구성들을 형성하기 위해, 추가적인 포트들이, BE들의 광 인터페이스들에 추가되거나, BE보다 많거나 적은 개수의 PE들을 가진 프로세서들에 추가될 수 있다.
도 12a는 BE의 DRAM을 위한 제어 시스템 및 구조를 도시한다. 유사한 제어 시스템 및 구조가 다소간의 PE들을 포함하고 다른 크기를 가진 프로세서들 내에 이용된다. 도 12a에 도시된 것처럼, 크로스-바 스위치(cross-bar switch)는 BE(1201)를 포함하는 4개의 PE들의 각각의 DMAC(1210)를 8개의 뱅크 컨트롤(bank control; 1206)들에 연결한다. 각각의 뱅크 컨트롤(1206)은 DRAM(1204)의 (도 12a에는 단지 4개만이 도시되어 있는) 8개의 뱅크들(1208)을 제어한다. 그러므로 DRAM(1204)은 전체 64개의 뱅크들을 포함한다. 바람직한 실시형태에서, DRAM(1204)은 64 메가바이트의 용량을 가지고, 각각의 뱅크는 1 메가바이트의 용량을 가진다. 이러한 바람직한 실시형태에서, 각각의 뱅크 내의 가장 작은 주소지정 유닛은 1024 비트의 블록이다.
BE(1201)는 또한 스위치 유닛(1212)을 포함한다. 스위치 유닛(1212)은 BE(1201)에 가깝게 연결된 BE들의 다른 APU들이 DRAM(1204)에 접근할 수 있게 한다. 그러므로 제 2 BE는 제 1 BE에 가깝게 연결될 수 있고, 각각의 BE의 각각의 APU는 보통 APU에 접근가능한 메모리 위치들의 개수의 2배를 주소지정할 수 있다. 제 1 BE의 DRAM으로부터 제 2 BE의 DRAM으로의 데이터의 직접 기록 또는 판독, 또는 제 2 BE의 DRAM으로부터 제 1 BE의 DRAM으로의 데이터의 직접 기록 또는 판독은 스위치 유닛(1212)과 같은 스위치 유닛을 통하여 일어날 수 있다.
예를 들어, 도 12b에 도시된 것처럼, 이러한 기록을 달성하기 위해, BE(1222)의 APU(1220)와 같은 제 1 BE의 APU는 기록 명령을 BE(1226)의 DRAM(1228)과 같은 제 2 BE의 DRAM의 메모리 위치에 배포한다. BE(1222)의 DMAC(1230)는 기록 명령을 크로스-바 스위치(1221)를 통하여 뱅크 컨트롤(1234)로 보내고, 뱅크 컨트롤(1234)은 명령을 뱅크 컨트롤(1234)에 연결된 외부 포트(1232)에 전송한다. BE(1226)의 DMAC(1238)는 기록 명령을 수신하고 이러한 명령을 BE(1226)의 스위치 유닛(1240)으로 전송한다. 스위치 유닛(1240)은 기록 명령 내에 포함된 DRAM 주소를 식별하고 이러한 주소 내에 저장하기 위한 데이터를 BE(1226)의 뱅크 컨트롤(1242)을 통하여 DRAM(1228)의 뱅크(1244)로 보낸다. 그러므로 스위치 유닛(1240)은 DRAM(1224) 및 DRAM(1228) 모두가 BE(1222)의 APU들을 위한 단일 메모리 공간으로서 기능을 하게 할 수 있다.
도 13은 DRAM의 64개의 뱅크들의 구성을 도시한다. 이러한 뱅크들은 8개의 행들, 즉 행들(1302, 1304, 1306, 1308, 1310, 1312, 1314 및 1316)과 8개의 열들, 즉, 열들(1320, 1322, 1324, 1326, 1328, 1330, 1332 및 1334)로 배열된다. 각각의 열은 뱅크 제어기에 의해 제어된다. 그러므로 각각의 뱅크 제어기는 8 메가바이트의 메모리를 제어한다.
도 14a 및 14b는, 1024 비트의 블록과 같은 DRAM의 가장 작은 주소지정 메모리 유닛을 저장하고 접근하기 위한 다른 구성들을 도시한다. 도 14a에서, DMAC(1402)는 단일 뱅크(1404) 내에 8개의 1024 비트 블록들(1406)을 저장한다. 도 14b에서, DMAC(1412)가 1024 비트를 포함하는 데이터의 블록들을 판독하고 기록하는 반면에, 이러한 블록들은 2개의 뱅크들, 즉 뱅크(1414) 및 뱅크(1416) 사이에 끼워진다. 그러므로 이러한 뱅크들 각각은 16개 블록들의 데이터를 포함하고, 데이터의 각각의 블록은 512 비트를 포함한다. 이러한 끼워짐은 DRAM의 더 빠른 접근을 촉진할 수 있고 특정 어플리케이션들의 처리에 유용하다.
도 15는 PE 내의 DMAC(1504)를 위한 아키텍쳐를 도시한다. 도 15에 도시된 것처럼, DMAC(1506)를 포함하는 구조적 하드웨어는 PE를 통하여 분배되어 각각의 APU(1502)는 DMAC(1506)의 구조적 노드(1504)에 대한 직접 접근을 가진다. 각각의 노드는, 노드가 직접 접근을 가지는 APU에 의해, 메모리 접근들에 적절한 로직을 실행시킨다.
도 16은 DMAC, 즉 비분배 아키텍쳐의 또 다른 실시형태를 도시한다. 이러한 경우에, DMAC(1606)의 구조적 하드웨어는 집중된다. APU들(1602) 및 PU(1604)는 로컬 PE 버스(1607)를 경유하여 DMAC(1606)와 통신한다. DMAC(1606)는 크로스-바 스위치를 통하여 버스(1608)에 연결된다. 버스(1608)는 DRAM(1610)에 연결된다.
이상에서 논의된 것처럼, PE의 복수의 APU들 모두는 공유 DRAM 내에서 데이터에 독립적으로 접근할 수 있다. 결과적으로, 제 1 APU는, 제 2 APU가 이러한 데이터를 요청하는 시간에 로컬 스토리지 내의 특정 데이터에 대하여 동작할 수 있다. 데이터가, 이러한 데이터를 요청하는 시간에 공유 DRAM으로부터 제 2 APU로 제공된다면, 데이터는, 데이터의 값을 변화시키는 제 1 APU의 진행중인 처리 때문에 무효이다. 제 2 프로세서가 데이터를 공유 DRAM으로부터 이러한 데이터를 요청하는 시간에 수신한다면, 제 2 프로세서는 잘못된 결과를 생성한다. 예를 들면, 데이터는 전역 변수에 대한 특정 값일 수 있다. 제 1 프로세서가 처리 동안 특정 값을 변화시킨다면, 제 2 프로세서는 경과된 값을 수신할 것이다. 그러므로 공유 DRAM 내에서 메모리 위치들에 대한 APU들의 데이터의 판독 및 기록을 동기화하는 구조가 필요하다. 이러한 구조는, 또 다른 APU가 로컬 스토리지 내에서 현재 동작하여 새롭지 않은 메모리 위치로부터 데이터가 판독되는 것, 및 데이터가 현재 데이터를 저장하는 메모리 위치로 기록되는 것을 방지한다.
이러한 문제점들을 극복하기 위해, DRAM의 각각의 주소지정 메모리 위치에 대하여, 메모리의 추가적인 세그먼트(segment)가 메모리 위치 내에 저장된 데이터와 관련된 상태 정보를 저장하기 위한 DRAM 내에 할당된다. 이러한 상태 정보는, F/E(full/empty) 비트, 데이터를 메모리 위치로부터 요청하는 APU ID(identification of an APU), 및 요청된 데이터가 판독되는 APU의 로컬 스토리지(local storage)의 주소(LS 주소)를 포함한다. DRAM의 주소지정 메모리 위치는 임의의 크기일 수 있다. 바람직한 실시형태에서, 이 크기는 1024 비트이다.
F/E 비트를 1로 설정하는 것은 관련된 메모리 위치 내에 저장된 데이터가 최신임을 가리킨다. F/E 비트를 0으로 설정하는 것은 관련된 메모리 위치 내에 저장된 데이터가 최신이 아니라는 것을 가리킨다. 이 비트가 0으로 설정될 때 APU가 데이터를 요청한다면, APU는 데이터를 직접 판독하는 것이 방지된다. 이러한 경우에, 데이터를 요청하는 APU를 식별하는 APU ID, 및 데이터가 최신일 때 데이터가 판독되는 이러한 APU의 로컬 스토리지 내의 메모리 위치를 식별하는 LS 주소는, 추가적 인 메모리 세그먼트에 넣어진다.
추가적인 메모리 세그먼트는 또한 APU들의 로컬 스토리지 내의 각각의 메모리 위치에 대하여 할당된다. 이러한 추가적인 메모리 세그먼트는, "비지 비트(busy bit)"를 지정하며 1 비트를 저장한다. 비지 비트는 DRAM으로부터 회수될 특정 데이터의 저장을 위한 관련된 LS 메모리 위치를 예약하는 데에 사용된다. 비지 비트는 로컬 스토리지 내의 특정 메모리 위치에 대해 1로 설정된다면, APU는 이러한 특정 데이터의 기록에 대해서만 이러한 메모리 위치를 사용할 수 있다. 반면에, 비지 비트가 로컬 스토리지 내의 특정 메모리 위치에 대하여 0으로 설정된다면, APU는 임의의 데이터를 기록하기 위해 이러한 메모리 위치를 사용할 수 있다.
F/E 비트, APU ID, LS 주소 및 비지 비트가 PE의 공유 DRAM에 대한 데이터의 판독 및 기록을 동기화하는 데에 사용되는 방식의 실시예들이 도 17a 내지 17o 내에 도시되어 있다.
도 17a에 도시된 것처럼, PE(1720)와 같은 하나 이상의 PE들은 DRAM(1702)과 상호작용한다. PE(1720)는 APU(1722) 및 APU(1740)를 포함한다. APU(1722)는 제어 로직(1724)을 포함하고, APU(1740)는 제어 로직(1742)을 포함한다. APU(1722)는 또한 로컬 스토리지(1726)를 포함한다. 이러한 로컬 스토리지는 복수의 주소지정 메모리 위치들(1728)을 포함한다. APU(1740)는 로컬 스토리지(1744)를 포함하고, 이러한 로컬 스토리지는 또한 복수의 주소지정 메모리 위치들(1746)을 포함한다. 이러한 주소지정 메모리 위치들 모두는 바람직하게는 1024 비트의 크기를 가진다.
메모리의 추가적인 세그먼트는 각각의 LS 주소지정 메모리 위치와 관련된다. 예를 들어, 메모리 세그먼트들(1729 및 1734)은 각각 로컬 메모리 위치들(1731 및 1732)과 관련되고, 메모리 세그먼트(1752)는 로컬 메모리 위치(1750)와 관련된다. 이상에서 논의된 "비지 비트"는 이러한 추가적인 메모리 세그먼트들 각각 내에 저장된다. 로컬 메모리 위치(1732)는, 이러한 위치가 데이터를 포함한다는 것을 가리키는 수개의 X들과 함께 도시되어 있다.
DRAM(1702)은, 메모리 위치들(1706 및 1708)을 포함하여 복수의 주소지정 메모리 위치들(1704)을 포함한다. 이러한 메모리 위치들은 바람직하게는 1024 비트의 크기를 가진다. 메모리의 추가적인 세그먼트는 또한 이러한 메모리 위치들 각각과 관련되어 있다. 예를 들어, 추가적인 메모리 세그먼트(1760)는 메모리 위치(1706)와 관련되어 있고, 추가적인 메모리 세그먼트(1762)는 메모리 위치(1708)와 관련되어 있다. 각각의 메모리 위치 내에 저장된 데이터와 관련된 상태 정보는 메모리 위치와 관련된 메모리 세그먼트 내에 저장되어 있다. 이상에서 논의된 것처럼, 이러한 상태 정보는 F/E 비트, APU ID 및 LS 주소를 포함한다. 예를 들어, 메모리 위치(1708)에 대하여, 이러한 상태 정보는 F/E 비트(1712), APU ID(1714) 및 LS 주소(1716)를 포함한다.
상태 정보 및 비지 비트를 이용하면, 하나의 PE 또는 한 그룹의 PE들의 APU들 사이의 공유 DRAM에 대한 데이터의 동기화된 판독 및 기록이 성취될 수 있다.
도 17b는 APU(1722)의 LS 메모리 위치(1732)로부터 DRAM(1702)의 메모리 위치(1708)로의 데이터의 동기화된 기록의 개시를 도시한다. APU(1722)의 제어 로직(1724)은 이러한 데이터의 동기화된 기록을 개시한다. 메모리 위치(1708)가 비워졌기 때문에, F/E 비트(1712)는 0으로 설정된다. 결과적으로, LS 위치(1732) 내의 데이터는 메모리 위치(1708)로 기록될 수 있다. 이러한 비트가 메모리 위치(1708)가 채워지고 최신의 유효한 데이터를 포함한다는 것을 가리키도록 1로 설정된다면, 제어 로직(1724)은 오류 메시지를 수신하고 데이터가 이러한 메모리 위치로 기록되는 것이 금지될 것이다.
데이터의 메모리 위치(1708)로의 성공적인 동기화된 기록의 결과가 도 17c에 도시되어 있다. 기록된 데이터는 메모리 위치(1708) 내에 저장되어 있고, F/E 비트(1712)는 1로 설정되어 있다. 이러한 설정은 메모리(1708)가 채워져 있고 이러한 메모리 위치 내의 데이터가 최신이고 유효하다는 것을 가리킨다.
도 17d는 DRAM(1702)의 메모리 위치(1708)로부터 로컬 스토리지(1744)의 LS 메모리 위치(1750)로의 데이터의 동기화된 판독의 개시를 도시한다. 이러한 판독을 개시하기 위해, LS 메모리 위치(1750)의 메모리 세그먼트(1752) 내의 비지 비트는 1로 설정되어 이러한 데이터에 대한 이러한 메모리 위치를 예약한다. 이러한 비지 비트를 1로 설정하는 것은 APU(1740)가 다른 데이터를 이러한 메모리 위치 내에 저장하는 것을 방지한다.
도 17e에 도시된 것처럼, 제어 로직(1742)은 DRAM(1702)의 메모리 위치(1708)를 위한 동기 판독 명령을 배포한다. 이러한 메모리 위치와 관련된 F/E 비트(1712)는 1로 설정되기 때문에, 메모리 위치(1708) 내에 저장된 데이터는 최신이고 유효한 것으로 고려된다. 결과적으로, 데이터를 메모리 위치(1708)로부터 LS 메모리 위치(1750)로 전송하는 것을 준비하기 위해, F/E 비트(1712)는 0으로 설정된 다. 이러한 설정은 도 17f 내에 도시되어 있다. 이 비트를 0으로 설정하는 것은, 이러한 데이터를 판독한 다음에 메모리 위치(1708) 내의 데이터가 무효라는 것을 가리킨다.
도 17g에 도시된 것처럼, 메모리 위치(1708) 내의 데이터는 메모리 위치(1708)로부터 LS 메모리 위치(1750)로 판독된다. 도 17h는 최종 상태를 도시한다. 메모리 위치(1708) 내의 데이터 복사본은 LS 메모리 위치(1750) 내에 저장된다. F/E 비트(1712)는 0으로 설정되어 메모리 위치(1708) 내의 데이터가 무효라는 것을 가리킨다. 이러한 무효성은 APU(1740)에 의해 행해질 데이터에 대한 변화들의 결과이다. 메모리 세그먼트(1752) 내의 비지 비트는 또한 0으로 설정된다. 이러한 설정은, LS 메모리 위치(1750)가 임의의 목적으로 APU(1740)에 이용가능하다는 것, 즉, 이러한 LS 메모리 위치가 특정 데이터의 수령을 대기하는 예약 상태가 아니라는 것을 가리킨다. 그러므로 LS 메모리 위치(1750)는 임의의 목적으로 APU(1740)에 의해 접근될 수 있다.
도 17i 내지 17o는, DRAM(1702)의 메모리 위치에 대한 F/E 비트가 0으로 설정되어 이러한 메모리 위치 내의 데이터가 최신이거나 유효하지 않다는 것을 가리킬 때, 데이터가, 메모리 위치(1708)와 같은 DRAM(1702)의 메모리 위치로부터, 로컬 스토리지(1744)의 LS 메모리 위치(1752)와 같은 APU의 로컬 스토리지의 LS 메모리 위치로 동기화되어 판독되는 것을 도시한다. 도 17i에 도시된 것처럼, 이러한 전송을 개시하기 위해, LS 메모리 위치(1750)의 메모리 세그먼트(1752) 내의 비지 비트는 1로 설정되어 데이터의 이러한 전송을 위해 이러한 LS 메모리 위치를 예약 한다. 도 17j에서 도시된 것처럼, 제어 로직(1742)은 다음에, DRAM(1702)의 메모리 위치(1708)에 대한 동기화된 판독 명령을 배포한다. 이러한 메모리 위치와 관련된 F/E 비트, F/E 비트(1712)가 0으로 설정되기 때문에, 메모리 위치(1708) 내에 저장된 데이터가 무효이다. 결과적으로, 신호는 이러한 메모리 위치로부터의 데이터의 즉각적인 판독을 막기 위해 제어 로직(1742)으로 전송된다.
도 17k에 도시된 것처럼, APU ID(1714) 및 이러한 판독 명령에 대한 LS 주소(1716)는 메모리 세그먼트(1762)로 기록된다. 이러한 경우에, APU(1740)에 대한 APU ID, 및 LS 메모리 위치(1750)에 대한 LS 메모리 위치는 메모리 세그먼트(1762) 내에 기록된다. 메모리 위치(1708) 내의 데이터가 최신일 때, 이러한 APU ID 및 LS 메모리 위치는, 최신 데이터가 전송될 위치를 결정하기 위해 사용된다.
메모리 위치(1708) 내의 데이터는, APU가 데이터를 이러한 메모리 위치 내로 기록할 때 유효하고 최신이 된다. APU(1722)의 메모리 위치(1732)로부터 메모리 위치(1708)로의 데이터의 동기화된 기록은 도 17l 내에 도시된다. 이러한 메모리 위치에 대한 F/E 비트(1712)가 0으로 설정되기 때문에, 이러한 데이터의 동기화된 기록이 허용된다.
도 17m에 도시된 것처럼, 이러한 기록 이후에, 메모리 위치(1708) 내의 데이터는 최신이고 유효하다. 그러므로 메모리 세그먼트(1762)로부터의 APU ID(1714) 및 LS 주소(1716)는 즉각적으로 메모리 세그먼트(1762)로부터 판독되고, 이러한 정보는 그 다음에 이러한 세그먼트로부터 삭제된다. F/E 비트(1712)는 또한 메모리 위치(1708) 내에서 데이터의 즉각적인 판독을 기대하여 0으로 설정된다. 도 17n에 도시된 것처럼, APU ID(1714) 및 LS 주소(1716)를 판독한 이후에, 이러한 정보는 즉각적으로 APU(1740)의 LS 메모리 위치(1750)로의 메모리 위치(1708) 내의 유효 데이터를 판독하는 데에 이용된다. 최종 상태는 도 17o 내에 도시된다. 도 17o는 메모리 위치(1750)로 복사된 메모리 위치(1708)로부터 유효한 데이터를 도시하고, 메모리 세그먼트(1752) 내의 비지 비트는 0으로 설정되며, 메모리 세그먼트(1762) 내의 F/E 비트(1712)는 0으로 설정된다. 이러한 비지 비트를 0으로 설정하는 것은, LS 메모리 위치(1750)가 임의의 목적으로 APU(1740)에 의해 접근되는 것을 가능하게 한다. 이러한 F/E 비트를 0으로 설정하는 것은, 메모리 위치(1708) 내의 데이터가 더 이상 최신이고 유효하지 않다는 것을 가리킨다.
도 18은, 이상에서 논의된 동작들, 및 메모리 위치에 대응하는 메모리 세그먼트 내에 저장된 F/E 비트, APU ID 및 LS 주소의 상태들에 근거한 DRAM의 메모리 위치의 다양한 상태들을 요약한다. 메모리 위치는 3개의 상태들을 가질 수 있다. 이러한 3가지 상태들은, F/E 비트가 0으로 설정되고 어떤 정보도 APU ID 또는 LS 주소에 대하여 제공되지 않는 비워진 상태(1880), F/E 비트가 1로 설정되고 어떤 정보도 APU ID 또는 LS 주소에 대하여 제공되지 않는 채워진 상태(1882) 및 F/E 비트가 0으로 설정되고 정보가 APU ID 및 LS 주소에 대하여 제공되는 블로킹 상태(1884)이다.
도 18에 도시된 것처럼, 비워진 상태(1880)에서는, 동기화된 기록 동작이 허용되고 채워진 상태(1882)로의 변화를 일으킨다. 메모리 위치가 비워진 상태로 있을 때 메모리 위치 내의 데이터가 최신이 아니기 때문에, 동기화된 판독 동작은 블 로킹 상태(1884)로의 변화를 일으킨다.
채워진 상태(1882)에서, 동기화된 판독 동작이 허용되고 비워진 상태(1880)로의 변화를 일으킨다. 반면에, 채워진 상태(1882)에서의 동기화된 기록 동작은 유효 데이터의 덮어쓰기를 방지하기 위해 금지된다. 이러한 기록 동작이 이러한 상태에서 시도된다면, 어떤 상태 변화도 일어나지 않고 오류 메시지가 APU의 대응하는 제어 로직으로 전송된다.
블로킹 상태(1884)에서, 데이터의 메모리 위치로의 동기화된 기록이 허용되고 비워진 상태(1880)로의 변화를 일으킨다. 반면에, 블로킹 상태(1884)에서의 동기화된 판독 동작은, 이러한 상태를 일으키는 더 이른 동기화된 판독 동작과의 대립을 방지하기 위해 금지된다. 동기화된 판독 동작이 블로킹 상태(1884)에서 시도된다면, 어떤 상태 변화도 일어나지 않고 오류 메시지는 APU의 대응하는 제어 로직으로 전송된다.
공유 DRAM에 대한 데이터의 동기화된 판독 및 기록을 위해 이상에서 논의된 구조는, 또한 데이터를 외부 장치로부터 판독하고 외부 장치로 기록하기 위한 프로세서에 의해 제공되는 연산 자원들을 제거하기 위해 사용될 수 있다. 이러한 I/O 기능은 PU에 의해 수행될 수 있다. 그러나 이러한 동기화 구조의 변형을 이용하여, 적절한 프로그램을 실행시키는 APU가 이러한 기능을 수행할 수 있다. 예를 들어, 이러한 구조를 사용하여, 외부 장치에 의해 개시된 I/O 인터페이스로부터의 데이터의 전송을 위한 중단 요청을 수신하는 PU는 이러한 요청의 취급을 이러한 APU에 위임할 수 있다. 그 다음에 APU는 동기화된 기록 명령을 I/O 인터페이스에 배포한다. 이러한 인터페이스는 외부 장치에 신호를 보내서 데이터가 DRAM으로 기록될 수 있다. 다음에, APU는, DRAM의 관련 메모리 공간을 블로킹 상태로 설정하기 위해, 동기화된 판독 명령을 DRAM으로 배포한다. APU는, 또한 데이터를 수신하는 데에 필요한 APU의 로컬 스토리지의 메모리 위치들에 대해 비지 비트들을 1로 설정한다. 블로킹 상태에서, DRAM의 관련 메모리 공간과 관련된 추가적인 메모리 세그먼트들은 APU의 로컬 스토리지의 관련 메모리 위치들의 APU의 ID 및 주소를 포함한다. 다음에, 외부 장치는, 데이터를 직접 DRAM의 관련 메모리 공간으로 기록하기 위해 동기화된 기록 명령을 배포한다. 이러한 메모리 공간은 블로킹 상태에 있기 때문에, 데이터는, 즉각적으로 이러한 공간으로부터 추가적인 메모리 세그먼트들에서 식별되는 APU의 로컬 스토리지의 메모리 위치들로 판독된다. 그 다음에 이러한 메모리 위치들에 대한 비지 비트들은 0으로 설정된다. 외부 장치가 데이터의 기록을 완성할 때, APU는, 신호를 전송이 완료되는 PU로 배포한다.
그러므로 이러한 구조를 이용하면, 외부 장치들로부터의 데이터 전송들은, PU 상에서 최소한의 연산 부담으로 처리될 수 있다. 그러나 이러한 기능을 위임받은 APU는 중단 요청을 PU로 배포할 수 있어야 하고, 외부 장치는 DRAM으로 직접 접근해야 한다.
각각의 PE의 DRAM은 복수의 "샌드박스들"을 포함한다. 샌드박스는, 특정 APU 또는 세트의 APU들이 데이터를 판독하거나 기록할 수 없는 공유 DRAM의 영역을 정의한다. 이러한 샌드박스들은, 하나의 APU에 의해 처리될 데이터의 변조를 방지하기 위한 보안을 또 다른 APU에 의해 처리되는 데이터에 따라서 제공한다. 이러한 샌드박스들은, 또한 소프트웨어 셀이 데이터를 DRAM을 통하여 변조하지 않고도 소프트웨어 셀들을 네트워크(104)로부터 특정 샌드박스로 다운로드(download)하는 것을 허용한다. 본 발명에서, 샌드박스들은 DRAM들 및 DMAC들의 하드웨어에서 실시된다. 소프트웨어보다는 이러한 하드웨어에서 이러한 샌드박스들을 실시함으로써, 속도 및 보안에서의 장점들이 얻어진다.
PE의 PU는 APU들에 할당된 샌드박스들을 제어한다. PU는 보통 동작 시스템과 같은 신뢰성 있는 프로그램들만을 동작시키기 때문에, 이러한 구조는 보안을 위태롭게 하지 않는다. 이러한 구조에 따르면, PU는 키 제어 테이블을 만들고 유지한다. 이러한 키 제어 테이블은 도 19에 도시되어 있다. 도 19에 도시된 것처럼, 키 제어 테이블(1902) 내의 각각의 입력은, APU에 대한 ID(identification; 1904), 상기 APU에 대한 APU 키(1906) 및 키 마스크(key mask; 1908)를 포함한다. 이러한 키 마스크의 사용이 이하에서 설명된다. 키 제어 테이블(1902)은 바람직하게는 정적 임의 접근 메모리(SRAM)와 같은 상대적으로 빠른 메모리 내에 저장되고, DMAC와 관련된다. 키 제어 테이블(1902) 내의 입력들은 PU에 의해 제어된다. APU가 DRAM의 특정 스토리지 위치에 대한 데이터의 기록 또는 판독을 요청할 때, DMAC는 스토리지 위치와 관련된 메모리 접근 키에 대하여 키 제어 테이블(1902) 내의 상기 APU에 할당된 APU 키(1906)를 평가한다.
도 20에 도시된 것처럼, 전용 메모리 세그먼트(2010)는 DRAM(2002)의 각각의 주소지정 스토리지 위치(2006)에 할당된다. 스토리지 위치에 대한 메모리 접근 키(2012)는 이러한 전용 메모리 세그먼트 내에 저장된다. 위에서 논의된 것처럼, 각각의 주소지정 스토리지 위치(2006)와 관련된 또 다른 추가적인 전용 메모리 세그먼트(2008)는, 데이터를 스토리지 위치에 대하여 기록하고 판독하기 위한 동기화 정보를 저장한다.
동작 상태에서, APU는 DMA 명령을 DMAC로 배포한다. 이러한 명령은 DRAM(2002)의 스토리지 위치(2006)의 주소를 포함한다. 이러한 명령을 실행하기 전에, DMAC는 APU의 ID(1904)를 이용하여 키 제어 테이블(1902) 내에서 요청하는 APU의 키(1906)를 찾아낸다. 그 다음에 DMAC는, 요청하는 APU의 APU 키(1906)를, APU가 접근하려는 DRAM의 스토리지 위치와 관련된 전용 메모리 세그먼트(2010) 내에 저장된 메모리 접근 키(2012)와 비교한다. 2개의 키들이 부합하지 않는다면, DMA 명령은 실행되지 않는다. 반면에, 2개의 키들이 부합한다면, DMA 명령이 실시되고 요청된 메모리 접근이 실행된다.
선택적인 실시형태가 도 21에서 실시된다. 이러한 실시형태에서, PU는 또한 메모리 접근 제어 테이블(2102)을 유지한다. 메모리 접근 제어 테이블(2102)은 DRAM 내에서 각각의 샌드박스에 대한 입력을 포함한다. 도 21의 특정 실시예에서, DRAM은 64개의 샌드박스들을 포함한다. 메모리 접근 제어 테이블(2102) 내의 각각의 입력은 샌드박스, 베이스 메모리 주소(2106), 샌드박스 크기(2108), 메모리 접근 키(2110) 및 접근 키 마스크(2112)에 대한 ID(identification; 2104)를 포함한다. 베이스 메모리 주소(2106)는, 특정 메모리 샌드박스를 시작하는 DRMA 내의 주소를 제공한다. 샌드박스 크기(2108)는 샌드박스의 크기를 제공함으로써 특정 샌드박스의 말단점을 제공한다.
도 22는, 키 제어 테이블(1902) 및 메모리 접근 제어 테이블(2102)을 이용하여 DMA 명령을 실행하기 위한 단계들의 순서도이다. 단계 2202에서, APU는, DMA 명령을 샌드박스 내의 특정 메모리 위치 또는 위치들로의 접근을 위한 DMAC로 배포한다. 이러한 명령은, 접근이 요청되는 특정 샌드박스를 식별하는 샌드박스 ID(2104)를포함한다. 단계 2204에서, DMAC는 APU의 ID(1904)를 이용하여 키 제어 테이블(1902) 내에서 요청하는 APU의 키(1906)를 찾아낸다. 단계 2206에서, DMAC는 명령 내의 샌드박스 ID(2104)를 이용하여, 메모리 접근 제어 테이블(2102) 내에서 샌드박스와 관련된 메모리 접근 키(2110)를 찾아낸다. 단계 2208에서, DMAC는, 요청하는 APU에 할당된 APU 키(1906)를 샌드박스와 관련된 접근 키(2110)와 비교한다. 단계 2210에서, 2개의 키들이 부합하는 지에 관한 결정이 행해진다. 2개의 키들이 부합하지 않는다면, 처리는 단계 2212로 이동하여 DMA 명령이 실시되지 않고 오류 메시지가 요청하는 APU 또는 PU로 보내진다. 반면에, 단계 2210에서 2개의 키들이 부합하는 것으로 발견된다면, 처리는 단계 2214로 진행하여 DMAC는 DMA 명령을 실행한다.
APU 키들 및 메모리 접근 키들에 대한 키 마스크들은 이러한 시스템에 대한 더 큰 융통성을 제공한다. 키에 대한 키 마스크는 숨겨진 비트를 와일드카드(wildcard)로 변환한다. 예를 들어, APU 키(1906)와 관련된 키 마스크(1908)가 키 마스크(1908) 내의 이러한 비트들을 1로 설정함으로써 고안된, "마스크"로 설정된 지난 2개의 비트들을 가진다면, APU 키는 1 또는 0일 수 있고 메모리 접근 키와 부합한다. 예를 들어, APU 키는 1010일 수 있다. 이러한 APU 키는 보통 1010의 접 근 키를 가지는 샌드박스만으로의 접근을 허용한다. 이러한 APU 키에 대한 APU 키 마스크가 0001로 설정된다면, 이러한 APU 키는 1010 또는 1011의 접근 키를 가지는 샌드박스들로 접근하는 데에 이용될 수 있다. 유사하게, 0001로 설정된 마스크를 가진 접근 키(1010)는 1010 또는 1011의 APU 키를 가진 APU에 의해 접근될 수 있다. APU 키 마스크와 메모리 키 마스크 모두 동시에 이용될 수 있기 때문에, 샌드박스들로의 APU들에 의한 다양한 접근가능성이 생길 수 있다.
본 발명은, 시스템(101)의 프로세서들에 대한 새로운 프로그래밍 모델을 제공한다. 이러한 프로그래밍 모델은, 소프트웨어 셀들(102)을 이용한다. 이러한 셀들은, 처리를 위해 네트워크(104)에 대한 임의의 프로세서로 전송될 수 있다. 이러한 새로운 프로그래밍 모델은 또한 시스템(101)의 유일한 모듈 아키텍쳐 및 시스템(101)의 프로세서들을 이용한다.
소프트웨어 셀들은 APU들에 의해 APU의 로컬 스토리지로부터 직접 처리된다. APU들은, DRAM 내의 임의의 데이터 또는 프로그램들에 대하여 직접 동작하지 않는다. DRAM 내의 데이터 및 프로그램들은, APU가 이러한 데이터 및 프로그램들을 처리하기 전에 APU의 로컬 스토리지로 판독된다. 그러므로 APU의 로컬 스토리지는 프로그램 카운터(program counter), 스택(stack) 및 이러한 프로그램들을 실행시키기 위한 다른 소프트웨어 요소들을 포함한다. PU는, 직접 메모리 접근(DMA; direct memory access) 명령들을 DMAC로 배포함으로써 APU들을 제어한다.
소프트웨어 셀들(102)의 구조는 도 23에 도시된다. 도 23에 도시된 것처럼, 소프트웨어 셀(2302)과 같은 소프트웨어 셀은 루팅 정보 섹션(routing information section; 2304) 및 몸체(2306)를 포함한다. 루팅 정보 섹션(2304) 내에 포함된 정보는 네트워크(104)의 프로토콜에 의존한다. 루팅 정보 섹션(2304)은, 헤더(header; 2308), 목적지 ID(2310), 소스(source) ID(2312) 및 응답 ID(2314)를 포함한다. 목적지 ID는 네트워크 주소를 포함한다. TCP/IP(Transmission Control Protocol/Internet Protocol) 프로토콜 하에서는, 예를 들어 네트워크 주소가 IP(Internet protocol) 주소이다. 목적지 ID(2310)는, 셀이 처리를 위해 전송되는 PE 및 APU의 식별정보(identity)를 포함한다. 소스 ID(2314)는 네트워크 주소를 포함하고, 필요하다면 목적지 PE 및 APU가 셀과 관련된 추가적인 정보를 얻도록 하는 셀로부터 PE 및 APU를 식별한다. 응답 ID(2314)는 네트워크 주소를 포함하고, 셀과 관련된 질문들 및 셀의 처리 결과가 향하는 PE 및 APU를 식별한다.
셀 몸체(2306)는 네트워크의 프로토콜에 독립하는 정보를 포함한다. 도 23의 확대부는 셀 몸체(2306)의 세부사항들을 도시한다. 셀 몸체(2306)의 헤더(2320)는 셀 몸체의 시작을 식별한다. 셀 인터페이스(2322)는 셀의 이용에 필요한 정보를 포함한다. 이러한 정보는 전역 유일 ID(2324), 필요한 APU들(2326), 샌드박스 크기(2328) 및 이전 셀 ID(2330)를 포함한다.
전역 유일 ID(2324)는, 네트워크(104)를 통하여 소프트웨어 셀(2302)을 유일하게 식별한다. 전역 유일 ID(2324)는, 소스 ID(2312) 내의 PE 또는 APU의 유일한 식별과 같은 소스 ID(2312), 및 소프트웨어 셀(2302)의 생성 또는 전송의 시간 및 날짜에 근거하여 생성된다. 필요한 APU들(2326)은, 셀을 실행시키는 데에 필요한 최소 개수의 APU들을 제공한다. 샌드박스 크기(2328)는, 셀을 실행시키는 데에 필 요한 요구되는 APU들의 관련된 DRAM 내의 보호되는 메모리의 양을 제공한다. 이전 셀 ID(2330)는 스트리밍 데이터와 같은 연속적인 실행을 필요로 하는 한 그룹의 셀들 내에서 이전 셀의 식별정보를 제공한다.
실행부(2332)는 셀의 중심 정보를 포함한다. 이러한 정보는 DMA 명령 리스트(2334), 프로그램(2336) 및 데이터(2338)를 포함한다. 프로그램들(2336)은 APU들에 의해 실행되는 프로그램들을 포함하는데, 예를 들어, APU 프로그램들(2360 및 2362), 및 데이터(2338)는 이러한 프로그램들과 함께 처리될 데이터를 포함한다. DMA 명령 리스트(2334)는 프로그램들을 시작하는 데에 필요한 일련의 DMA 명령들을 포함한다. 이러한 DMA 명령들은 DMA 명령들(2340, 2350, 2355 및 2358)을 포함한다. PU는 이러한 DMA 명령들을 DMAC로 배포한다.
DMA 명령(2340)은 VID(2342)를 포함한다. VID(2342)는, DMA 명령들이 배포될 때 물리적 ID에 매핑되는 APU의 가상 ID이다. DMA 명령(2340)은 또한 로드 명령(2344) 및 주소(2346)를 포함한다. 로드 명령(2344)은, APU가 특정 정보를 DRAM으로부터 로컬 스토리지로 판독하도록 한다. 주소(2346)는 이러한 정보를 포함하는 DRAM 내의 가상 주소를 제공한다. 정보는, 예를 들어, 프로그램부(2336)로부터의 프로그램들, 데이터부(2338)로부터의 데이터 또는 다른 데이터일 수 있다. 마지막으로, DMA 명령(2340)은 로컬 스토리지 주소(2348)를 포함한다. 이러한 주소는 정보가 로드(load)되어야 하는 로컬 스토리지 내의 주소를 식별한다. DMA 명령들(2350)은 유사한 정보를 포함한다. 다른 DMA 명령들이 또한 가능하다.
DMA 명령 리스트(2334)는 또한 킥(kick) 명령들(2355 및 2358)과 같은 일련 의 킥 명령들을 포함한다. 킥 명령들은 셀의 처리를 개시하기 위해 PU에 의해 APU로 배포되는 명령들이다. DMA 킥 명령(2355)은 가상 APU ID(2352), 킥 명령(2354) 및 프로그램 카운터(2356)를 포함한다. 가상 APU ID(2352)는 킥될 APU를 식별하고, 킥 명령(2354)은 관련 킥 명령을 제공하며, 프로그램 카운터(2356)는 프로그램을 실행하기 위한 프로그램 카운터에 대한 주소를 제공한다. DMA 킥 명령(2358)은 같은 APU 또는 또 다른 APU에 대한 유사한 정보를 제공한다.
언급된 것처럼, PU들은 APU들을 코-프로세서(co-processor)들이 아닌 독립 프로세서들로서 취급한다. 그러므로 APU들에 의해 처리를 제어하기 위해, PU는 원격 절차 호출들에 유사한 명령들을 사용한다. 이러한 명령들은 ARPC(APU Remote Procedure Call)들로 지정된다. PU는 일련의 DMA 명령들을 DMAC로 배포함으로써 ARPC를 실행한다. DMAC는 APU 프로그램 및 관련된 스택 프레임(stack frame)을 APU의 로컬 스토리지 내로 로드한다. 그 다음에 PU는 APU 프로그램을 실행하기 위해 초기 킥을 APU로 배포한다.
도 24는 애퓰릿(apulet)을 실행하기 위한 ARPC의 단계들을 도시한다. 지정된 APU에 의한 애퓰릿의 처리 개시에서 PU에 의해 수행되는 단계들은 도 24의 제 1 부분(2402) 내에 도시되고, 애퓰릿 처리에서 지정된 APU에 의해 수행되는 단계들은 도 24의 제 2 부분(2404)에 도시되어 있다.
단계 2410에서, PU는 애퓰릿을 평가하고 그 다음에 애퓰릿을 처리하기 위한 APU를 지정한다. 단계 2412에서, PU는 필요한 샌드박스 또는 샌드박스들을 위한 메모리 접근 키들을 설정하기 위해 DMA 명령을 DMAC로 배포함으로써 애퓰릿을 실행하 기 위한 DRAM 내의 공간을 할당한다. 단계 2414에서, PU는, 애퓰릿의 완성을 신호로 알리는, 지정된 APU에 대한 중단 요청을 가능하게 한다. 단계 2418에서, PU는 DMA 명령을 DMAC로 배포하여 애퓰릿을 DRAM으로부터 APU의 로컬 스토리지로 로드한다. 단계 2420에서, DMA 명령이 실행되고, 애퓰릿은 DRAM으로부터 APU의 로컬 스토리지로 판독된다. 단계 2422에서, PU는 DMA 명령을 DMAC로 배포하여, 애퓰릿과 관련된 스택 프레임을 DRAM으로부터 APU의 로컬 스토리지로 로드한다. 단계 2423에서, DMA 명령이 실행되고, 스택 프레임이 DRAM으로부터 APU의 로컬 스토리지로 판독된다. 단계 2424에서, PU가, 키를 APU로 할당하도록 DMAC를 위한 DMA 명령을 배포하여, APU가 단계 2412에서 지정된 하드웨어 샌드박스 또는 샌드박스들에 대해 데이터를 판독하고 기록하는 것을 가능하게 한다. 단계 2426에서, DMAC는 키 제어 테이블(KTAB; key control table)을 APU로 할당된 키를 이용하여 갱신한다. 단계 2428에서, PU는 DMA 명령 "킥"을 APU로 배포하여 프로그램의 처리를 시작한다. 다른 DMA 명령들은, 특정 애퓰릿에 의존하여 특정 ARPC의 실행에서 PU에 의해 배포될 수 있다.
이상에서 명시된 것처럼, 도 24의 제 2 부분(2404)은 애퓰릿 실행에서 APU에 의해 수행되는 단계들을 도시한다. 단계 2430에서, APU는, 단계 2428에서 배포되는 킥 명령에 반응하여 애퓰릿을 실행하는 것을 시작한다. 단계 2432에서, 애퓰릿의 방향으로, APU는 애퓰릿의 관련된 스택 프레임을 평가한다. 단계 2434에서, APU는 복수의 DMA 명령들을 DMAC로 배포하여 스택 프레임에 의해 필요한 것으로 지정된 데이터를 DRAM으로부터 APU의 로컬 스토리지로 로드한다. 단계 2436에서, 이러한 DMA 명령들이 실행되고, 데이터는 DRAM으로부터 APU의 로컬 스토리지로 판독된다. 단계 2438에서, APU는 애퓰릿을 실행하고 결과를 생성한다. 단계 2440에서, APU는 DMA 명령을 DMAC로 배포하여 결과를 DRAM 내에 저장한다. 단계 2442에서, DMA 명령이 실행되고 애퓰릿의 결과가 APU의 로컬 스토리지로부터 DRAM으로 기록된다. 단계 2444에서, APU는 중단 요청을 PU로 배포하여 ARPC가 완료되었다는 것을 신호로 알린다.
PU의 방향 하에서 태스크(task)들을 독립적으로 수행하는 APU들의 능력은, PU가 한 그룹의 APU들, 및 연장된 태스크들을 수행하기 위한 한 그룹의 APU들과 관련된 메모리 자원들에 이용되는 것을 가능하게 한다. 예를 들어, PU는 하나 이상의 APU들, 및 이러한 하나 이상의 APU들과 관련된 한 그룹의 메모리 샌드박스들을 이용할 수 있어 연장된 기간 동안 네트워크(104)를 통해 전송되는 데이터를 수신하고, 또 다른 처리를 위해 이러한 기간 동안 수신되는 데이터를 하나 이상의 다른 APU들 및 관련된 메모리 샌드박스들로 보낸다. 이러한 능력은, 스트리밍 MPEG 또는 스트리밍 ATRAC 오디오 또는 비디오 데이터와 같은, 네트워크(104)를 통해 전송되는 스트리밍 데이터를 처리하는 데에 특히 유리하다. PU는, 하나 이상의 APU들 및 상기 APU들의 관련된 메모리 샌드박스들이 이러한 데이터를 수신하도록 하고, 하나 이상의 다른 APU들 및 상기 APU들의 관련된 메모리 샌드박스들이 이러한 데이터에 대해 압력을 줄이고 처리하도록 한다. 즉 PU는 이러한 데이터를 처리하기 위한 한 그룹의 APU들 및 관련된 메모리 샌드박스들 사이에서 전용 파이프라인 관계를 설립할 수 있다.
이러한 처리가 효율적으로 수행되도록, 파이프라인의 전용 APU들 및 메모리 샌드박스들은, 데이터 스트림(stream)을 포함하는 애퓰릿들의 처리가 일어나지 않는 기간들 동안 파이프라인에 이용되도록 남아야 한다. 즉, 전용 APU들 및 전용 APU들의 관련된 샌드박스들은 이러한 기간들 동안 예약된 상태 내에 위치해야 한다. 애퓰릿의 처리 완료 이후의 APU 및 관련된 메모리 샌드박스 또는 샌드박스들의 예약은 "상주 종료(resident termination)"라 불린다. 상주 종료는 PU로부터의 명령에 반응하여 일어난다.
도 25, 26a 및 26b는, 스트리밍 MPEG 데이터와 같은 스트리밍 데이터를 처리하기 위한 한 그룹의 APU들 및 관련된 샌드박스들을 포함하는 전용 파이프라인 구조의 설립을 도시한다. 도 25에 도시된 것처럼, 이러한 파이프라인 구조의 구성요소들은 PE(2502) 및 DRAM(2518)을 포함한다. PE(2502)는 PU(2504), DMAC(2506), 및 APU(2508), APU(2510) 및 APU(2512)를 포함하는 복수의 APU들을 포함한다. PU(2504), DMAC(2506) 및 이러한 APU들 사이의 통신들은 PE 버스(2514)를 통해 일어난다. 광 대역폭 버스(2516)는 DMAC(2506)를 DRAM(2518)으로 연결한다. DRAM(2518)은 샌드박스(2520), 샌드박스(2522), 샌드박스(2524) 및 샌드박스(2526)와 같은 복수의 샌드박스들을 포함한다.
도 26a는 전용 파이프라인을 설립하기 위한 단계들을 도시한다. 단계 2610에서, PU(2504)는 네트워크 애퓰릿을 처리하기 위해 APU(2508)를 할당한다. 네트워크 애퓰릿은 네트워크(104)의 네트워크 프로토콜을 처리하기 위한 프로그램을 포함한다. 이러한 경우에, 이러한 프로토콜은 TCP/IP(Transmission Control Protocol/Internet Protocol)이다. 이러한 프로토콜을 따르는 TCP/IP 데이터 패킷들은 네트워크(104)를 통해 전송된다. 수령한 이후에, APU(2508)는 이러한 패킷들을 처리하고 패킷들 내의 데이터를 소프트웨어 셀들(102)로 모은다. 단계 2612에서, 네트워크 애퓰릿의 처리가 완료된 이후에, PU(2504)는 APU(2508)가 상주 종료들을 수행하도록 명령한다. 단계 2614에서, PU(2504)는 MPEG 애퓰릿들을 처리하기 위해 APU들(2510 및 2512)을 할당한다. 단계 2615에서, PU(2504)는 APU들(2510 및 2512)이 MPEG 애퓰릿들의 처리의 완료 이후에 상주 종료들을 수행하도록 명령한다. 단계 2616에서, PU(2504)는 샌드박스(2520)를 APU(2508) 및 APU(2510)에 의한 접근을 위한 소스 샌드박스로서 지정한다. 단계 2618에서, PU(2504)는 샌드박스(2522)를 APU(2510)에 의한 접근을 위한 목적지 샌드박스로서 지정한다. 단계 2620에서, PU(2504)는 샌드박스(2524)를 APU(2508) 및 APU(2512)에 의한 접근을 위한 소스 샌드박스로서 지정한다. 단계 2622에서, PU(2504)는 샌드박스(2526)를 APU(2512)에 의한 접근을 위한 목적지 샌드박스로서 지정한다. 단계 2624에서, APU(2510) 및APU(2512)는, 이러한 블록들의 메모리를 블로킹 상태로 설정하기 위해 동기화 판독 명령들을 각각 소스 샌드박스(2520) 및 소스 샌드박스(2524) 이내의 메모리의 블록들로 보낸다. 처리는 최종적으로 전용 파이프라인의 설립이 완료되고 파이프라인에 이용되는 자원들이 예약되는 단계 2628로 이동한다. 그러므로 APU들(2508, 2510 및 2512) 및 APU들(2508, 2510 및 2512)의 관련된 샌드박스들(2520, 2522, 2524 및 2526)은 예약 상태로 진입한다.
도 26b는 이러한 전용 파이프라인에 의해 스트리밍 MPEG 데이터를 처리하기 위한 단계들을 도시한다. 단계 2630에서, 네트워크 애퓰릿을 처리하는 APU(2508)는 TCP/IP 데이터 패킷들을 네트워크(104)로부터 로컬 스토리지 내에 수신한다. 단계 2632에서, APU(2508)는 이러한 TCP/IP 데이터 패킷들을 처리하고, 이러한 패킷들 내의 데이터를 소프트웨어 셀들(102)로 모은다. 단계 2634에서, APU(2508)는 소프트웨어 셀들의 헤더(2320)(도 23)를 검사하여 셀들이 MPEG 데이터를 포함하는지 여부를 결정한다. 그 다음에 셀이 단계 2636에서 MPEG 데이터를 포함하지 않는다면, APU(2508)는, 전용 파이프라인 내에 포함되지 않은 다른 APU들에 의해 다른 데이터를 처리하기 위해, 셀을 DRAM(2518) 내에 지정된 범용 샌드박스로 송신한다. APU(2508)는 또한 PU(2504)에 이러한 송신을 알린다.
반면에, 그 다음에 단계 2638에서 소프트웨어 셀이 MPEG 데이터를 포함한다면, APU(2508)는, 셀이 속하는 MPEG 데이터 스트림을 식별하기 위해 셀의 이전 셀 ID(2330)(도 23)를 검사한다. 단계 2640에서, APU(2508)는 셀의 처리를 위해 전용 파이프라인의 APU를 선택한다. 이러한 경우에, APU(2508)는 이러한 데이터를 처리하기 위해 APU(2510)를 선택한다. 이러한 선택은 이전 셀 ID(2330) 및 로드 밸런싱 인자(load balancing factor)들에 근거한다. 예를 들어, 이전 셀 ID(2330)가, 소프트웨어 셀이 속하는 MPEG 데이터 스트림의 이전 소프트웨어 셀이 처리를 위해 APU(2510)로 보내진다는 가리킨다면, 현재 소프트웨어 셀은 처리를 위해 APU(2510)로 보내질 것이다. 단계 2642에서, APU(2508)는 MPEG 데이터를 샌드박스(2520)로 기록하기 위해 동기화 기록 명령을 배포한다. 이러한 샌드박스는 이전에 블로킹 상태로 설정되었기 때문에, 단계 2644에서 MPEG 데이터는 자동적으로 샌드박스(2520) 로부터 APU(2510)의 로컬 스토리지로 판독된다. 단계 2646에서, APU(2510)는 비디오 데이터를 생성하기 위해 APU(2510)의 로컬 스토리지 내에서 MPEG 데이터를 처리한다. 단계 2648에서, APU(2510)는 비디오 데이터를 샌드박스(2522)로 기록한다. 단계 2650에서, APU(2510)는 동기화 판독 명령을 샌드박스(2520)로 배포하여 이러한 샌드박스가 추가적인 MPEG 데이터를 수신하는 것을 준비시킨다. 단계 2652에서, APU(2510)는 상주 종료를 처리한다. 이러한 처리는, 이러한 APU가, APU가 MPEG 데이터 스트림 내에서 추가적인 MPEG 데이터를 처리하는 것을 기다리는 동안 예약 상태에 진입하도록 한다.
다른 전용 구조들이, 다른 유형들의 데이터를 처리하기 위해 한 그룹의 APU들 및 상기 APU들의 관련된 샌드박스들 사이에서 설립될 수 있다. 예를 들어, 도 27에 도시된 것처럼, APU들(2702, 2708 및 2714)과 같은 전용 그룹의 APU들이, 2차원 디스플레이 리스트들을 생성하기 위해 3차원 객체들에 대한 기하학적 변환들을 수행하기 위해 설립될 수 있다. 이와 같은 2차원 디스플레이 리스트들은 픽셀 데이터를 생성하기 위해 다른 APU들에 의해 처리될 수 있다. 이러한 처리를 수행하기 위해, 샌드박스들은 3차원 객체들 및 이러한 객체들의 처리로부터 생겨난 디스플레이 리스트들을 저장하기 위한 APU들(2702, 2708 및 2414)에 이용된다. 예를 들어, 소스 샌드박스들(2704, 2710 및 2716)은, 각각 APU(2702), APU(2708) 및 APU(2714)에 의해 처리되는 3차원 객체들을 저장한다. 유사한 방식으로, 목적지 샌드박스들(2706, 2712 및 2718)은, 각각 APU(2702), APU(2708) 및 APU(2714)에 의해 이러한 3차원 객체들의 처리로부터 생겨나는 디스플레이 리스트들을 저장한다.
코디네이팅(coordinating) APU(2720)는 디스플레이 리스트들을 목적지 샌드박스들(2706, 2712 및 2718)로부터 코디네이팅 APU(2720)의 로컬 스토리지 내에 수신한다. APU(2720)는 이러한 디스플레이 리스트들을 조정하고 픽셀 데이터의 렌더링을 위해 다른 APU들로 보낸다.
시스템(101)의 프로세서들은 또한 절대 타이머를 이용한다. 절대 타이머는, 클록 신호를, 이러한 요소들을 구동하는 클록 신호에 독립적이면서 더 빠른 PE의 APU들 및 다른 요소들에 제공한다. 이러한 절대 타이머의 사용은 도 28에 도시되어 있다.
도 28에 도시된 것처럼, 절대 타이머는 APU들에 의해 태스크들의 수행을 위한 시간 예산을 설립한다. 이러한 시간 예산은, 태스크들의 APU들의 처리에 필요한 시간보다 더 긴 이러한 태스크들을 완료하기 위한 시간을 제공한다. 결과적으로, 각각의 태스크에 대해, 시간 예산 이내에 전가동 기간(busy period)과 대기 기간(stanby period)이 있다. 모든 애퓰릿들은 APU들의 실제 처리 시간 또는 속도에 관계없이 이러한 시간 예산에 근거하여 처리를 위해 기록된다. 예를 들어, PE의 특정 APU에 대해, 특정 태스크가 시간 예산(2804)의 전가동 기간(2802) 동안 수행될 수 있다. 전가동 기간(2802)은 시간 예산(2804)보다 더 작기 때문에, 대기 기간(2806)은 시간 예산 동안 일어난다. 이러한 대기 기간 동안, APU는, 적은 전력이 APU에 의해 소모되는 동안 슬립 모드(sleep mode)로 진행한다.
태스크의 처리 결과들은, 시간 예산(2804)이 만료될 때까지 PE의 다른 APU들 또는 다른 요소들에 의해 예상되지 않는다. 그러므로 절대 타이머에 의해 설립된 시간 예산을 이용하여, APU들의 처리 결과들은 APU들의 실제 처리 속도들에 관계없이 항상 조정된다.
미래에는, APU들에 의한 처리 속도가 더 빨라질 것이다. 그러나 절대 타이머에 의해 설립된 시간 예산은 똑같을 것이다. 예를 들어, 도 28에 도시된 것처럼, 미래의 APU는 더 짧은 기간에 태스크를 실행할 것이고, 따라서 더 긴 대기 기간을 가질 것이다. 그러므로 전가동 기간(2808)은 전가동 기간(2802)보다 더 짧고, 대기 기간(2810)은 대기 기간(2806)보다 더 길다. 그러나, 프로그램들이 절대 타이머에 의해 설립된 동일한 시간 예산에 근거하여 처리를 위해 기록되기 때문에, APU들 사이의 처리 결과들의 조정은 유지된다. 결과적으로, 더 빠른 APU들은, 이러한 처리 결과들이 예상되는 시간에서의 대립을 일으키지 않고 더 느린 APU들에 대해 기록되는 프로그램들을 처리할 수 있다.
APU들 사이의 조정을 설립하는 절대 타이머 대신에, PU 또는 하나 이상의 지정된 APU들은, 향상되거나 다른 동작 속도들에 의해 생성된 APU들의 병렬 처리의 조정에서의 문제점들에 대한 애퓰릿 처리에서 APU에 의해 실행되는 특정 명령들 또는 마이크로코드를 분석할 수 있다. "NOOP(No operation)" 명령들이, 애퓰릿에 의해 예상되는 APU들에 의한 적절한 순차적인 처리 완료를 유지하기 위해 명령들 내에 삽입되고 APU들 중 일부에 의해 실행될 수 있다. 이러한 NOOP들을 명령들 내에 삽입함으로써, 모든 명령들의 APU들의 실행을 위한 정확한 타이밍(timing)이 유지될 수 있다.
이상에서 언급된 것처럼, 각각의 처리 요소(PE)는, PU에 의해 조정되고 제어 되는 APU들에 의해 하나 이상의 애플리케이션들에 의한 데이터의 병렬 처리를 수행하기 위해, 적어도 하나의 처리 유닛(PU) 및 하나 이상의 부가 처리 유닛(APU)들을 포함한다. 이와 관련하여, 도 18을 다시 살펴보면, 예시적 데이터 레벨 동기화 매커니즘(data level synchronization(DLS) mechanism)의 상태들은, APU와 공유 메모리 사이에서 데이터를 통과시키기 위해 도시되었다. 그러나, 앞에서 언급되었듯이, 이러한 DLS 메커니즘은 데이터를 외부 장치에 대하여 처리하는 데에 유리하게 이용될 수 있다. 이하의 상세한 설명에서 보듯이, I/O 장치 취급에 대한 DLS의 사용은 다른 중요한 장점들을 제공한다. 예를 들어, 장치 실시 세부사항들을 숨길 능력, 복수의 장치들을 취급하는 유연성, 및 APU가 하나 또는 복수의 외부 소스들로부터 스트리밍 데이터를 취급하는 능력이 있다. 이제, 도 29를 살펴보면, 본 발명에 따른 예시적인 DLS 아키텍쳐가 도시되어 있다.
도 29에서, 배열(2900)는 PE(2990), DRAM( 또는 공유 메모리;2910), 인터페이스 장치(인터페이스; 2915) 및 외부 장치(2920)를 포함한다. PE(2990)는 하나 이상의 처리 요소들로 표현되고, APU들(2901, 2902 및 2903)에 의해 표현되듯이, 적어도 하나의 PU(2905) 및 하나 이상의 APU들을 포함한다. PE(2990)는 버스(2906)를 경유하여 공유 메모리에 결합되고, 데이터를 DRAM(2910)에 대해 기록하고 판독하기 위해 앞에서 기술된 DLS 및 메모리 보호 메커니즘을 이용한다. 본 발명에 따라, 여기서 DLS 메커니즘은 외부 장치들과의 사용을 위해 확장된다. 도 29로부터 볼 수 있듯이, PE(2990)는 버스(2907)를 경유하여 인터페이스(2915)에 연결되고, DRAM(2910)은 버스(2908)를 경유하여 인터페이스(2915)에 연결된다. 인터페이 스(2915)는, 외부 장치(2920)에 의해 표현되듯이 경로(2916)를 경유하여 하나 이상의 외부 장치들로의 연결을 제공한다. 외부 장치(2920)는, 하드 디스크 또는 광 디스크와 같은 메모리들, I/O 프로세서 또는 그래픽 프로세서와 같은 프로세서들, 및 (네트워크 송수신기들과 같은) 송수신기들을 포함하며 이에 제한되지 않는 임의의 개수의 장치들 중 하나일 수 있다. 경로(2916)는, 패킷 네트워크 연결들, 스위치 네트워크 연결들, 직렬 버스, 병렬 버스 등과 같은, 외부 장치(2920)를 인터페이스(2915)에 연결하기 위한 하나 이상의 통신 경로들로 표현된다. 이하에서 기술되듯이, 버스(2908)는 인터페이스(2915)가 DRAM(2910)에 직접 접근할 수 있게 한다.
도 30을 살펴보면, 본 발명이 처음에 외부 장치로서의 외부 메모리(3020)와 관련하여 도시될 것이다. 특히, 각각의 APU는 버스(2907)를 경유하여 인터페이스(2915)에 대하여 요청들을 통과시키고, 그리고/또는 응답들을 수신하기 위한 관련된 하나 이상의 채널들을 가진다. 이것은, 도 30에서 APU(2901)에 대해 채널 0(요청)(2930) 및 채널 1(응답)(2935)에 의해 도시되어 있다. 요소들(2930 및 2935) 모두는 예시적으로 하나 이상의 FIFO(first-in-first-out) 버퍼들이다. 단순함을 위하여, 버스(2907)를 통해 다음에 전달되는 다른 APU들에 대한 다른 요청 및 응답 채널들은 도 30의 점선 화살표들에 의해 표현된다. 우선, 명령들 및 상태 정보만이 요소들(2930 및 2935) 내에 저장된다고 가정한다. 요청 및 응답 채널들은 명령들 및 상태 정보를 버스(2907)를 통해 전송 제어기(2945)와 교환한다. 전송 제어기(2945)는 예시적으로 요청들을 APU들로부터 처리하는 외부 DMAC이다. 도 30으로부터 볼 수 있듯이, 인터페이스(2915)는 보호 테이블(2940)을 포함한다. 이것은, PU(2905)의 내부 DMAC(도시되지 않음)에서 도 19와 관련하여 이상에서 기술된 키 제어 테이블(1902)에 부가된다. 보호 테이블(2940)과 같은 외부 보호 테이블의 사용은, 외부 메모리(3020)로부터 DRAM(2910) 내의 하나 이상의 샌드박스들로의 데이터의 직접적인 스트리밍(streaming)을 촉진한다. 보호 테이블(2940)에 대한 값들은 예시적으로 앞에서 기술된 것과 유사한 방식으로 PU에 의해 할당된다. 보호 테이블(2940)을 이용하면, 전송 제어기(2945)는 DRAM(2910) 내의 샌드박스(들)와 외부 메모리(3020) 사이의 방향으로 데이터를 통신하기 위해 전송 경로(2950)를 제어한다. 외부 보호 테이블이 필요하지 않다는 것이 주목된다. 그러나 외부 보호 테이블이 없다면, 적절한 허가들이, PU와 관련하여 유사하게 구성된 요청/응답 채널들과 같은 PU로부터 통과되는 것이 바람직하다. 위에서 논의되듯이, PU는 "신뢰성 있는 프로그램들"을 실행시키고, 관련된 판독/기록 허가들을 할당해야 한다. 게다가, 보호 테이블(2940)은, 외부 메모리(3020)의 특정 메모리 주소 영역들에 의해 표현되듯이, 외부 장치들 또는 그의 부분들로의 접근들을 제어하도록 확장될 수 있다.
도 30을 계속해서 참조하고 특히, 도 31 및 32를 참조하여, 외부 장치(3020)로부터 APU(2901)의 로컬 메모리(도시되지 않음)로의 데이터 전송에서 사용하기 위한 DLS 방법이 도시된다. 이러한 방법은 이상에서 기술된 도 24의 변형예이고, 모든 단계들이 이하에서 반복되지는 않고, 도 31에서 도시된다. 이러한 실시예에서, 애퓰릿(앞에서 기술된 소프트웨어의 한 형태)은, 외부 메모리(3020) 내에 현재 저장된 데이터에 대해 동작하는 데에 필요한 APU(2901)에 의해 실행될 것이라고 가정한다. 먼저, 도 31의 단계 3105를 살펴보면, PU(2905)는 APU(2901)에 의한 사용을 위해 DRAM(2910)의 메모리를 할당한다. 게다가, 단계 3110에서, PU(2905)는, DRAM(2915)의 메모리로의 접근을 제어하는 보호 테이블(2940)에서의 사용을 위해, 할당된 메모리를 위한 적절한 키 보호 값들을, 버스(2907)를 경유하여 인터페이스(2915)의 전송 제어기(2945)로 제공한다. PU(2905)는, 도 19와 관련하여 이상에서 기술된 방식으로, APU(2901)에 의한 접근을 제어하기 위해 자신의 키 제어 테이블을 갱신하는 것 외에 이를 행한다. 단계 3115에서, PU(2905)는, 외부 메모리(3020) 내에 현재 저장된 데이터로의 접근을 필요로 하는 애퓰릿의 APU(2901)에 의한 실행을 개시한다. APU(2901)로 돌아와서, 단계 3130에서, 이러한 APU는, 외부 메모리(3020)와 같은 외부 장치로부터 DRAM(2910)으로의 데이터의 전송을 위한 요청을 채널 0을 경유하여 인터페이스(2915)로 제공한다. 이러한 요청은 DRAM(2910)으로의 동기화된 기록 동작을 위한 것이고 앞에서 기술된 DMA 명령의 형태와 유사하다. 예시적으로, 이러한 요청은, 사용을 위한 외부 장치의 부분(여기서, 외부 메모리(3020) 내의 데이터의 위치), 전송될 분량, DRAM(2910) 내의 대응하는 주소들, 및 동작 유형이 판독 또는 기록 동작(여기서, DRAM(2910)으로의 동기화된 기록 동작)인지의 여부와 같은, 외부 장치(여기서, 외부 메모리(3020))의 식별을 포함한다. 장치, 사용하려는 장치의 부분 및 크기 정보와 같은 외부 장치 정보가, 예를 들어 애퓰릿 관련 정보 내에 제공된다. 다른 유형들의 외부 장치 파라미터들이, 장치 및 포트 넘버, 가상 채널 식별자들 등을 포함하고 이에 제한되지 않게 사용될 수 있다.
도 30을 계속해서 참조하며 도 32로 향하면, 단계 3205에서 인터페이 스(2915)의 전송 제어기(2945)는 전송 요청을 APU(2901)로부터 수신한다. 단계 3210에서, 전송 제어기(2945)는 DRAM(2910) 내의 요청된 메모리 범위가 유효한지 여부를 결정하기 위해 보호 테이블(2940) 내에 저장된 값들을 검사한다. 메모리 범위가 무효라면, 전송 제어기(2945)는 단계 3220에서 채널 1을 경유하는 전송을 부정한다. 그러나 메모리 범위가 유효하다면, 전송 제어기는 단계 3225에서 전송을 시작하고, 종료될 때까지 전송 경로(2950)를 경유하여 DMA 방식의 데이터 전송을 계속한다(단계 3230). 전송이 완료될 때, 전송 제어기(2945)는 단계 3235에서 응답 채널을 경유하여 전송 완료 메시지를 송신한다. 외부 장치 정보가 보호 테이블(2940) 내에 저장된다면, 단계 3210 및 3215에서, 전송 제어기(2945)는, APU(2901)가 전송을 진행하기 이전에 외부 장치를 사용하는 것을 허용하는지 여부를 검사할 것이다.
본 발명에 따르면, 외부 메모리(3020)로부터 APU(2901)로의 데이터 전송은, 도 18에서 도시된 상태도와 관련하여 이상에서 논의된 것처럼 DLS를 이용하여 일어난다. 이와 관련된 DLS의 사용은 (점선 화살표에 의해 표시된) 데이터 흐름을 도시하는 도 33에 도시되어 있다. 동기화된 기록 동작들이 인터페이스(2915)에 의해 DRAM(2910)으로 수행되고, 동기화된 판독 동작들이 로컬 메모리(2981) 내의 저장을 위해 데이터를 DRAM(2910)으로부터 판독하기 위해 APU(2901)에 의해 수행된다. 도 17b 내지 17d와 관련하여 기술된 것처럼, DRAM(2910)에 의한 각각의 동기화된 기록 동작들 및 동기화된 판독 동작들의 처리는, (F/E 비트의 값들, APU ID 및 관련된 상태 정보의 LS 주소 필드들에 의해 표현되는 것처럼) 공유 메모리의 비워진 상태, 블로킹 상태 및 채워진 상태에 의해 결정된다. 그러므로 예를 들어, PU가 처음에 APU에 의한 사용을 위해 데이터를 DRAM으로 전송할 필요 없이, 효율적인 방식 즉, 낮은 오버헤드(overhead)로 데이터를 외부 장치로부터 APU의 로컬 메모리로 전송하는 것이 가능하다. 바꿔 말하면, PU에 의해 수행되는 I/O 처리는 확고하고 동기화된 방식으로 APU에 의한 실행을 위해 아키텍쳐로 움직인다. 이것은, 복수의 스트리밍 어플리케이션에서의 APU가 외부 메모리의 복수의 버퍼들로부터 데이터를 빠르게 검색하고 동작하게 한다.
동기화된 판독 동작들, 즉 DRAM(2910)으로부터 외부 메모리(3020)와 같은 외부 장치로의 전송들은, 이상에서 논의된 것과 유사한 방식으로 가능하다. 이것은 도 31 및 32의 순서도와 관련하여, 도 34에 도시되어 있다. 예를 들어, 단계 3115에서, PU(2905)는 외부 메모리(3020) 내의 저장을 위한 데이터의 전송을 필요로 하는 애퓰릿의 APU(2901)에 의한 실행을 개시한다. APU(2901)는, 동기화된 판독 동작 즉, DRAM(2910)으로부터 외부 메모리(3020)인 외부 장치로의 데이터의 전송을 위한 요청을 채널 0을 경유하여 인터페이스(2915)로 제공한다. 이러한 요청은 앞에서 기술된 DMA 명령의 형태와 유사하다. 이러한 요청은, 예를 들어 외부 장치(여기서, 외부 메모리(3020))의 식별, 사용을 위한 외부 장치의 부분(여기서, 외부 메모리(3020) 내의 데이터에 대한 위치), 전송될 분량, DRAM(2910) 내의 대응하는 주소들, 및 외부 장치 동작이 판독 또는 기록 동작(여기서, DRAM(2910)으로부터의 동기화된 판독 동작)인지 여부를 포함한다.
이와 관련된 DLS의 사용은 인터페이스(2915)가 데이터를 DRAM(2910)으로부터 동기화된 방식으로 판독하는 것을 허용하고 APU(2901)는 DRAM(2910)으로의 기록들을 수행한다. 이것은, 점선 화살표에 의해 표시된 것처럼 APU(2901)의 로컬 메모리(2981)로부터 외부 장치로의 데이터 흐름이 있는 도 34에 나타나 있다. 이와 관련하여, DLS의 다양한 상태들이, F/E 비트의 값 및 인터페이스(2915)가 데이터를 판독하려고 하는지 여부에 의해 나타난다. 그러한 것으로서, DRAM(2915)의 관련된 메모리 위치에 대한 이상에서 기술된 상태 정보는 도 35에 도시된 것처럼 변형되어 있다. 상태 정보는, 이상에서 기술된 F/E 비트(3501), 장치 ID(3502), 및 데이터가 전송되어야 하는 주소(3503)를 포함한다. 장치 ID(3502)는, APU, 또는 인터페이스와 같은 또 다른 장치와 같은 장치의 유형을 식별한다. 이와 관련하여, 인터페이스(2915)는 보호 테이블을 가진 DMA형 제어기를 이미 포함하기 때문에, 주소 필드가 필요하지 않다. 즉, 동기화된 판독 동작이 허용될 때, (장치 ID(3502)에 의해 식별된 대로) DRAM(2910)은 통지를 인터페이스(2915)로 보내야 한다.
이상에서 언급된 것처럼, 도 30에 의해 도시된 배열는 단지 예시적이고, 다른 유형들의 외부 장치들로 쉽게 확장될 수 있다. 예를 들어, 도 36을 고려하자. 도 36은 도 30과 유사하다. 동일한 도면부호들은 유사한 구성요소들을 나타내는데, 상기 구성요소들은 여기서 더 이상 기술되지 않는다. 도 36에서, 외부 장치는 물리적 수신기(PHY; physical receiver; 3620)에 의해 표시된다. 후자는 경로(3621)를 경유하여 이더넷과 같은 네트워크(도시되지 않음)로부터 패킷 통신들을 수신하고, 한 스트림의 패킷들을 제공하기 위해 수신된 비트 스트림의 디코딩(decoding)을 수행한다. 이러한 실시예에서, APU(2901)에 의해 수행되는 애퓰릿은 수신된 패킷 스 트림의 링크 계층 처리를 나타낸다. 즉, APU(2901)는 데이터를 PHY(3620)로부터 처리하기 위해 이상에서 기술된 DLS 메커니즘을 이용하여, (예를 들어 TCP/IP와 같은 프로토콜 스택과 같은) 프로토콜 스택의 일부에 대한 처리를 수행한다.
도 36을 계속해서 참조하고 도 37을 살펴보면, 예시적인 핸드셰이킹 순서가 외부 장치와의 데이터 레벨 동기화의 사용을 도시한다. 도 37에서, (DRAM(2910)과 같은) 공유 메모리의 각각의 부분들이 빈 상태에서 시작한다고 가정하자. 처음에, (APU(2901)와 같은) APU는, 동기화된 기록 동작을 외부 장치로부터 공유 메모리의 식별된 부분들로 요청하는 명령을, 요청 채널을 경유하여 (인터페이스(2915)와 같은) 인터페이스로 보낸다. 보호 테이블이 패스 인터페이스(2915)를 검사한다고 가정하면, 외부 장치와의 전송이 시작된다. 당분간, APU는 공유 메모리의 이러한 부분들로부터 동기화된 판독 동작을 수행하려고 한다. 어떤 데이터도 인터페이스에 의해 기록되지 않았기 때문에, 공유 메모리의 각각의 부분들은 블로킹 상태에 진입한다. 이러한 상태에서, 앞에서 언급된 것처럼, APU에 대한 로컬 메모리의 주소는 공유 메모리의 이러한 부분들에 대한 관련된 상태 정보 필드들 내에 저장된다. 그 다음에, 인터페이스가 공유 메모리의 식별된 부분들로의 동기화된 기록 동작을 수행한 이후에, 동기화된 기록 동작은 저장된 주소 값들에 의해 표현된 주소들로 APU에 대해 실행된다. 결과적으로 공유 메모리의 이러한 부분들은 빈 상태로 되돌아 간다. 다른 변경들을 위한 (도 18에 도시된 것과 같은) 상태들의 변화를 나타내는 유사한 핸드셰이킹 순서들은 용이하며 여기서 기술되지 않는다.
하나 이상의 APU들로부터의 요청들은 인터페이스에 의한 각각의 요청의 완료 를 기다릴 필요가 없다. 예를 들어, APU는 데이터에 대한 복수의 요청들을 하나 이상의 외부 장치들로부터 인터페이스로 배포할 수 있다. DLS의 사용은, 동기화된 판독 동작이 (인터페이스를 경유하여) APU 또는 외부 장치로부터 생겨날 때까지 데이터가 공유 메모리 내에 보존될 것이라는 것을 보증한다. DLS의 사용은, 버스트 전송들 및 파이프라인형 버스트 전송들이 APU 및 하나 이상의 외부 장치들 사이에서 실행되게 한다.
도 36에 도시된 장치를 예시적으로 이용한 본 발명의 또 다른 응용예가 도 38에 도시되어 있다. APU(2901)는 인터페이스(2915)를 경유하여 다수의 외부 장치들로 접속한다. 이러한 외부 장치들은: USB(universal serial bus) 장치, (통상 "파이어와이어(firewire)"라고 칭해지는) IEEE 1394 장치, 직렬 장치, 하드 디스크, (예를 들어, 네트워크 송수신기와 같은) 네트워크 장치 및 광 디스크이다. 다른 외부 장치들(도시되지 않음)은 I/O 프로세서 또는 그래픽 프로세서와 같은 프로세서들을 포함한다. APU(2901)는 이러한 외부 장치들로부터 데이터를 판독하기 위한 요청들(4301)을 보낸다. 각각의 장치는, 인터페이스(2915)의 제어를 거쳐 (각각이 F/E 비트에 의해 표현되는 관련된 상태 정보를 포함하는 것으로 도시되는) 메모리 위치들(4311, 4312, 4313, 4314, 4315 및 4316)에 의해 표현된 것처럼 DRAM(2910)의 할당된 메모리 위치들로의 동기화된 기록 동작을 수행한다. APU(2901)는 동기화된 판독 동작들을 수행함으로써 버스(2906)를 경유하여 데이터를 DRAM(2910)으로부터 검색한다.
도 39는 본 발명의 또 다른 실시형태를 도시한다. 도 39에서는, 단순한 스트 리밍 배열(3700)이 도시된다. 배열(3700)은 PE(3790), DRAM( 또는 공유 메모리; 3710), 인터페이스 장치(인터페이스; 3715) 및 물리적 송수신기(PHY; 3720)에 의해 표현되는 외부 장치를 포함한다. 외부 장치(3720)는 또한 인터페이스(3715)에 통합될 수 있다. PE(3790)는 하나 이상의 처리 요소들로 표현되고, 적어도 하나의 PU(3705), 및 APU들(3701, 3702 및 3703)에 의해 표현되는 하나 이상의 APU들을 포함한다. PE(3790)는 버스(3706)를 경유하여 공유 메모리에 결합하고, 데이터를 DRAM(3710)에 대해 기록하고 판독하기 위해 앞에서 기술된 DLS 및 메모리 보호 메커니즘들을 사용한다. 본 발명에 따르면, DLS 메커니즘이 외부 장치들과 함께 사용되기 위해 확장된다. 도 39로부터 알 수 있듯이, APU들은 버스(3707)를 경유하여 인터페이스(3715)에 결합된다. 특히, 각각의 APU는, 버스(3707)를 경유하여 인터페이스(3715)에 대해 요청들을 통과시키는 것 및/또는 응답들을 수신하는 것 및/또는 데이터를 전달하는 것을 위해 관련된 하나 이상의 채널들을 가진다. 이것은, 채널 0(입력; 3730) 및 채널 1(출력; 3735)에 의해 APU(3701)에 대해 도 39에서 도시된다. 예시적으로, 요소들(3730 및 3735) 모두가 하나 이상의 FIFO 버퍼들이다. 다른 APU들과 관련하여, 버스(3707)를 거쳐 전달되는 다른 APU들의 입력 및 출력 채널들은 도 39에서 점선 화살표들에 의해 표현된다.
인터페이스(3715)는, APU(3701) 및 PHY(3720) 사이의 각각의 입력 및 출력 데이터 스트림들을 연결하는 채널 인터페이스 요소들(3745 및 3750)을 포함한다. 채널 인터페이스 요소는, 예시적으로 (a) 경로들(3707 및 3716)을 경유하고 경로(3721)를 통하여 송신하기 위한, APU(3701)의 출력 채널로부터 제공된 데이터를 엔코딩하고; (b) 경로들(3716 및 3707)을 경유하고 디코딩된 데이터를 APU(3701)의 입력 채널로 제공하기 위해 경로(3721)로부터 수신된 데이터를 디코딩하기 위한 송수신기이다. 경로(3721)는, 외부 장치(3720)를 예를 들어 패킷 네트워크 연결부분, 스위치 네트워크 연결부분, 직렬 버스, 병렬 버스 등에 연결하기 위한 하나 이상의 통신 경로들로 나타난다.
위에서 언급된 것처럼, 인터페이스(3715)는 채널 인터페이스 요소(3745 및 3750)를 포함한다. 채널 인터페이스 요소(3745)는 APU(3701)로부터 출력 채널을 수신한다. 본 발명에 따르면, 출력 채널은 제어 채널 및 데이터 채널을 포함한다. 제어 채널은 상술된 요청 및 응답 채널들을 전달하며, 데이터 채널은 외부 장치로 제공될 데이터를 전달한다. 이러한 실시예에서, 요청 채널은, 예를 들어 외부 장치 식별(여기서 PHY(3720)) 및 수행될 동작(여기서, 기록 동작)을 포함하는 명령 정보를 전달한다. 출력 채널의 데이터 채널 부분은, 경로(3721)를 경유하는 송신을 위한 PHY(3720)에 의해 엔코딩될 데이터를 표현한다. 유사하게, 채널 인터페이스 요소(3745)는 APU(3701)의 입력 채널에 연결된다. 입력 채널은 제어 채널 및 데이터 채널을 포함한다. 제어 채널은 상술된 요청 및 응답 채널들을 전달하고, 데이터 채널은 APU로 제공될 데이터를 전달한다. 이러한 실시예에서, 요청 채널은, 예를 들어 외부 장치 식별(여기서 PHY(3720)) 및 수행될 동작(여기서 판독 동작)을 포함하는 명령 정보를 전달한다. 입력 채널의 데이터 채널 부분은 경로(3721)로부터 수신된 신호들의 수신결과로서 PHY(3720)에 의해 디코딩된 데이터를 나타낸다.
이러한 예시적 실시형태에서 보호 테이블은 인터페이스(3715) 내에서 필요하 지 않다. 특히, 이하에서 기술된 것처럼, 각각의 APU는, 도 18에서 도시된 바와 같이, 앞에서 기술된 DLS 및 메모리 보호 메커니즘들에 따라, 데이터를 DRAM(3710)에 대해 판독하거나 기록한다.
도 39를 계속해서 참조하면, 데이터를 외부 장치로부터 APU(2901)의 로컬 메모리(도시되지 않음)로 전송하는 데에 사용하기 위한 예시적 방법이 도 40에 도시되어 있다. 이러한 방법은, 도 24의 상술된 순서도가 PU에 의한 보호 테이블 값들의 할당, 애퓰릿의 예를 들면 APU(3701)에 대한 할당 등에 관하여 수행된다는 것을 가정한다. 이러한 실시예에서, APU(3701)에 의해서 실행되는 애퓰릿은 예시적으로 수신된 패킷 스트림 및 송신된 패킷 스트림의 링크 계층 처리를 나타낸다. 즉, APU(2901)는, 상술된 DLS 메커니즘을 이용하여 (예를 들면 TCP/IP와 같은) 프로토콜 스택의 일부분에 대한 처리를 수행한다.
도 40의 단계 3830을 살펴보면, APU(3701)는 PHY(3720)에 대한 데이터의 전송을 위한 요청을, 버스(3707)를 경유하여 인터페이스(3715)로 제공한다. 이 실시예에서, 이러한 요청은, 입력 채널 및 출력 채널 모두의 명령 부분들을 경유하여 일어난다. 그러나 입력 채널 및 출력 채널 모두의 사용이 필요하지는 않다는 것을 주목하자. 이러한 요청은, 예를 들어 외부 장치(여기서, PHY(3720))의 식별을 포함하고, (예를 들어 특정 포트와 같은) 사용하는 외부 장치의 부분 및 외부 장치 동작(입력 채널에 대한 외부 장치로부터의 판독 및 출력 채널에 대한 외부 장치로의 기록)의 유형을 또한 포함할 수 있다. 장치, 사용하는 장치의 부분 등과 같은 외부 장치 정보가 예를 들어 애퓰릿 관련 정보 내에 제공된다는 것을 가정하자. 외부 장 치 파라미터들의 다른 유형들은, 장치 및 포트 넘버, 가상 채널 식별자들 등을 포함하며, 이에 제한되지 않고 사용될 수 있다.
단계 3805에서, 인터페이스(3715)는 요청을 수신하고 PHY(3720)에 대한 전송을 설정한다. 특정 핸드셰이킹이 PHY(3720)에 대해 필요한 정도로, 이것은 인터페이스(3715)에 의해 수행되고 APU(3701)에 대해 투명한 것으로 가정한다. 단계 3710에서, 인터페이스(3715)는 전송을 시작하고 PHY(3720)으로부터의 데이터 전송을 종료될 때까지 계속한다(단계 3815). 먼 말단점(도시되지 않음)으로의 연결부분이 부서질 때까지, 이러한 데이터 전송이 계속될 수 있다. PHY(3720)에 대한 데이터 전송의 이러한 부분은 외부 장치의 유형의 기능으로서 동기식 또는 비동기식으로 일어날 수 있다. 데이터는, 예를 들면 요소(3735)의 FIFO의 일부분으로 입력 채널의 데이터 채널 부분 내에서 전송된다. 전송이 완료될 때, 단계 3820에서, 인터페이스(3715)는 입력 및 출력 채널들의 명령 부분들의 응답 채널들을 경유하여 전송 완료 메시지를 보낸다.
본 발명에 따르면, 외부 장치(3720)에 대한 APU(3701)에 의한 데이터의 전송은, 도 18과 관련된 상태도에 대하여 기술된 DLS를 이용하여 일어난다. 이와 관련된 DLS의 사용은 도 41에 도시되어 있다. APU와 외부 장치 사이의 데이터 흐름은 점선 화살표에 의해 나타난다. 도 41로부터 알 수 있듯이, APU(3701)는, 데이터를 버스(3707)에 의해 전달되는 입력 채널을 경유하여 이상에서 기술된 로컬 메모리 내로 직접 수신한다. 유사하게, APU(3701)는 데이터를 버스(3707)에 의해 전달되는 출력 채널을 경유하여 로컬 메모리로부터 직접 제공한다. 이것은 빠르고 낮은 오버 헤드(overhead) 통신 채널을 일으킨다. 예를 들어, PHY(3720)를 경유하여 전송될 데이터는 초기에 DRAM(3710) 내에 저장될 수 있다. APU(3701)는, 도 41의 대응하는 점선 화살표에 의해 도시된 것처럼 동기화된 판독 동작들을 경유하고 DLS를 이용하여 DRAM(3710)으로부터 이러한 데이터를 추출한다. 그 다음에 APU(3701)는 링크 계층 애퓰릿에 따라 이러한 데이터를 처리하고, 한 스트림의 포맷된 패킷들과 같은 처리된 데이터를 송신에 대한 엔코딩을 위하여 (인터페이스(3715)를 경유하여) PHY(3720)로 제공한다. 유사한 방식으로, PHY(3720)에 의해 수신된 데이터는, APU(3701)에 의해 처리하기 위한 로컬 메모리(3781) 내에 저장하기 위한 입력 채널을 경유하여 APU(3701)로 디코딩되고 제공된다. APU(3701)는, 헤더 제거, 오류 검사와 같은 링크 계층 애퓰릿에 따라 데이터를 처리하고, 도 41의 대응하는 점선 화살표에 의해 묘사된 것처럼 동기화된 기록 동작들을 경유하고 DLS를 이용하여 처리된 데이터를 DRAM(3710)으로 제공한다.
도 42는, 도 39와 관련하여 도시되고 이상에서 기술된 간단한 스트리밍 배열의 변형예를 도시한다. 이러한 실시형태는 도 39에 도시된 것과 유사한 방식으로 동작하기 때문에, 도 42의 모두를 상세하게 기술하지 않는다. 도 42의 배열(4000)은, PE(4090), DRAM( 또는 공유 메모리; 4010), 인터페이스(4015), 및 물리적 송수신기(PHY; 4020) 및 물리적 송수신기(PHY; 4080)에 의해 표현되는 외부 장치를 포함한다. 도 42에서 볼 수 있듯이, 인터페이스(4015)는 외부 장치들(4020 및 4080)과 예시적으로 통합되어 있다. PE(4090)는 하나 이상의 처리 요소들로 나타나고, 적어도 하나의 PU(4005) 및 APU들(4001, 4002 및 4003)에 의해 표현된 것과 같은 하나 이상의 APU들을 포함한다. PE(4090)는 버스(4006)를 경유하여 공유 메모리에 연결되고 DRAM(4010)에 대하여 데이터를 기록하고 판독하기 위해 앞에서 기술된 DLS 및 메모리 보호 메커니즘들을 이용한다. 도 42로부터 볼 수 있듯이, APU들은 버스(4007)를 경유하여 인터페이스(4015)에 연결된다. 특히, 각각의 APU는, 버스(4007)를 경유하여 인터페이스(4015)에 대한 요청들을 통과시키고, 그리고/또는 응답들을 수신하고, 그리고/또는 데이터를 인터페이스(4015)와 버스(4007)를 경유하여 통신하기 위한 하나 이상의 채널들과 관련되어 있다. 이러한 요소들 모두 예시적으로 하나 이상의 FIFO(first-in-first-out) 버퍼들이다. 버스(4007)을 통해 전달되는 다른 APU들에 대한 다른 입력 및 출력 채널들은 도 42의 점선 화살표들에 의해 나타난다.
인터페이스(4015)는, 각각이 2개의 채널 인터페이스 요소들(4031 및 4032, 및 4036 및 4037)을 포함하는 요소들(4030 및 4035)을 각각 포함한다. (이것들은 도 39에 기술된 유형이다.) 이러한 요소들은 데이터 스트림들을 각각의 외부 장치들에 연결한다(여기서, 4020 및 4080). 외부 장치들은, 예시적으로 각각의 경로들(4021 및 4081)에 대해 데이터를 전달하기 위한 송수신기들이다. 외부 장치들(4020 및/또는 4080)은 예를 들어 하드 디스크 또는 광 디스크와 같은 메모리들, I/O 프로세서 또는 그래픽 프로세서와 같은 프로세서들, 및 (네트워크 송수신기들과 같은) 송수신기들을 포함할 수 있다.
언급된 것처럼, 이러한 실시예에서, APU(4001)는, 각각이 명령 정보 및 데이터를 전달하기 위한 상술된 입력 및 출력 채널을 포함하는 2개의 입력/출력 채널 들(4050 및 4055)에 접근한다. 위에서 기술된 것과 유사한 방식으로, APU(4001)는 데이터를 외부 장치들(4020 및 4080) 사이에서 변환하기 위한 애퓰릿을 실행한다. APU(4001)는 복수의 입력/출력 채널들에 접근하기 때문에, APU(4001)가 DRAM(4010)에 접근하는 것은 필요하지 않다. 도 42에 도시된 변형예는, 데이터를 외부 장치들 사이에서 변환하기 위한 효율적이며 고속인 배열을 제공한다.
위에서 기술된 것은 본 발명의 원리들을 도시한 것에 지나지 않으며, 당업자라면, 명확하지는 않더라도 본 발명의 원리들을 실시하고 본 발명의 사상 이내에 있는 많은 선택적인 배열들을 고안할 수 있을 것이다. 예를 들어, 본 발명이 데이터 레벨 동기화를 수행하는 입력/출력 인터페이스와 관련하여 기술되었을 지라도, 인터페이스가 입력 및 출력 모두를 수행하거나 각각의 유형 중 하나만이라는 것, 예를 들면 인터페이스가 입력 장치만이거나 출력 장치만이거나 통상의 입력/출력 구조로 기능을 하는 입력 장치들 및 출력 장치들의 조합일 수 있다.

Claims (33)

  1. 데이터를 외부 장치로 전달하고 상기 외부 장치로부터 전달받도록 동작가능한 인터페이스 장치; 및
    각각이 상기 데이터를 저장하도록 동작가능한 복수의 메모리 위치들을 가지는 메모리를 포함하는 장치로서,
    상기 인터페이스(interface) 장치 및 상기 메모리 중 적어도 하나는 각각의 상기 메모리 위치들과 관련된 상태 정보를 저장하도록 동작가능하며, 상기 상태 정보는 제 1 필드(field) 및 주소 필드를 포함하고, 주어진 메모리 위치에 대하여, 상기 관련된 상태 정보의 제 1 필드의 값이 제 1 상태 값과 같고 상기 관련된 상태 정보의 주소 필드의 값이 예정된 주소 값과 같을 때, 상기 메모리 위치로의 기록 동작이 이루어지고, 상기 기록 동작이 종료될 때, 상기 메모리 위치 내에 새롭게 저장된 데이터가 상기 예정된 주소 값에 의해 표현된 주소에 기록되게 하는 것을 특징으로 하는 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 제 1 항에 있어서, 상기 제 1 상태 값은 대응하는 메모리 위치가 무효임을 의미하고, 제 2 상태 값은 대응하는 메모리 위치가 유효임을 의미하는 것을 특징으로 하는 장치.
  29. 제 28 항에 있어서, 데이터 접근을 위해 상기 메모리에 결합된 프로세서를 더 포함하고,
    상기 프로세서가 판독 동작과 관련된 요청을 주어진 메모리 위치로부터 또 다른 메모리로 배포하고 상기 관련된 상태 정보의 상기 제 1 필드의 값이 상기 제 2 상태 값과 같을 때, 상기 메모리 위치 내에 새롭게 저장된 데이터는, 상기 제 1 필드의 값의 제 1 상태 값으로의 전향(turning)과 동기화되어 상기 다른 메모리 내의 예정된 주소 값에 의해 표현된 주소로 기록되는 것을 특징으로 하는 장치.
  30. 제 28 항에 있어서,
    주어진 메모리 위치 내에 저장된 데이터가 상기 외부 장치로 전송되도록 요청되고 상기 관련된 상태 정보의 필드의 값이 제 2 상태 값과 같을 때, 상기 메모리 위치 내에 새롭게 저장된 데이터는, 상기 제 1 필드의 값의 상기 제 1 상태 값으로의 전향과 동기화되어 상기 외부 장치 내의 예정된 주소 값에 의해 표현된 주소로 전송되는 것을 특징으로 하는 장치.
  31. 제 1 항, 제 28 항, 제 29 항 또는 제 30 항 중 어느 한 항에 있어서,
    상기 인터페이스 장치는, 직접 메모리 접근(DMA; direct memory access) 전송을 이용하여 데이터를 상기 외부 장치 및 상기 메모리 사이에서 전달하는 것을 특징으로 하는 장치.
  32. 데이터를 외부 장치로 전달하고 상기 외부 장치로부터 전달받도록 동작가능한 인터페이스 장치; 및
    각각이 데이터를 저장하도록 동작가능한 복수의 메모리 위치들을 가지는 메모리를 포함하는 시스템으로서,
    상기 인터페이스 장치 및 상기 메모리 중 적어도 하나는 상기 메모리 위치들 중 각각의 위치들과 관련된 상태 정보를 저장하도록 동작가능하고, 상기 상태 정보는 제 1 필드 및 주소 필드를 포함하며, 주어진 메모리 위치에 대하여, 상기 관련된 상태 정보의 제 1 필드의 값이 제 1 상태 값과 같고 상기 관련된 상태 정보의 주소 필드의 값이 예정된 주소 값과 같을 때, 상기 메모리 위치로의 기록 동작은, 상기 기록 동작이 종료될 때, 상기 메모리 위치 내에 새롭게 저장된 데이터가 상기 예정된 주소 값에 의해 표현된 주소로 기록되는 것을 특징으로 하는 시스템.
  33. 데이터를, 각각이 데이터를 저장하도록 동작가능한 복수의 메모리 위치들을 가지는 메모리 및 외부 장치 사이에서, 인터페이스 장치를 경유하여 전송하기 위한 방법으로서,
    상기 인터페이스 장치 및 상기 메모리 중 적어도 하나는 상기 메모리 위치들 중 각각의 위치들과 관련된 상태 정보를 저장하도록 동작가능하고, 상기 상태 정보는 제 1 필드 및 주소 필드를 포함하며,
    상기 메모리 위치로의 제 1 기록 동작을 수행하는 단계; 및
    상기 관련된 상태 정보의 제 1 필드의 값이 제 1 상태 정보와 같고 상기 관련된 상태 정보의 주소 필드의 값이 상기 제 1 기록 동작에 의해 일어나는 주어진 메모리 위치에 대한 예정된 주소 값과 같을 때, 제 2 기록 동작은, 상기 제 1 기록 동작이 종료될 때, 상기 제 1 기록 동작에서 상기 메모리 위치 내에 새롭게 저장된 데이터를, 예정된 주소 값에 의해 표현된 주소에 기록하며, 상기 제 2 기록 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020077007209A 2004-10-05 2005-10-05 광대역 네트워크들을 위한 컴퓨터 아키텍쳐에서의 외부데이터 인터페이스 KR100939398B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/959,635 US7231500B2 (en) 2001-03-22 2004-10-05 External data interface in a computer architecture for broadband networks
US10/959,635 2004-10-05

Publications (2)

Publication Number Publication Date
KR20070064432A KR20070064432A (ko) 2007-06-20
KR100939398B1 true KR100939398B1 (ko) 2010-01-28

Family

ID=35781458

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077007209A KR100939398B1 (ko) 2004-10-05 2005-10-05 광대역 네트워크들을 위한 컴퓨터 아키텍쳐에서의 외부데이터 인터페이스

Country Status (9)

Country Link
US (1) US7231500B2 (ko)
EP (1) EP1805626B1 (ko)
JP (1) JP4768386B2 (ko)
KR (1) KR100939398B1 (ko)
CN (1) CN101040268B (ko)
AT (1) ATE437403T1 (ko)
DE (1) DE602005015607D1 (ko)
TW (1) TWI317886B (ko)
WO (1) WO2006038717A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776364A (zh) * 2012-10-22 2017-05-31 英特尔公司 高性能互连物理层

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225301B2 (en) * 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US20050086040A1 (en) * 2003-10-02 2005-04-21 Curtis Davis System incorporating physics processing unit
US7895411B2 (en) * 2003-10-02 2011-02-22 Nvidia Corporation Physics processing unit
US7739479B2 (en) * 2003-10-02 2010-06-15 Nvidia Corporation Method for providing physics simulation data
US20050251644A1 (en) * 2004-05-06 2005-11-10 Monier Maher Physics processing unit instruction set architecture
US20070263514A1 (en) * 2004-08-30 2007-11-15 Yoshiaki Iwata Recorder
JPWO2006025255A1 (ja) * 2004-08-30 2008-05-08 松下電器産業株式会社 多人数参加型アプリケーションを実行するクライアント端末装置、グループ形成方法及びグループ形成プログラム
JP2007334379A (ja) 2004-10-05 2007-12-27 Matsushita Electric Ind Co Ltd 処理装置
US7650266B2 (en) * 2005-05-09 2010-01-19 Nvidia Corporation Method of simulating deformable object using geometrically motivated model
JP4536618B2 (ja) * 2005-08-02 2010-09-01 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
US7627744B2 (en) * 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US8316441B2 (en) * 2007-11-14 2012-11-20 Lockheed Martin Corporation System for protecting information
KR101425621B1 (ko) * 2008-01-15 2014-07-31 삼성전자주식회사 컨텐츠를 안전하게 공유하는 방법 및 시스템
KR101642833B1 (ko) * 2010-02-05 2016-07-26 삼성전자주식회사 클럭 임베디드 인터페이스 방법, 그 방법을 이용하는 송수신기 및 디스플레이 장치
KR101984635B1 (ko) 2012-07-19 2019-05-31 삼성전자주식회사 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법
CN103116566A (zh) * 2013-01-17 2013-05-22 东南大学 一种利用邮件收发箱实现双核之间通信的装置
CN109343986B (zh) * 2018-08-17 2020-12-22 华为技术有限公司 处理内存故障的方法与计算机***
DE102018124106A1 (de) * 2018-09-28 2020-04-02 Rockwell Collins Deutschland Gmbh Datenverarbeitungsvorrichtung mit mehreren Prozessoren und mehreren Schnittstellen
JPWO2022054283A1 (ko) * 2020-09-14 2022-03-17

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3576544A (en) 1968-10-18 1971-04-27 Ibm Storage protection system
US4037214A (en) * 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
JPS5412643A (en) 1977-06-30 1979-01-30 Hitachi Ltd Main memory protective device
JPS54146555A (en) 1978-05-09 1979-11-15 Nec Corp Data transfer system between processors
US4314349A (en) * 1979-12-31 1982-02-02 Goodyear Aerospace Corporation Processing element for parallel array processors
US4332009A (en) * 1980-01-21 1982-05-25 Mostek Corporation Memory protection system
JPS5812613B2 (ja) 1980-02-08 1983-03-09 工業技術院長 並列デ−タ処理装置
JPS5835295B2 (ja) 1980-03-03 1983-08-02 オムロン株式会社 マスタ・スレ−ブ・システムにおけるデ−タ転送方式
US4430705A (en) * 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
JPS576952A (en) 1980-06-16 1982-01-13 Nippon Telegr & Teleph Corp <Ntt> Storage protecting system
JPS57176456A (en) 1981-04-22 1982-10-29 Fanuc Ltd Data processing system
DE3171379D1 (en) * 1981-04-28 1985-08-22 Ibm Bus arrangement for interconnectiong circuit chips
AU542447B2 (en) * 1982-02-27 1985-02-21 Fujitsu Limited System for controlling key storage unit
JPS5958700A (ja) * 1982-09-29 1984-04-04 Fujitsu Ltd 記憶保護判定方式
US4545016A (en) * 1983-01-07 1985-10-01 Tandy Corporation Memory management system
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
US5159700A (en) 1984-01-16 1992-10-27 Texas Instruments Incorporated Substrate with optical communication systems between chips mounted thereon and monolithic integration of optical I/O on silicon substrates
JPS61180352A (ja) 1984-12-30 1986-08-13 Fujitsu Ltd プログラムダウンロ−ド方式
US4732446A (en) * 1985-10-02 1988-03-22 Lamar Gipson Electrical circuit and optical data buss
AU571377B2 (en) * 1985-11-13 1988-04-14 Fujitsu Limited Main storage access control system
JPS6319058A (ja) 1986-07-11 1988-01-26 Fujitsu Ltd メモリ装置
JP2960415B2 (ja) * 1987-05-22 1999-10-06 株式会社日立製作所 記憶保護方法および装置
JPS6412364U (ko) 1987-07-11 1989-01-23
JPH0719704Y2 (ja) 1987-07-31 1995-05-10 シャープ株式会社 生産ラインの生産管理装置
US5056000A (en) 1988-06-21 1991-10-08 International Parallel Machines, Inc. Synchronized parallel processing with shared memory
US4939682A (en) * 1988-07-15 1990-07-03 The Boeing Company Integrated electro-optic arithmetic/logic unit and method for making the same
FR2635599B1 (fr) * 1988-08-17 1994-02-18 Finger Ulrich Systeme d'extension de memoire pour au moins un ensemble de traitement de donnees
EP0369052A1 (en) 1988-11-17 1990-05-23 International Business Machines Corporation Data base access system
EP0424618A3 (en) 1989-10-24 1992-11-19 International Business Machines Corporation Input/output system
US5037173A (en) * 1989-11-22 1991-08-06 Texas Instruments Incorporated Optical interconnection network
WO1991010200A1 (en) 1990-01-05 1991-07-11 Maspar Computer Corporation Parallel processor memory system
CA2044689A1 (en) 1990-06-15 1991-12-16 Roger E. Tipley Multilevel inclusion in multilevel cache hierarchies
US5093879A (en) 1990-06-22 1992-03-03 International Business Machines Corporation Electro-optical connectors
US5144691A (en) 1990-07-20 1992-09-01 Cray Research, Inc. Computer signal interconnect apparatus
EP0481735A3 (en) 1990-10-19 1993-01-13 Array Technology Corporation Address protection circuit
US5630162A (en) 1990-11-13 1997-05-13 International Business Machines Corporation Array processor dotted communication network based on H-DOTs
KR940004404B1 (ko) 1990-11-30 1994-05-25 삼성전자 주식회사 불휘발성 반도체 메모리장치
US5131054A (en) 1991-01-09 1992-07-14 Thinking Machines Corporation Character recognition system using massively parallel computer that identifies a query character using degree of similarity with plurality of training characters of known identity
JPH04284754A (ja) 1991-03-14 1992-10-09 Fujitsu Ltd Atm交換装置
US5519875A (en) * 1991-08-08 1996-05-21 Hitachi, Ltd. Distributed processing system for modules, each having modularized objects
US5268973A (en) 1992-01-21 1993-12-07 The University Of Texas System Wafer-scale optical bus
JPH05324589A (ja) 1992-03-25 1993-12-07 Nippon Sheet Glass Co Ltd 並列コンピュータ装置および光結合装置
EP0610583A1 (en) * 1993-02-08 1994-08-17 International Business Machines Corporation Multizone relocation facility computer memory system
US5619671A (en) 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
US5487146A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Plural memory access address generation employing guide table entries forming linked list
US5513337A (en) 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
US5754436A (en) * 1994-12-22 1998-05-19 Texas Instruments Incorporated Adaptive power management processes, circuits and systems
EP0730237A1 (en) 1995-02-28 1996-09-04 Nec Corporation Multi-processor system with virtually addressable communication registers and controlling method thereof
DE19508723A1 (de) 1995-03-10 1996-09-12 Siemens Ag Mehrbenutzerdatenverarbeitungsanlage mit Speicherschutz
US5850534A (en) 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
JP3786993B2 (ja) 1995-12-14 2006-06-21 株式会社日立製作所 データ記憶ユニット及び該ユニットを用いたデータ記憶装置
US6886167B1 (en) * 1995-12-27 2005-04-26 International Business Machines Corporation Method and system for migrating an object between a split status and a merged status
US5729712A (en) 1996-01-26 1998-03-17 Unisys Corporation Smart fill system for multiple cache network
US5940870A (en) 1996-05-21 1999-08-17 Industrial Technology Research Institute Address translation for shared-memory multiprocessor clustering
US5724551A (en) 1996-05-23 1998-03-03 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries include storage keys for controlling accesses to the buffers
US5787309A (en) 1996-05-23 1998-07-28 International Business Machines Corporation Apparatus for protecting storage blocks from being accessed by unwanted I/O programs using I/O program keys and I/O storage keys having M number of bits
US5900019A (en) 1996-05-23 1999-05-04 International Business Machines Corporation Apparatus for protecting memory storage blocks from I/O accesses
AT1751U1 (de) * 1996-09-30 1997-10-27 Kuehn Eva Koordinations-system
JP3421526B2 (ja) 1997-02-14 2003-06-30 モトローラ株式会社 デ−タ処理装置
US6424988B2 (en) * 1997-02-19 2002-07-23 Unisys Corporation Multicomputer system
US6192514B1 (en) * 1997-02-19 2001-02-20 Unisys Corporation Multicomputer system
US6289434B1 (en) 1997-02-28 2001-09-11 Cognigine Corporation Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates
JP3739888B2 (ja) 1997-03-27 2006-01-25 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および方法
US6212605B1 (en) 1997-03-31 2001-04-03 International Business Machines Corporation Eviction override for larx-reserved addresses
JP3490256B2 (ja) 1997-06-12 2004-01-26 三菱電機株式会社 エージェント方式
US5892966A (en) 1997-06-27 1999-04-06 Sun Microsystems, Inc. Processor complex for executing multimedia functions
US6360303B1 (en) * 1997-09-30 2002-03-19 Compaq Computer Corporation Partitioning memory shared by multiple processors of a distributed processing system
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6209065B1 (en) 1997-10-24 2001-03-27 Compaq Computer Corporation Mechanism for optimizing generation of commit-signals in a distributed shared-memory system
US6542926B2 (en) * 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
FR2770665B1 (fr) * 1997-11-06 2002-12-20 Alsthom Cge Alkatel Dispositif d'echange entre unites de traitement d'informations a processeurs interconnectes par un bus commun
US6965974B1 (en) * 1997-11-14 2005-11-15 Agere Systems Inc. Dynamic partitioning of memory banks among multiple agents
US6173389B1 (en) 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6167430A (en) * 1998-05-12 2000-12-26 Unisys Corporation Multicomputer with distributed directory and operating system
US6336187B1 (en) 1998-06-12 2002-01-01 International Business Machines Corp. Storage system with data-dependent security
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US6643708B1 (en) * 1998-10-29 2003-11-04 International Business Machines Corporation Systems, methods and computer program products for chaining Java servlets across networks
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
JP4123621B2 (ja) * 1999-02-16 2008-07-23 株式会社日立製作所 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法
US6480941B1 (en) * 1999-02-23 2002-11-12 International Business Machines Corporation Secure partitioning of shared memory based multiprocessor system
US6647208B1 (en) 1999-03-18 2003-11-11 Massachusetts Institute Of Technology Hybrid electronic/optical switch system
US6477170B1 (en) 1999-05-21 2002-11-05 Advanced Micro Devices, Inc. Method and apparatus for interfacing between systems operating under different clock regimes with interlocking to prevent overwriting of data
EP1065592B1 (en) * 1999-06-25 2008-07-23 Canon Research Centre France S.A. Shared management of data objects in a communication network
US6467012B1 (en) 1999-07-08 2002-10-15 International Business Machines Corporation Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6564328B1 (en) * 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
US6694380B1 (en) * 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6807620B1 (en) 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US6799207B1 (en) * 2000-04-10 2004-09-28 International Business Machines Corporation Method and system for downloading software managed trees in a network processing system
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6865631B2 (en) 2000-12-14 2005-03-08 International Business Machines Corporation Reduction of interrupts in remote procedure calls
US6779049B2 (en) 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6748501B2 (en) 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
JP3673245B2 (ja) * 2002-06-28 2005-07-20 株式会社東芝 情報処理装置および同装置における電源制御方法
JP2004103347A (ja) * 2002-09-09 2004-04-02 Sumitomo Wiring Syst Ltd コネクタ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776364A (zh) * 2012-10-22 2017-05-31 英特尔公司 高性能互连物理层
US10909055B2 (en) 2012-10-22 2021-02-02 Intel Corporation High performance interconnect physical layer

Also Published As

Publication number Publication date
JP4768386B2 (ja) 2011-09-07
EP1805626A2 (en) 2007-07-11
DE602005015607D1 (de) 2009-09-03
EP1805626B1 (en) 2009-07-22
WO2006038717B1 (en) 2007-04-19
TWI317886B (en) 2009-12-01
WO2006038717A2 (en) 2006-04-13
CN101040268B (zh) 2010-10-06
CN101040268A (zh) 2007-09-19
ATE437403T1 (de) 2009-08-15
US20050120187A1 (en) 2005-06-02
TW200634553A (en) 2006-10-01
JP2006107514A (ja) 2006-04-20
US7231500B2 (en) 2007-06-12
KR20070064432A (ko) 2007-06-20
WO2006038717A3 (en) 2007-03-01

Similar Documents

Publication Publication Date Title
KR100939398B1 (ko) 광대역 네트워크들을 위한 컴퓨터 아키텍쳐에서의 외부데이터 인터페이스
US7720982B2 (en) Computer architecture and software cells for broadband networks
US8434091B2 (en) System and method for data synchronization for a computer architecture for broadband networks
US7093104B2 (en) Processing modules for computer architecture for broadband networks
US6809734B2 (en) Resource dedication system and method for a computer architecture for broadband networks
US6826662B2 (en) System and method for data synchronization for a computer architecture for broadband networks
US20060155955A1 (en) SIMD-RISC processor module

Legal Events

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

Payment date: 20130111

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140107

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150105

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161221

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180104

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200107

Year of fee payment: 11