KR20020064285A - 병렬 컴퓨터의 구조 및 그 구조를 이용한 정보처리유닛 - Google Patents

병렬 컴퓨터의 구조 및 그 구조를 이용한 정보처리유닛 Download PDF

Info

Publication number
KR20020064285A
KR20020064285A KR1020027003544A KR20027003544A KR20020064285A KR 20020064285 A KR20020064285 A KR 20020064285A KR 1020027003544 A KR1020027003544 A KR 1020027003544A KR 20027003544 A KR20027003544 A KR 20027003544A KR 20020064285 A KR20020064285 A KR 20020064285A
Authority
KR
South Korea
Prior art keywords
data
memory module
memory
bus
space
Prior art date
Application number
KR1020027003544A
Other languages
English (en)
Other versions
KR100719872B1 (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 KR20020064285A publication Critical patent/KR20020064285A/ko
Application granted granted Critical
Publication of KR100719872B1 publication Critical patent/KR100719872B1/ko

Links

Classifications

    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • 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
    • 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/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

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)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Image Processing (AREA)

Abstract

분산메모리형에 있어서, 현저하게 고속인 병렬처리를 실현할 수 있는 컴퓨터구조를 제공한다. 컴퓨터시스템(10)은 CPU모듈(12)과, 각각이 MPU(36) 및 RAM코어(34)를 보유하는 복수의 메모리모듈(14)과, CPU와 메모리모듈의 접속이나 메모리모듈사이의 접속을 이루는 복수조의 버스(24)를 구비하고, CPU(12)로부터 부여되는 인트스럭션에의해 각 메모리모듈이작동한다. 소정의 관련을 갖는 일련의 데이터에는 공간ID가 부여되며, 각 메모리모듈이 적어도 해당 공간ID, 자기가 관리하는 일련의 데이터 부분에 관한논리어드레스, 일련의 데이터 사이즈를 포함하는 테이블을 관리하며, 또한 수리한 명령에 자기가 관리하는 일련의 데이터의 부분이 관여하고 있는지의 여부를 판단해서 RAM코어에 기억된 데이터에관한 처리를 실행한다.

Description

병렬 컴퓨터의 구조 및 이 구조를 이용한 정보처리유닛{PARALLEL COMPUTER ARCHITECTURE, AND INFORMATION PROCESSING UNIT USING THE ARCHITECTURE}
사회전체의 여러 장소에 컴퓨터가 도입되며, 인터넷을 비롯한 네트워크가 침투한 오늘날에서는 여러곳에서 대규모 데이터가 축적되게 되었다. 이러한 대규모 데이터를 처리하기 위해서는 막대한 계산이 필요하며, 그것을 위해서 병렬처리를 도입하고자 하는 시도는 자연스럽게 이루어지고 있다.
또한, 병렬처리 구조는 「공유메모리형」과 「분산메모리형」으로 크게 구분된다. 전자(「공유메모리형」)는 복수의 프로세서가 1개의 거대한 메모리공간을 공유하는 방식이다. 이 방식에서는 프로세서군과 공유메모리사이의 트래픽이 보틀넥(bottleneck)으로 되므로, 100을 초과하는 프로세서를 이용해서 현실적인 시스템을 구축하는 것은 쉽지 않다. 따라서, 예를 들면 10억개의 유동소수점변수의 평방근을 계산할 때, 단일 CPU에 대한 가속비는 겨우 100배로 된다. 경험적으로는 30배정도가 상한이다.
후자(「분산메모리형」)은 각 프로세서가 각각 로컬 메모리를 가지고, 이들을 결합해서 시스템을 구축한다. 이 방식에서는 수백∼수만 프로세서를 조립한 하드웨어시스템의 설계가 가능하다. 따라서, 상기 10억개의 유동소수점변수의 평방근을 계산할 때의 단일 CPU에 대한 가속비를 수백∼수만배로 하는 것이 가능하다. 그러나, 후자에 있어서도 후술하는 몇개의 과제가 존재한다.
본 출원은 「분산메모리형」에 관한 것이고, 이 방식에 대해서 최초로 다소의 고찰을 행하면서 종래기술과의 비교를 행하는 것으로 한다.
[제1과제:거대배열의 분장(分掌)관리]
「분산메모리형」의 제1과제는 데이터의 분장관리의 과제이다.
거대한 데이터(일반적으로는 배열이므로, 이후, 배열에서 설명한다)는 1개의 프로세서가 소유하는 로컬메모리에 수용할 수 있는 것은 아니고, 필연적으로 복수의 로컬메모리에 분장관리된다. 효율적이며 유연한 분장관리메카니즘을 도입하지 않으면, 프로그램의 개발 및 실행시에 여러가지 장해를 받을 수 있다.
[제2과제:프로세서간 통신의 효율저하]
분산메모리형 시스템의 각 프로세서가 거대배열에 액세스하고자 하면, 자기가 소유하는 로컬메모리상의 배열요소에 대해서는 빠르게 액세스할 수 있지만, 다른 프로세서가 소유하는 배열요소로의 액세스는 프로세서간 통신을 필수로 한다. 이 프로세서간 통신은 로컬메모리와의 통신에 비해, 극단적으로 퍼포먼스가 낮고, 최저라도 100클럭걸린다라고 되어있다. 이 때문에, 소트실시시에는 거대배열전역에 걸친 참조가 실행되며, 프로세서간 통신이 다발적이므로 퍼포먼스가 극단적으로 저하한다.
이 문제에 대하여, 보다 구체적으로 설명한다. 1999년 현재, 퍼스컴은 1개 내지 수개의 CPU를 이용하여, 「공유메모리형」으로서 구성되어 있다. 이 퍼스컴에 사용되는 표준적인 CPU는 메모리버스의 5 내지 6배 정도의 내부클럭으로 동작하고, 그 내부에 자동적인 병렬실행기능이나 파이프라인처리기능이 장착되어 있으며, 대략 1데이터를 1클럭(메모리버스)으로 처리할 수 있다.
「공유메모리형」인 퍼스컴으로 거대배열의 소트처리를 행하는 경우, 1데이터에 대해서 1클럭을 필요로 하고, 이 때문에, 1데이터에 100클럭(메모리버스)을 필요로 하는 「분산메모리형」의 멀티프로세서시스템의 100배의 퍼포먼스를 발휘하는 것도 생각되어진다.
[제3과제:프로그램공급]
「분산메모리형」의 제3과제는 다수의 프로세서에 어떻게 프로그램을 공급하는가라는 문제이다.
상당한 다수의 프로세서에 따로따로 프로그램을 로드하고, 전체를 협조동작시키는 방식(MIMD:Multiple Instruction Stream, Multiple Data Stream)에서는 프로그램의 작성, 컴파일, 분배를 위해 다대한 부하를 필요로 한다.
한편, 다수의 프로세서를 동일한 프로그램으로 동작시키는 방식(SIMD:Single Instruction Stream, Multiple Data Stream)에서는 프로그램의 자유도가 감소하고, 원하는 결과를 초래하는 프로그램을 개발할 수 없는 사태도 생기게 된다.
본 발명은 「분산메모리형」의 상기 제1 내지 제3과제를 해결하는 방법 및컴퓨터구조를 제공한다. 제1「거대배열의 분장관리」의 과제는 배열의 각 요소의 배치(물리어드레스)를 각 프로세서모듈이 통일적인 방법으로 분장관리함으로써 해결할 수 있다. 이 방법에 의해, 가비지수집의 필요성이 없어지고, 배열요소의 삽입·삭제가 수클럭으로 완료하고, SIMD를 실현하는 데에 있어서 빠지지 않는 각 프로세서의 암묵의 (비명시적)처리분담을 할당할 수도 있다. 이 방법은 후술로써 「다공간메모리」라는 개념으로 설명한다.
제2「프로세서간 통신효율의 저하」의 과제는 달성하고자 하는 처리에 따라 각 프로세서사이를 재연결하고, 각 접속경로마다 정해진 종류의 데이터를 정해진 순번으로 일방향으로 연속 전송함으로써, 버스의 능력을 100%가까이 까지 사용할 수 있도록 통신을 스케줄화하고, 동시에 거대파이프라인처리를 실현함으로써 해결할 수 있다.
이 유효성을 실증하기 위해, 나중에 현실적인 시스템설계로, 10억행 소트를 1초정도로 완료하는 시스템의 구성방법을 예시한다. 이것은 기존의 최고속 장치에 비해, 1만배이상 고속이다. 이 방법은 나중에 「재구성버스」기술로서 설명된다.
제3「프로그램공급」의 과제는 SIMD방식을 채용함으로써 해결할 수 있다. SIMD의 경우는 각 프로세서의 암묵의 (비명시적) 처리분담을 어떻게 결정하는가가 최대의 문제이지만, 전술한 「다공간메모리」기술로 이 처리분담을 자동적으로 결정할 수 있으며, SIMD로서도 프로그램의 자유도를 유지할 수 있다.
즉, 본 발명은 분산메모리형에 있어서, 단일명령에 의해 여러가지 메모리에 기억된 배열중의 요소를 입출력하고, 현저하게 고속인 병렬처리를 실현가능한 컴퓨터구조를 제공하는 것을 목적으로 한다.
본 발명은 SIMD(Single Instruction Stream, Multiple Data Stream)를 실현할 수 있는 병렬 컴퓨터의 구조에 관한 것으로, 보다 상세하게는 적절하며 고속의 메모리제어에 의해 범용적인 병렬연산이 가능한 컴퓨터구조에 관한 것이다.
도 1은 본 발명의 실시형태에 따른 컴퓨터시스템의 구성을 나타낸 블록다이어그램이다.
도 2는 본 실시형태에 따른 메모리모듈의 개략을 나타낸 블록다이그램이다.
도 3은 단일메모리공간에 있어서의 일련의 데이터의 배치를 나타낸 도이다.
도 4는 본 발명에 따른 다공간메모리에 있어서의 일련의 데이터배치를 나타낸 도이다.
도 5는 본 실시형태에 있어서의 어드레스리매핑을 설명하기 위한 도이다.
도 6은 본 실시형태에 있어서의 값수식을 설명하기 위한 도이다.
도 7은 본 실시형태에 따른 메모리모듈사이의 파이프라인처리의 개략을 나타낸 도이다.
도 8은 본 실시형태에 따른 다공간메모리하에서의 메모리모듈(14)의 구조를 설명하기 위한 도이다.
도 9는 다공간메모리하에서의 메모리모듈(14)의 구조를 설명하기 위한 도이다.
도 10은 다공간메모리하에서의 메모리모듈(14)의 구조를 설명하기 위한 도이다.
도 11은 어느 공간ID중의 소정의 범위의 요소를 삭제한다라는 명령을 수리한 각 메모리모듈로 실행되는 처리를 나타낸 플로챠트이다.
도 12는 삭제되는 요소와, 메모리모듈로 유지하고 있는 요소의 배치와의 관계를 나타낸 도이다.
도 13은 어느 공간ID중의 소정의 범위의 요소를 삭제한다라는 명령을 수리한각 메모리모듈로 실행되는 처리를 나타내는 플로챠트이다.
도 14는 어느 공간ID의 배열의 말미에 요소를 추가한다라는 명령을 수리한 각 메모리모듈로 실행되는 처리를 나타내는 플로챠트이다.
도 15는 본 실시형태에 따른 배열의 결합 및 배열의 분할을 설명하기 위한 도이다.
도 16은 본 실시형태에 있어서, 공간ID「10」를 갖는 배열 및 공간ID「11」를 갖는 배열, 및 이들이 메모리모듈중에 수용된 상태를 나타낸 도이다.
도 17은 본 실시형태에 있어서, 배열의 결합에 의해 얻어진 배열, 및 각 메모리모듈에 있어서의 공간ID관리테이블을 나타내는 도이다.
도 18은 본 실시형태에 있어서, 공간ID「10」를 갖는 배열을 공간ID「10」를 갖는 배열과, 공간ID「11」를 갖는 배열로 분할하는 일례를 나타내는 도이다.
도 19는 본 실시형태에 있어서, 배열의 분할에 의해 얻어진 배열, 및 각 메모리모듈에 있어서의 공간ID관리테이블을 나타내는 도이다.
도 20은 본 실시형태에 따른 한쪽의 메모리모듈군에서 다른 메모리모듈군으로의 데이터의 병렬복사를 나타내는 도이다.
도 21은 본 실시형태에 따른 변환이 끝난 플래그의 이용을 설명하기 위한 도이다.
도 22는 본 실시형태에 따른 변환이 끝난 플래그의 이용을 설명하기 위한 도이다.
도 23은 본 실시형태에 따른 소트처리의 흐름을 설명하기 위한 도이다.
도 24는 본 실시형태에 따른 소트처리의 흐름을 설명하기 위한 도이다.
도 25는 본 실시형태에 있어서, 레코드번호로부터 항목값이 특정될 때까지의 데이터의 참조순서를 나타내는 도이다.
도 26은 본 실시형태에 따른 다른 소트처리의 흐름을 설명하기 위한 도이다.
도 27은 본 실시형태에 따른 검색처리의 흐름을 설명하기 위한 도이다.
도 28은 본 실시형태에 따른 검색처리의 흐름을 설명하기 위한 도이다.
본 발명의 목적은 CPU모듈과, 각각이 MPU 및 RAM코어를 보유하는 복수의 메모리모듈과, 상기 CPU와 메모리모듈의 접속, 및/또는 메모리모듈사이의 접속을 이루는 복수조의 버스를 구비하고, CPU로부터 각 메모리모듈의 MPU에 부여되는 명령에 의해 각 메모리모듈의 MPU가 작동하도록 구성된 병렬 컴퓨터의 구조로서, 소정의 관련을 갖는 일련의 데이터에 공간ID가 부여되고, 각 메모리모듈의 MPU가 적어도 해당 공간ID, 자기가 관리하는 일련의 데이터 부분에 관한 논리어드레스, 해당부분의 사이즈, 및 일련의 데이터 사이즈를 포함하는 테이블을 관리하고, 또한, 각 메모리도듈의 MPU가 수리된 명령에 자기가 관리하는 일련의 데이터 부분이 관여하고 있는지의 여부를 판단해서 RAM코어에 기억된 데이터를 판독해서 버스에 송출하고, 버스를 통해 부여된 데이터를 RAM코어에 기입하고, 데이터에 필요한 처리를 실시하고, 및/또는 상기 테이블을 갱신하도록 구성된 것을 특징으로 하는 병렬 컴퓨터의 구조에 의해 달성된다.
본 발명에 의하면, 공간ID를 이용해서 일련의 데이터를 파악하기 위해서, 해당 일련의 데이터가 다수의 메모리모듈에 의해 분장되어도 각 메모리모듈의 MPU가 해당 일련의 데이터를 확실하게 인식할 수 있다. 또, 메모리모듈은 일련의 데이터 및 자기가 관리하는 그 부분을 테이블에서 파악하고 있으므로, 명령의 수리에 따라 그 테이블을 참조해서 소정의 처리를 실행할 수 있다. 이것에 의해 단일 명령에 기초한 각 MPU에서의 병렬처리를 실현할 수 있다.
본 발명의 바람직한 실시형태에 있어서는 MPU는 CPU로부터 부여된 공간ID를 자기가 관리하는 1이상의 일련의 데이터공간ID와 비교하는 공간컴퍼레이터와, CPU로부터 부여된 논리어드레스와, 자기가 관리하는 데이터 부분의 논리어드레스를 비교하는 어드레스 컴퍼레이터와, 해당 논리어드레스에 기초하여, 자기의 RAM셀상의 뭄리어드레스를 산출하는 어드레스캘큐레이터를 가지고 있다. 이들 컴퍼레이터 및 캘큐레이터는 하드웨어로 구성되어도 좋고, MPU의 프로그램에 의해 소프트웨이로서 실현되는 것이어도 좋다.
또, 본 발명의 바람직한 실시형태에 있어서는 메모리모듈의 각각이 CPU모듈 및 다른 메모리모듈과의 동기를 이루기 위한 동기신호를 수용하고, 또한, 상기 복수조의 버스 중 어느 하나와의 접속이 가능한 입력과, 상기 복수조의 버스의 다른 어느 하나와의 접속이 가능한 출력을 구비하고, 적어도 상기 동기신호에 따라서 상기 중 어느 하나의 버스와 입력의 접속에 의해 데이터를 입력하면서 상기 다른 어느하나와의 버스와 출력의 접속에 의해 데이터를 출력할 수 있도록 구성되어 있다.
본 실시형태에 의하면, 동기신호에 따라서, 메모리모듈로부터의 데이터출력 및 메모리모듈로의 데이터입력이 이루어지며, 또한 버스의 접속의 제어에 의해 적절히 병렬처리를 실현하는 것이 가능하게 된다.
복수조의 버스의 각각에는 상기 CPU모듈과 어느 하나의 메모리모듈의 입력 또는 출력사이, 및/또는 다른 어느 하나의 메모리모듈입력 또는 출력과, 또 다른 메모리모듈의 출력 또는 입력사이의 접속을 규정하기 위한 스위치가 설치되며, 스위치의 전환에 의해 복수조의 버스의 각각에 있어서, 병렬적으로데이터의 주고받음이 실현되는 것이 보다 바람직하다. 이것에 의해 복수조의 버스를 보다 유효하게 이용하는 것이 가능하게 되며 보다 병렬성을 높이는 것이 가능하게 된다.
본 발명의 더욱 바람직한 실시형태에 있어서는 복수조의 버스 중 어느 하나인 제1버스에 어느 하나의 메모리모듈의 출력과, 다른 어느 하나의 메모리모듈의 입력이 접속되며, 또한 상기 복수조의 버스 중, 다른 어느 하나인 제2버스에 해당 다른 어느 하나의 메모리모듈의 출력과 또 다른 어느 하나의 메모리모듈의 입력이 접속되며, 제1버스에서의 데이터의 주고받음과, 제2버스에 있어서의 데이터의 주고받음이 병렬적으로 진행한다. 이와 같이, 컴퓨터의 실시형태에 의하면, CPU모듈과, 메모리모듈에 의해 파이프라인처리를 실현하는 것이 가능하게 된다. 버스와 메모리모듈사이의 접속을 반복해서 다단의 메모리모듈사이의 접속을 형성하는 것이 보다 바람직하다.
본 발명의 다른 바람직한 실시형태에 있어서는 MPU가 일련의 데이터중의 특정 요소를 삭제하고, 상기 일련의 데이터중에 특정 요소를 삽입하고, 또는 일련의 데이터의 말미에 특정 요소를 추가하는 것을 나타내는 명령을 수리하면 테이블을 참조해서 자기가 관리하는 데이터의 영역과, 삭제 삽입 또는 추가에 관한 요소의 위치를 비교해서 그 비교결과에 따라 상기 테이블의 내용을 갱신한다. 즉, MPU에 있어서, 자기가 관리하는 테이블을 갱신하는, 즉, 미머핑을 함으로써 요소의 삭제, 삽입 및 추가를 실현하는 것이 가능하게 된다.
본 발명의 또 다른 실시형태에 있어서는 MPU가 부여된 명령에 응답해서 일련의 데이터중의 요소를 특정하기 위한 첨자를 변환하고, 및/또는 요소에 특정의 수식을 부여하는 값변환을 실행한다.
또, 본 발명의 목적은 CPU모듈과, 각각이 MPU 및 RAM코어를 갖는 복수의 메모리모듈과, 상기 CPU와 메모리모듈의 접속 및/또는 메모리모듈사이의 접속을 이루는 복수조의 버스를 구비하고, CPU로부터 각 메모리모듈의 MPU에 부여되는 명령에 의해 각 메모리모듈의 MPU가 작동하도록 구성된 정보처리유닛으로서, 소정의 관련을 갖는 일련의 데이터에 공간ID가 부여되며, 각 메모리모듈의 MPU가 적어도 해당 공간ID, 자기가 관리하는 일련의 데이터 부분에 관한 논리어드레스, 해당 부분의 사이즈 및 일련의 데이터 사이즈를 포함하는 테이블을 관리하고, 또한 각 메모리모듈의 MPU가 수리한 명령에 자기가 관리하는 일련의 데이터 부분이 곤여하고 있는지의 여부를 판단해서 RAM코어에 기억된 데이터를 판독해서버스에 송출하고, 버스를 통해 부여된 데이터를 RAM코어에 기입하고, 데이터에 필요한 처리를 실시하고, 및/또는 상기 테이블을 갱신하도록 구성된 것을 특징으로 하는 정보처리유닛에 의해서도 달성된다. 예를 들면, 상기 유닛이 단일의 회로기판에 형성되며, CPU모듈이 레거시메모리, 입력장치 및 표시장치를 상호 접속하는 다른 버스와 연결가능하게 구성되어 있어도 좋다.
또한, 본 발명의 목적은 상기 정보처리유닛과, CPU모듈과 다른 버스를 통해 연결된 1이상의 레거시(legacy)메모리를 포함하는 기억장치, 입력장치 및 표시장치를 갖는 것을 특징으로 하는 컴퓨터시스템에 의해서도 달성된다.
[하드웨어구성]
이하, 첨부도면을 참조해서 본 발명의 실시형태에 대해서 설명한다. 도 1은 본 발명의 실시형태에 따른 컴퓨터시스템의 구성을 나타낸 블럭다이어그램이다. 도 1에 나타내듯이, 컴퓨터시스템(10)은 단일명령에 의한 병렬연산을 실현하는 CPU모듈(12)과, 병렬연산을 위해 필요한 여러가지 데이터를 기억하는 메모리모듈(14-1,14-2,14-3,…)과, 필요한 프로그램이나 데이터를 기억하는 고정기억장치(16)와, 키보드나 마우스 등의 입력장치(18)와, CRT 등으로 이루어지는 표시장치(20)와, 여러가지 형식의 데이터 등이 기억되어 있는 레거시메모리(22)를 구비하고 있다. 또, 버스(24-1,24-2,…)에 있어서, CPU모듈(12), 각 메모리모듈(14)의 접점에는 스위치(28-1, 28-2,28-3,…) 등이 설치되며, 선택된 회로요소간에서의 정보의 주고받음이 가능하게 되었다. 또, CPU모듈(12)과 메모리모듈(14-1)사이, 인접하는 메모리모듈사이에서 버스의 연결 및 접속을 이루기 위한 스위치(30-1,30-2,…)가 설치되어 있다. 또, 본 명세서에 첨부한 도면에 있어서 메모리모듈은 편의상 「PMM」이라고 표기하는 경우가 있는 것에 유의해야 한다.
CPU모듈(12)과, 메모리모듈(14)사이에는 복수의 버스(24-1,24-2,24-3,24-4,…)가 설치되어 있다. 따라서, CPU모듈(12)과 메모리모듈(14)사이, 및 메모리모듈사이는 상기 버스에 의해 데이터 등의 주고받음이 가능하게 되어 있다. 또, CPU(12)와, 메모리모듈(14)사이에는 제어신호라인(25)이 형성되며, CPU(12)로부터 발생되는 명령 등이 모든 메모리모듈(14)에 전달되도록 되어 있다.
또한, CPU(12)와, 다른 구성요소(예를 들면, 고정기억장치(16), 입력장치(18) 등)사이에는 로컬버스(26)가 배치되어 있으며, 이들 사이에서도 데이터 등의 주고받음이 가능하게 되어 있다. CPU(12)는 고정기억장치(16)에 기억되며, 또한, 버스(26)상에 접속된 RAM과 같은 기억장치(도시생략)에 기억된 프로그램을 판독하고, 이 프로그램에 따라서 이하에 나타내느 메모리모듈(14)로의 명령의 송출을 포함하는 데이터의 주고받음이외의 스위치(28,30)의 제어 등을 실행한다. 또, CPU(12)는 프로그램에 따라서 레거시메모리(22)에 기억된 여러가지 형식의 데이트를 수용해서 이 형식의 데이터를 CPU(12), 메모리모듈(14), 버스(24)로 이루어지는 계에서 처리가능한 일련의 데이터(배열)로 변환하고, 이들을 각 메모리모듈(14)에 기억시킬 수도 있다.
도 2는 각 메모리모듈(14)의 개략을 나타내는 블록다이그램이다. 도 2에 나타내듯이, 메모리모듈(14)은 CPU모듈(12)로부터 부여되는 클럭 등 동기신호를 수용하는 클럭버퍼(32)와, 데이터를 기억하는 RAM코어(34)와, 후술하는 공간ID나 데이터의 요소번호 등을 파악하여, CPU(12)로부터의 명령 등을 수리한 경우에, 공간ID나 요소번호에 기초하여, RAM코어(34)로의 데이터기입이나 RAM코어로부터의 데이터판독을 제어하는 MPU(36)와, 버스 중 어느 하나로부터의 데이터를 수용하여, RAM코어(34)에 공급하고, 및/또는 RAM코어(34)로부터의 데이터를 어느 하나의 버스에 송출하는 I/038을 가지고 있다. 이 실시형태에 있어서, 메모리모듈(14)은 제어신호라인(25)을 통해 CPU로부터의 명령을 수용하고, MPU(36)가 이 명령에 응답해서 RAM코어(34)의 데이터를 판독하고, RAM코어(34)에 데이터를 기입하고, 또는 데이터에 소정의 처리를 실시할 수 있도록 되어 있다. 또, RAM코어(34)로의 데이터액세스나, I/O를 통해 데이터입력 및 데이터출력은 클럭버퍼(32)에 부여되는 클럭 등의 동기신호에 기초하여 실행된다.
도 1 및 도 2로부터 명백하듯이, 본 발명에 있어서, 컴퓨터시스템(10)은 메모리공유형 시스템이다라고 생각할 수 있다. 또, 후술하듯이, 제어신호라인(25)을 통해 각 메모리모듈(14)에 인스터럭션을 부여함으로써, 각 메모리모듈(14)이 병렬적으로 처리를 실행한다. 또, 버스로의 데이터출력 및 버스로부터의 데이터입력 등이 소정의 동기신호에 기초하여 실행된다. 따라서, 이 컴퓨터시스템(10)은 SIMD의 형태를 이루고 있다라고 생각할 수 있다.
[실현되는 기능의 개략]
이러한 구성을 갖는 컴퓨터시스템(10)에 대해서 보다 상세한 설명을 추가하기 전에 본 컴퓨터시스템(10)에 의해 실현되는 기능의 개략을 간단하게 설명한다.
(1)다공간메모리
본 명세서에 있어서, 다공간메모리란 메모리공간을 공간ID와 어드레스에 기초하여 액세스하기 위해 할당된 메모리공간을 말한다. 이것에 의해, 일련의 데이터가 다수의 프로세서에 분장되어 있어도 각 프로세서가 이것을 확실하게 분리, 인식할 수 있다.
종래의 메모리공간에 있어서는 프로세스마다 개별적인 영역을 할당하는 일은 있어도, 일련의 변수(병렬, 구조체 등)마다 메모리공간을 할당하는 일은 행해지지 않았다. 따라서, 이하, 이러한 종래의 메모리공간을 「단일메모리공간」이라고 칭한다. 단일메모리공간의 시스템에 있어서는 어드레스만을 이용하여 데이터에 액세스하고 있으므로, 관련을 갖는 일련의 데이터를 분리하거나, 인식할 수 없었다. 이 때문에, 실제로는 병렬처리가 가능해도 그 가부를 판단할 수 없는 경우가 많았다. 또, 어떤 단일메모리공간에 새로운 일련의 데이터를 수용시키는 경우에, 해당 일련의 데이터의 수용장소를 확보하기 위해 가비지수집을 실행할 필요가 있었다.
이것에 대해서, 본 발명에 있어서는 메모리공간에 공간ID를 도입하고, 일련의 데이터에 대해서 동일한 ID를 부여하고 있다. 또, 메모리모듈(14)에 있어서, 자신의 RAM코어(34)에 유지되어 있는 데이터에 관한 공간ID를 파악하고, 이것에 의해 각 메모리모듈(14)자체가 현재 액세스되고 있는 데이터의 공간ID를 참조함으로써, 자기의 작동시비를 결정할 수 있다. 또, 각 메모리모듈이 공간ID과 관련되어 일련의 데이터의 전부 또는 일부를 유지할 수 있으므로, 어떤 일련의 데이터를 복수의 메모리모듈(14)로 분할해서 기억시킬 수 있고, 이것에 의해 가비지수집을 불필요로 할 수 있다.
예를 들면 도 3에 나타내듯이, 단일메모리공간에 있어서, "A"란 일련의 데이터, "B"란 일련의 데이터, …가 수용되어 있는 경우를 고려한다. 예를 들면, 여기에서 전체메모리사이즈가 32워드이고, 상기 일련의 데이터 사이즈의 총합이 30워드이다라고 가정한다. 이들 일련의 데이터는 공간중에 존재하고 있으므로, 미사용의 메모리사이즈는 12워드임에도 불구하고, 실제로 격납할 수 있는 일련의 데이터 사이즈는 3워드에 한정된다. 이 때문에, 3워드를 초과한 사이즈를 갖는 새로운 일련의 데이터를 수용해야할 경우에는 가비지수집을 실행하지 않으면 안된다. 한편, 도 4에 나타내듯이, 본 발명에 있어서는 일련의 데이터의 각각에 공간ID가 부여되어 있다. 이들은 공간ID와 관련되며, 1이상의 메모리모듈(14)에 기억된다. 따라서, 미사용의 사이즈와 수용가능한 사이즈를 일치시키는 것이 가능하게 된다.
(2)메모리모듈
또, 본 발명에 있어서는 각 메모리모듈(14)이 MPU(36)를 가지며, 상기 공간ID외에 자기가 유지하는 일련의 데이터의 각각의 요소번호를 파악하고 있다. 따라서, CPU(12)로부터의 명령을 수리한 후, MPU(36)가 명령에 따라서 액세스해야할 데이터가 자기의 RAM코어(34)중에 유지되어 있는 것인지 아닌지를 판단해서 액세스에 필요한 시비를 결정할 수 있다. 또한, 각 메모리모듈(14)이 자기의 RAM코어(34)에 격납되어 있는 배열요소의 첨자의 범위로부터 SIMD에서의 명령에 있어서의 암묵의 처리의 분담범위를 결정하는 것이 가능하다.
또, 본 발명에 있어서는 메모리모듈(14)이 어드레스리매핑을 실행할 수 있도록 되어 있다. 예를 들면, 도 5에 나타내듯이 어떤 배열의 소정의 위치에 특정의 요소를 삽입하는 경우, 그 외, 소정의 위치의 요소를 삭제하고, 또는 배열의 말미에 소정의 요소를 추가하는 경우에도 본 실시형태에 있어서는 해당 배열에 관련되는 요소를 유지하고 있는 메모리모듈의 각각에 있어서, MPU(36)가 어드레스리매핑을 실행함으로써 병렬적이며 고속으로 이들을 실현할 수 있다. 또한, 도 6에 나타내듯이 배열의 요소(값)에 수식을 부여하는 경우(예를 들면, 각 값에 「1」을 추가하는 경우)에도 관련되는 배열의 요소를 유지하는 메모리모듈의 각각에 있어서, MPU(36)가 병렬적이며 고속으로 필요한 처리를 행할 수 있다.
또, 메모리모듈(14)에 있어서는 MPU(36)가 RAM코어(34)로 기억해야할 데이터의 각각의 사이즈를 파악하고, 압축한 형태로 이들을 기억할 수 있다. 예를 들면, 어떤 메모리모듈(14)로 정수값의 데이터를 유지해야할 경우에 실제의 데이터값이 "0" 내지 "3"까지의 값밖에 취득할 수 없는 경우에는 MPU(36)는 각 데이터를 위해 2비트만을 준비한다. CPU(12)와의 사이에서는 1개의 정수를 표현하기 위해서 32비트를 사용하고 있는 경우에는 메모리모듈(14)과 CPU(12)사이에서의 통신을 위해 MPU(36)가 데이터형식을 변경해서 CPU(12)와의 주고받음을 이루면 좋다. 이것에 의해, RAM코어(34)를 보다 유용하게 이용하는 것이 가능하게 된다. 또, 문자열과 같은 길이가 다른 데이터에 대해서도 마찬가지로 데이터길이를 변경해서 기억할 수 있도록 되어 있다.
또한, 메모리모듈(14)에 있어서는 소정의 공간ID에 관련된 데이터나, 소정의 범위의 요소번호를 부여된 데이터에 특정의 값(예를 들면 「0」)을 셋트할 수 있도록 되어 있다. 이것에 의해, 메모리모듈(14)내에서 고속으로초기화의 처리를 실행하는 것이 가능하게 된다. 또, 메모리모듈(14)에 있어서는 어떤 특정의 데이터(배열)중의 값을 검색하는 것이나 첨자의 범위를 체크하는 것이 가능하다.
(3)재구성가능한 버스
본 발명에 있어서는 CPU(12)가 스위치(28-1,28-2,…) 및 스위치(30-1,30-2,…)를 선택적으로 온/오프해서 데이터의 주고받음을 행해야 할 메모리모듈(14)을 지정함으로써, 파이프라인처리를 실현하고 있다. 예를 들면, 도 7에 나타내듯이, 어떤 메모리모듈(14-1)로부터 출력된 데이터를 다른 메모리모듈(14-j)에 부여하고, 또한 해당 다른 메모리모듈(14-j)로부터 출력된 데이터를 또 다른 메모리모듈(14-k)에 전달해야할 경우에는 CPU(12)는 버스(24-m)을 메모리모듈(14-i, 14-j)을 위해 할당하고, 또한 버스(24-n)를 메모리모듈(14-j,14-k)을 위해 할당하도록 각 스위치의 상태를 설정한다.
또한, 이들 파이프라인처리는 단일 메모리모듈사이의 접속에 의해 실현되는 경우만이 아니라, 복수의 일련의 메모리모듈(메모리모듈군)사이의 접속에 의해 실현하는 것도 가능하다. 달성하고자 하는 처리에 따라 각 메모리모듈사이를 재연결하고, 각 접속경로마다 정해진 종류의 데이터를 정해진 순서로 일방향으로 연속전송함으로써, 버스의 능력을 100%가깝게 사용할 수 있도록 통신을 스케줄화할 수 있다. 이것에 의해 분산메모리형 병렬처리시스템의 최대 문제였던 프로세서간 통신의 퍼포먼스의 저하를 해소할 수 있다.
이렇게 구성된 컴퓨터시스템(10)에 있어서, 다공간메모리의 구체적 구성 및 다공간메모리에 있어서의 시스템의 작동에 대해서 설명한다.
[다공간메모리]
도 8은 다공간메모리하에서의 메모리모듈(14)의 구조를 설명하기 위한 도이다. 도 8의 (a)에 나타내듯이, 메모리모듈(14)중의 RAM코어(34)에는 공간ID관리테이블이 설치된다. 이것에 의해, 메모리모듈(14)의 MPU(36)는 자기가 유지하는 데이터의 공간ID 등 필요한 정보를 파악하는 것이 가능하게 된다.
도 8의 (b)에 나타내듯이, 공간ID관리테이블에는 자기가 유지하는 데이터군마다의 공간ID, CPU의 관리하에서의 데이터군의 논리개시어드레스, 데이터군이 할당된 영역의 사이즈, RAM코어(34)중의 물리개시어드레스, 해당공간ID를 갖는 일련의 데이터의 전체사이즈, 및 액세스제한을 나타내는 액세스제한플래그가 격납되어 있다. 액세스제한플래그는 이 실시형태에 있어서는 읽기만 가능(R), 기입만 가능(R), 읽고쓰기가능(RW)의 3개의 상태를 나타낼 수 있도록 되어 있다.
메모리모듈(14)의 MPU(36)는 어떤 공간ID를 갖는 데이터군이 부여되었을 때에 RAM코어(34)중에 해당 데이터군을 수용해야할 1이상의 영역을 발견해서 해당 영역에 데이터군을 그대로 또는 2이상으로 분할해서 수용한다. 이 때, 부여된 공간ID, 논리개시어드레스, 전체사이즈, 액세스제한플래그와 함께 실제로 데이터를 수용한 RAM코어중의 논리개시어드레스나, 할당영역사이즈도 공간ID관리테이블에 기억된다. 도 8의 (c)는 도 8의 (b)에 의한 공간ID관리테이블에 따라서 RAM코어(36)중의 데이터를 나타낸 도이다.
[메모리액세스의 개략설명]
이와 같이 구성된 메모리모듈(14)로의 액세스에 대해서 이하에 설명한다.도 9에 나타내듯이, 먼저 CPU(12)가 공간ID 및 논리어드레스, 및 필요한 명령(예를 들면, 데이터의 기입이나 읽기)를 제어신호라인(25)을 통해 모든 메모리모듈(14)에 전달한다. 각 메모리모듈(14)에 있어서는 이것에 응답해서 MPU(36)에 설치된 공간컴퍼레이터(52)가 공간ID와, 자기공간ID관리테이블상에 유지되어 있는 공간ID를 비교해서 동일한 것을 자기가 유지하고 있는지를 판단하고, 또, 어드레스 컴퍼레이터(54)가 논리어드레스에 대해서 동일한 판단을 행한다. 계속해서, 메모리모듈(14)의 MPU(36)가 자기의 RAM코어(34)에 명령에 의한 처리대상이 되는 데이터가 유지되어 있다라고 판단한 경우에는 어드레스캘큐레이터(56)가 공간ID관리테이블을 참조해서 RAM코어(34)중의 물리어드레스를 산출하고, 처리대상이 되는 데이터를 특정한다.
이렇게 해서, 데이터가 특정된 후에 MPU(36)는 CPU(12)로부터 부여된 명령에 따른 처리(예를 들면 데이터의 기입이나 판독)을 실행하고, 필요한 경우에는 데이터를 CPU(12)에 전달한다(도 9의 (c)참조).
[다공간메모리의 보다 구체적인 동작:배열중의 요소의 삭제 등]
예를 들면, 어떤 공간ID를 가진 일련의 데이터(이하, 이것을 경우에 따라서 「배열」이라고 한다)가 1이상의 메모리모듈(14)에 수용된 상태로부터 특정 요소가 삭제된 상태까지의 일련의 동작에 대해 이하에 설명한다.
어떤 메모리모듈(14-i)에 있어서, 공간ID「010」에 속하는 데이터군이 도 10의 (a)에 나타내듯이 격납되고, 많은 메모리모듈(14-j)에 있어서, 공간ID「010」에 속하는 데이터군이 도 10의 (b)에 나타내듯이 격납되어 있는 경우를 생각한다. 예를 들면, 메모리모듈(14-i)에 있어서는 논리어드레스「0」에서 「59」까지의 데이터가 그 RAM코어의 물리어드레스 「100」부터 기억되어 있는 것을 알 수 있다. 이 경우에 외관의 배열은 도 10의 (c)에 나타내는 것이 된다.
이렇게 복수의 메모리모듈에 어떤 배열이 격납되어 있는 경우에 특정 요소를 삭제할 때의 처리에 대해서 이하에 서술한다. CPU(12)로부터 각 메모리모듈(14-1,14-2,…)에 제어신호라인(25)을 통해 공간ID「010」의 요소 「50∼59」를 삭제한다라는 명령이 발생된 경우를 생각한다. 도 11 및 도 13은 어떤 공간ID중의 소정의 범위의 요소를 삭제한다라는 명령을 수리한 각 메모리모듈로 실행되는 처리를 나타내는 플로챠트이다.
각 메모리모듈의 MPU(36)는 제어신호라인(25)을 통해 부여된 명령을 수리해서 그 내용을 해석하고(스텝 1101), 명령중의 「공간ID」를 조사하고(스텝1102), 자기의 RAM코어(34)가 유지하는 데이터의 공간ID에 관련되어 있는지의 여부를 판단한다(스텝1103). 스텝1103에서 노(No)라고 판단된 경우에는 처리를 종료하고, 한편, 예스(Yes)라고 판단된 경우에는 MPU(36)는 공간ID관리테이블을 참조해서 해당 공간ID에 관한 데이터군이 기입가능한 상태로 되어 있는지, 또는 삭제요구가 있던 범위의 사이즈가 전체사이즈보다 작은지 어떤지 등을 판단한다(스텝1104). 체크에 의해 이상이 있다라고 판단된 경우(스텝1105에서 예스(Yes)에는 MPU(36)는 제어신호라인(25)을 통해 에러가 발생한 것을 통지한다. 한편, 이상이 없는 경우에는 MPU(36)는 명령에 의해 삭제를 요구받은 범위와, 자기의 RAM코어(34)에서 유지하는 요소의 범위를 비교하여(스텝1107), 그 비교결과에 따라 (스텝1108), 여러가지 처리를 실행한다.
먼저, 삭제요구가 있던 범위가 자기가 유지하는 요소의 범위보다 뒤인 경우(도 11의 「A」 및 도 12의 (a)참조)에는 MPU(36)는 아무런 처리를 실행하지 않는다(스텝1109참조). 삭제요구가 있던 범위가 자기가 유지하는 요소의 후방에 겹쳐서 위치하고 있는 경우(도 11의 「B」 및 도 12의 (b)참조)에는 MPU(36)는 할당영역사이즈를 갱신한다(스텝1110). 즉, 삭제요구범위의 선두(화살표 1201참조)에서 자기의 RAM코어(34)에서 유지하는 요수의 범위의 말미(화살표 1202참조)까지가 가비지가 되도록 할당영역사이즈가 변경된다.
한편, 삭제요구가 있던 범위가 자기가 유지하는 요소의 범위보다 앞쪽인 경우(도 11의 「C」 및 도 12의 (c) 참조)에는 MPU(36)은 논리개시어드레스를 삭제요구가 있던 사이즈분만큼 줄이도록 논리개시어드레스를 갱신한다(스텝1111). 또한, 삭제요구가 있던 범위가 자기가 유지하는 요소의 범위보다 앞쪽이며, 또한 일부만 겹친 경우(도 11의 「D」 및 도 12의 (d)참조)에는 MPU(36)는 논리개시어드레스를 삭제요구가 있던 범위의 선두의 값으로 변경하는 동시에 물리개시어드레스를 삭제요구가 있던 범위의 말미의 값「+1」에 대응하는 물리어드레스로 변경한다(스텝1112). 계속해서 MPU(36)는 할당영역사이즈를 갱신한다(스텝1113).
또, 삭제요구가 있던 범위가 자기가 유지하는 요소의 범위를 포함하는 경우(도 11의 「E」 및 도 12의 (e)참조)에는 MPU(36)는 해당 공간ID에 관한 여러가지의 데이터를 공간ID관리테이블에서 삭제한다(도 13의 스텝1114). 마지막으로 삭제요구가 있던 범위가 자기가 유지하는 요소의 범위에 포함되는 경우(도 11의 「F」 및 도 12의 (f)참조)에는 공간ID관리테이블을 두개로 분할해서 삭제범위보다 앞쪽에관한 여러가지 데이터와, 삭제범위보다 뒤쪽에 관한 여러가지 데이터에 관한 것을 생성한다(스텝1115). 또는 MPU(36)는 자기의 RAM(34)에 관해서 가비지수집을 시각해도 좋다.
이렇게 해서, CPU(12)로부터의 단일명령(어떤 공간ID의 삭제명령)에 응답해서 각 메모리모듈(14)이 동작해서 소정의 메모리모듈에서 필요한 처리가 병렬적으로 실행된다.
다음에, 어떤 공간ID를 갖는 배열의 말미에 어떤 요소를 추가하는 경우에 대해서 간단하게 설명한다. 도 14는 어떤 공간ID의 배열의 말미에 요소를 추가한다라는 명령을 수리한 각 메모리모듈에서 실행되는 처리를 나타내는 플로챠트이다. 도 14의 스텝1401∼스텝1406은 도 11의 스텝1101∼스텝1106에 대응한다. 계속해서, 각 메모리모듈(14)의 MPU(36)는 추가해야할 요소를 자기의 RAM코어(34)에 기억해야할지의 여부를 판단한다(스텝1407). 이것은 MPU(36)가 자기의 공간ID관리테이블을 참조함으로써 실현할 수 있다. 스텝1407에서 예스(Yes)라고 판단된 경우에는 공간ID관리테이블중의 필요한 값을 갱신하고(예를 들면, 할당영역사이즈를 추가하는 요소수에 따라 변경한다), 계속해서 RAM셀중의 소정의 영역에 추가해야할 요소를 기입한다(스텝1409). 또는 공간ID관리테이블의 여러가지 값을 생성해서 대응하는 RAM셀중의 영역에 추가해야할 요소가 기입되어도 좋다.
계속해서, MPU(36)는 공간ID관리테이블중의 해당 공간ID에 관련된 「전체사이즈」의 값을 갱신한다(스텝1410). 스텝1407에 있어서 노(No)라고 판단된 경우에도 공간ID관리테이블중의 관련된 「전체사이즈」의 값이 갱신된다.
배열중의 임의의 위치에 요소를 추가하는 경우에도 삭제요구와 대략 동등한 처리가 각 메모리모듈(14)에서 실행된다.
[다공간메모리의 보다 구체적인 동작:배열의 결합 및 분할]
다음에, 도 15의 (a)에 나타내듯이 복수의 배열을 결합하거나, 또는 도 15의 (b)에 나타내듯이 단일의 배열을 복수의 배열로 분할하는 경우에 대해서 설명한다. 본 실시형태에 따른 컴퓨터시스템(10)에 있어서는 어떤 공간ID(도 15의 (a)에 있어서는 공간ID「100」)를 갖는 배열, 및/또는 다른 공간ID(도 15의 (b)에 있어서는 공간ID「100」)을 갖는 배열이 단일 메모리모듈의 RAM코어에 수용되어 있어도 좋고, 또는 다른 복수의 메모리모듈의 RAM코어에 수용도어 있어도 좋다.
도 16은 공간ID「10」를 갖는 배열 및 공간ID「11」를 갖는 배열 및 이들이 메모리모듈중에 수용된 상태를 나타내는 도이다. 도 16의 (a)에 있어서는 그 공간ID가 「10」이며, 또한 각 요소의 사이즈가 10워드인 배열(1501)이 나타내어져 있다. 이 배열(1501)중의 요소는 메모리모듈(14-1) 내지 (14-x)에 수용되어 있다. 또, 도 16의 (b)에 있어서는 그 공간ID가 「11」이며, 또한 각 요소의 사이즈가 10워드인 배열(1510)이 나타내어져 있다. 이 배열(1510)의 요소도 메모리모듈(14-1) 내지 (14-x)에 수용되어 있다.
CPU(12)가 제어신호라인(25)을 통해 「공간ID「10」의 배열과 공간ID「11」의 배열을 결합한다」라는 명령을 발하면 각 메모리모듈(14)은 이것을 수리해서 자기가 유지하고 있는 데이터의 공간ID에 관한 명령인지 아닌지를 판단한다. 이들의 처리는 도 11의 스텝1101 내지 스텝1106과 대략 동일하다.
계속해서, 자기가 유지하고 있는 데이터의 공간ID가 명령에 관련되어 있는 경우에는 메모리모듈의 MPU는 이하의 순서에 따라서 배열의 결합을 실현한다.
상기 도 16에 나타낸 경우에, 관련된 각 메모리모듈(14)은 공간ID「10」 및 공간ID「11」의 쌍방의 요소를 유지하고 있는 경우에, 공간ID「11」에 관한 공간ID관리테이블의 값을 갱신한다. 보다 구체적으로는 공간ID「10」에 관한 「전체사이즈」의 값을 참조해서 그 논리개시어드레스를 다시 산출한다(예를 들면, 도 17의 부호 1701, 1702참조). 또, 관련된 각 메모리모듈은 관리ID관리테이블중의 「전체사이즈」의 값을 2개의 배열을 조합한 사이즈에 대응하는 것으로 갱신한다(예를 들면, 도 17의 부호 1703참조). 도 17은 이렇게 해서 얻어진 배열1710, 및 각 메모리모듈(14-1∼14-x)에 있어서의 공간ID관리테이블(예를 들면 부호 1711, 1712참조)을 나타내는 도이다.
도 18은 공간ID「10」를 갖는 배열을 공간ID「10」를 갖는 배열과, 공간ID「11」를 갖는 배열로 분할하는 일례를 나타낸 도이다. 도 18의 (a)에 나타내는, 공간ID「10」를 갖는 배열의 분해점을 결정하고, 분해점보다 앞쪽에 위치하는 요소를 공간ID「10」의 배열로 하는 동시에, 분해점보다 뒤쪽에 위치하는 요소를 공간ID「11」의 배열로 한다.
이 경우에도 CPU(12)가 제어신호라인(25)을 통해 「공간ID「10」의 배열을 분해점을 경계로 해서 공간ID「10」의 배열과 공간ID「11」의 배열로 분해한다」라는 명령을 발하면 각 메모리모듈(14)은 도 11의 스텝1101 내지 스텝1106에 대략 대응하는 처리를 실행하고, 메모리모듈 중, 명령에 관련된 것(도 18의 예에서는 메모리모듈(14-1∼14-x)이 소정의처리를 실행한다. 예를 들면, MPU(36)는 분해점보다 뒤쪽에 위치하는 요소를 수용하고 있는 경우에 공간ID「011」에 관한 공간ID관리테이블중의 여러가지 값을 작성하는 동시에 공간ID「010」에 관한 공간ID관리테이블중 전체사이즈에 관한 값을 갱신한다. 또, 분해점보다 앞쪽에 위치하는 요소만을 수용하고 있는 경우에도 메모리모듈의 MPU(36)는 공간ID「010」에 관한 공간관리ID테이블 중, 전체사이즈에 관한 값을 갱신한다. 도 19는 이렇게 해서 얻어진 배열(1901,1902), 및 각 메모리모듈(14-1∼14-x)에 있어서의 공간ID관리테이블(예를 들면 부호(1911,1912, 1912)참조)를 나타내는 도이다.
[다공간메모리의 보다 구체적인 동작:병렬복수]
다음에, 다공간메모리하에서 경우에 따라서는 재구성가능한 버스를 이용한 병렬복수에 대해 간단하게 설명한다.
예를 들면, CPU(12)로부터의 단일 명령에 따라서 도 20에 나타내듯이 한쪽의 메모리모듈군(140)으로부터 다른 메모리모듈군(141)으로의 데이터의 병렬복수를 실현할 수 있다. 병렬복수에는 이하의 양태가 있다.
(1)한쪽의 메모리모듈군(140)에는 단일의 메모리모듈이 포함되며, 다른쪽의 메모리모듈군에는 복수의 메모리모듈이 포함되는 경우.
(2)한쪽의 메모리모듈군(140)에 복수의 메모리모듈이 포함되며, 다른쪽의 메모리모듈군에도 복수의 메모리모듈이 포함된 경우.
전자에 있어서는 복사전의 요소를 수용하고 있는 메모리모듈(14)의 MPU(36)는 CPU(12)로부터 제어신호라인(25)을 통해 부여된 명령(예를 들면, 어떤 공간ID를갖는 배열중의 소정의 요소를 공간ID(8,9,10)의 배열로서 카피하라는 지령)을 수리해서 RAM코어(34)로부터 지정된 요소를 소정의 버스상에 출력한다. 한편, 카피목적지가 되는 MPU(36)도 동일한 명령의 수리에 응답해서 버스로부터 출력된 요소를 수리해서 이것을 RAM코어(34)의 소정의 영역에 기억하는 동시에 자기의 공간ID관리테이블을 갱신한다.
후자에 있어서는 복수의 버스를 이용해서 한쪽의 메모리모듈군(140)중의 메모리모듈로부터의 데이터를 각각 다른쪽의 메모리모듈군(141)의 대응하는 메모리모듈에 부여하는 것이 가능하다. 이 경우에는 CPU(12)는 스위치(28) 및 스위치(30)를 소정의 메모리모듈사이의 데이터의 주고받음이 가능하도록 제어하면 좋다.
[다공간메모리의 보다 구체적인 동작:숨김갱신 등]
본 실시형태에 따른 다공간메모리를 이용해서 첨자변환에 의해 입력된 첨자를 변환해서 변환이 끝난 첨자에 의해 배열을 지정하고, 다시 배열의 요소에 값을 수식할 수 있다. 어떤 처리가 종료해서 커밋함으로써 첨자변환이나 값수식이 불필요하게 되었을 때, 각 메모리모듈의 MPU는 해당 배열에 관한 공간ID관리테이블을 다시 기입해서 리매핑을 실행함으로써 순식간에 첨자변환을 해소할 수 있다. 한편, 값수식자체는 실제의 RAM코어에 기억된 요소를 갱신할 필요가 있으므로, 시간을 필요로 한다. 따라서, 각 메모리모듈에 있어서, 변환이 끝난 플래그를 설치하고, 값수식이 반영된 요소가 실제로 RAM코어에 기억한 후에 해당 요소에 대응하는 플래그가 「1」에 셋트된다. 이렇게 하면, 어떤 프로세스에 있어서, 변환플래그를 참조해서 이것이 「1」인 경우에는 값수식을 경유할 필요가 없고, 한편, 변환플래그가「0」인 경우에는 값수식을 경유할 필요가 있는 것을 용이하게 알 수 있다. 따라서, 실질적으로 커밋을 순식간에 실현할 수 있다.
또한, 본 실시형태에 따른 공간메모리를 이용하면 도 21에 나타내듯이 네스트구조의 값수식에 대해서도 변환이 끝난 플래그를 설치하고, 이 변환이 끝난 플래그를 참조함으로써 값수식을 경유할 필요의 유무를 아는 것이 가능하게 된다.
[다공간메모리 및 재구성가능한 버스의 이용:소트(그 1)]
본 실시형태에 있어서는 다공간메모리 및 재구성가능한 버스를 이용함으로써, CPU(12)로부터의 단일 명령에 기초하여 병렬적으로 소트처리를 실행하는 것이 가능하게 된다. 이하, 본 실시형태에 있어서의 병렬적인 소트처리에 대해서 설명한다.
도 23 및 도 24는 본 실시형태에 따른 소트처리의 흐름을 설명하기 위한 도이다. 이 소트처리에서는 크게 나누어 도 23에 나타낸 처리(존재수의 확정 및 누계의 산출)와, 도 24에 나타낸 처리(레코드번호의 전송)으로 나누어 생각할 수 있다.
이 실시형태에 따른 소트처리를 실현하기 위해, 본 실시형태에 있어서는 레코드번호를 격납한 레코드번호배열, 어떤 항목에 관한 실제의 항목값을 격납한 값리스트 및 레코드번호배열로부터의 값(레코드번호)을 입력해서 대응하는 값리스트의 격납위치를 나타내는 포인터값을 출력하도록 구성된 값리스트로의 포인터를 이용하고 있다. 즉, 레코드번호로부터 대응하는 위치의 값리스트로의 포인터값이 참조되며 그 포인터값에 따라서 실제의 항목값이 지정되도록 되어 있다.(도 25참조).
먼저, CPU(12)가 필요한 명령을 제어신호라인(25)을 통해 각 메모리모듈(14)에 부여하면, 각 메모리모듈에서 도 11의 스텝(1101) 내지 스텝(1106)에 대략 동등한 처리가 실행된다. 또, 관련된 메모리모듈 중, 레코드번호를 격납한 메모리모듈로부터의 통지에 따라서 CPU(12)는 레코드번호를 격납한 일련의 메모리모듈(제1메모리모듈군(2301))의 출력을 어떤 버스(「제1버스」라 함)에 접속하도록 스위치(28,30)를 제어한다.
계속해서, 값리스트로의 포인터배열을 격납한 메모리모듈로부터의 통지에 따라서, CPU(12)는 상기 값리스트로의 포인터배열을 격납한 일련의 메모리모듈(제2메모리모듈군(2302))의 출력을 어떤 버스(「제2버스」라 함)에 접속하도록 스위치(28,30)를 제어한다.
또한, 다른 일련의 메모리모듈(제3의 메모리모듈군(2303)에 있어서는 값리스트로의 포인터와 동일사이즈(같은 요소수)의 「존재수배열」을 위한 영역이 확보되며, 또한 각 요소가 「0」으로 초기화된다. 또한 제3의 메모리모듈군의 입력을 상기 제2버스와 접속한다.
계속해서 레코드번호배열의 선두부터 순서대로 레코드번호가 제1버스에 송출된다. 이것은 제1메모리모듈군(2301)에 있어서, 각 메모리모듈의 MPU(36)가 공간ID관리테이블을 참조해서 자기가 제1버스에 데이터를 출력하는 타이밍을 검출해서 소정의 레코드번호를 송출함으로써 실현된다.
레코드번호는 제1버스를 통해 제2메모리모듈군(2302)을 구성하는 메모리모듈의 각각에 부여된다. 각 메모리모듈의 MPU(36)는 자기의 공간ID관리테이블을 참조해서 자기가 관리하는 값리스트로의 포인터배열에 관련되는 레코드번호가 입력된것을 검출하고, 해당 입력에 대응하는 포인터값을 제2버스에 출력한다.
포인터값은 제2버스를 통해 제3의 메모리모듈군을 구성하는 메모리모듈의 각각에 부여된다. 각 메모리모듈의 MPU(36)는 자기의 공간ID관리테이블을 참조해서 자기가 관리하는 값리스트의 포인터배열에 관련된 포인터값이 부여된 것을 검출하고, 존재수배열에 있어서 포인터값에 대응하는 위치의 요소를 인크리먼트한다. 이 동작을 반복함으로써 항목값이 몇번 레코드번호에 의해 지정되어 있는지(포인터되어 있는지)를 알 수 있다.
상기 존재수배열을 위한 일련의 처리가 종료되면, 소트된 레코드번호를 격납하는 배열을 작성하기 위해 일련의 메모리모듈에 일정 영역이 확보된다. 이 일련의 메모리모듈을 제4메모리모듈군(2304)이라 한다. CPU(12)는 앞의 처리에 이용한 제3의 메모리모듈군의 출력과, 제4의 메모리모듈군의 입력을 버스(「제3의 버스」라 함)을 통해 접속하도록 스위치(28,30)를 제어한다.
이러한 준비가 종료된 후에 소트처리가 실행된다. 보다 구체적으로는 레코드번호배열의 선두부터 레코드번호가 제1버스를 통해 제2메모리모듈군을 구성하는 메모리모듈에 부여된다. 제2메모리모듈군중의 소정의 메모리모듈에 있어서는 MPU(36)가 레코드번호의 수리에 응답해서 포인터값을 제2버스를 통해 제3모듈군에 전달한다.
계속해서, 제3메모리모듈군 중, 소정으 메모리모듈에 있어서, MPU(36)가 포인터값에 기초하여 관련된 존재수배열을 참조해서 레코드번호의 격납위치를 결정한다. 이것에 의해, 레코드번호 및 그 격납위치가 해당 메모리모듈로부터 제3버스에송출된다. 따라서 제4메모리모듈군의 소정의 메모리모듈에 있어서 MPU(36)가 레코드번호를 소정의 격납위치에 배치한다. 이 처리를 반복함으로써 제4메모리모듈군에 소트된 레코드번호의 배열(도 24의 부호(2410))을 작성할 수 있다.
예를 들면 도 23에 나타낸 처리를 파이프라인처리로 할 수 있다. 즉, 제1버스에 있어서, 어떤 레코드번호「p」가 전달되어 있을 때, 제2버스에 있어서는 레코드번호「p-1」에 관한 포인터값「P(p-1)」이 전달될 수 있다. 또, 마찬가지로, 도 24에 나타낸 처리도 파이프라인처리로 할 수 있다. 이 경우에도 제1버스에 있어서, 어떤 레코드번호「p」가 전달되어 있을 때, 제2버스에 있어서는 레코드번호「p-1」에 관한 포인터값「P(p-1)」이 전달될 수 있다. 또한, 같은 타이밍으로 제3버스에 있어서는 레코드번호「p-1」에 관한 격납위치가 전달될 수 있다.
이러한 파이프라인처리의 처리시간에 대해서 이하와 같은 결과가 얻어졌다. 먼저, 도 23의 처리에 관해서 제1버스 내지 제4버스가 각각 128비트이며, 각각 12.8GB/초의 전송능력이 있다라고 생각하고, 또, 레코드번호나 포인터값이 각각 32비트정수이다라고 가정했다. 레코드수가 10억개인 경우에 상기 처리에서는 40억바이트의 전송이 발생하지만, 파이프라인처리를 실행하기 위해서 4G/12.8G=0.3125초로 완료하는 것을 알 수 있었다.
마찬가지로, 도 24의 처리에 관해서 동일한 전송능력 및 데이터 사이즈를 가정하면, 레코드수가 10억개인 경우에, 80억바이트의 전송이 발생하지만, 본 실시형태에 의하면 파이프라인처리의 실행에 의해 8G/12.8G=0.625초로 처리를 완료할 수 있다.
[다공간메모리 및 재구성가능한 버스의 이용:소트(그 2)]
다음에, 다른 방법에 의한 소트처리에 대해서 간단하게 설명한다. 이 소트처리에 있어서도 먼저, 레코드번호배열을 격납한 메모리모듈로 이루어진 제1메모리모듈군(도 26의 부호2601참조)의 출력과, 제1버스가 접속되며, 또한 값리스트로의 포인터배열을 격납한 메모리모듈로 이루어진 제2메모리모듈군(2602)의 입력이 제1버스와 접속된다. 이것에 의해 제1메모리모듈군(2601)의 출력이 제1버스를 통해 제2메모리모듈군(2602)에 전달가능하게 된다.
한편, 제2메모리모듈군(2602)과, 동일한 수의 공간ID를 갖는 배열의 영역이 제3메모리모듈군(2603)에 확보됨과 동시에 제2메모리모듈군(2602)의 출력과, 제3메모리모듈군의 입력이 제2버스를 통해 접속된다.
계속해서, 제1메모리모듈군(2601)에 있어서, 어떤 레코드번호를 수용하는 메모리모듈의 MPU(36)가 해당 레코드번호를 제1버스에 송출하면, 제2메모리모듈군(2602)의 소정의 메모리모듈에 있어서, MPU(36)가 이 수리에 응답해서 대응하는 포인터값으로부터 공간ID를 산출하고, 레코드번호 및 공간ID를 제2버스에 송출한다.
제3메모리모듈군에 있어서, 해당 공간ID 및 레코드번호에 기초하여 소정의 메모리모듈(36)이 기동하고, 해당 공간ID를 갖는 배열의 말미에 부여된 레코드번호를 배치한다. 이러한 처리를 모든 레코드번호에 대해서 실행한 후에, 제3메모리모듈군에 있어서 각 메모리모듈의 MPU(36)는 자기가 갖는 배열을 결합하기 위한 처리를 실행한다. 이러한 방법에 의해서도 고속의 소트처리를 실현할 수 있다.
[다공간메모리 및 재구성가능 버스의 이용:검색(그 1)]
또, 본 실시형태에 있어서는 다공간메모리 및 재구성가능 버스를 이용함으로써, CPU(12)로부터의 단일 명령에 기초하여 병렬적으로 검색처리를 실행할 수 있다.
도 27 및 도 28은 본 실시형태에 따른 검색처리의 흐름을 설명하기 위한 도이다. 이 검색처리를 위해 레코드번호배열, 값리스트로의 포인터배열, 값리스트 및 후술하는 가부플래그배열 등이 이용된다. 따라서, 이 예에서도 도 25와 같이, 레코드번호, 포인터값, 항목값의 순으로 값이 참조되도록 되어 있다.
먼저, CPU(12)가 필요한 명령을 제어신호라인(25)을 통해 각 메모리모듈(14)에 부여되면, 각 메모리모듈에서 도 11의 스텝1101 내지 스텝1106에 대략 동등한 처리가 실행된다. 또, 관련된 메모리모듈 중, 값리스트를 격납한 메모리모듈로부터의 통지에 따라 CPU(12)는 값리스트를 격납한 일련의 메모리모듈(제1메모리모듈군(2701))의 출력을 어떤 버스(「제1버스」라 함)에 접속하도록 스위치(28,30)를 제어한다. 또한 그렇게 소수가 값리스트의 것과 같은 가부플래그배열을 위한 영역이 일련의 메모리모듈(제2메모리모듈균(2702)에 확보되며, 해당 제2메모리모듈(2702)에 속하는 각 메모리모듈의 MPU(36)가 해당 영역의 요소를 「0」으로 초기화한다.
계속해서, 제2메모리모듈군(2702)의 입력이 제1버스에 접속된다. 계속해서, CPU(12)로부터 부여된 검색조건에 따라서 제2메모리모듈군의 각 메모리모듈에 있어서, MPU(36)가 값리스트중의 검색조건에 합치하는 항목값의 위치를 참조해서 가부플래그배열의 대응하는 값을 「1」로 셋트한다. 예를 들면, 검색조건이 범위이면 2분할법 등을 이용하면 좋다. 또, 그 외의 조건이면 요소마다 그 가부를 판단하면 좋다.
이러한 처리가 종료된 후에 검색이 실행된다. 먼저, 레코드번호배열을 격납한 일련의 메모리모듈(제3메모리모듈군(2703)의 출력을 제1버스에 접속하는 동시에, 값리스트로의 포인터배열을 격납한 일련의 메모리모듈(제4메모리모듈군(2704)의 입력을 제1버스에 접속하도록 CPU(12)는 스위치(28,30)를 제어한다. 또, 제4메모리모듈군(2704)의 출력을 제2메모리모듈군(2702)의 입력을 제2버스와 접속하도록 CPU(12)는 스위치(28,30)을 제어한다.
또한, 레코드번호의 요소수와 같은 요소수를 갖는 배열을 위한 영역이 일련의 메모리모듈(제5메모리모듈(2705)에 확보되고, CPU(12)는 그 입력과, 제2메모리모듈군(2702)의 출력이 제3버스를 통해 접속되도록 스위치(28,30)를 제어한다.
이러한 처리후에 레코드번호배열의 선두로부터 순서대로 레코드번호가 제1버스에 송출된다. 이것은 제3메모리모듈군(2703)에 있어서, 각 메모리모듈의 MPU(36)가 공간ID관리테이블을 참조해서 자기가 제1버스에 데이터를 출력하는 타이밍을 검출해서 소정의 레코드번호를 송출함으로써 실현된다.
레코드번호는 제1버스를 통해, 제4메모리모듈군(2704)을 구성하는 메모리모듈의 각각에 부여된다. 각 메모리모듈의 MPU(36)는 자기의 공간ID관리테이블을 참조해서 자기가 관리하는 값리스트로의 포인터배열에 관련된 레코드번호가 입력된 것을 검출하고, 수리한 레코드번호 및 해당 입력에 대응하는 포인터값을 제2버스에송출한다.
포인터값은 레코드번호와 함께, 제2버스를 통해 제3메모리모듈군을 구성하는 메모리모듈의 각각에 부여된다. 각 메모리모듈의 MPU(36)는 자기의 공간ID관리테이블을 참조해서 자기가 관리하는 가부플래그배열의 위치와 같은 위치를 나타내는 포인터값이 부여된 것을 검출하고, 해당 포인터값이 나타내는 가부플래그가 「0」인지 「1」인지를 판단한다. 계속해서, 가부플래그가 「1」인 경우에는 관련된 레코드번호가 제3버스를 통해 제5메모리모듈군(2705)에 부여된다.
제5메모리모듈군(2705)에 있어서는 각 메모리모듈의 MPU(36)는 자기의 공간ID관리테이블을 참조해서 자기가 관리하는 히트정보격납용 배열의 위치와 같은 위치를 나타내는 레코드번호가 부여된 것을 검출하고, 그 위치의 요소를 「1」로 한다. 이러한 처리를 소정의 레코드번호에 관해서 반복하고, 히트정보격납용 배열에서 「1」인 요소를 취출함으로써 검색이 완료된다.
소트처리와 마찬가지로, 상기 검색처리에서도 도 27을 참조해서 설명한 처리, 및 도 28을 참조해서 설명한 처리를 각각 파이프라인처리로 실현할 수 있다. 검색처리에서의 파이프라인처리의 처리시간에 대해서 이하와 같은 결과가 얻어졌다.
버스의 전송능력, 및 각 요소의 비트수는 소트처리와 동일하다. 레코드수가 10억개의 경우에 상기 검색처리에서는 80억 바이트의 전송이 발생하지만, 파이프라인처리를 실행하기 위해 8G/12.8G=0.624초로 완료하는 것을 알 수 있었다.
또한, 본 검색처리를 이용하면 AND, OR 또는 NOT 등을 조합한 복수항목의 검색을 실현할 수도 있다. 보다 구체적으로는 각 항목에 대해서 히트정보격납용 배열을 작성하고, 이들 배열의 요소간에서의 논리연산을 행하면 좋다.
예를 들면, 2개의 항목의 AND 또는 OR검색에서는 히트정보격납용 배열의 요소의 전송(10억바이트)이 행해진다. 따라서, 그 처리시간은 (10/G/8)/12.8G=0.098초만큼 필요하다는 것을 이해할 수 있다.
또, 더욱 고속화를 꾀하기 위해, AND검색의 경우에는 2개의 검색처리를 실행하는 메모리모듈군을 종렬로 접속하면 좋다. 또, 제4메모리모듈군과 제2메모리모듈군을 동일한 복수의 메모리모듈로 구성할 수 있도록 배열을 배치하면 보틀넥을 해소할 수 있고, 이것에 의해 대략 2배의 처리속도를 얻을 수 있게 된다.
본 발명은 이상의 실시형태에 한정되는 것은 아니고, 특허청구의 범위에 기재된 발명의 범위내에서 여러가지 변경이 가능하며 이들도 본 발명의 범위내에 포함되는 것임은 말할 필요도 없다.
예를 들면, 상기 실시형태에 있어서는 본 발명을 컴퓨터시스템에 적용하고 있지만 이것에 한정되는 것은 아니고, 퍼스널컴퓨터 등에 접속가능한 컴퓨터보드에 적용할 수도 있다. 이 경우에는 도 1에 있어서, CPU(12), 메모리유닛(14), 버스(24) 등이 보드상에 탑재되고 이것이 본 발명에 있어서의 정보처리유닛을 구성한다.
또, CPU(12)와 메모리모듈(14)사이, 및/또는 메모리모듈(14)사이를 접속하는 버스조의 수는 상기 실시형태에 한정되는 것은 아니고, 컴퓨터시스템을 탑재하는 회로기판의 크기, 각 버스의 비트수 등을 고려해서 적절히 결정할 수 있다. 또, 상기 실시형태에 있어서는 메모리모듈의 입출력과 버스의 접속을 규정하기 위한 스위치(28)와, CPU와 메모리모듈사이, 메모리모듈사이에서 버스가 절단할 수 있는 스위치(30)를 설치하고 있다. 스위치(30)를 설치함으로써, 예를 들면 어떤 버스(도 1의 버스(24-4) 참조)를 CPU모듈(12)과 메모리모듈(14-1)의 데이터주고받기를 위해 이용하는 동시에, 메모리모듈(14-2)과 메모리모듈(14-3)사이의 데이터주고받기를 위해 이용할 수 있다(이 경우에, 스위치(30-5)를 오프로 하면 좋다). 따라서, 보다 유효하게 버스를 이용하는 것이 가능하게 되었다. 그러나, 버스의 조를 수를 충분하게 크게 할 수 있는 경우, 또는 메모리모듈의 수가 비교적 적은 경우에는 스위치(30)를 반드시 설치하지 않아도 좋다.
또, 본 명세서에 있어서, 제어신호라인(25)을 통해 CPU(12)로부터의 명령이 부여되는 것을 기재했지만, 제어신호라인(25)을 통해 명령외에 클럭 등, 각 메모리모듈이 동기해서 작동하기 위한 여러가지 제어신호가 부여되며, 또한 각 메모리모듈로부터 CPU(12)로의 소정의 신호(예를 들면 에러신호나, 데이터수리를 나타낸 신호)가 부여되어 있는 것은 말할 필요도 없다.
또한, 본 명세서에 있어서, 하나의 수단의 기능이 둘이상의 물리적수단에 의해 실현되어도 또는 둘이상의 수단의 기능이 하나의 물리적 수단에 의해 실현되어도 좋다.
본 발명에 의하면, 분산메모리형에 있어서, 단일명령에 의해 여러가지 메모리에 기억된 배열중의 요소를 입출력하고, 현저하게 고속인 병렬처리를 실현할 수 있는 컴퓨터구조를 제공하는 것이 가능하게 된다.
본 발명은 특히 대량의 데이터를 관리하는 시스템, 예를 들면 데이터베이스, 데이터웨어하우스에 이용할 수 있다. 보다 구체적으로는 대규모의 과학기술계산, 수발주관리나 증권거래 등의 기간업무관리, 사무관리에 이용할 수 있다.

Claims (11)

  1. CPU모듈과, 각각이 MPU 및 RAM코어를 보유하는 복수의 메모리모듈과, 상기 CPU와 메모리모듈의 접속, 및/또는 메모리모듈사이의 접속을 이루는 복수조의 버스를 구비하고, CPU로부터 각 메모리모듈의 MPU에 부여되는 명령에 의해 각 메모리모듈의 MPU가 작동하도록 구성된 병렬 컴퓨터의 구조로서,
    소정의 관련을 갖는 일련의 데이터에 공간ID가 부여되고, 각 메모리모듈의 MPU가 적어도 해당 공간ID, 자기가 관리하는 일련의 데이터 부분에 관한 논리어드레스, 해당 부분의 사이즈, 및 일련의 데이터 사이즈를 포함하는 테이블을 관리하고, 또한,
    각 메모리모듈의 MPU가 수리한 명령에 자기가 관리하는 일련의 데이터 부분이 관여하고 있는지의 여부를 판단해서 RAM코어에 기억된 데이터를 판독해서 버스에 송출하고, 버스를 통해 부여된 데이터를 RAM코어에 기입하고, 데이터에 필요한 처리를 실시하고, 및/또는 상기 테이블을 갱신하도록 구성된 것을 특징으로 하는 병렬 컴퓨터의 구조.
  2. 제1항에 있어서, 상기 MPU는 CPU로부터 부여된 공간ID를 자기가 관리하는 1이상의 일련의 데이터공간ID와 비교하는 공간컴퍼레이터;
    CPU로부터 부여된 논리어드레스와, 자기가 관리하는 데이터 부분의 논리어드레스를 비교하는 어드레스 컴퍼레이터; 및
    해당 논리어드레스에 기초하여, 자기의 RAM셀상의 물리어드레스를 산출하는 어드레스 캘큐레이터를 보유하는 것을 특징으로 하는 병렬 컴퓨터의 구조.
  3. 제1항 또는 제2항에 있어서, 상기 메모리모듈의 각각이 CPU모듈 및 다른 메모리모듈과의 동기를 이루기 위한 동기신호를 수용하고, 또한,
    상기 복수조의 버스 중 어느 하나와의 접속이 가능한 입력과, 상기 복수조의 버스의 다른 어느 하나와의 접속이 가능한 출력을 구비하고, 적어도 상기 동기신호에 따라서 상기 어느 하나의 버스와 입력의 접속에 의해 데이터를 입력하면서 상기 다른 어느 하나의 버스와 출력의 접속에 의해 데이터를 출력할 수 있도록 구성된 것을 특징으로 하는 병렬 컴퓨터의 구조.
  4. 제3항에 있어서, 상기 복수조의 버스의 각각에, 상기 CPU모듈과 어느 하나의 메모리모듈의 입력 또는 출력사이, 및/또는 다른 어느 하나의 메모리모듈의 입력 또는 출력과, 또 다른 메모리모듈의 출력 또는 입력사이의 접속을 규정하기 위한 스위치가 설치되며,
    상기 스위치의 전환에 의해 복수조의 버스의 각각에 있어서, 병렬적으로 데이터의 주고받음이 실현되는 것을 특징으로 하는 병렬 컴퓨터의 구조.
  5. 제4항에 있어서, 상기 복수조의 버스 중 어느 하나인 제1버스에 어느 하나의 메모리모듈의 출력과, 다른 어느 하나의 메모리모듈의 입력이 접속되며, 또한 상기복수조의 버스 중, 다른 어느 하나인 제2버스에 상기 다른 어느 하나의 메모리모듈의 출력과 또 다른 어느 하나의 메모리모듈의 입력이 접속되며, 제1버스에 있어서의 데이터의 주고받음과, 제2버스에 있어서의 데이터의 주고받음이 병렬적으로 진행되는 것을 특징으로하는 병렬 컴퓨터의 구조.
  6. 제5항에 있어서, 상기 버스와 메모리모듈사이의 접속을 반복해서 다단의 메모리모듈사이의 접속을 형성하는 것을 특징으로 하는 병렬 컴퓨터의 구조.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 MPU가 일련의 데이터중의 특정 요소를 삭제하고, 상기 일련의 데이터중에 특정 요소를 삽입하고, 또는 일련의 데이터의 말미에 특정 요소를 추가하는 것을 나타내는 명령을 수리하면 테이블을 참조해서 자기가 관리하는 데이터의 영역과, 삭제 삽입 또는 추가에 관한 요소의 위치를 비교해서 그 비교결과에 따라 상기 테이블의 내용을 갱신하는 것을 특징으로 하는 병렬 컴퓨터의 구조.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 MPU가 부여된 명령에 응답해서 일련의 데이터중의 요소를 특정하기 위한 첨자를 변환하고, 및/또는 요소에 특정의 수식을 부여하는 값변환을 실행하는 것을 특징으로하는 병렬 컴퓨터의 구조.
  9. CPU모듈과, 각각이 MPU 및 RAM코어를 갖는 복수의 메모리모듈과, 상기 CPU와 메모리모듈의 접속 및/또는 메모리모듈사이의 접속을 이루는 복수조의 버스를 구비하고, CPU로부터 각 메모리모듈의 MPU에 부여되는 명령에 의해 각 메모리모듈의 MPU가 작동하도록 구성된 정보처리유닛으로서,
    소정의 관련을 갖는 일련의 데이터에 공간ID가 부여되며, 각 메모리모듈의 MPU가 적어도 해당 공간ID, 자기가 관리하는 일련의 데이터 부분에 관한 논리어드레스, 해당 부분의 사이즈 및 일련의 데이터 사이즈를 포함하는 테이블을 관리하고, 또한,
    각 메모리모듈의 MPU가 수리한 명령에 자기가 관리하는 일련의 데이터 부분이 관여하고 있는지의 여부를 판단해서 RAM코어에 기억된 데이터를 판독해서버스에 송출하고, 버스를 통해 부여된 데이터를 RAM코어에 기입하고, 데이터에 필요한 처리를 실시하고, 및/또는 상기 테이블을 갱신하도록 구성된 것을 특징으로 하는 정보처리유닛.
  10. 제9항에 있어서, 상기 CPU모듈이 레거시메모리, 입력장치 및 표시장치를 상호 접속하는 다른 버스와 연결가능하게 구성된 것을 특징으로 하는 정보처리유닛.
  11. 제9항에 기재된 정보처리유닛과, CPU모듈과 다른 버스를 통해 연결된 1이상의 레거시메모리를 포함하는 기억장치, 입력장치 및 표시장치를 보유하는 것을 특징으로 하는 컴퓨터시스템.
KR1020027003544A 1999-09-17 2000-09-01 병렬 컴퓨터 및 이를 이용한 정보처리유닛 KR100719872B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP26379399A JP4317296B2 (ja) 1999-09-17 1999-09-17 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット
JPJP-P-1999-00263793 1999-09-17

Publications (2)

Publication Number Publication Date
KR20020064285A true KR20020064285A (ko) 2002-08-07
KR100719872B1 KR100719872B1 (ko) 2007-05-18

Family

ID=17394340

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027003544A KR100719872B1 (ko) 1999-09-17 2000-09-01 병렬 컴퓨터 및 이를 이용한 정보처리유닛

Country Status (9)

Country Link
US (1) US7185179B1 (ko)
EP (1) EP1244020B1 (ko)
JP (1) JP4317296B2 (ko)
KR (1) KR100719872B1 (ko)
CN (1) CN100401270C (ko)
AT (1) ATE357694T1 (ko)
CA (1) CA2385079C (ko)
DE (1) DE60034065D1 (ko)
WO (1) WO2001022229A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100732426B1 (ko) * 2000-02-29 2007-06-27 후지쯔 가부시끼가이샤 고속 컨텍스트 전환을 갖는 컴퓨터
KR100843491B1 (ko) * 2004-07-30 2008-07-04 인터내셔널 비지네스 머신즈 코포레이션 메모리 서브시스템, 버스 속도 멀티플라이어의 제공 방법 및 저장매체

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7352766B2 (en) * 2002-03-12 2008-04-01 Alcatel Lucent High-speed memory having a modular structure
US7039769B2 (en) 2002-05-30 2006-05-02 International Business Machines Corporation Direct addressed shared compressed memory system
JP3826859B2 (ja) * 2002-08-19 2006-09-27 ソニー株式会社 情報処理方法とその方法を実現するプログラム及び記録媒体
CA2521363A1 (en) * 2003-04-16 2004-10-28 Shinji Furusho Information processing system and information processing method
US20070174843A1 (en) * 2003-10-24 2007-07-26 Shinji Furusho Distributed memory type information processing system
JP4511469B2 (ja) * 2003-10-27 2010-07-28 株式会社ターボデータラボラトリー 情報処理方法及び情報処理システム
JP4772506B2 (ja) * 2003-12-25 2011-09-14 株式会社ターボデータラボラトリー 情報処理方法、情報処理システムおよびプログラム
US8200913B2 (en) 2004-01-29 2012-06-12 Turbo Data Laboratories, Inc. Distributed memory type information processing system
CN101495973A (zh) * 2006-06-09 2009-07-29 迅龙国际集团有限公司 N^n数据管理、访问、存储、传输、交换和检索系统(数据集中管理)
US8917165B2 (en) * 2007-03-08 2014-12-23 The Mitre Corporation RFID tag detection and re-personalization
US9665483B2 (en) * 2013-09-30 2017-05-30 Alcatel Lucent Method and apparatus for bit-interleaving
US10061590B2 (en) * 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
WO2016163421A1 (ja) * 2015-04-08 2016-10-13 国立大学法人奈良先端科学技術大学院大学 データ処理装置
US20210389151A1 (en) * 2020-06-13 2021-12-16 Megan Marie Braley Micromobility navigation system with integrated responsiveness to user demographic data
WO2022047422A1 (en) * 2020-08-31 2022-03-03 Botimer Jacob Inter-layer communication techniques for memory processing unit architectures

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2742035A1 (de) * 1977-09-19 1979-03-29 Siemens Ag Rechnersystem
WO1984002784A1 (en) * 1982-12-30 1984-07-19 Ibm Virtual memory address translation mechanism with controlled data persistence
GB2168182A (en) * 1984-12-05 1986-06-11 Conic Corp Data-driven processor
JPS6222142A (ja) * 1985-07-19 1987-01-30 Sekisui Chem Co Ltd 記憶装置
JP2967928B2 (ja) * 1987-06-19 1999-10-25 日本電信電話株式会社 並列プロセツサ
EP0408810B1 (en) * 1989-07-20 1996-03-20 Kabushiki Kaisha Toshiba Multi processor computer system
US5490260A (en) * 1990-12-14 1996-02-06 Ceram, Inc. Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size
JPH0667846A (ja) * 1992-08-18 1994-03-11 Hitachi Ltd 半導体記憶装置
JP3098344B2 (ja) * 1992-12-18 2000-10-16 富士通株式会社 データ転送処理方法及びデータ転送処理装置
JP3489157B2 (ja) * 1993-11-26 2004-01-19 株式会社日立製作所 分散共有メモリシステムおよび計算機
JP3604176B2 (ja) * 1994-09-14 2004-12-22 株式会社東芝 仮想空間管理方法及び分散処理システム
JPH10143489A (ja) * 1996-11-11 1998-05-29 Hitachi Ltd 情報処理システム
US6226738B1 (en) * 1997-08-01 2001-05-01 Micron Technology, Inc. Split embedded DRAM processor
JP3385353B2 (ja) 1999-01-25 2003-03-10 独立行政法人産業技術総合研究所 官能基を有する環状ケイ素化合物

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100732426B1 (ko) * 2000-02-29 2007-06-27 후지쯔 가부시끼가이샤 고속 컨텍스트 전환을 갖는 컴퓨터
KR100843491B1 (ko) * 2004-07-30 2008-07-04 인터내셔널 비지네스 머신즈 코포레이션 메모리 서브시스템, 버스 속도 멀티플라이어의 제공 방법 및 저장매체

Also Published As

Publication number Publication date
EP1244020A4 (en) 2003-01-15
EP1244020A1 (en) 2002-09-25
JP4317296B2 (ja) 2009-08-19
ATE357694T1 (de) 2007-04-15
KR100719872B1 (ko) 2007-05-18
EP1244020B1 (en) 2007-03-21
DE60034065D1 (de) 2007-05-03
WO2001022229A1 (fr) 2001-03-29
US7185179B1 (en) 2007-02-27
JP2001092796A (ja) 2001-04-06
CN1379879A (zh) 2002-11-13
CA2385079C (en) 2009-07-21
CN100401270C (zh) 2008-07-09
CA2385079A1 (en) 2001-03-29

Similar Documents

Publication Publication Date Title
KR100719872B1 (ko) 병렬 컴퓨터 및 이를 이용한 정보처리유닛
US5566321A (en) Method of managing distributed memory within a massively parallel processing system
CA2152752C (en) Multiprocessor system for locally managing address translation table
CN104854568A (zh) 用于更新远程处理节点中的地址转换数据结构的转换管理指令
EP1233332A1 (en) Information processing system
Johnson Extending the scalable coherent interface for large-scale shared-memory multiprocessors
JP4673299B2 (ja) 情報処理方法及び情報処理システム
US5710932A (en) Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
JPWO2005041067A1 (ja) 情報処理方法及び情報処理システム
Hiraki et al. Overview of the JUMP-1, an MPP prototype for general-purpose parallel computations
JP4620593B2 (ja) 情報処理システムおよび情報処理方法
US4969085A (en) Memory module for a memory-managed computer system
JP4511464B2 (ja) 情報処理システムおよび情報処理方法
JP4559971B2 (ja) 分散メモリ型情報処理システム
EP0326164A2 (en) Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
Dennis et al. Research directions in computer architecture
JP2005285042A (ja) データ一括転送方法および装置
Admiral et al. Distributed store allocation and file management for transputer networks
Topham A Parallel Vector Processing System
Lenahan et al. Performance of Cooperative Loosely Coupled Microprocessor Architectures in an Interactive Data Base Task
Guzman AHR: a parallel computer for pure lisp
Lam et al. The IMS data storage hierarchy- DSH-I
Michel et al. Microprocessor-based disc system
YEE et al. 178 Transputer Research and Applications 6 S. Atkins and AS Wagner, Eds. IOS Press, 1993

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20100211

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130312

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee