KR102114942B1 - 동적으로 건립가능한 컴퓨터 시스템 - Google Patents

동적으로 건립가능한 컴퓨터 시스템 Download PDF

Info

Publication number
KR102114942B1
KR102114942B1 KR1020147032964A KR20147032964A KR102114942B1 KR 102114942 B1 KR102114942 B1 KR 102114942B1 KR 1020147032964 A KR1020147032964 A KR 1020147032964A KR 20147032964 A KR20147032964 A KR 20147032964A KR 102114942 B1 KR102114942 B1 KR 102114942B1
Authority
KR
South Korea
Prior art keywords
mentor
domain
processors
data
cpu
Prior art date
Application number
KR1020147032964A
Other languages
English (en)
Other versions
KR20150014464A (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 KR20150014464A publication Critical patent/KR20150014464A/ko
Application granted granted Critical
Publication of KR102114942B1 publication Critical patent/KR102114942B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/765Cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

결함-감내성 컴퓨터 시스템 아키텍처는 2개 유형의 작동 영역들: 데이터 및 인스트럭션들을 프로세싱하는 종래의 제1 도메인(DID); 및 데이터, 알고리즘들 및 보호 규칙 세트들(protective rule sets)을 포함하지만 이에 한정되지 않는 "메타 정보"에 따라 상기 DID를 멘토링하기 위한 멘토 프로세서들을 포함하는 신규한 제2 도메인(MM 도메인);을 포함한다. "멘토링(mentoring)"이라는 용어는, (하기에서 정의되는 바와 같이) 여러가지 중에서도, 규칙 세트들을 강제하도록 메타 정보를 적용 및 이용함 및/또는 추상화 및 가상화를 동적으로 건립함으로써 상기 DID 안의 자원들이 특히 효율성 및 결함 감내성을 위하여 조정됨(shuffled around)을 일컫는다. 메타 멘토 프로세서들은, 하드웨어 및 소프트웨어 엔티티들로 그리고 그것들로부터 신호들을 라우팅하는 결함 감내성 멘토 스위치들에 의해 시스템들 및 서브-시스템들을 생성한다. 생성된 시스템들 및 서브-시스템들은, 실행되는 프로세스들에 의해 정의되는 바와 같이 따로따로 또는 동시에 작동될 수 있는 별개의 서브-아키텍처들 및 유일한 구성들(unique configurations)이다.

Description

동적으로 건립가능한 컴퓨터 시스템{Dynamically erectable computer system}
본 발명은, 실행 프로세스들에 의해 정의된 바와 같이 기능적 요구사항 및 성능 요구사항을 충족시키는 컴퓨터 시스템들 및 서브-시스템들을 생성하도록 동적으로 건립되는 개개의 엔티티(entity)들로서 하드웨어 및 소프트웨어 구성요소들을 인식하는 신규하고 유일한 컴퓨터 아키텍처이다.
본 발명은, 전통적 컴퓨터 설계들을, 현존하는 컴퓨터 아키텍처들이 할 수 없는 것을 하는 유일한, 비동기식 분산 프로세스(unique, asynchronous decentralized process)로 대체한다.
상기 아키텍처는 "메타 멘토(Meta Mentor)"라는 용어로 불리며(본 명세서에 "MM"이라고도 불림), 결함-감내성(fault-tolerant), 분산 프로세싱 아키텍처다. 메타 멘토 프로세서들은, 하드웨어 및 소프트웨어 엔티티들로, 그리고 하드웨어 및 소프트웨어 엔티티들로부터 신호들을 라우팅(route)하는 결함-감내성 멘토 스위치들에 의해 시스템들 및 서브-시스템들을 생성한다. 생성된 상기 시스템들 및 서브-시스템들은, 상기 실행 프로세스들에 의해 정의된 바와 같이 따로따로 또는 동시에 작동될 수 있는 별개의(distinct) 서브-아키텍처들 및 유일한 구성들이다.
본 발명에 따르면, 의도적이거나 무작위적인 하드웨어 또는 소프트웨어 작동의 예기치 않은 또는 계획에 없던 임의의 변화가 결함으로 정의된다. 의도적 결함들은, 시스템 또는 구성요소의 계획된 파괴(subversion)를 포함하는 결함들의 카테고리로 간주된다. 이 유형들의 결함들은, 2가지 접근법들, 개개의 구성요소들 및 프로세스들의 규칙 및 역할 기반 정의들, 및 둘째로 구성요소 및 프로세스 특성들을 분석하는 알고리즘들을 이용함에 의해 완화된다. 본 발명에 따르면, 결함 완화는 프로세스 할당 및 시스템 가상화를 통하여 기능 시스템을 동적으로 재구성함으로써 성취된다.
상기 MM 아키텍처는 종래의 하나의 참조 도메인(domain of reference) 너머로 작동된다; MM 시스템들은 종래 시스템들의 데이터 도메인 및 인스트럭션 도메인 둘 모두의 안에서 작동할 뿐만 아니라, 상기 데이터 및 인스트럭션 도메인로부터 독립적이고 별개인 상기 메타 멘토 도메인 안에서도 작동하는바, 아래에서 더 설명되는 바와 같다. 본 문서 전체에 걸쳐 상기 데이터 및 인스트럭션 도메인은 대안으로서 "데이터 및 인스트럭션 도메인" 또는 "DID"로 불린다는 점이 주목되어야 한다.
MM 시스템은 (여분의 구성요소들과는 대조적으로) 이용가능한 구성요소들을 요구하는 비동기식 결함 감내성(asynchronous fault tolerance), 오일러 방진 패러다임(Euler Square paradigms), 정족수-기반 컴퓨팅(quorum-based computing)을 달성하도록 동적으로 재구성될 수 있다. 그것은 동시에 상이한 운영체제들을 실행시킬 수 있으며, (비록 애플리케이션들은 CPU와 바이너리-호환되어야 할 것이지만) 반드시 바이너리-호환되는(binary-compatible) CPU들로 한정되지는 않는다. 상기 시스템은 애플리케이션 소프트웨어의 무결성을 모니터링할 수도 있으며, 사람들, 또는 프로그램들로부터의 승인되지 않은 접근을 방지하고, 멀웨어(malware)의 활동을 기록할 수 있다.
상기 MM 아키텍처의 유일한 설계는, 고전적인 체크포인트 액션(classical checkpoint action) 안의 시스템-상태 정보를 세이브(saving)함으로써 결함들로부터 복구한다. 상기 시스템은 인터럽트, 시스템-컨텍스트 교환(system-context switch), 또는 강제 타임아웃(forced timeout) 동안에 체크포인트(check-pointed)될 수 있다. 하드웨어 고장의 경우에, 상기 시스템 또는 애플리케이션은 자동으로 마지막 체크포인트에서 재시작되며 기능하는 프로세스들을 이용가능한 하드웨어에 재배정한다. 무작위으로 또는 의도적으로 잘못된 애플리케이션들은 "블랙리스트에 올려지고(blacklisted)", 모든 결부된 데이터, 스토리지 사용, 및 상태 정보가 포렌식 분석(forensic analysis)을 위하여 세이브될 수 있다. 상기 잘못된 애플리케이션이 우회되고 오퍼레이터 알림(operator notification)이 보내진 후에, 상기 시스템은 상기 애플리케이션이 시작된 적이 없었던 것처럼 계속해서 기능한다. 하드웨어 또는 소프트웨어 기능부전을 견디고 컴퓨터 바이러스 감염을 방지하는 것에 덧붙여, 배타적 아키텍처 역시 현존하는 운영체제들 및 소프트웨어와 함께 끊임 없이(seamlessly) 기능한다.
상기 메타 멘토 아키텍처를 설명하기 위하여, 종래의 컴퓨터 아키텍처들을 재검토하는 것이 유용할 것인바, 그 종래의 컴퓨터 아키텍처들은 일반적으로 2개의 카테고리들, 폰 노이만(VN) 아키텍처 및 비-폰 노이만 아키텍처로 나뉘어질 수 있다. 대부분의 제조 컴퓨터 시스템들(production computer systems)에는 상기 VN 아키텍처가 내장된다. 도 1을 참조하면, 4개의 구성요소들로 구성된 종래의 VN 아키텍처가 도시되어 있다: (a) 산술 논리 유닛(arithmetic logic unit; ALU) 및 제어 레지스터들(2)을 구비한 프로세싱 유닛; (b) 인스트럭션 레지스터 및 프로그램 계수기(program counter; 3)로 구성된 제어 유닛(상기 ALU 및 상기 제어 유닛은 총괄하여 중앙 프로세싱 유닛으로 호칭되며, 보통 "CPU"(4)라고 불림); (c) 데이터 및 인스트럭션들 둘 모두를 저장하는 공통 메모리(5)(상기 공통 메모리는 6개의 "Mem" 유닛들로 도시됨); 및 (d) 입력 메커니즘(6a) 및 출력(6b) 메커니즘. 본 기술분야의 일부에 따르면 폰 노이만 아키텍처라는 어구는, 저장되는-프로그램 컴퓨터를 의미하는 것으로 진화되어 왔으며, 상기 저장되는-프로그램 컴퓨터에는 인스트럭션들 및 데이터가 상기 공통 메모리 안에 저장되며, 인스트럭션들 및 데이터는, 하나의 데이터 버스를 통하여 2개의 데이터에 접근하는 데 있어서의 물리적인 제약으로 인하여 동시에 접근될 수 없다. 이 제약은 폰 노이만 병목이라고 불리며, 흔히 상기 아키텍처의 한계점으로서 참조된다.
도 2에는 벤 다이어그램으로 표현된 VN 아키텍처가 도시된다. CPU(4)는 상기 시스템(5)과의 교차점을 가진다. 이 다이어그램에서 상기 시스템은 메모리 및 입/출력 장치들로 구성된다. 시동시(at startup)에, 몇몇 이벤트가 상기 CPU를 인터럽트(interrupt)하고, 시작될 프로세스를 위한 주소를 정의하는바, 이로써 개개의 구성요소들의 주소 공간이 정의된다. 이런 의미에서 그것은 순환 논리(circular logic)이다. 상기 CPU는 상기 시스템에 직접적으로 부착되고, 중앙집중식 타이밍 신호(centralized timing signal)는 상기 아키텍처와 함께 모든 구성요소 기능들을 조정(coordinate)한다. 상기 CPU의 주소 공간은 도메인을 정의하는데, 상기 도메인은 상기 CPU가 직접 제어권(direct control)을 가질 수 있는 전체 공간이다. 상기 시스템과 CPU의 교차점은 상기 2개의 엔티티들을 연결하는 회로를 나타낸다.
도 3은 가상화된 아키텍처로 상기 VN 아키텍처가 도시되는 벤 다이어그램이다. 이 구성은 오늘날, 예컨대 존스(Zones), 젠(Zen), 브이엠웨어(Vmware), 및 기타와 같은 여러 용례들에서 보여진다. VN 아키텍처 내에서의 가상화는 소프트웨어 일탈(software aberration)이며, 그 소프트웨어가 기능을 중단하면, 상기 시스템은 도 2로 되돌아간다. 그것은 또한, 상기 CPU와 시스템의 교차점에 의해 정의되는 상호연결 회로를 갖춘 단일 도메인 시스템이다.
도 4를 참조하면, 다른 유형의 컴퓨터 아키텍처인 하버드(H) 아키텍처가 도시된다. 상기 H 아키텍처는, 인스트럭션 및 데이터 정보의 분리에 의해 상기 VN 아키텍처와 차별화된다. 이는 2개 유형의 정보가 물리적으로 분리되며 종종 상이한 포맷을 가진다는 것을 의미한다. 하버드 CPU(4)에 대한 입/출력은 기본적으로 상기 VN 아키텍처에서 활용되고 있는 것과 동일하다. 상기 H 아키텍처의 특질은, 인스트럭션 인출들 및 데이터 접근이 메모리에 대한 단일의 물리적 경로를 두고 경쟁하지 않는다는 점이다. 이 설계에 있어 내포되는(implicit) 것은, 2개의 상이하고 분리된 유형들의 메모리, 데이터 메모리(7) 및 인스트럭션 메모리(8), 및 각 유형의 메모리에 대해 하나씩인 2개의 데이터 경로들(9a 및 9b)이다. 상기 H 아키텍처는 상기 VN 아키텍처보다 빠른 것으로 여겨지는바, 왜냐하면 인스트럭션 및 데이터는 거의 2배 빠르게 획득될 수 있기 때문이다.
도 5에는 상기 H 아키텍처가 벤 다이어그램으로 도시된다. 인스트럭션 시스템(10)과 CPU(4) 사이의 교차점이 보여질 수 있는바, 이는 이 둘을 연결하는 회로를 나타낸다. 마찬가지로, 데이터 시스템(11)과 CPU 사이의 교차점도 연결 회로를 표시한다. 상기 VN 아키텍처에서 보여지는 바와 같이, 상기 CPU로부터 전송된 중앙집중식 타이밍 신호(또는 신호들)은 상기 시스템 안의 모든 구성요소들을 조정한다. 또한 상기 VN 아키텍처 같이, H 아키텍처 주소 공간은 단일 도메인, 즉 데이터 및 인스트럭션 도메인(DID)을 정의하고, 이는 아래에서 더 상세히 설명된다.
상기 하버드 아키텍처는, 인스트럭션 메모리가 읽기 전용이라면 데이터 또는 데이터 메모리가 상기 인스트럭션 메모리를 변경할 수 없도록 설계될 수 있다. 그런데, 누군가 그 인스트럭션들을 변경하기를 원한다면 새로운 인스트럭션들이 상기 데이터 메모리로부터 적재될 것이다. 예를 들어 애플리케이션은 CPU, ALU의 전송 인스트럭션들에 기초하여 그 애플리케이션의 실행 코드를 데이터 메모리로부터 인스트럭션 메모리로 전송할 것이다. 이는, 시스템의 CPU가 의도하지 않은 작업들을 수행하도록 인스트럭션 코드를 변경할 수 있는 멀웨어의 효과를 고려할 때 중요하다.
상기 H 아키텍처는 종종 "메모리 한계(memory bound)"로서 특징지어지는바, 왜냐하면 상기 ALU 안에서의 인스트럭션 세트 실행 속도가 메모리 접근 시간보다 훨씬 더 빠르기 때문이다. 따라서 상기 ALU가 데이터를 프로세싱할 수 있는 속도는 상기 인스트럭션 메모리에 대한 접근 시간에 의해 제한되며, 상기 실행 속도는 상기 메모리 접근 시간에 의해 한계지어진다. 이 문제는 캐시라고 불리는 작은 양의 빠른 메모리를 상기 ALU에 제공함으로써 종종 해결된다. 실제로는 보통 Ll, L2, 및 L3이라고 불리는 3가지 레벨들의 캐시들이 있다.
다른 아키텍처는 H 아키텍처 및 VN 아키텍처 둘 모두를 결합하여 기능하는 CPU가 생성된다. 상기 CPU 내부에서 공통 VN 정보가 데이터 및 인스트럭션 H 카테고리들로 나뉘어진다. 이는 보통 캐시라고 불리는 임시적인 스토리지 구역 내에서 성취된다. 상기 H 아키텍처는 내부 CPU 데이터/인스트럭션들을 취급하며, 상기 VN은 외부 CPU 데이터/인스트럭션 전송들을 취급한다. 인스트럭션 정보는 알고리즘에 기초하여 분할될 수 있다. 간단한 알고리즘 예시는, 인스트럭션에 주소 범위 0-500을 배정하고, 데이터에 501-1000을 배정하는 것이다. 이 규칙은 전자 설계에 의해 결정되며, 제조 후에 절대 변경될 수 없다. 제어 유닛은 주소 공간 0-500에 연결되고, 상기 ALU는 주소 공간 501-1000에 연결된다. 이는, H 아키텍처를 정의하는바, 상기 H 아키텍처에서는 정보의 주소 공간은 도 4에 도시된 바와 같이 논리 정보 또는 데이터 정보 중 하나로 분할된다. 상기 제어 유닛와 상기 ALU 사이의 이 주소 공간은 VN 또는 H 아키텍처에 있어서 일대일 관계(one-to-one relationship)이며, 이는 도 1 및 4에 도시되는 바와 같다.
상기 외부 입력(6a) 모듈 및 출력(6b) 모듈은 도 1 및 6에도 도시된다. 이 모듈들은 CPU 외부의 전자 신호들에 의해 정보를 수신하거나 프로세싱한다. 이 관계는 전자 설계시에 결정되고, 제조 후에 변경될 수 없다. 입/출력, 정보 구역 또는 데이터 구역, 및 제어는 고정된 전자 경로에 의해 결정된다. 어떻게 정보가 인스트럭션 또는 데이터로 분류되는지는, 상기 제어 유닛 및 ALU 내에서 기능하는 소프트웨어 알고리즘들에 의해 결정된다. 상기 데이터 메모리로부터 정보를 요청하는 제어 유닛은 상기 정보를 인스트럭션 정보로 변경할 수 있다.
상기 알고리즘이 실행되는 방식은 상기 전자장치들(electronics)이나 상기 알고리즘에 의해 성취될 수 있다. 상기 알고리즘의 경우에 데이터 및 정보가 무엇인지는, 순환 논리(circular logic)인 상기 알고리즘에 의해 결정된다. 상기 전자장치들은 그 핀들이 연결된 방식에 의해 상기 하드웨어 주소 공간을 정의한다. 그것들은 함께 도메인, DID를 정의한다. 상기 주소 공간은, 모두 정보, 데이터 또는 인스트럭션이며, 상기 알고리즘 또는 전자장치들은 상기 주소 공간 내 알고리즘에 의해 제어할 수 있다. 게다가, 구성요소들 사이에 정보가 교환되는 때에 그 구성요소들은, 그 통신 상태를 정의하는, 모든 장치들에 공통적인 주기적 신호들을 준수한다(adhere). 이는 보통 상기 CPU에 의해 그 도메인 안의 외부 장치들에게 제공되며, 이 신호는 내부 장치들과 타이밍 맞춰진다(timed). 이에 의해 동기식 시스템이 정의되는바, 상기 동기식 시스템에서 클록과 같은 공통적인 주기적 신호는 정보 전송 동안에 구성요소들의 상태들을 지배한다.
기능적으로, CPU는 다른 구성요소들을 가진다. 캐시라고 불리는 임시적 정보 스토리지 구역은, 전형적으로 데이터 및 인스트럭션 정보가 카테고리화되는 곳이다. 예시가 도 7에 도시된다. 상기 L2 캐시(12)는 공통 L3 캐시(13) 및 결부된 요소들로부터 정보를 수신한다. 상기 L3 캐시는 VN 아키텍처이며, 상기 L2 캐시는 H 아키텍처이다. 이 내부 메모리 구성요소들은, CPU 안에 배치된 전자 경로들의 미리 정의된 네트워크로써 고속 메모리 전송들을 생성한다.
다시 도 7을 참조하면, 외부적으로 상기 CPU는 폰 노이만의 아키텍처를 이용한다. 이 아키텍처를 이용하여 상기 CPU는, 상기 CPU 외부에 있는 장치들과의 (정보) 신호들을 발출(emanate), 수신, 및 프로세싱한다. 이 장치들은 보통 내부 장치들보다 느리다. 유연성 및 실제적 고려에 의해 상기 VN 아키텍처는 상기 CPU 외부의 것으로 선택된다. 외부 장치들은 상기 CPU가 어떻게 기능할지를 지시하는 정보를 전기적으로 전송한다. 상기 CPU는 외부 메모리 정보에 관하여, 데이터 및 인스트럭션 정보 둘 모두에 관하여 작동하며, 폰 노이만 기계로서 작동한다. 실제로 데이터는 직접 메모리 접근(direct memory access; DMA)이라고 불리는 프로세스를 통하여 대량으로(in bulk) VN 아키텍처와 H 아키텍처 사이에서 전송된다. 상기 DMA 프로세스는 상기 CPU를 우회하며, 보통의 CPU 읽기/쓰기 프로세스보다 더 빠르게 정보를 전송한다.
다른 컴퓨터 아키텍처는, 태깅된 토큰 또는 데이터 플로(tagged token or dataflow)이라고 불린다. 상기 VN 아키텍처 및 H 아키텍처는, 제어 흐름 아키텍처들로 카테고리화될 수 있으며, CPU, 메모리, 및 그것들의 전송을 특징으로 삼는다. 데이터 플로 시스템들은 이론적으로 프로그램 계수기를 가지지 않으며, 입력 데이터의 인스트럭션 세트에 대한 이용가능성에 의해 프로세스들을 실행한다. 그것은, 뉴런의 일종으로 작용하는 간단한 아키텍처를 가지는 것을 내세우는(professed), 데이터에 의해-주도되는(data-driven) 병렬 컴퓨터, 인공지능 엔진으로 홍보된다. 이 시스템은, 데이터가 도착했다는 신호들에 기초하여 실행하는 여러 레지스터들 또는 프로세서들을 가진다. 데이터 플로 아키텍처는 제어 흐름 아키텍처의 면에서 평가/대조될 수 있다.
도 6a을 참조하면, 제어 흐름 및 데이터 플로 프로그램의 비교가 도시된다. 등식들은 풀려야 할 문제들을 정의한다. 왼쪽에는 종래의 제어 흐름 아키텍처가 도시되고, 오른쪽에는 그 데이터 플로 아키텍처가 도시된다. 실선 화살표 및 선들은 데이터의 흐름과 위치들을 가르킨다. 메모리 프로그램 안에서 각각의 프로세스는, 공통 메모리 위치 내에 그 결과를 저장하며, 상기 공통 메모리 위치는 프로세스들의 세션 안에서 다음 프로세스에 의해 접근된다. 점선 화살표 선들은 인스트럭션 진행을 보여준다. 상기 태킹된 토큰 모델은 데이터를 직접적으로 프로세스 메모리 안으로 위치시킨다. 프로세스가 요구된 입력 토큰들로 가득 찬 때에, 상기 프로세스는 격발(fired)되고 그것의 출력은, 정의된 프로세스들의 입력으로 향하게 되거나 상기 태깅된 토큰 프로세싱 요소 외측의 메모리에 위치된다.
실제로, 상기 데이터 플로 아키텍처는 서로 통신할 수 있는 여러 프로세싱 요소들을 구비한다. 하나의 그러한 프로세싱 요소는 도 6b에 그려지며, 매칭 유닛(matching unit; 21), 인출 유닛(fetching unit; 22), 기능 유닛(functional unit; 23), 및 결부된 메모리(24a 및 24b)로 구성된다. 단일 데이터 플로 기계들 내에서 상기 매칭 유닛 및 인출 유닛은, 단일 메모리를 구비한 가능화 유닛(enabling unit)이라고 불리는 단일 프로세싱 요소로 결합된다. 그런데, 입력 토큰들이 많아지거나 크기가 증가되는 때에 상기 가능화 유닛은, 2개의 메모리 유형들로써 구성되며, 그 각각은 상기 가능화 유닛의 프로세싱 요소에 부착된다. 상기 매칭 유닛은 그것의 메모리 내에 토큰들(데이터)을 저장하고, 상기 인출 유닛으로 보여진 목적 노드의 이용가능성을 체크한다. 이는 그 목적지 주소 및 프로세스 태그에 관한 정보를 요구한다. 프로세스 인스턴스를 위한 토큰들의 전부가 어셈블(assembled)된 때에 그것들은 상기 인출 유닛에 보내어지고, 상기 인출 유닛은 그것들을 노드 서술(node description)과 함께 결합시킨다(이는 인스트럭션의 메모리와 유사함). 상기 노드 서술은 노드들을 위한 메모리 안에 저장되며, 프로세스가 실행되는 기능 유닛 상으로 이 정보가 포워딩(forward)된다.
CPU 내부
상기 VN 아키텍처 및 H 아키텍처는 CPU 설계들에서 보여질 수 있다. 예를 들어 도 7에는 전형적인 CPU를 대표하는 종래의 마이크로프로세서 아키텍처가 도시된다. 도 7에 묘사된 L2 캐시(12)는 유니코어 모듈(Unicore module)에 동기식으로 연결되며, 상기 유니코어 모듈은, L3 캐시(13), 메모리 컨트롤러(14), 신속 경로 기입-연결(Quick path Enter-Connect; 15)(상호-연결(Inter-Connect)), 및 4중 연관 인스트럭션 캐시(Quadruple Associative Instruction Cache; 16)로 구성된다. 상기 인스트럭션 및 데이터 메모리가 상기 L2 캐시를 이용하는 것이 이해될 수 있다. 상기 L2 캐시는, 상기 인스트럭션 캐시에 연결된 하나의 데이터 경로(17)에 공급(feed)하며, 이는 궁극적으로 해독된 인스트럭션 큐(18)에 공급하는데; 다른 경로는 상기 데이터 캐시(19)에 공급한다. 상기 L2 캐시는 하버드 카테고리들로 된 폰 노이만 메모리이며, 상기 유니코어 모듈 안의 L3 캐시를 통하여 다른 폰 노이만 스타일 메모리들과 연결된다. 그렇지만, 상기 다양한 캐시들의 몇몇 가상화가 있으며, 타이밍 신호들 및 주소 공간이 미리 결정된 장치로 보내어지고 미리 결정된 장치로부터 보내어지는 수동 장치들이 있으며, 타이밍 신호들 및 데이터 경로가 변경될 수 없으므로 하나의 장치에 전용되는 단일 목적을 가진 단일 도메인, DID가 정의되는, 상기 변경될 수 없는 타이밍 신호들 및 데이터 경로를 가지는 미리 결정된 장치 내에 정보가 항상 위치된다고 주장될 수 있다. 단일 도메인을 구비한 이 시스템에서 데이터 및 인스트럭션들은 상호교환될 수 있는바, 이로써 계산적 손상 위험(computational corruption hazards)이 생성된다.
도 7에 "L2-TLB"로서 도시되는 변환 색인 버퍼(Translation Lookaside Buffer: TLB; 20)는 물리적 (주(primary)) 폰 노이만 메모리를 참조한다. TLB는 페이지 테이블 엔트리들(page table entries)을 담는 고정된 수의 슬롯들을 구비하며, 상기 페이지 테이블 엔트리들은 가상 주소들을 물리적 주소들에 맵핑한다. 이 공간은 미리 고정된 크기의 페이지들로 분절화(segmented)되는바; 각각의 테이블 엔트리 당 하나의 페이지이다. 상기 TLB는, 상기 TLB가 어디에 배치되었는지에 따라 2개의 모드들, 물리적 주소 및 가상 주소를 가진다. 상기 TLB가 CPU 캐시와 주 메모리 스토리지 사이에 배치된 때에 상기 캐시는 물리적으로 주소지정(addressed)된다. 물리적 주소지정에 있어서, 상기 TLB는 모든 메모리 작동에 관하여 색인(lookup)을 수행하며, 상기 주 메모리 안에 배치된 정보는 상기 캐시로 복사된다.
상기 TLB가 상기 CPU와 캐시 사이에 배치되는 때에 상기 CPU TLB는 캐시 실패(cache miss)가 발생한 때에만 참조된다. 도 7에는 상기 4중 연관 인스트럭션 캐시(16) 및 8중 연관 데이터 캐시(Octruple Associative Data Cache; 19)로 구성된 CPU에 연결되는 L2-TLB가 도시된다. 상기 L2-TLB는 상기 L3-캐시 및 메모리 컨트롤러에도 연결되며, 이는 하이브리드 물리적/가상적 위치의 유형이다.
하버드 아키텍처 CPU는 상이한 접근법을 취한다. 순수한 하버드 아키텍처에서는, 위에서 설명된 바와 같이, 인스트럭션 및 데이터 메모리는 물리적으로 분리되며, 상기 하버드 아키텍처 CPU 외부의 2개의 데이터 경로들 또는 데이터 버스들에서 보여질 수 있는바; 하나는 상기 인스트럭션 메모리에 이르며, 다른 것은 상기 데이터 메모리에 연결되고, 이는 2개의 별개의 캐시 유형들로 이어지는데, 하나는 인스트럭션 메모리를 위한 것이며, 다른 것은 데이터 메모리를 위한 것이다.
순수한 하버드 아키텍처의 여러 상업적 예시들이 있음에도 불구하고, 실제로 대부분의 하버드 아키텍처는 상기 하버드 아키텍처의 수정된 설계들을 이용하는바, 이는 종종 '수정 하버드 아키텍처들'이라고 불린다. 이 수정물에 있어서, 공통 메모리 장치가 이용되고, 데이터 및 인스트럭션 메모리 사이의 분리는 메모리 주소 공간에 의해 분할되며, 물리적인 분리에 의하지 않는다. 이것은 상기 하버드의 아키텍처에 대하여, 공통 메모리 유형의 향상된 성능을 가능하게 한다. 그러나, 현재 CPU들은 전형적으로 상기 CPU 캐시 안에서 상기 데이터 메모리 및 인스트럭션 메모리를 분리한다. 이는, 도 7에서 보여질 수 있는바, 여기에서 정보 신호들은 상기 L2 캐시 인스트럭션 메모리 주소 공간으로부터 상기 4중 연관 인스트럭션 캐시로 통행한다. 도 7에서 또 보여지는 것은, "256"이라는 라벨이 붙은(labeled) 영구적 연결을 통하여 상기 4중 연관 데이터 캐시에 정보를 제공하는 L2 캐시 데이터 메모리 주소 공간이다. 상기 정보가 상기 데이터 캐시 및 상기 인스트럭션 캐시로 분리되면, 나머지 프로세스들은 하버드 아키텍처 같이 작용한다. 도 7에서 또 보여지는 것은, 상기 L2 캐시와 L3 캐시 사이의 영구적 연결인바, 이는 CPU의 내부 구성요소들로부터 CPU 외부 구성요소들로의 경로를 제공한다. 상기 L2로의, 그리고 상기 L2로부터의 정보 경로는 상기 CPU 안에 배치된 장치들에 전용되며, 그 장치들에 타이밍 맞춰진다(timed). 이는 단일 프로세스 도메인, DID를 구성한다.
다중 코어 프로세서들(동종)
도 8a 및 8b를 참조하면, 2개 이상의 중앙 프로세싱 유닛(CPU)들이 단일 칩 안에 패키징될 수 있으며, 2개의 예시들이 도시된다. 이 구성에서 각각의 프로세싱 유닛은 서로 독립적이나, 내부 자원들 및 공통 외부 인터페이스를 공유한다. 다수의 내부 CPU들을 가지는 패키지들에 있어서, 각각의 CPU는 코어로 불린다. 코어들은 위에서 설명된 바와 같이 자원들을 공유한다. 패키지는 많은 코어들을 담을 수 있다. 도 8a 및 8b에는 2개 유형의 이중 코어(CPU) 프로세서들이 도시된다. 도 8a는, 개별의 L1 캐시들(25) 및 공유되는 L2 캐시(26)를 갖춘 이중 코어 프로세서이다. 각각의 코어는 상기 L2 캐시에 직접적으로 연결되며 각각의 I/O 컨트롤은 상기 공유되는 캐시 안의 인스트럭션 및 데이터 메모리를 관리(manage)한다. 도 8b에 도시된 바와 같이, 각각의 코어는 공유되지 않는 개개의 L2 캐시(27)를 구비한다. 각각의 경우에 상기 외부 인터페이스는 메모리 컨트롤러들(28) 또는 버스 인터페이스(29)에 의해 구성되며, 상기 코어 주소 공간에 의해 정의된다.
도 9를 참조하면, 64 코어 CPU가 도시된다. 도 9는, CPU의 수에 이론적인 한계가 없는 듯한 다중 코어 CPU의 사례(representative)인데, 패키지의 제조와 관련된 실제적인 한계는 있다. 도 9의 좌측의 장치들에는 어떻게 이 구성이 상기 CPU 외부의 입력 장치들 및 출력 장치들로, 그리고 그 장치들로부터 정보를 전송하는지가 묘사된다. 상단과 하단에 또 도시된 것은, 물리적 (주) 폰 노이만 메모리를 참조하는 4개의 메모리 컨트롤러들(30)이다. 상기 코어들(31)은 2-D 그물 네트워크를 통하여 그것들 사이에서 전송한다. 도 9는, 그 네트워크 노드에 있어서 5개의 경로들을 가지는바, 각각의 경로는 한 유형의 정보를 전송하는 데 전용된다. 상기 정보는 상기 내부 네트워크 안의 전송 속도를 증가시키기 위하여 구분된다. 각각의 코어에 부착된 것은, 각각의 코어로 그리고 각각의 코어로부터 정보를 전송하고 상기 정보를 5개의 데이터 경로들로 분리하는 목적을 가진 그물 스위치(mesh switch; 32)(도 9, 상세 A)이다. 각각의 CPU 코어의 내부에는 도 9, 상세 B에 도시된 L1 캐시 및 L2 캐시가 있다. 이 특정 사례에서 상기 L1 캐시는 하버드 아키텍처 및 상기 L2 캐시 폰 노이만 아키텍처를 가진다. L1 인스트럭션 및 데이터 TLB는, 상기 L2 캐시 안의 그것들 개별의 메모리 공간을 결정한다. 이 장치의 유일한 특징은 코어들 사이에 L2 캐시를 공유하는, 그 장치의 능력이다.
다중-코어 프로세서들(이종)
단일 CPU 패키지 안의 다수의 코어들의 몇몇 다른 구성들은, 그래픽 프로세싱 유닛들이라고 불리는 것이며, 이에는 CPU에 덧붙여 GPU라고 불리는 유형의 프로세싱 유닛이 채용된다. GPU들은 3D 컴퓨터 그래픽 카드들에 관한 계산들을 행하도록 설계된 장치들이다. 3D 그래픽 계산들은 복잡한 수학적 연산들을 수반하므로, GPU들은 수학적 연산들을 고속 및 고효율로 수행하도록 설계된다. GPU들은 비-그래픽적(non-graphical) 계산들을 수행하는 데에 채용될 수 있다. GPU 설계가 이 목적으로 이용되는 때에 상기 장치는 GPGPU(범용(general purpose) GPU)로 불린다. GPGPU 컴퓨팅을 위한 모델은, CPU 및 GPU를 계층적 이종 컴퓨팅 모델로 함께 이용하는 것이다. 애플리케이션의 순차적 부분(sequential part)은 상기 CPU 상에서 실행되고, 계산-집약적 부분(computationally-intensive part)은 상기 GPU에 의해 가속화된다. 이 이종 모델에서 상기 CPU 및 GPCPU 메모리는 그것의 메모리와 함께, 폰 노이만, 하버드 아키텍처, 또는 수정 하버드 아키텍처로 작동한다.
실제로 애플리케이션(코드)은 호스트 CPU 상에서 시작되는바, 이는 상기 애플리케이션의 계산-집약적 부분들을 GPU에 분산시키는 작업을 맡는다. 상기 애플리케이션의 나머지 부분은 상기 호스트 CPU 상에 남는다. 계산-집약적 기능을 GPU에 맵핑함은 병렬화(parallelizing)라고 불리는 프로세스를 수반한다. GPGPU 장치들의 제조는, 데이터 및 인스트럭션 정보를 GPU로부터 그리고 GPU로 이동시키는 병렬화 프로세스들을 촉진하는 특수 계산 커맨드들(special compute commands)을 제공한다. 상기 애플리케이션을 개발하는 개인은, 이 계산 커맨드들을 이용하여, 쓰레드들이라고 불리는 몇 만개의 인스트럭션 토막들(instruction snippets)을 동시에 GPU들에 보내는(launching) 작업을 맡는다. 상기 GPU 하드웨어는 상기 쓰레드들을 관리하고 쓰레드-스케줄링을 행한다.
도 10을 참조하면, 종래의 GPGPU 및 GPU 아키텍처가 도시된다. 이 설계의 하나의 기능은 입력 알고리즘으로부터 비디오 디스플레이 상의 픽셀 값들을 디스플레이하는 것이다. 호스트(33)는 알고리즘 호출 기하 원시체(algorithm call geometric primitive)를 GPGPU 입력 어셈블러(34)에 송신하는바, 상기 GPGPU 입력 어셈블러(34)는 보통, 컴퓨터 스크린 상의 픽셀 값을 계산하도록 일련의 GPU들을 스케줄링하는 CPU이다. 상기 쓰레드 프로세서는, 상기 픽셀 값을 계산하도록 다양한 쓰레드 이슈(들)(various thread issue(s))를 배정한다. 상기 쓰레드 프로세서 기능은 꽤 복잡해질 수 있는데, 왜냐하면 다양한 셰이딩 및 렌더링 하드웨어 및 소프트웨어를 이용하여 원시체로부터 픽셀로 변환되기 때문인데, 그러나 그 하단선(bottom line)은, 프레임 버퍼(FB) 메모리(35) 안으로 픽셀 값 정보를 인입(deposit)하는 GPU이다. 상기 FB 메모리는 상기 컴퓨터 스크린 상에 디스플레이되고, 그 이미지는 이용자에게 디스플레이된다.
도 10을 다시 참조하면, 상기 호스트로부터의 프로세스는 상기 FB 메모리에 인입되는 픽셀 값들로 변환된다. 호스트로부터 송신된 프로세스는 상기 입력 어셈블러 GPGPU로 라우팅된다. 상기 입력 GPGPU는 상기 쓰레드 스케줄로써 상기 호스트 프로세스를 기능에 의해(by function) 구분하고, 상기 구분된 부-프로세스들을, 프로세싱을 위하여 쓰레드 이슈 하드웨어 및 텍스처 프로세싱 클러스터(TPC)에 배정한다. 사실상, 이 작용은 상기 호스트 프로세스를 개개의 TPC들에 의해 따로따로 프로세싱되는 분절들로 쪼갠다. 그 TPC 출력은, 상기 구분된 부-프로세스와 결부된 정렬된(ordered) 픽셀 값 블록들의 결과로 되는바, 상기 정렬된 픽셀 값 블록들은 상기 쓰레드 프로세서에 의하여 그 결부된 프레임 버퍼 메모리로 라우팅된다. 이런 방식으로 상기 픽셀 값 블록들은 인간이 읽을 수 있는 포맷으로 비디오 디스플레이에 맞춰진다(aligned). 래스터 연산 프로세서(raster operations processor; ROP)는 상기 프레임 버퍼 픽셀 값들에 마지막 손질(touches)을 가한다. 메모리의 시점에서 이 장치 내의 인스트럭션 메모리는 상기 장치의 설계시에 결정되고, 쓰레드 이슈, TPC, 및 Rap 하드웨어의 내부에 거한다. 데이터는 상기 호스트로부터 전달되어 FB 메모리 안으로 인입된다. 이 구성에서 데이터 및 인스트럭션 메모리가 분리되는 곳은 수정 하버드 아키텍처이다.
도 10에 도시된 이종 시스템(heterogeneous system)의 유형은 일반적 컴퓨팅 문제들을 푸는 데에 응용될 수 있다. CPU/GPGPU 응용 컴퓨팅을 위한 기본 프로세스는 그래픽 카드와 동일하며, 여기에 상기 CPU 및 메모리로의 양방향(bi-directional) 버스가 추가된다.
도 11에는 TPC 모듈 및 GPGPU의 기본 프로세스 흐름이 도시된다. 2개 유형의 프로세싱 유닛들, sp(36) 및 tp(37)가 도시된다. 스트림 프로세싱 유닛들(sp) 및 특수 기능 유닛(SPU; 38)은 수학적 연산(the math)을 프로세싱한다. 텍스처 프로세싱 유닛들(tp)은 텍스처링(texturing)을 프로세싱한다. 모든 sp 유닛들은 단일 사이클에 대하여 동일한 기능들을 수행하며, 다수의 값들을 프로세싱하는 단일 프로세서로서 작용한다. tp 유닛들에 대하여 이와 동일하게 말할 수 있다. 상호연결 네트워크(39)는 상기 호스트 및 입력 어셈블러로부터의 데이터 정보 요청들을 상기 쓰레드 프로세서를 통하여 라우팅한다. TPC 프로세스 엔진들은 그것들의 주소 공간을 발생시키고, 상기 상호연결 네트워크는 TPC 주소 공간과 개개의 Rap 및 공유 메모리 사이의 일대일 맵핑을 수행한다. 상기 Rap 및 공유 메모리(L2)는 함께 공유 병렬 메모리(shared parallel memory)로 불린다. 일반화된 컴퓨터로서 이용되는 때에, 프레임 버퍼(40)는 전역 메모리로 불리고, 영구적으로 연결된 공유 메모리를 통하여 전송 순차 그리드들(transferring sequential grids)에 의해 통신한다. 그 메모리 구성은 상기 수정 하버드 아키텍처에 머물며, 여기에서 상기 호스트로부터의 데이터는 입력 어셈블러에 의해 취급되고 위에서 설명된 바와 동일한 방식으로 추가 프로세싱을 위하여 상기 TPC 상으로 전달된다. 일반적 컴퓨팅 문제들을 풀기 위하여 상기 GPU 장치를 이용함으로써, 데이터 정보는 저장 또는 추가 프로세싱을 위하여 상기 호스트로 전달된다.
그리드 컴퓨팅:
그리드 컴퓨팅은, 각각의 도메인이 종래의 DID인 다수의 관리 도메인들로부터의 컴퓨터 자원들의, 공통 목표에 도달하기 위한 결합(combination)을 뜻하는 용어이다. 상기 그리드는, 많은 수의 독립 시스템 DID들을 포함한 비-상호작용적 작업량들(non-interactive workloads)을 가지는 분산 시스템(distributed system)으로 생각될 수 있다. 그것은 고객에게 서비스를 배달하기 위하여 자원들을 공유하는 가스 또는 전력 그리드와 유사하게, 컴퓨팅 자원들을 관련되는 방식으로 공유하는 것이다.
예를 들어. 전기 소비자가 조명을 켜서 필요한 것으로 보이는 것 같은 소스들(sources)로부터 전력을 소비하면, 그가 이용한 것을 그가 지불하는 것이다. 전구는 시스템의 전체 가용 전력의 이용을 요구하지 않으며, 상기 그리드 자원들은 같은 그리드에 부착된 다른 사람들에 의해 공유된다. 그리드 컴퓨팅의 경우에 상기 자원들을 "프론트 엔드(front end)" 및 "백 엔드(back end)"로 분할하는 것이 유용하다. 상기 프론트 엔드는 상기 그리드 자원들을 이용하는 조명을 가진 고객에 유사하며, 상기 백 엔드는 댐들, 발전소들, 송전선들, 및 상기 자원을 상기 조명에 공급하는 제어 시스템들에 유사하다. 컴퓨터의 용어로 말하자면, 백 엔드 그리드 컴퓨팅은, 컴퓨팅/계산적 자원들, 스토리지 자원들, 및 상기 정보를 자원으로부터 자원으로 라우팅하는 제어 시스템들을 포함하는 다양한 컴퓨팅 시스템들을 일컫는다. 그 프론트 엔드는 자원 이용자, PC 또는 MAC이며, 작업, 알고리즘, 또는 다른 요청을 완수하도록 백 엔드 서비스를 요청한다.
컴퓨팅 그리드 상의 각각의 장치는, 종래에는 DID인 개개의 컴퓨팅 자원 도메인에 의해 표현된다. 많은 이러한 자원 도메인들이 있으며, 프론트 엔드 이용자가 그리드 컴퓨팅을 이용하는 애플리케이션을 실행하는 때에; 다수의 시스템 DID로부터의 컴퓨터 자원들의 결합이 공통 목표에 도달하고 단일 프로세스 도메인을 형성하도록 결합된다. 이 결합은 동시에 일어날 수 있거나 동시에 일어나지 않을 수 있다. 프로세스 도메인 수렴(process domain convergence)은 그리드 자원들을 요청하는 프론트 엔드 이용자 및 상기 요청을 생성하는 백 엔드에 의해 성취된다. 자원 공유는 주로 파일 교환이 아니며 오히려 컴퓨터들, 소프트웨어, 데이터, 및 다른 자원들에 대한 직접적 접근(direct access)인바, 이는 그리드 이용자들에 의해서 생겨난 협력적 문제 해결 및 자원 중개 전략들의 범위에 의해 요구되는 바와 같다. 그러한 공유 규칙들에 의해 정의되는 개인들 및/또는 기관들의 집합은, 단일 프로세스 도메인, DID를 이용하는 가상의 조직이라고 불리는 것을 형성한다.
클라우드 컴퓨팅
도 12을 참조하면, 흔히 클라우드 컴퓨터들이라고 불리는 그리드 컴퓨터들의 여러 변형례들이 도시된다. 이용가능한 이 컴퓨터들은, 클라우드, 지원자(volunteer), 네트워크, 유틸리티 등등을 포함하지만, 이것이 모두를 포함한 것은 아니다. 개인적 클라우드 및 공공의 클라우드들이 있으며, 하이브리드 클라우드들, 커뮤니티 클라우드들 등등이 있다. 그리드 컴퓨팅에 있어 한 가지 문제점은 보안이다. 예컨대 패스워드, 전자우편, 또는 파일 정보와 같은 민감한 데이터에 대한 통제권의 상실에 관한 우려, 및 프론트 엔드 이용자의 관리적 통제(administrative control)를 넘어서 익명의 오퍼레이터들(anonymous operators)에 의하여 소유된 원격 저장된 커널들에 대한 보안의 부족이 그리드 컴퓨팅에 대한 문제점이다.
클러스터 컴퓨팅
클러스터 컴퓨팅은, 하나의 유닛으로서 함께 작동하게 2개 이상의 컴퓨터들을 보통 근거리 네트워크들을 통하여 연계(link)시킴, 공통 디스크 공간, 파워, 및 네트워킹과 같은 컴퓨팅 자원들을 공유함으로서 정의된다. 그것은 그리드 컴퓨터와 유사하나, 클러스터 컴퓨팅에 있어서 클러스터 안의 모든 자원들이 전용되며, 긴밀하게 결합되고 로컬 연결(locally connected)된다. 클러스터 컴퓨팅에는 2개의 기본 메모리 모델들이 있는바, 도 13 및 14에 도시된 병렬 모델 및 분산 모델(parallel and distributed models)이 그것이다.
도 13을 참조하면, 병렬 메모리 모델은 프로세서에 영구적으로 부착된 메모리를 갖는다. 공통 작업을 수행하는 데에 필요한 정보는 프로세서 통신을 통하여 전달된다. 이 유형의 클러스터 공유는 공통 메모리(42)를 공유하는 2개 이상의 CPU들(41)을 특색으로 한다. 그것은 공통 메모리 아키텍처 또는 공유 메모리 아키텍처로도 불린다. 이 배치는 위에서 설명된 다중-코어 CPU 또는 GPGPU에 유사하다. 이 구성은, 여러 프로세서들의 버스들을 함께 연결함으로써, 그 공유된 버스 상의 모든 프로세서들에 대한 모든 메모리가 이용가능하거나 오로지 프로세서간(inter-processor) 통신들이 공통 버스를 공유함을 포함한다. 공유 메모리 시스템들은 보통 단일 운영체제로써 작동되는바, 이는 상기 공유 메모리를 구획하는 마스터 프로세서 및 각기 개별의 구획들 안에서 작동하는 여러 슬레이브들로써 작동되거나, 또는 공통의 중재 메모리(common arbitrated memory) 및 프로세스 테이블을 가진 운영체제들의 여러 복사본들을 실행하는 모든 프로세서들로써 작동된다.
분산 클러스터 메모리 구성이 도 14에 도시된다. 각각이 고유의 운영체제를 실행하는 여러 컴퓨터 엔티티들(43)이 서로 네트워크 연결되어 있다. 병렬처리(parallelism)가, 자식 프로세스들을 네트워크 연결된 다른 엔티티에 전달하는 부모 노드들에 의해 성취되며, 상기 네트워크 연결된 다른 엔티티에서 완료된 프로세스가 그 결과를 부모 엔티티에 다시 전달한다.
분산 클러스터 시스템 및 병렬 클러스터 시스템 둘 모두는, 물리적으로 연결된 공통 자원들을 공유한다. 이 공유 자원들은 도 13 및 14의 메모리 모델들 너머, 예컨대 디스크 공간, 네트워킹 자원들, 파워 등등과 같은 공유 주변기기들로 확장된다. 상기 자원들은 서로 네트워크 연결되어 클러스터를 형성한다. 그 물리적 구현은 하나 이상의 유형들의 네트워크 토폴로지들 및 프로토콜들로 성취된다. 토폴로지들은: 점대점, 버스, 스타, 링, 그물, 트리, 하이브리드, 데이지 체인(daisy chain)을 포함한다. 열거된 각각의 유형에 관한 변형례들 중 몇몇은 중앙집중식, 탈중앙집중식, 로컬, 와이드, 논리적, 및 물리적(centralized, decentralized, local, wide, logical, and physical)이다. 클러스터 기술에 적용될 때, 각각의 시스템은 시스템들 사이에서 그리고 공통 자원들에 신호들을 송신하는 데에 네트워크 구성을 활용한다.
한 가지 그러한 네트워크는 스위치 패브릭(switched fabric)이라고 불린다. 도 15에는 그물 토폴로지로 되고 동기식 결함 감내성 시스템으로서 구성된 스위치 패브릭 네트워크가 도시된다. 예를 들어 호스트1(44)은 자원2로부터 서비스들을 요청하고, 그 트랜잭션은, 호스트1이 어떻게 상기 자원을 요청하는지에 따라 스위치(45) 또는 스위치(46) 중 하나를 통하여 전달된다. 한 스위치가 고장(fail)나더라도, 남아있는 스위치를 통하여 모든 트래픽이 라우팅된다. 두 스위치들 모두가 제대로 기능하고 있는 동안에는 상기 시스템은 결함 감내성이지만, 한 스위치가 고장난 다음에는 그 고장난 스위치가 수리될 때까지 상기 시스템은 결함 감내성이 아니다.
도 16에는, 클로스(Clos) 네트워크라고 불리는 다른 유형의 네트워크가 도시된다. 클로스 네트워크는, 클러스터 네트워킹에서 용례가 보여진 다단계 회선 교환망(multi-stage circuit switching network)이다. 이 네트워크는, 호스트들(47)과 자원들(48) 사이에 신호들을 동적으로 라우팅할 수 있는 중간 단계 크로스바 스위치들(middle stage crossbar switches; 49)을 특색으로 한다. 예를 들어 호스트1은 자원2로부터 서비스들을 요청하며, 그 트랜잭션은, 호스트1이 어떻게 상기 자원을 요청하는지에 따라 스위치1 또는 스위치2 중 하나를 통하여 전달된다. 한 크로스바 스위치가 고장나더라도, 남아있는 크로스바 스위치를 통하여 모든 트래픽이 라우팅된다. 모든 크로스바 스위치들이 제대로 기능하고 있는 동안에는 상기 시스템은 결함 감내성이지만, 한 스위치가 고장난 다음에는 그 고장난 스위치가 수리될 때까지 상기 시스템은 결함 감내성이 아니다.
위에서 설명된 종래의 아키텍처들에 덧붙여, 더 많은, 열거하기에 너무 많은 것들이 있다. 그것들 모두는 공통으로 하나의 것을 가지는바; 프로세서 유닛의 주소 공간을 그 범위로 가지는 상기 프로세서의 참조 프레임(frame of reference)에 의해 정의되는 하나의 DID 안에서 작동하는 프로세서 유닛에 의해 모든 프로세서들 및 부-프로세스들이 개시된다는 점이다. 몇몇 경우에 있어서, 부모 프로세스가 부-프로세싱을 위하여 자식 프로세스를 다른 DID에 전달할 수 있다. 상기 자식 프로세스의 DID는, 상기 자식 프로세스를 실행하는 프로세서 유닛의 주소 공간에 의해 정의되는 범위를 가지는, 또 다른 독립적 도메인이다. 심지어 공유 메모리 컴퓨터 아키텍처들에 있어서도 그 참조 프레임은 그 프로세서의 주소 공간에 의해 정의되고 그 주소 공간 내에 있는 데이터 및 인스트럭션들에 대해서만 작동되는바, 이는 하나의 도메인, 데이터 및 인스트럭션 도메인(DID)을 구성한다.
상기 MM 아키텍처는 상기 데이터 및 인스트럭션 정보 주소 공간을 동적으로 정의하고 재정의하는 능력을 가진다. 이는 상기 폰 노이만 아키텍처와 하버드 아키텍처 사이의 차이점(distinction)을 제거하는데, 왜냐하면 이 아키텍처들 둘 모두는 프로세싱 유닛의 관점에서 그것들의 주소 공간을 정의하기 때문이다. 상기 MM 아키텍처는 상기 주소 공간을 논리적으로 정의하는바; 상기 메모리의 물리적 위치를, 관계 없게, 그리고 중앙 프로세싱 유닛의 범위를 넘게 만든다. 게다라, 상기 폰 노이만 아키텍처 및 하버드 아키텍처에서, 프로세싱 유닛 또는 상기 프로세싱 유닛으로부터 발출되는 프로세스는, 언제 그리고 어떻게 그것들의 프로세스들이 실행되는지를 스케줄링한다. 상기 MM 아키텍처는, 상기 DID 안에서 작동하는 슬레이브 프로세서 유닛들(SPU) 상의 프로세스들을 스케줄링하는 하나 이상의 MM 프로세서들을 이용한다. 프로세스들을 위한 모든 요청들은 MM 알고리즘들에 의해 취급 및 스케줄링된다. 게다가 모든 아키텍처들에 있어서 정보는, 모든 장치들에 공통적이고 통신의 상태를 정의하는 주기적 신호들을 준수하는 미리 결정된 경로들을 따르는 구성요소들 사이에서 교환된다. 상기 MM 아키텍처에 있어서 이 경로들은 상기 MM 프로세서에 의해 결정되고, 상기 주기적 신호들은 MM 장치들에 공통적이며 장치들 간의 정보 교환을 비동기식으로 만든다.
본 발명에 따른 메타 멘토(MM) 아키텍처는 적어도 2개의 참조 도메인들을 포함한다. 하나의 도메인, DID는, 데이터 및 인스트럭션들을 포함하는 정보의 프로세싱을 취급하고, MM 도메인(대안으로서 "멘토 도메인(mentor domain)"으로 불림)은 필요에 따라 상기 DID의 주소 공간들을 동적으로 정의하고 재구성한다. 덧붙여, 상기 MM 도메인은 상기 DID를 위한 데이터 및 인스트럭션들을 담으며, 상기 DID 안의 프로세서들에 의해 실행되는 프로세스들을 스케줄링하며, MM 캐시 안에 미리-저장되고 MM 프로세서에 의해 접근되는 규칙들의 세트에 따라 상기 DID를 모니터링한다. 상기 규칙 세트는 DID 프로세스들 및 이벤트들에 관한 불변하는 가이드라인들 및 제한들을 확립하며, 규칙들은 결함들 및 멀웨어에 맞서 보호하도록 설계된바, 아래에서 더 상세하게 설명되는 바와 같다.
본 명세서의 상세한 설명 및 청구항들에 이용된 용어들의 정의는 다음과 같다: "세트"라는 용어는 양에 있어서 하나 이상을 의미하지만 빈 세트(null set)를 포함하지 않는다. "서브세트"라는 용어는 세트의 구성원(member)들의 일부 또는 전부를 의미한다. "메타 정보"라는 용어는 본 명세서에 설명된 바와 같이 멘토링하기 위한 멘토 프로세서들에 의해 이용되는 데이터, 알고리즘들 및 규칙 세트들을 일컫는다. "메타 정보"라는 용어는 본 명세서에 설명된 바와 같이 멘토링을 위한 멘토 프로세서들에 의해 이용되는 데이터, 알고리즘들 및 규칙 세트들을 일컫는다. "멘토링(mentoring)"이라는 용어는 본 명세서에 설명된 방식들로 상기 DID를 동적으로 모니터링, 제어, 구성, 및 재구성하도록 상기 MM 도메인 안의 메타 정보를 적용 및 이용함을 의미한다. 멘토링의 예시들은: 메타 알고리즘들에 따른 추상화들 및 가상화들을 생성함, 및 메타 규칙 세트들을 강제함을 포함하지만 이에 한정되지 않는다. 다른 용어들의 정의들은 상세한 설명, 청구항들 및 도면들에서 찾을 수 있다.
본 발명에 따른 MM 아키텍처는, DID 및 멘토 도메인을 포함하는 동적으로 건립가능한 컴퓨터 시스템을 가능하게 한다. 상기 DID는 일반적으로 상기 DID 안에서만 작동하는 프로세서들의 세트, 및 상기 DID 안에서 작동가능한 메모리들의 세트를 포함한다. (MM 도메인이라고도 불리는) 상기 멘토 도메인은 일반적으로, 메타 정보, 상기 메타 정보를 담는 멘토 도메인 메모리, 상기 멘토 도메인 메모리로의 접근로를 포함하는 멘토 도메인 프로세서들의 세트, 및 멘토 스위치들의 세트를 포함하고, 상기 멘트 스위치들의 세트는 상기 DID 안의 프로세서들의 세트 및 메모리들의 세트 사이의 통신을 제공하고, 상기 멘트 스위치들의 세트는, 상기 메타 정보에 따라 상기 모든 통신들을 멘토링하기 위하여 상기 멘토 도메인 프로세서들의 세트와 협응한다. 그 DID 프로세서들의 세트는 폰 노이만, 하버드, 수정 하버드, 또는 데이터 플로 아키텍처를 구비한 하나 이상의 프로세서들을 포함할 수 있다. 상기 멘토링은 시스템 인터럽트들을 수신함, 및 인터럽트 서비스 프로세스들을 상기 DID 프로세서들 및 메모리들에 선별적으로 배정함, 시스템 입력 및 출력 활동들을 추상화함을 더 포함한다. 상기 멘토 스위치들은 일반적으로 상기 DID 프로세서들와 상기 DID 메모리들 사이의 동적으로 구성가능한 통신 경로들을 포함하며, 상기 스위치들은 상기 메타 정보에 따라 상기 통신 경로들을 원하는 대로 선별적으로 구성 및 재구성하도록 멘토 도메인 프로세서들과 협응한다.
다른 바람직한 실시예에서 멘토링은 프로세서 코어 레벨에서 이루어진다. 이 실시예에서 상기 멘토링은, 하나 이상의 코어 캐시들, 예컨대 인스트럭션 캐시들, 데이터 캐시들, 레벨 2 및 레벨 3(L2 및 L3) 캐시들에 전송되는, 그리고 그것들로부터 전송되는 정보를 가상화하는 것을 포함한다. 멘토 스위치들은 코어들와 그러한 캐시들 사이의 통신 경로들을 제공하여, 상기 멘토 스위치들은 MM 캐시 안에 담긴 메타 정보에 따라 그러한 모든 통신들을 멘토링하기 위하여 멘토 도메인 프로세서들과 협응한다. 다수의 코어들을 포함하는 다른 유사한 실시예에 2개의 MM들이 있다. 이전 실시예와 같이, 인스트럭션 버스 및 데이터 버스, 및 L2 캐시 사이에 모든 통신들을 멘토링하는 MM이 있지만, 덧붙여 각각의 코어의 산술-논리 유닛들과 제어 유닛들 사이에 개재된 코어 멘토 스위치가 있다. 코어 MM 프로세서는, 상기 코어들의 제어 유닛들과 개별의 산술-논리 유닛들 사이의 통신들을 멘토링하도록 상기 코어 멘토 스위치와 협응한다. 바람직하게 상기 2개의 MM들은 조정(coordination)을 위하여 통신한다.
다른 일 실시예에서 다수의 DID 프로세서 코어들이 블록들로 구획된다. 각각의 블록의 각각의 코어는 인스트럭션 및 데이터 캐시를 담는다. 각각의 블록은, 상기 인스트럭션 및 데이터 캐시들, 블록 멘토 도메인 프로세서, 및 블록 멘토 스위치를 위한 가상화된 L2 캐시로서 기능하는 블록 MM 메모리, 블록 메타 정보를 포함한다. 바람직하게 상기 L2 캐시는, 상기 블록 메타 정보에 따라 상기 블록 멘토 스위치와 협응하는 블록 멘토 도메인 프로세서에 의해, 각각의 블록을 위한 적어도 다수의 구획들로 가상화된다. 덧붙여 이 실시예는, DID 메모리들의 세트, 모든 블록들에 속한 전체 메타 정보, 상기 전체 메타 정보로의 접근로를 포함하는 전체 멘토 도메인 프로세서, 상기 모든 블록들과 상기 DID 메모리들의 세트 사이의 통신을 제공하는 전체 멘토 스위치, 및 상기 모든 블록들과 상기 전체 멘토 스위치 사이의 통신 링크를 포함한다.
다수의 DID 프로세서들 또는 코어들을 포함하는 시스템들에서, 상기 멘토 도메인의 바람직한 실시예들은, 규칙 서버로서 기능하는 제1 프로세서에 의해 접근가능한 규칙들의 마스터 세트를 담는 제1 메모리, 세컨더리 프로세서(secondary processor)들의 세트로서, 그 각각이 상기 다수의 DID 프로세서들의 서브세트를 멘토링하는 세컨더리 프로세서들의 세트, 대응되는 세컨더리 프로세서들에 의해 접근가능한 세컨더리 메모리(secondary memory)들의 세트로서, 각각의 세컨더리 메모리의 대응되는 세컨더리 프로세서에 의해 이루어지는 멘토링에 관련 있는 규칙들의 서브세트를 각각의 세컨더리 메모리가 담는, 세컨더리 메모리들의 세트를 포함한다. 이 경우에 상기 제1 프로세서는 상기 관련 있는 서브세트들을 상기 세컨더리 메모리들에 서비스한다.
다른 바람직한 실시예에는, 각각이 DID 및 MM 도메인을 포함하는 복수개의 컴퓨터 서브-시스템들이 있다. 상기 DID들 각각은 DID 프로세서들의 세트 및 DID 메모리들의 세트를 포함한다. 상기 MM 도메인들 각각은, 메타 정보, 멘토 도메인 프로세서, 상기 메타 정보에 따라 상기 DID 프로세서들과 DID 메모리들 사이의 모든 통신들을 멘토링하기 위하여 상기 멘토 도메인 프로세서와 협응하는 멘토 스위치, 상기 복수개의 컴퓨터 서브-시스템들 사이에 상기 DID 안의 정보를 전송하기 위한 통신 링크, 상기 복수개의 컴퓨터 서브-시스템들 사이에 상기 메타 멘토 도메인 안의 정보를 전송하기 위한 통신 링크를 포함한다. 이 실시예는 또한, 각각이 상기 복수개의 컴퓨터 서브-시스템들과 통신하는 복수개의 센서들, 및 각각이 상기 복수개의 컴퓨터 서브-시스템들과 통신하는 복수개의 디스플레이 장치들을 포함할 수 있다.
도 1은 종래의 폰 노이만 컴퓨터 시스템의 기능적 도표이다.
도 2는 종래의 폰 노이만 아키텍처를 도시하는 벤 다이어그램이다.
도 3은 가상화된 구성으로 된 종래의 폰 노이만 아키텍처를 도시하는 벤 다이어그램이다.
도 4는 종래의 하버드 컴퓨터 시스템의 기능적 도표이다.
도 5는 종래의 하버드 아키텍처를 도시하는 벤 다이어그램이다.
도 6a는 제어 흐름 프로그램과 태깅된 토큰 프로그램 사이의 차이점들을 도시하는 흐름도이다.
도 6b는 종래의 태깅된 토큰 아키텍처의 기능적 도표이다.
도 7은 종래의 마이크로프로세서 아키텍처를 도시하는 기능적 도표이다.
도 8a 및 8b는 종래의 이중 코어 CPU 아키텍처를 도시하는 기능적 도표들이다.
도 9는 종래의 64 코어 CPU 아키텍처를 도시하는 기능적 도표이다.
도 10은 종래의 GPGPU 아키텍처를 도시하는 기능적 도표이다.
도 11은 종래의 GPGPU 프로세싱 흐름을 도시하는 흐름도이다.
도 12는 종래의 클라우드 시스템 아키텍처를 도시하는 흐름도이다.
도 13은 병렬 클러스터 메모리 아키텍처를 도시하는 기능적 도표이다.
도 14는 종래의 분산 클러스터 메모리 아키텍처를 도시하는 기능적 도표이다.
도 15에는 종래의 스위치 패브릭 아키텍처를 도시하는 기능적 도표가 보여진다.
도 16은 클로스 네크워크 결정 블록(Clos network decision block)을 도시하는 기능적 도표이다.
도 17은 메타 멘토로 제어되는 다중 슬레이브 프로세서 시스템을 도시하는 기능적 블록도이다.
도 18은 폰 노이만 스타일 컴퓨터 시스템 안에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도이다.
도 19는 하버드 스타일 컴퓨터 시스템 안에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도이다.
도 20은 본 발명에 따른 메타 멘토 아키텍처를 도시하는 벤 다이어그램이다.
도 21은 프로그램 가능한 인터럽트 타이머를 갖춘 단일 프로세서, 단일 메모리 컴퓨터 시스템 안에 본 발명에 따라 통합된 메타 멘토 스위치를 더 상세하게 도시하는 기능적 블록도이다.
도 22는 다수의 슬레이브 프로세싱 유닛들(SPU들)을 포함하는 컴퓨터 시스템 안에 본 발명에 따라 통합된 메타 멘트를 도시하는 기능적 블록도이다.
도 23 및 24는 데이터 플로 아키텍처의 경우에, 본 발명에 따라 통합되고, 프로세싱 유닛들 및 메모리와 관련된 메모리 및 주변기기들 사이에 개재되는, 메타 멘토 및 메타 멘토 스위치를 도시하는 기능적 블록도들이다.
도 25는 태깅된-토큰 데이터 플로 아키텍처 안에 본 발명에 따라 통합된 메타 멘토 및 메타 멘토 스위치를 도시하는 기능적 블록도이다.
도 26은 다수의 CPU 이종 아키텍처 안에 본 발명에 따라 통합된 메타 멘토 및 메타 멘토 스위치를 도시하는 기능적 블록도이다.
도 27은 도 7의 컴퓨터 시스템 안에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도이다.
도 28은 도 7의 컴퓨터 시스템 안에 본 발명에 따라, 그러나 상이한 방식으로 통합된, 메타 멘토를 도시하는 기능적 블록도이다.
도 29는 동적으로 재구성가능한 CPU를 갖춘 메타 멘토를 도시하는 기능적 블록도이다.
도 30a 및 30b는 각각 하나의 CPU 코어, 및 2개의 CPU 코어를 갖춘 컴퓨터 시스템 안에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도들이다.
도 31은 8개의 CPU 코어들을 갖춘 컴퓨터 시스템 안에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도이다.
도 32는 다수의 CPU 코어들을 갖추었지만 상기 코어들 외부에 있는 메타 멘토를 갖춘 컴퓨터 시스템 안에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도이다.
도 33은 GPU 컨텍스트(context) 내에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도이다.
도 34, 35 및 36은 그리드 컴퓨팅 시스템 안에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도이다.
도 37은 클러스터 컴퓨팅 시스템 안에 본 발명에 따라 통합된 메타 멘토를 도시하는 기능적 블록도이다.
도 38은 병렬 구성 내에 본 발명에 따라 통합된 메타 멘토들을 도시하는 기능적 블록도이다.
도 39는 동시에 병렬 모델 및 분산 모델(PDM) 둘 모두로 된 본 발명에 따라 통합된 메타 멘토들을 도시하는 기능적 블록도이다.
도 40은 공통 구성요소들에 연결된 본 발명에 따라 통합된 2개의 메타 멘토들을 도시하는 기능적 블록도이다.
도 41은 도 40에 따른 메타 멘토 시스템의 출력을 도시하는 표들 및 그래프이다.
도 42는 도 40에 따른 메타 멘토 시스템의 출력을 도시하는 더 많은 표들이다.
도 43에는 예컨대, 메타 멘토 시스템을 정의하는 데에 이용되는 신경 네트워크들 또는 분산의 분석(analysis of variance or neural networks)과 같은 수학적 기법들이 도시된다.
도 17을 참조하면, "SPU 제어 스위치"에 의해 표현된 가상화 스위치(virtualizing switch)를 이용하는 블록 형태(block form)의 기본 메타 멘토(MM)가 도시된다. 본 명세서에 개시된 바와 같이 이 MM 아키텍처는 미국 특허 제7,484,032 B2호에 제시된 발명과 유사하지만, 별개로 신규하다. 도 17에는 상기 스위치, MM CPU, MM 캐시, 라우팅 테이블, 및 킵 얼라이브 컨트롤러(Keep Alive Controller)를 위한 논리적 컨트롤들(logical controls)도 도시된다. 포함된 것은 MM 중앙 프로세싱 유닛(MM CPU; 50)이며, 상기 MM 중앙 프로세싱 유닛(50)은 이 기능을 수행하도록 작동하는 단일 장치 또는 일련의 장치들일 수 있다. 상기 MM은 심지어 상태 기계로 구현될 수도 있다. 본 명세서에 개시된 본 발명에 따르면, 상기 MM CPU는, 상기 MM 도메인 안에서 작동하고 상기 기계에 속한 이벤트들의 전부를 모니터링, 저장, 및 제어하는 감시 알고리즘을 실행한다. 그것은 쓰레드들을 슬레이브 프로세싱 유닛들(SPU들; 51)의 배열로 스케줄링하고 그것들의 진행(progress)을 모니터링하고, 결함 신호들을 검출할 수 있다. 그것은 시스템 및 I/O 자원들을 분산시키고 인터럽트들을 상기 SPU들에 생성하고, 그것들의 메모리 스택들을 저장한다. 상기 MM CPU는, 인터럽트의 서비스(servicing)에 뒤이은 프로세스를 어느 SPU가 계속할 것인지를 결정하기도 한다. 이는, 인터럽트된(interrupted) SPU는 상기 MM CPU가 상기 스택 정보를 되돌려주는 프로세서와 동일한 프로세서일 필요는 없을 것임을 의미하는바; 상기 MM CPU는 (동일한 운영체제를 실행하는) 상이한 SPU에 상기 스택 정보를 되돌려줄 것을 결정할 수 있다. 동일한 토큰에 의해, 상기 인터럽트를 서비스할 때 동일 운영체제가 동일 프로세서에 배정될 수 있거나 되지 않을 수 있다. 상기 운영체제가 상기 SPU와 호환되는 한, 어느 프로세서가 운영체제에 배정될 것인지를 결정하는 것은 상기 MM CPU 알고리즘에 달려 있을 것이다. 덧붙여, 상기 인터럽트 및 스택을 취급하도록, 인터럽트에 이르는 모든 이벤트들을 상기 MM CPU 알고리즘이 취급 및 저장한다. 이 방식으로 상기 MM CPU는 상기 기계 상의 모든 프로세스의 상태를 항상 안다. 각각의 MM은 복수개의 제어 스위치들을 포함할 수 있다: 제어 I/O(52), 관리 I/O(managed I/O; 54), 메모리(54), 및 복수개의 SPU들 간에서 선택하기 위한 SPU 스위치(55).
도 17을 다시 참조하면, 킵 얼라이브 컨트롤러(KAC; 56)도 도시되는바, 상기 킵 얼라이브 컨트롤러(56)의 기능은 상기 MM의 참조 프레임 외측의 장치들 또는 다른 MM 기계들로 또는 그것들로부터 정보를 전송 및 수신하는 것이다. 바람직하게 상기 정보는 데이터 및 제어 라인들(57)을 통하여 MM 장치들 간에 공유되며, 상기 정보는 프로세스 데이터, 프로세스 테이블, 기계 상태, 및 본 발명에 따르면 다른 정보, 예컨대 클라우드 키 및 시퀀스 정보, 및 스케줄링 및 I/O 정보를 포함하는바, 이는 도 35 및 39와 관련하여 아래에서 설명될 바와 같다.
본 발명에 따르면 상기 MM은 규칙 세트 및/또는 알고리즘에 기초하여 컴퓨터 주변 구성요소들와 프로세싱 유닛들 사이에 신호들을 동적으로 라우팅하는 능력을 가진다. 메타 멘토 아키텍처에 있어서, 중앙 프로세서 또는 정의된 시스템이 없다. 바람직한 설계에 있어서, 논리적 스위치는 구성요소들 사이의 물리적 연결을 스위칭하지 않으며, 신호 정보를 프로세싱하여 상기 연결을 논리적으로 결정한다. 그 논리적 스타일 스위치는 멘토 스위치라고 불린다.
상기 멘토 스위치의 목적은, 상기 프로세싱 유닛들과 자원들 사이에 추상화층을 제공하고 애플리케이션들 및 프로세스들을 스케줄링하는 것이다. 상기 멘토 스위치는 메모리 읽기 및 쓰기의 경우에 프로세싱 유닛으로부터의 주소 정보를 프로세싱하고 그것을 다른 가상화 주소로, 또는 바람직하게는 상기 정보를 물리적으로 저장 및 인출하는 2개 이상의 주소들로 번역(translate)한다. 그것은 예를 들어 데이터를 암호화할 수도 있지만, 상기 데이터를 수정할 필요는 없다. 상기 스위치의 논리적 부분은 어떻게 상기 스위치가 기능하는지를 결정한다. 나중에 설명될 여러 논리적 속성들이 있지만, 기본적으로 상기 논리적 부분은 어떻게 상기 주소 신호들 및 제어 신호들이 프로세싱되는지를 제어한다. 그 논리(logic)는 제1 도메인(the first domain)의 기능들을 제어하는 다른 프로세스 도메인을 나타낸다. 이 구성(arrangement)은 재귀적일 수 있다; 여기에서 상기 스위치는 상이한 층들에서 컴퓨터 시스템 안에 위치될 수 있으며 그것들의 기능 및 작동들을 촉진하도록 상기 멘토 스위치들 간에 신호들을 전송할 수 있다. 멘토 스위치들은, 다른 멘토 스위치들 간에, 또는 시스템을 구성하는 시스템 구성요소들 간에 정보를 통신한다. 시스템은, 상기 멘토 스위치들이 이 통신들을 수행하는 동안에 존재하고, 상기 시스템은 상기 멘토 스위치들의 통신이 끝날 때 존재하기를 그친다. 비재귀적 구성들에서 상기 메타 멘토는 다른 재귀적 메타 멘토 시스템들과 통신하여 다중-도메인으로 된 시스템들이 생성된다. 재귀적 MM 시스템들 같이, 이 다중-도메인으로 된 시스템들은 MM 통신들 및 작업들(tasking)이 발생할 때 존재하고 그것들의 통신이 끝날 때 존재하기를 그친다.
도 18 및 19를 참조하면, 본 발명에 따라 통합된, 각각 폰 노이만 아키텍처 구성 및 하버드 아키텍처 구성으로 된 메타 멘토들(60)이 도시된다. 각각의 경우에 메모리에 대한, 인스트럭션 메모리 또는 데이터 메모리에 대한 요청은 결함 감내성 MM 스위치(61)(예컨대 도 17에 도시된 메모리 제어 스위치(54))에 의해 변환되는바, 예컨대 MM CPU(도 17의 50)에 의해 실행되는 MM 논리 및 알고리즘에 의해 미리 규정(prescribed)되는 바와 같다. 폰 노이만의 경우에(도 18), 데이터 메모리 또는 인스트럭션 메모리에 대한 CPU 요청은 상기 MM에 의해 변환되고 다수의 메모리 유닛들(Men-l 내지 Men-6)로 도시된 전체 메모리(62) 안의 데이터 영역 및 인스트럭션 영역으로 논리적으로 분리된다. 이는 효과적으로 폰 노이만 아키텍처를 하버드 아키텍처로 변환한다. 하버드의 경우에(도 19), 데이터 메모리에 대한 CPU 요청은 메모리-A 또는 메모리-B 안의 임의의 메모리 위치 내로 변환된다. 마찬가지로 인스트럭션 메모리에 대한 임의의 CPU 요청은 메모리-A 또는 메모리-B 안의 임의의 메모리 위치 내로 변환된다. 상기 접근 제어 라인들은 상기 MM 스위치에 연결되며, 상기 전체 시스템 안에서 상호작용을 가지거나 가지지 않을 수 있다. 게다가, 메모리-A 또는 메모리-B는 상기 CPU와 호환되어야 하지는 않는다. 그래서, 메모리-B가 24-비트 저장 유닛을 가진다면, 상기 MM은 CPU 읽기 8-비트 데이터 메모리 요청을, 상기 24-비트 메모리-B로부터의 2개 또는 3개의 8-비트 읽기들로 변환할 수 있다. 마찬가지로 상기 MM은 CPU 24-비트 인스트럭션 읽기를 8-비트 메모리 A로부터의 3개의 읽기로 변환할 수 있으며,이는 동시에 일어나거나 일어나지 않을 수 있다. 상기 메타 멘토 아키텍처 안에서 전체 시스템 메모리가 데이터 메모리 및 인스트럭션 메모리의 물리적 분리를 요구하지 않으므로, 상기 CPU(SPU)가 하버드 아키텍처 구성을 가지는 때에도, 상기 메타 멘토 아키텍처는 폰 노이만 아키텍처로 여겨질 수 있다.
다시 도 18 및 19를 참조하면, 두 MM들 모두(60)는, 상기 CPU들에 실행되는 DID 프로세스들 및 이벤트들에 관한 불변하는 가이드라인들 및 제한들을 확립하기 위하여 개별의 프로세스 테이블들(62) 및 규칙 세트들(63)과 통신하며, 규칙들은 결함들 및 멀웨어에 맞서 보호하도록 설계된다. 상기 테이블들 및 규칙 세트들은 MM 도메인 메모리 안에 저장되며, 그 내용들은 애플리케이션들 및 시스템 환경에 따라 달라진다. 상기 프로세스 테이블들은, 허용가능한 프로세스들 및 그것들에 속한 정보, 예컨대, 프로세스 식별자들(proc), 각각의 열거된 프로세스들에 대한 프로그램 계수기 정보, 열거된 각각의 프로세스에 결부된 CPU, 및 개별의 프로세스들에 속한 중요한 정보(information of note) 및/또는 다른 메모리를 담는다.
도 20에는 벤 다이어그램으로 된 메타 멘토 아키텍처가 도시된다. 상기 CPU는 시스템이 아닌 상기 메타 멘토 스위치와 교차한다. 상기 시스템은 상기 MM 스위치와도 교차하고, 상기 CPU와 연결되지 않는다(disjoint). 이는, 상기 MM 스위치가 상기 CPU (또는 CPU 배열) 및 시스템을 비동기식으로 가상화할 수 있게 한다. 상기 MM과 시스템 사이의 교차점은, 예컨대 스케줄링 프로세스의 일부분인 인터럽트들과 같은 신호 제어 라인들을 나타낸다. 이는 2개의 도메인들을 생성한다. 상기 CPU 도메인은 인스트럭션 및 데이터 정보를 취급하고, 상기 MM 도메인은 주소 공간을 가상화하고 제어 및 스케줄링을 취급한다.
도 21을 참조하면 상기 MM 도메인 안에서 작동하고, 단일 프로세싱 유닛, SPU(66), 및 상기 DID 안에서 작동하는 단일 메모리(MEM-DID; 67)를 제어하는 메타 멘토가 도시된다. 도 21의 점선들(65)은 멘토 스위치 및 MM의 구성요소들을 둘러싸며, 이는 도 17의 SPU 제어 스위치(55)의 내부 작동들, MM CPU, 및 MM 캐시의 하나의 신규한 실시예를 구성한다. 상기 MM-CPU(68)는 MM-MEM(69)(예컨대 도 17의 MM 캐시) 안에 배치된 그것의 메타 데이터 보관소로부터 추상화 인스트럭션들을 서비스하는 프로세서이다. 추상화의 인스턴스는, MM-CPU에 의해 주소 및 데이터 버스들, Addr CPU-1 및 데이터 CPU-1를 통하여 메모리(MHb; 70) 안으로 인입되며, 프로세서(MMCH; 71)에 의해 실행되는바, 상기 프로세서(71)는 프로세서(SPU)와 메모리 구성요소(MEM-DID) 사이의 추상화 서술자(abstraction descriptor)를 제공한다.
앞서 설명된 바와 같이, 상기 메타 멘토 아키텍처는 적어도 2개의 도메인들 안에서 작동한다. 상기 MM 도메인은 근본적으로 주소 공간(예컨대, 필요에 따라, 정의, 재구성 등등을 함) 및 프로세스/쓰레드 스케줄링이며, 상기 슬레이브 프로세서들은 근본적으로 상기 DID 안에서 작동한다(데이터 및 인스트럭션들 도메인). 상기 MM-CH, MHa(72) 및 MHb는 함께 작동하여 특정 프로세스 또는 하드웨어 장치를 위한 추상화를 생성한다. 도 21의 MM-CPU 및 MM-MEM은 상기 MM 도메인의 부분이며, 상기 DID 프로세스들 및 시스템 하드웨어에 관한 메타 정보를 담는다. 상기 메타 정보는 어떻게 각각의 프로세스가 실행되는지에 관한 추상화 서술자들을 가진다. 즉, 말하자면 상기 SPU는 VN 또는 H 아키텍처 안의 동기적 구성요소를 매칭(match)시키도록 의도되는, 주소 버스 상의 전기 신호들의 세트를 생성하는바, 도 2, 3, 및 5의 벤 다이어그램들로 도시된 바와 같다. 그런데 상기 MM 아키텍처 안에서 SPU 주소는 상기 DID 도메인 내에 배치된 구성요소에 대하여 상이한 주소로 번역된다. 상기 SPU 및 DID 구성요소 둘 모두는 MHa 및 MM-CH와 동기적이지만, 상기 SPU는 어떠한 DID 구성요소와도 동기적이지 않다. 이는 상기 SPU 주소 공간을 DID 주소 공간 내로 "맵핑(map)"한다. 어떻게 맵핑되는지는 상기 추상화 서술자에 의해 정의된다. 이 버스들이 SPU에서 SPU로 달라질 수 있다는 점이 주목되어야 한다. 그런데, 각각의 버스는 모든 프로세서들(SPU) 상에 비슷한(comparable) 정보를 옮긴다. 바람직한 설계에서 데이터는 바뀌지 않고 전달되지만, 바뀌지 않은 데이터가 상기 MM 아키텍처 안의 요구사항은 아니다.
상기 추상화 서술자들은 계층적 스키마의 포맷으로 되는데, 여기에서, 속성들을 가지는 (컴퓨터 기술분야에서 이용되는 바와 같은) "오브젝트들"의 세트들은 이벤트들, 프로세스들, 및 주소 공간들에 부착(attached)된다. 이 방식으로, MM-MEM 안에 저장되는 메타 정보는, 상기 SPU에 의해 실행될 수 있는 모든 가능한 이벤트들, 프로세스들, 주소 공간을 망라(cover)하는 마스터 규칙 세트를 포함한다. 위에서 설명된 바와 같이 상기 규칙 세트는, 결함들 및 멀웨어에 맞서 상기 DID를 보호하도록 설계되는 불변의 제한들을 확립한다.
예를 들어 규칙 세트는 보안 오브젝트들에 의해 프로세스들을 카테고리화함을 포함할 수 있다. 인기 있는 카테고리화(categorization)는 "권한(privilege)"에 기초하는바, 이는 기밀성(confidentiality), 무결성, 및 이용가능성의 면에서 상기 시스템에 대한 변경을 허용한다. 프로세스 오브젝트는, 권한을 격상(elevate)시키는 프로세스 오브젝트의 능력을 정의하는 속성들을 담는다. 상기 MM 도메인은 모든 프로세스들을 스케줄링하고 주소 공간을 배정한다. 프로세스가 어떤 주소 공간에 접근할 수 있는지를 정의하는 속성, 상기 프로세스가 어떤 권한으로 작동할 것인지를 정의하는 속성, 그리고 그것이 어떤 유형의 장치들에 접근할 수 있는지를 정의하는 속성이 몇몇 속성 예시들이다. 다른 예시들은, 프로세스가 I/O 장치로부터 개시되지 않는다면 그 프로세스는 미리 정의된 하드웨어 및 주소 공간에 접근할 수만 있을 것이라는 점을 포함한다. 속성들의 강제는 상기 MM 도메인에 의해 보증된다. 이 보증은 메모리 주소를 정의하는 알고리즘들의 순환 논리로 인하여 단일 도메인 시스템에서는 가능하지 않다. 상기 MM 아키텍처에서 DID 알고리즘들은 주소 공간을 정의할 수 없다. 다른 일 예시에서, 만약 프로세스가 마이크로폰과 같은 장치에 접근한다면 그 프로세스는 출력 포트에 직접적으로 접근할 수 없다. 열거된 목록은 꽤 광대하게 된다.
도 21을 다시 참조하면, 실행 시간(run time)에 상기 MM-CPU는, 특정 프로세스에 대해 관련 있는 규칙 세트를 포함하는 그것의 스키마로부터 적합한 정보를 그것의 캐시(MM-MEM)로부터 인출한 후에, 상기 정보를 Addr CPU2 및 데이터 CPU2를 통하여 메모리(MHb) 안으로 저장한다. 그렇다면 상기 MHb는 선택된 프로세스에 속하는 관련 있는 규칙 세트의 보관소이다. 그 후 상기 MM-CH는, MHb에 접근함, Int2를 통하여 SPU를 인터럽트함, SPU의 주소 공간을 정의함에 의하여 상기 SPU 상에서 상기 선택된 프로세스를 시작한다. 이 실시예에서 상기 MM-CH 프로세서는 상기 MM 도메인 안에서 작동하고, 상기 SPU와 그것의 DID 메모리(MEM-DID) 및 I/O(미도시) 사이의 모든 추상화 및 가상화를 행하는바; 상기 MM-CH는 MHb에 저장된 관련 있는 규칙 세트에 따라 상기 SPU를 또한 모니터링한다. 메모리(MHa)도 상기 MM 도메인의 부분이며, 기본적으로 상기 MM 스위치 안의 버퍼 메모리이며 모든 애플리케이션들에 필요한 것은 아니다. 대안적 실시예로서, MM-CH의 기능들은 상기 MMCPU 안으로 통합될 수 있지만 시간에 대해서는(time-wise) 덜 효율적일 것이다.
도 21에는 또한 PIT-DID(73) 블록이 도시된다. 종래의 구형(legacy) 컴퓨터들에는 종종 프로그램 가능 간격 타이머(programmable interval timer; PIT)가 통합된다. 종래의 컴퓨터에 있어서 상기 PIT는, 상기 컴퓨터의 CPU에 직접적으로 연결되며, 그리고 주어진 시간에 인터럽트를 상기 CPU에 송신하도록 프로그램될 수 있다. 예를 들어 월요일 아침 오전 2:00에 컴퓨터를 백업하도록 프로그램될 수 있다. 오전 2:00에 현재 실행되고 있는 임의의 프로세스를 인터럽트하는 신호가 상기 CPU에 송신된다. 상기 CPU는 상기 인터럽트 전에 실행되고 있었던 인스트럭션들로 복귀하는 데 필요한 모든 정보들을, "스택"이라고 불리는 메모리 위치에 세이브한다. 그 후 상기 CPU는 상기 인터럽트의 성질 및 상세를 결정(determine)하는 프로세스를 실행한다. 그 후 상기 CPU는 이 특정 인트럽트를 위하여 미리 결정된 주소 위치에 있는 인스트럭션들을 실행하기 시작한다.
이 인스트럭션들에 대한 전문 용어는 "서비스 루틴(service routine)"이다. 폰 노이만 또는 하버드 스타일 아키텍처에서 상기 PIT는 상기 CPU를 인터럽트하고, 상기 CPU는, 그것이 실행하고 있었던 프로세스 안의 인스트럭션들을 수행하는 데에 필요한 모든 상태 정보를 상기 스택 상에 세이브하고, 인터럽트의 유형을 결정하며, 프로그램 계수기는 상기 서비스 루틴의 시작점인 메모리 주소로 점프하고, 그 주소에 있는 인스트럭션 메모리를 실행하기 시작한다. 상기 서비스 루틴이 끝나는 때에 상기 CPU는 상기 스택으로부터 상기 정보를 끌어내며(pull)(때때로 팝(pop)이라고 불림), 상기 인터럽트에 대해 서비스하기 위하여 정지되었던 상태로 복귀하여 인스트럭션들을 실행한다. 이 기본적 기능을 수행하는 데에는 여러 방법들이 있다. 위의 설명은, 구형의 인터럽트의 프로세스를 보여주는(demonstrate) 종래의 프로그램 가능한 인터럽트 타이머를 제시한 것이다.
다시 도 21을 참조하면, 본 발명에 따른 MM 실시예는 상이한 접근법을 이용한다. 상기 MM-CPU는 폰 노이만 메모리(MM-MEM) 및 데이터 정보 메모리(MHb)에 연결되는 프로세서이다. 상기 MM-CPU 및 MM-MEM은 DID 스키마를 소유한다. 둘 모두가 상기 DID 안에서 작동하는 구성요소들(PIT-DID 및 MEM-DID)은, 도 17에 각각 제어 I/O 스위치 및 메모리 제어 스위치로 표현된 구성요소들의 신규한 실시예들이다. 도 17의 메모리 제어 스위치에 연결된 시스템 메모리는 상기 DID에 의해 접근되는 데이터 및 인스트럭션 정보(폰 노이만 아키텍처)를 담는다. 상기 SPU는 슬레이브 프로세싱 유닛이며, 상기 DID의 구성원(member)이고, 도 17에 도시된 슬레이브 프로세싱 유닛들 중 하나와 같다. 구성요소들(MM-CH, MHa, MHb, 및 선택기(selector; 74))은, 라우팅 테이블 및 SPU 제어 스위치로 도 17에 도시된 항목들의 신규한 실시예들이다. MM-CH는 추상화 스키마를 강제하는 CPU이다.
도 21을 다시 참조하면, 상기 PIT-DID는 상기 MM-CPU에 연결된 인터럽트 제어 라인(lnt1)을 가지는 프로그램 가능한 인터럽트 타이머이다. 이 인터럽트는 상기 DID 도메인 안에 있지 않다. 동일한 오전 2:00 인터럽트 예시를 이용하면, 상기 MM-CPU는 PIT-DID에 의해 인터럽트되고 상기 MM-CPU는 상기 PIT-DID 인터럽트 서비스 루틴을 위한 시작 주소에 위치시킴으로써 MM-CH 또는 SPU를 스케줄링한다. 상기 MM-CPU는 MHb 안의 미리 결정된 주소로 서비스 루틴 알고리즘을 기입(write)함으로써 이를 행하는바, 상기 알고리즘의 목적은 상기 PIT-DID 인터럽트의 성질을 결정하는 것이다. 예시로서, 상기 인터럽트를 결정하는 데 MM-CH를 이용하면, 상기 MM-CPU는 인터럽트 신호(Int2)를 MM-CH에 송신하고, 그 후 상기 MM-CH는 MHb로부터 PIT-DID 인터럽트 정보를 인출하고 그것을 메모리 유닛(MHa) 안으로 기입한다. 그 후 MM-CH는 그것의 이전 상태로 복귀한다. 그 후 상기 MM-CPU는 MHb 안의 상기 인터럽트 정보를 인출하고 MM-MEM 안에 상주하는 프로세스 스키마를 결정(determine)한다. 이 메타 정보는 어떻게 각각의 프로세스가 실행되는지에 대한 추상화를 담는다. 그것은 계층적 스키마의 포맷으로 되고 상기 DID 프로세스들의 전부를 위한 서술자들로서 이용된다. 그 후 상기 MM-CPU는 상기 메타 정보 스키마를 MHb 안으로 전송하고, MM-CH가 주어진 PIT-DID 서비스 루틴에 대하여 SPU와 MEM-DID 사이의 경로를 가상화하는 스키마 서술자들을 실행하도록 상기 MM-CH를 인터럽트한다. MM-CH는 DID 메모리(MEM-DID)로부터 인스트럭션 캐시를 MHa 안으로 적재한다. MM-CH는 Int3을 통하여 SPU를 인터럽트하고, 그 후 SPU는 상기 MHa로부터의 PIT-DID 서비스 루틴을 실행하기 시작한다.
도 21을 다시 참조하면, 상기 MM-CPU 또는 MM-CH는 직접적으로 SPU 읽기/쓰기 요청들을 취급할 수 있지만, 이 작동에 있어서 MM-CH는 캐시의 유형으로서 MEM-DID로부터 MHb 안으로 상기 인스트럭션 메모리 및 데이터 메모리를 적재한다. 어떤 경우이든, MM-CPU 및 MM-CH는 정보를 정의하고, 다른 프로세스 도메인으로부터의 규칙 세트에 기초하여 인스트럭션 메모리로부터 데이터를 분리한다. 상기 MM-CPU는 그것의 메타 데이터로써 상기 SPU를 멘토링하며, 상기 메타 규칙 세트를 강제한다.
도 22를 참조하면, 단일 MM-CPU를 가진 멘토 스위치가 도시된다. 그러나 멘토 스위치로서 작용하는 MM-CPU들의 수에는 한정이 없다. 사실, 각각이 상이한 인스트럭션 세트(상이한 제조자)를 가지는 2개 이상의 MM-CPU들을 구비하는 것이 유리할 수 있을 것이며, 그러므로 그것들은 동일한 기능을 수행하지만 공통 모드 고장에 맞서 방어하는 기능을 하는 상이한 인스트럭션들을 요구한다.
다시 도 22를 참조하면 상기 멘트 스위치(75)는 MM 추상화 서술자 프로세서들(MMADP; 80)의 배열(MM-CH-0 내지 MM-CH-n)과 함께 도시된다. 상기 MMADP 배열은 이전에 설명된 DID 가상화 서술자들을 이용하여 슬레이브 프로세싱 유닛들(81)(SPU-0 내지 SPU-n)의 배열의 주소 공간을 가상화한다. 도 22의 구성요소들은 도 21의 구성요소들과 동일한 기능(functionality)을 제공한다. 다수의 MMADP 유닛들을 제공함으로써 프로세싱 유닛들과 시스템 구성요소들 사이의 정보 전송 속도(transfer rate)가 증가된다. 덧붙여 다수의 MMADP 유닛들은 상기 MM 스위치 안에 여유분의 결함 감내성(redundant fault tolerance)을 제공한다. 상기 배열 MMADP들이 바이너리-호환될 필요는 없으며 그것들이 동일 기능을 수행하는 것이 요구된다는 점이 주목될 수 있다. 이 특징은 공통 모드 고장들로부터 상기 시스템을 보호하는 데 있어서 중요하다. N-버전 프로그래밍이라고 얼려진 고전적 개발 기법, 즉, 다수의 기능적으로 등가인 프로그램들이 동일한 초기 사양들로부터 독립적으로 발생되는 방법 또는 프로세스는 상기 메타 멘토 아키텍처를 이용하여 확장된다. 상기 MMADP 및/또는 상기 MM-CPU 레벨에서 2개 이상의 바이너리 호환되지 않는 프로세서들을 이용함으로써, 상기 장치들은 완전히 독립된 시스템들에 의한 상태 복제(state replication)를 이용할 수 있다. 각각의 MM-CPU는, 상이한 통신 경로들 및 허가 알고리즘들을 통하여 유일하게 접근될 수 있다. 추상화 서술자를 생성하는 시스템은, 프로세스 요구사항들에 의해 건립(erected)되는, 이용가능하고, 무작위로 선택된 바이너리 호환되지 않는 구성요소들로 구성될 수 있다. 결합된, 이 특성들에 의해 인스트럭션 또는 하드웨어에 있어서 단일의 에러가 2개의 독립적인 건립가능한 스위치 시스템들 위에서 되풀이되기 어렵게 된다. 설령 인스트럭션적인 의도가 있다고 하더라도 2개의 공존하는 에러들이 동시에 발생할 수 있음직하지 않다. 이 구성은, 예를 들어 인증(authenticity)을 위한 물리적 시스템 구성요소 상의 시그내쳐(signature)를 체크할 수 있는 메타 멘토 CPU 알고리즘에 의해 이용될 수 있다. 시스템 구성요소의 유일한 특징 또는 특성들은 상이한 식별 알고리즘들로써 바이너리 호환되지 않는 CPU들에 의해 분석된다.
다시 도 22를 참조하면, 도 17의 SPU 제어 스위치(55)의 신규한 실시예가 점선들(75)로 둘러싸인다. 공통 정보 버스(76)는 상기 슬레이브 프로세싱 유닛들(SPU-0 내지 SPU-n(SPU들))과 메모리 구성요소들(MHa-O 내지 MHa-n(MHa들))을 연결한다. 상기 MHa들(77)은 SPU들에 영구적으로 배정되거나 임의로 배정될 수 있다. 상기 MHa들로부터 상기 시스템 구성요소들로 정보를 전송하는 방법에 관하여 도 21과 도 22 사이에는 차이점이 있다. 도 21에는 시스템 구성요소들이 메모리 장치(MHb 및 MEM-R1)에 직접적으로 연결되는 것으로 도시된다. 도 22에는 시스템 구성요소들이 상기 MMADP 배열에 연결된다. 그 기능들은 동일한바; 차이점은, 도 21에서 정보는 DMA(직접 메모리 접근)를 통해 전송되는데 반하여 도 22에서 정보는 상기 MMADP들을 통하여 전송된다. 도 21의 단일 유닛으로 도시된 단일의 데이터 라인들은 도 22의 데이터 버스들로 대체되었다. 도 22의 구성요소 제어 라인들은 실선으로 묘사된 분리된 버스들(78) 상에 있다.
도 22를 다시 참조하면, 상기 PIT-DID(79)는 이전의 단일의 경우(single case)에서와 같은 방법으로 상기 MM-CPU를 인터럽트한다. 단일 MM-CPU는 가능한 MMADP를 스케줄링하고 서비스 루틴에 대한 시작 주소를 인출하도록, 프로세싱하는 MMADP(processing MMADP)를 선택한다. MM-CPU 및 MM-CH-2는 PIT-DID 서비스 루틴 주소를 인출하도록 선택되었다고 말하자. 이전 예시에서와 같이 상기 MM-CPU는 상기 PIT-DID 인출 루틴 시작 인스트럭션 메모리 주소를, 예를 들어 MHb-0 안으로 기입함으로써 이를 행한다. 즉, MMCH2가 MM-CPU에 의해 인터럽트될 때, MM-CH-2는 상기 MM-CPU에 의해 정의된 주소에 있는 인스트럭션들을 실행하기 시작할 것인바; 이는 MM-CH-2가 상기 PIT-DID 서비스 루틴 주소를 인출하고 그것을 (예를 들어) 이용가능한 MHb, MHb-1 안의 미리 정의된 위치로 위치시키도록 할 것이다. 상기 정보가 MHb-1 안에 인입된 후에, MM-CH-2는 그것의 이전 상태로 복귀한다. 상기 MM-CPU는 상기 PIT-DID 인터럽트의 시작 주소 위치를 인출하고 상기 시작 주소를 이용하여 MM-MEM 안의 색인 테이블(look-up table) 안에 상주하는 서비스 루틴에 대한 메타 정보를 인출한다. 상기 메타 정보는 이전 경우에서와 동일한 유형의 정보, 상기 서비스 루틴이 어떠한 유형의 접근을 가질지에 관한 정보, 및 관련 있는 규칙들을 담는다. 상기 MM-CPU는 이 정보를 MHa-3 안에 기입한다. MM-CPU는 다른 인터럽트 서비스 루틴을 MHa-2 안에 위치시키는데, 이는 SPU-3이 상기 PIT-DID 서비스 루틴을 프로세스하기 시작할 수 있게 할 것이다.
프로세서, 이 경우에 SPU가 소프트웨어 인터럽트를 기입하거나, 상기 SPU 상에서 실행중인 프로세스를 인터럽트하는 상기 MM-CPU에 의해 계획된(laid out) 규칙 세트에 따라 SPU로부터의 폴링 프로세스가 정보를 기입한다면, 실행 중인 프로세스 상태는 새로운 프로세스가 시작되기 전에 시스템 메모리 안에 세이브된다. 종래의 시스템들은 상기 정보를 중앙 메모리 안에 저장한다. 상기 MM 아키텍처에 있어서 프로세스 정보는 MHa 메모리 안에 저장될 수 있다. 실제로 메모리, 예컨대 MHa 레벨 메모리와 같은 주변 장치들 사이의 데이터의 블록 전송들은 L4 캐시라고 불리는 캐시로서 작용하며, 상기 SPU는 상기 L4 캐시와만 통신할 것이다. 결함 감내성, 체크 포인트 캐시 스토리지는 L4 캐시 안에서만 일어날 수 있으며, 그 스토리지 알고리즘에 따라, 분리된 시간에, 또는 즉시, 메모리, 디스크, 프린터, 또는 다른 주변 장치로 쓰여질 수(written out) 있다. 상기 L4 캐시 레벨은 상기 MM-CPU가 상기 시스템 내에 위치되는 곳에 상대적인 것이라는 점이 주목되어야 한다. 상기 메타 멘토 아키텍처는 쉽게 L1, L2, 또는 L3 레벨에서 위치될 수 있다.
데이터 플로 아키텍처
도 23 및 24를 참조하면 상기 데이터 플로 아키텍처의 경우가 도시된다. 메타 멘토는 프로세싱 유닛들 및 메모리 및 관련되는 주변기기들 사이에 위치된다. 상기 MM은 추상화층을 가상화하고 프로세스 스케줄링을 촉진한다.
도 23을 참조하면 데이터 플로 아키텍처 안에 통합된 메타 멘토가 도시된다. 상기 MM 스위치(84)는, 메모리 정보 및 프로세스 노드 제어를 조절(regulate)하도록 MM 도메인을 생성하는 "가능화 유닛"의 둘레를 싸는 물리적이고 논리적인 래퍼(physical and logical wrapper)의 유형이다. 이 구성은 어떻게 상기 MM 아키텍처가 적응가능한지를 보여준다. 상기 MM 아키텍처는 폰 노이만 또는 하버드 아키텍처에 유사한 스케줄링, 복사(duplication), 가상화를 통하여 결함 감내성을 제공하며, 구형의 데이터 플로 기능은 도 6b에 도시된 바와 같이 동일하게 유지된다. 도 23을 다시 참조하면 상기 매칭 유닛(21)으로의 입력은 종래의 시스템과 동?하게 공급된다. 이 토큰들 또는 "태깅된 피연산자들"은 상기 MM 스위치(84)에 의해 메모리 안에 저장되고 상기 MM 알고리즘들에 의해 가상화되는 여분의 위치들(redundant locations)에 저장된다. 인스트럭션의 태깅된 피연산자들의 전부(즉, 이전의 노드 기능들 또는 인스트럭션들 및/또는 이용자 입력으로부터의 출력)가 이용가능해질 때, 상기 기능은 준비되고, 상기 MM은 노드 서술마다 기능을 실행하도록 인출 유닛(22)을 스케줄링한다. 이것은 상기 인스트럭션을 활성화 또는 격발하는 것으로 알려진 것과 동일한 프로세스이다. 상기 노드 서술 및 토큰들 정보는, 상기 MM을 통하여 상기 인출 유닛 안으로 적재되고 그 트랜잭션을 완료하기 위하여 기능 유닛(23)으로 포워딩된다. 인스트럭션이 실행 유닛에 의해 완료되면, 그것의 출력 데이터는 (그것의 태그와 함께) 상기 매칭 유닛 및 그 다음의 메모리 위치 안에 상기 MM을 통하여 저장된다. 이 특정 정보(그것의 태그 값에 의해 식별됨)에 종속되는 임의의 기능들은 그 후에 실행을 위하여 준비된 것으로 마킹되고 상기 MM에 의해 스케줄링된다. 이 방식으로, 후속의 인스트럭션들이 적합한 순서로 실행되며, 경합 조건(race conditions)이 회피된다. 이 순서 및 메모리 스토리지는 인간 프로그래머에 의해 상정된 시퀀스 순서(sequential order)와 상이하다. 그것의 요구되는 데이터 피연산자들과 함께 기능(function)은, 인스트럭션 토큰으로도 불리는 패킷으로서 실행 유닛에 전송된다.
도 24를 참조하면, 다수의 매칭, 인출, 및 기능 유닛들을 보여주는 결함 감내성 MM 아키텍처를 포함하는 병렬화된 데이터 플로 아키텍처가 도시된다. 상기 매칭 유닛 토큰들은 상기 MM의 알고리즘들을 통하여 가상화 메모리 안에 위치되고, 상기 MM은 모든 목적 노드들의 이용가능성 및 스케줄들을 결정한다. 도 24에는 간결하게 하기 위하여(for brevity) 기능 유닛들에 직접적으로 연결된 인출 유닛들도 도시되지만 상기 인출 유닛 및 기능 유닛은 상기 MM에 의하여 가상화될 수도 있으므로 프로세스 태그들 및 목적지 주소들의 모든 가상 정보는 상기 MM에 의하여 결정된다.
도 24를 다시 참조하면, 토큰들은 상기 MM에 의해 상기 매칭 유닛들에 연결된 메모리 안에 저장된다. 이 태깅된-토큰 시스템은 단일 시스템과 동일하게 기능한다. 프로세스 인스턴스에 대한 토큰들의 전부가 어셈블된 때에 그것들은 상기 MM에 의해 이용가능한 인출 유닛으로 송신되고, 거기에서 그것들은 노드 서술과 결합된다. 이 서술은 상기 MM에 의하여 메모리 안에 저장되며 상기 노드 서술은 이용가능한 인출 유닛 상으로 포워딩되며, 거기에서 프로세스가 실행된다. 위에서 언급된 바와 같이 상기 인출 유닛와 기능 유닛 사이의 이 프로세스는 상기 MM에 의하여 가상화될 수도 있지만, 도 24에 도시되지는 않는다. 상기 기능 유닛들의 출력은, 그 출력이 매칭 유닛으로의 입력을 위한 토큰이라면 토큰들을 위한 메모리 안에 위치되고, 그리고/또는 후-프로세싱(post processing)을 위하여 메모리 안에 위치된다.
도 25을 다시 참조하면, 태깅된-토큰 데이터 플로 아키텍처 안에 통합된 MM 스위치가 거기에 도시되고, 이는 도 21에 도시된 것과 같은 폰 노이만/하버드 스위치와 기능적으로 동일하다. 상기 매칭 유닛(21)은 태깅된 피연산자(tagged operand)의 형태로 입력을 수신할 때, 그것은 MHa(87)에 직접적으로 저장되고, 그 후에 상기 MM-CPU(88)가 인터럽트된다. 이 인터럽트를 위한 서비스 루틴은, 상기 태깅된 피연산자에 관한 모든 정보를 여분의 메모리(MHa 또는 MEM-DID(89))에 복사하고 상기 인출 유닛(22) 정보를 큐잉(queue)한다. 규칙 세트들, 메타 및 기능적 구성을 포함하는 노드 생성 정보는 MM-CPU로부터 MHa로 직접적으로 전달된다. 상기 정보가 상기 메모리에 전달된 후에, MM-CH(90)는 MM-CPU에 의해 인터럽트되고, MM-CH는 MHa 안의 정보를 실행하기 시작한다. 상기 태깅된 피연산자들 중 전부가 이용가능하게 되는 때에 MM-CH는, 기능을 실행하도록 상기 인출 유닛을 스케줄링한다. 상기 인출 유닛 및 기능 유닛(23)은 총괄적으로 "노드"라고 불린다. 상기 노드가 그 작동을 끝내는 때에 그것은 그것의 출력을 MM-CH로 전달하고, 거기에서 상기 정보는, 상기 출력이 계류중인 임의의 기능들을 위한 태깅된 피연산자라면, 상기 매칭 유닛으로 포워딩되거나 또는 MEMDID 상으로 전달되는바, 이는 범용 시스템을 나타낸다. 도 21의 실시예에서와 같이, 상기 MM-CPU는 특정 프로세스에 대한 관련 있는 규칙 세트를 포함하는 그것의 스키마로부터의 적합한 정보를 그것의 캐시(MM-MEM; 91)로부터 인출한 후에 그 정보를 메모리(MHb; 92) 안에 저장한다. 그렇다면 상기 MHb는 선택된 데이터 플로 프로세스에 속한 상기 관련 있는 규칙 세트의 보관소이다.
도 26을 참조하면 이종 CPU들 및 아키텍처들과 함께 구성된 병렬화된 MM 스위치(95)가 도시된다. 상기 스위치는, 결함 감내성 메타 멘토 아키텍처 안에 구성된 병렬화된 데이터 플로, 폰 노이만(SPUVN-n), 및 하버드 아키텍처(SPUH-n)를 특색으로 한다. 상기 스위치의 데이터 플로 부분을 참조하면, 상기 매칭 유닛 태깅된 피연산자들은, 도 23 내의 프로세스와 유사한 방식으로, 그러나 병렬화된 태깅된 토큰 아키텍처 안에서, 스케줄링되어 매칭 유닛 안으로 위치된다. 상기 MM은, 상기 인출 유닛들에 덧붙여 상기 매칭 유닛들을 스케줄링한다. 상기 매칭 유닛이 상기 기능을 프로세싱하고 상기 태깅된 피연산자들을 결정하는 때에 그것들은 상기 MM의 알고리즘들을 통하여 가상화 메모리 안에 위치된다. 이 피연산자들 또는 토큰들은 상기 MM에 의해 상기 매칭 유닛들에 연결된 메모리 안에 저장된다. 프로세스 인스턴스를 위한 토큰들의 전부가 어셈블된 때에 상기 MM에 의하여 그것들은 이용가능한 인출 유닛으로 송신되는바, 상기 이용가능한 인출 유닛에서 그것들은 노드 서술과 결합된다. 이 서술은 상기 MM에 의하여 메모리 안에 저장되며, 상기 노드 서술은 이용가능한 인출 유닛 상으로 포워딩되는바, 거기에서 프로세스가 실행된다. 상기 기능 유닛들의 출력은, 그 출력이 매칭 유닛으로의 입력을 위한 토큰이라면 토큰들을 위한 메모리 안에 위치되고, 그리고/또는 후-프로세싱을 위하여 메모리 안에 위치된다.
CPU의 내부
이전에 언급된 바와 같이 도 7의 대표적 CPU는 폰 노이만 아키텍처라고 불리는데, 왜냐하면 그것의 도메인은, 결합된 데이터 및 인스트럭션 메모리을 참조하기 때문이다. 그런데 내부적으로 그것은 하버드 아키텍처를 활용하도록 구성된다. 상기 메타 멘토 아키텍처는 폰 노이만과 하버드 아키텍처 사이의 차이점을 제거하고, 임의의 시스템 안에서 기능할 수 있다. 도 27에는 이전에 도 7에 도시된 바와 같은 종래의 마이크로프로세서 안에 통합된 메타 멘토 아키텍처가 도시된다.
도 27을 참조하면, 도 7의 종래의 마이크로프로세서 아키텍처 안에 통합된 메타 멘토가 도시된다. 도 7에서 L2 캐시(17)는 4중 연관 인스트럭션 캐시(16), 8중 연관 데이터 캐시(19), 및 유니코어 모듈(15)과 직접적으로 통신한다. 이 실시예에서 MM 스위치(98)는 상기 4중 연관 인스트럭션 캐시(16), 상기 8중 연관 데이터 캐시(19), 및 상기 유니코어 모듈(15)과 직접적으로 통신하고, 상기 L2 캐시(99)는 상기 MM 스위치와만 통신한다. 상기 MM 스위치를 통하여 상기 8중 연관 데이터 캐시는 상기 L2 캐시로, 그리고 상기 L2 캐시로부터 데이터 정보를 전송하며 상기 4중 연관 인스트럭션 캐시는 상기 L2 캐시로부터 인스트럭션 정보를 전송한다. 또한 도 7의 L2-TLB(20)는 바람직하게 상기 규칙 세트 메모리(63)와 통합되었다. 상기 MM의 도입은 정보가 어떻게 상기 L2 캐시로, 그리고 상기 L2 캐시로부터 전송되는지 이외에는 상기 CPU의 기능에 영향을 끼치지 않는다. 이 실시예에서 상기 MM 스위치(98)는 전에 설명된 바와 동일한 방식으로 정보를 가상화한다. 상기 L2 캐시는 결함 감내성을 증가시키도록 상기 CPU의 다수의 인스트럭션 및 데이터 부분들처럼 복제될 수 있다. 또한 상기 MM은 상기 정보를 가상화하는 역할을 부여받을 수 있으므로, 상기 CPU 인스트럭션 세트는 그것의 도메인을 유지하는 오버헤드(overhead)를 완화하도록 축소(reduce)될 수 있다. DDR3 메모리 컨트롤러(100)를 통하여 메모리 정보를 이중 경로화(dual pathing)하는 것은 도 27에 도시된 MM 안에서 또는 도 17 및 19에 도시된 바와 같이 상기 CPU의 외부에서 성취된다. 후자의 구성들에서 외부 MM은 내부 MM과 통신하여, 상기 CPU로, 그리고 상기 CPU로부터 정보를 촉진 및 바이어스(bias)시킨다. 도 27에는 단일 산술/논리 및 제어 유닛으로 구성된 단일 CPU가 도시되지만, 도 27에 도시된 개념은 도 27의 아키텍처 안으로 쉽게 일체화되어 도 26에 도시된 SPUH-n, SPUVN-n, 및 상기 태깅된 토큰 체제(tagged token regimes)에 덧붙여 다수의 산술/논리 및 제어 유닛들을 포함할 수 있다.
도 28을 참조하면 상기 MM 스위치는 종래의 마이크로프로세서 안에서 기능할 수도 있다. 상기 MM의 가장 간단한 형태로 도시된 것은 구성요소들, 4중 연관 인스트럭션 캐시(QAIC) 및 4중 연관 데이터 캐시(CADC)이다. 상기 QAIC 및 CADC 둘 모두는 MHa(105)에 연결된다. 이 실시예에서 MHa는 도 7 안의 L2 캐시와 동일한 용량(capacity)으로 작동한다. 상기 메타 멘토의 알고리즘들은 상기 L2 캐시 주소 공간을 가상화하고 그것은 적어도 2개의 부분들로 분할한다. 이로써, 상기 L2 캐시 공간의 활성 구획 및 백업 구획이 생성된다. 작동 중에, 상기 활성 L2 메모리 구획 및 백업 L2 메모리 구획은 CPU 인터럽트들이 발생할 때 기능들을 교환하는바; 예컨대 캐시가 실패한 때이다. 이 인터럽트들이 발생함에 따라 상기 활성 캐시 구획은 백업 캐시 구획이 된다. 상기 새로운 활성 구획은 그 정보를 새로운 백업 구획에 복제한다. 두 파티션들 모두는 상기 인터럽트 당시에 CPU의 상태를 정의하는 동일한 정보를 담는다. 실제로 구획화는 MHa 주소의 하나 이상의 비트들을 조작함으로써 성취될 수 있다. 초기 사이클 동안에, 상기 활성 구획으로부터 상기 백업 구역으로의 실시간 캐릭터 전송(real time character transfers)이 첫째 CPU 인터럽트 때까지 두 구획들 모두를 복제한다. 상기 초기 사이클 후에 상기 MM은 이전에 설명된 바와 같이 주 정보(primary)를 전송하여 캐시 정보를 백업한다. 캐시 문제와 같은 소프트웨어 결함이 발생하는 때에 상기 MM은 상기 백업으로부터 프로세스를 재시작한다. 미리 결정된 수의 프로세스 결함들 후에 상기 프로세스는 강제종료(kill)될 수 있으며 상기 에러 메시지는 오퍼레이터에게 송신된다. 그 후 상기 CPU는 다른 프로세스들을 위하여 이용가능할 것이다. 미리 결정된 수의 CPU 결함 후에 다른 유형의 에러 메시지가 상기 오퍼레이터에 송신되고 상기 CPU는 블랙리스트에 올려진다. CPU 복구는 다른 이용가능한 QAIC 및/또는 CADC가 있을 때에만 일어난다. 예컨대 인스트럭션 및 데이터 정보의 분리(separation)와 같은 다른 MM 정보가 더 세분화된다. 상기 MM-CH, MHb, MM-CPU, 및 MM-MEM 구성요소들은 도 21 및 26에 대하여 전에 설명된 바와 같이 일반적으로 기능하는바, 즉, 상기 MM-CPU는 규칙 세트 서버이며, 상기 MM-MEM은 마스터 규칙 세트의 보관소이며, MHb는 관련 있는 규칙 세트의 보관소이며, 상기 MM-CH는 MHa(L2 캐시) 안의 데이터 가상화 및 인스트럭션 스케줄링에 관한 규칙 세트들을 포함하는 규칙 세트를 강제한다. 게다가 상기 MM은 KAC를 통한 다른 MM들과의 통신에 의해 바이어스된다.
MHa 안의 정보는 최소한, 전통적 L2 캐시 및 변환 색인 테이블(TLB)과 동일한 정보이다. 그런데, 상기 TLB는 구형의 TLB 안에서와 같이 정적이지 않으며, 상기 MM은 상기 TLB를 유지하고 상기 TLB에 통신하고, 어떻게 상기 TLB가 구성되는지를 변화시킬 수 있다. 도 28에 도시되는 것들은 MHa와 직접적으로 통신하는 QAIC 및 CADC이지만 이들이 요구사항인 것은 아니다. 상기 QAIC 및 CADC가 직접적으로 MHa와 통신하는 때에, 전통적 L2 캐시와 메타 멘토 MHa 메모리 사이에 성능 차이는 없다. 상기 활성 구획 및 백업 구획은 MM-CH에 의한 주소 라인의 마스킹(masking) 또는 언마스킹(unmasking)에 의해 결정된다. 전통적으로 상기 TLB는 정적인 블록 주소 정보만을 가진다. 메타 멘토 아키텍처에서 상기 MMCPU 및 MM-CH는, 변환 색인 테이블을 변경할 수 있는 능력을 가지며, 이는 결함 감내성의 한 층을 추가한다. 작동 중에 상기 MM 스위치는 전에 설명된 바와 같은 동일한 방식으로 기능한다. 예를 들어 호출(call)이 캐시 실패로 인한 변경을 위하여 발급(issue)되는 때에 상기 MM-CH는 활성 구획 및 백업 구획의 교환을 개시하고 MHa(L2 캐시) 백업 구획 내에 복제본을 생성한다.
상기 MM-CH가 상기 교환 중에 어떻게 기능하는지는 상기 MMCPU로부터 MHa에 기입된 정보에 의해 결정된다. 이 정보는 새 SPU(QAIC 및 CADC) 프로세스가 개시되는 때에 상기 MM-CPU에 의해 제시되는 관련 있는 규칙들에 의해 정의된다. 새 기능이 시작되는 때에 상기 MM-CPU는 정보를 MHb에 전송하고, 상기 MM-CPU에 의해 정의된 기능(function)으로 MM-CH를 인터럽트한다. 그 후 MM-CH는, 상기 MM-CPU가 MHb 안으로 전송한 정보를 이용하여 상기 SPU(QAIC 및 CADC) 주소 공간 및 규칙들 세트들을 정의한다. 상기 SPU 및/또는 MM-CH의 무결성은, MM-CPU와 MHb 사이에서 상기 규칙 세트들 및 데이터 전송이 수행되는 동안에 체크될 수 있다. SPU 및 MM-CH의 무결성 체크는 상기 MM와 상기 SPU 사이의 통신들을 모니터링함으로써 성취되는바, 충분한 시간이 경과한 때 SPU 엔티티들 사이에 통신이 없는 때에 상기 SPU가 블랙리스트에 올려지도록 된다. 구성요소 결함들을 결정하는 방법들은 나중에 설명될 것이다. 다른 블랙리스트 이벤트는, SPU 상의 프로세스가 여러 번 실패하는 때에, 또는 SPU가 실패하고 무결성 체크하는 때에 발생할 수 있다. SPU 실패의 경우에, 다른 SPU(QAIC 또는 CADC)가 상기 L2 캐시 안에 배치된 상태 정보를 프로세싱하도록 스케줄링될 수 있다. 상기 MM은 다른 프로세서를 다시 스케줄링할 수 있거나 다른 MM 도메인으로의 상기 L2 캐시의 전송을 요청할 수 있다.
재구성가능한 CPU
CPU의 고전적 정의는 도 1 및 4에 도시되는바, 여기에서 제어 유닛(CU)은 산술 논리 유닛(ALU)에 결부된다. 이 유형의 CPU의 확장(extension)은, 각각의 코어가 CU 및 ALU로 구성되는 다중-코어 CPU들을 포함한다. 상기 MM은 상이한 접근법을 가진다.
도 29를 참조하면, 상기 메타 멘토 아키텍처는 복수개의 CU들(110) 및 ALU들(111)과 일체화된다. 각각의 CU는 각각의 ALU와 독립적이지만, 그것들은 MM 코어 스위치(MMCS; 112), MM 타이밍 클록(미도시), 및 코어 메타 멘토(CMM; 113)의 규칙 세트에 의해 연결된다. 상기 L2 캐시(114)로부터의 인스트럭션 정보는 도 28에 설명된 절차(procedure)와 동일한 QAIC 절차에 의해 MM 인스트럭션 버스에 연결되는바, 상기 QAIC 절차는 상기 CU들(110) 중 하나 안에서 상기 MM 인스트럭션 버스로부터 인스트럭션 캐시로 상기 인스트럭션 정보를 라우팅한다. 어느 인스트럭션 캐시가 수신자(recipient)인지는 CCM 알고리즘들에 의해 결정된다. 상기 MMCS는 CU 인스트럭션 유닛을 이용가능한 ALU와 연결하고, CMM 규칙 세트 및 알고리즘들에 따라 인스트럭션 캐시 프로세스와 함께 상기 데이터 캐시를 조정한다. 상기 MM 데이터 버스는 도 28의 QADC에 유사하다. 그 목적은 ALU들(111) 안의 L2 캐시 유닛 및 상기 데이터 캐시 유닛으로 그리고 그것들로부터 데이터 정보를 분산시키는 것이다. 상기 L2 캐시(114)로 그리고 상기 L2 캐시(114)로부터의 정보는 도 28에 대하여 설명된 바와 같이 MM 프로세서들(115 및 116)에 의해 멘토링된다. 어떻게 데이터 정보가 분산되는지는 상기 CMM 안의 알고리즘들에 의해 결정되고 상기 CU 안의 프로세스들 및 상기 MMCS의 연결들과 함께 조정된다. 상기 MMCS는, 도 21에 도시된 장치와 유사하며, 여기에서 MHb 및 MM-CH는 도 23 및 24에 도시된 데이터 플로 구성들로 대체된다. 도 29에 도시된 구성은 상기 CPU 내의 여러 구역들에 있어서 유연성을 허용하는바, 이는 CPU 구성요소들(110 및 111) 간의 결함 감내성, 효율적인 캐시 일관성(cache coherency), 및 ALU/CU 구성요소 이용의 최적화를 포함한다. (MM-CPU(115), MM-CH(116) 및 결부된 메모리들을 포함하는) 상기 캐시 MM과 상기 코어 MM(113) 사이의 작동들은 개별의 KAC들 사이의 통신들에 의해 조정된다.
이중 CPU 구성
도 30a 및 30b를 참조하면 상기 메타 멘토 아키텍처는 하나 초과의 CPU(QAIC 및 CADC)와 통합된다. 이중 코어 CPU 구성들은 도 8a 및 8b를 이용하여 이전에 설명되었으며, 공유된 L2 캐시 및 전용된 L2 캐시를 그것들의 지지 구조들과 함께 보여준다. MM 및 CPU의 상이한 제조가 무결성을 보증한다. 도 30a 및 30b에 도시된 것들은 비교할 만한 공유된 L2 캐시 및 전용된 L2 캐시이며, MM 지지 구조들을 갖추었다. 상기 MM-CPU 알고리즘들 및 MM-CH 실행에 의한 MHb의 충분한 제어가 주어진다면 상기 공유된 메모리 구성과 전용된 메모리 구성 사이에는 차이가 없다는 점이 이해될 것이다. 상기 MM은 논리 알고리즘들을 이용하여 CPU 시스템을 생성하고, 8a 및 8b의 아키텍처들은 정적인 물리적 설계를 이용한다. 상기 MM은 그 물리적 지지 구조를 대체하고 스케줄링 및 정보 주소 공간을 가상화한다.
정적인 이중 CPU 설계들을 넘어서는 상기 MM 아키텍처가 가진 일 장점은 구성요소가 고장(fail)나는 때에 프로세스들을 다시 스케줄링할 수 있는 능력이다. 구성요소가 고장나더라도 상기 MM의 알고리즘은 상기 고장난 구성요소를 이용하고 있었던 프로세스를 작동하는 구성요소로 다시 스케줄링할 것이며; 그리고 전체 유닛은 중단(interruption) 없이 기능을 계속한다. 이중 CPU 설계에서 상기 MM 기능들은, 상기 MM의 알고리즘들을 갖춘 대표적인 단일 CPU 예시에서와 같이 MHa(L2 캐시)를 활성 구획 및 백업 구획으로 분할한다. 이중 CPU/코어의 경우에는 각각의 CPU/코어에 대하여 L2 캐시를 활성 구획 및 백업 구획으로 하는 MM의 알고리즘이 설계된다. 이는 최소 4개의 구획들을 생성한다. 도 30b의 L2 캐시에는 코어-0 또는 코어-1로의 공통 연결을 가지는 2개의 개개의 L2 캐시 모듈들이 도시된다. 이 구성은 상기 MM이 구획 및 코어-0 또는 코어-1을 임의로 배정하고 지정하는 것을 가능하게 한다. 마찬가지로 구획 내의 정보는 임의의 코어 또는 (QAIC 및 CADC)로 임의로 배정될 수 있다. 상기 인터럽트 및 I/O 제어; 및 도 8a 및 8b의 시스템 요청 인터페이스(System Request Interface) 및 크로스바 스위치는, 상기 MM의 알고리즘들, 인터럽트 및 도 30b에 도시된 I/O 제어 기법(scheme)과 대체되었다.
다수 코어 프로세서들
도 31에는 다중-코어 CPU 안의 메타 멘토 아키텍처가 도시된다. 상기 MM 스위치 구성은 이전 예시들에 도시된 것과 유사하다. 각각의 코어는 인스트럭션 캐시(QAIC) 및 데이터 캐시(DACD)와 함께 도시된다. 이 예시에서, 메모리 모듈 MHa(L2 캐시)(120)는 16개의 가상화된 구획들로 분할되는바, 각각의 코어에 대하여 2개이며, 추가의 메모리 주소 공간(MHb)은, 어떻게 MM-CH가 코어 정보를 프로세싱하는지를 설명하는 관련 있는 규칙들 세트로서의 기능에 전념(devote)한다. 도 28의 이전 예시에서와 같이, 각각의 코어 구획은 활성 구획 및 백업 구획을 가진다. 작동 중에 코어의 MHa의 활성 구획은 상기 백업 구획으로 복사되어 체크 포인트가 생성된다. 이 정보의 일부분은 상기 인스트럭션 캐시로 전송되고, 다른 일부분은 상기 데이터 캐시로 전송된다. 상기 코어는, MHa 구획으로부터 둘 중 하나의 캐시로 전송될 정보를 상기 코어가 요청하는 시각에 데이터 또는 인스트럭션이 소비되는 때까지, 이 정보를 활용한다. 임의의 시각에 코어가 고장나더라도 상기 MM-CH 스케줄링 알고리즘은, 마지막 체크 포인트로부터의 정보를 프로세스하도록 다른 코어를 다시 스케줄링한다. 상기 L2 캐시 안의 정보가 소비되는 경우에 상기 활성 구획은 새로운 정보로 채워지며, 상기 새로운 정보는 상기 백업 구획으로 복사되는바; 새로운 체크 포인트가 생성되고, 상기 코어는 상기 정보를 계속해서 프로세싱한다. 상기 MM의 특징은, 상기 L2 캐시가 완전히 비워지기(drained) 전에 새로운 정보가 상기 L2 캐시 안으로 끌어내어지도록 상기 L2 캐시 및 인스트럭션 캐시 및 데이터 캐시 안의 정보를 바이어스(bias)할 수 있다는 점이며 그럼으로써, 상기 정보가 세이브되고 주 메모리(main memory)로부터 인출되는 대기 시간이 제거된다. 상기 MM-CH, MHb, MM-CPU, 및 MM-MEM 구성요소들은 도 21 및 26에 대하여 전에 설명된 바와 같이 일반적으로 기능하는바, 즉, 상기 MM-CPU는 규칙 세트 서버이며, 상기 MM-MEM은 마스터 규칙 세트의 보관소이며, MHb는 관련 있는 규칙 세트의 보관소이며, 상기 MM-CH는 MHa(L2 캐시) 안의 데이터 가상화 및 인스트럭션 스케줄링에 관한 규칙 세트들을 포함하는 규칙 세트를 강제한다.
상기 MM-CPU가 도 21의 PIT-DID와 같은 장치에 서비스하도록 인터럽트된다면, 상기 MM-CPU 알고리즘은 MM-CH를 이용하여, 이용되지 않은 코어(unused core)를 스케줄링하도록 먼저 시도한다. 모든 코어들이 이용중이라면, 상기 MM-CH는 시스템 요청을 서비스할 코어로 인터럽트를 스케줄링할 것이다. 이것이 벌어지는 때에, PIT-DID 인터럽트 결함 감내성 프로세스 방식으로 전에 설명된 바와 같이 MM 시스템 메모리 안에 상기 L2 캐시가 세이브되고, 상기 서비스 루틴 프로세스는, MHa 안으로 적재되어, 도 28에 대한 상기 L2 캐시의 바이어스된 활성 구획 및 백업 구획 분할과 유사한 알고리즘을 이용하여 상기 코어 상에서 시작된다. 이 방식으로 상기 인터럽트 프로세스는 결함 감내성 L2 캐시 안으로 일체화된다. 상기 서비스 루틴을 실행하도록 상기 인터럽트에 의해 스와핑되어 나갔던(swapped out) 프로세스는 임의의 이용가능한 코어 상에서 재시작될 수 있다.
도 31을 다시 참조하면, 상기 MM으로 그리고 상기 MM으로부터 송신된 정보는 2개의 스트림들, KAC(121) 및 KAC-Info(122)로 분할된다. 상기 KAC 스트림은, 상기 시스템 안의 다른 MMCPU로 통신이 제한되는 프라이빗 스트림(private stream)이다. 상기 KAC-Info 정보는, 상기 시스템 안의 다른 비-MM-CPU 구성요소들과 통신하는 인스트럭션, 데이터, 및 제어 정보이다. 예를 들어 상기 MHa(120)가 주 시스템 메모리와 구획을 스와핑(swap out)하는 때에 그것은 상기 KAC-Info 스트림을 이용하여 상기 정보를 전송한다. 이 2개의 스트림들은 보안상의 이유로 분할되며 하나의 스트림은 다른 스트림에 악영향을 줄 수 없다. 상기 KAC 스트림도, 8개의 MM 모듈들이 64 코어 CPU 안으로 결합되어 있는 도 32에 도시된 바와 같이 프라이빗 버스(private bus)를 통하여 다른 메타 멘토 모듈들 상에 배치된 여분의 정보를 지속적으로 파악한다.
메모리 일관성
마이크로프로세서 기술은 다중-코어 프로세싱을 향하여 유행하는 중이며, 상기 다중-코어 프로세싱에서는 단일 CPU 패키지가 여러 CPU "코어들"을 담는다. 상기 다수의 코어들은 보통, 예컨대 상기 L2 캐시 안의 일관적으로 공유되는 메모리와 같은 공통 폰 노이만 스타일 자원들을 공유하는 하버드 아키텍처들로 구성된다. 상기 폰 노이만 자원들이 상기 코어들 간에 공유되기 때문에, 상기 폰 노이만 자원들 안에서 정보에 접근하는 전략 및 알고리즘들은 뚜렷하게 단일 코어 프로세서와 상이하다. 다중-코어 분산 시스템 안의 캐시들은 향상된 코어 성능을 생성하지만, 다중-코어 구성들에는 캐시 일관성 문제들이 도입된다. 여러 유형의 캐시 일관성 구성들이 있다.
1. 직접 캐시 일관성(DirCC)
정보의 다수의 복사본들은 캐시 메모리의 고정된 구획들 상에 공유된다. 정보는 새로운 정보를 상기 캐시 안의 구획들로 캐스캐이딩(cascading)함으로써 갱신된다. 정보는 상기 장치가 만들어진 시각에 결정되는 고정된 로컬 연결들에 의해 판독(read)된다.
2. 원격 캐시 접근(Remote Cache Access; RMA)
이 기법은 하나의 큰 가상(virtual) 비-균일 캐시 접근(non-uniform cache access; NUCA) 캐시를 이용한다. 각각의 코어는 정보가 접근되는 홈 주소 공간(home address space)으로 배정된다. 코어가 상기 홈 주소 공간 내에 없는 정보를 요구하면 그것은, 그것을 대신하여 메모리 작동(memory operation)을 수행할 다른 장치를 참조한다.
3. 실행 마이그레이션 기계(Execution Migration Machine; EM2)
코어들이 메모리에 배정되기보다는 메모리가 코어들에 배정된다.
4. 디렉토리-기반 일관성(Directory-based coherence; DBC)
디렉토리-기반 시스템에서 공유되는 데이터는, 캐시들 사이에 일관성을 유지하는 공통 디렉토리 안에 위치된다. 상기 디렉토리는 필터로서 작용하고, 그것을 통하여 상기 프로세서는 상기 주 메모리로부터 그것의 캐시로 엔트리(entry)를 적재하도록 허가를 구해야 한다. 엔트리가 변경되는 때에 상기 디렉토리는 그 엔트리를 가지고 다른 캐시들을 갱신하거나 무효화한다.
5. 라이브러리 캐시 일관성(Library Cache Coherence; LCC)
라이브러리는 데이터를 다수의 로컬 코어들로 복제한다. 정보는 캐시된 정보의 중앙 라이브러리로부터 조사(check out)되고 복사본은 읽기 전용 로컬 디렉토리 상에 위치된다. 정보는 타임-아웃 기반으로 갱신된다. 스누핑(snooping)은, 캐시처리되었던 메모리 위치들로의 접근을 위한 주소 라인들을 개개의 캐시들이 모니터링하는 프로세스이다. 캐시가 복사본을 가지고 있던 위치로의 기입 작동이 관찰되는 때에 상기 캐시 컨트롤러는 그 스누핑된 메모리 위치의 고유한 복사본을 무효화한다.
스나핑(Snarfing)은 제2 마스터(second master)가 주 메모리 내의 위치를 수정하는 때에, 메모리 위치의 고유한 복사본을 갱신하려는 시도로 주소 및 데이터 둘 모두를 캐시 컨트롤러가 지켜보는(watching) 경우이다. 캐시가 복사본을 가지고 있던 위치로의 기입 작동이 관찰되는 때에 상기 캐시 컨트롤러는 새로운 데이터로 상기 스나핑된 메모리 위치의 고유의 복사본을 갱신한다.
이 캐시 기법들(cache schemes)의 전부는 전용 아키텍처를 가진다. 상기 MM은 동적 메모리 접근(approach)을 이용하고, 여기에서 가상화된 캐시 기법들은 캐시 효율성을 증가시키도록 프로세스 알고리즘에 매칭된다. 예를 들어 다수의 캐시들이 동시에 갱신될 필요가 있는 때에 상기 MM은 특정 변수를 위한 다수의 기입(writes)을 생성할 수 있는바, 이는 메모리 안의 여분의 기입들과 유사하다. LLC 기법들은 조사되거나 가상화된다. 로컬 캐시들에 대한 갱신들은, 다른 로컬 노드들에 의해 영향 받지 않는 주소 공간들로 가상화될 수 있거나, 그것들이 전역적(global)일 수 있다. 이는 DirCC, RMA, 및 LCC 접근법들을 하나의 스키마로 결합한다.
도 32를 참조하면, 도시되어 있는 것들은 8개의 블록들로 구획된 64 코어 CPU, 및 상기 코어들의 외부에 있는 MM 스위치(127)를 제어하는 MM(124)이다. 상기 외부 MM(124)은 상기 코어들(125)에 의해 이용될 프로세스들을 스케줄링한다. 8개 코어들의 각각의 블록은 인스트럭션 캐시 및 데이터 캐시를 담고, MM(126)에 의해 멘토링되는바, 즉, 각각의 블록은, 블록 메타 정보, 상기 인스트럭션 및 데이터 캐시들을 위한 가상화된 L2 캐시로서 기능하는 블록 MM 메모리, 블록 멘토 도메인 프로세서, 및 블록 멘토 스위치를 포함하는바, 도 31에 관하여 전에 설명된 바와 같은데; 상기 코어들을 관리하는 상기 CPU 안의 다른 MM들(126)과의 조정은 결함 감내성을 코어 레벨까지 가능하게 한다. 조정은 2개의 레벨들에서 이루어진다. 도 31에 도시된 제1 정보 KAC(121)는 도 39에 도시된 것과 유사하게 MM(126) 장치들 사이의 통신을 허용하는데, 이는 체크포인트 및 프로세스 정보가 버스(128)를 통하여 상기 MM(126) 간에 교환될 수 있도록 한다. 제2 MM(126) 장치들은, 스케줄링, 하드웨어 기능(hardware competence) 및 유효화(validation), 바이너리 호환성, 및 프로세스 효율성을 위하여 MM(124)과 통신한다. 예를 들어, MM(124)은, 개별의 프로세스들 및 쓰레드들의 성능을 최대화하도록 MM(126)이 제공하는 캐시 일관성의 유형을 정의하는 옵션을 가진다. MM(126) 장치는, MM(124)으로부터 데이터 및 인스트럭션 정보를 요청하며, 그리고 버스(129)를 통하여 DID 메모리들(Mem-1 - Mem-6)로부터 정보를 미리 인출하도록 바이어스될 수 있다.
도 32에 도시된 상기 시스템의 특징은, 상기 코어들이 특정 유형 또는 바이너리 호환성, 제어 흐름 또는 데이터 플로에 한정되지 않는다는 점이다. 이 유형의 이종 환경은 도 26에 보여질 수 있으며, 다중-이종 코어 CPU로 확장가능한 것으로 이해될 수도 있다. 바람직하게 각각의 블록에 대하여 상기 L2 캐시는 도 31에 도시된 바와 같이, 블록 메타 정보에 따라 상기 블록 멘토 스위치와 협응하는 블록 멘토 도메인 프로세서에 의해 각각의 블록에 대해 적어도 다수의 구획들로 가상화될 수 있다. 덧붙여 이 실시예는, 모든 블록들에 속한 전체 메타 정보를 포함하는 상기 MM(124)에 의해 가상화된 DID 메모리들의 세트(Mem-l - Mem-6), 상기 전체 메타 정보로의 접근로를 갖춘 전체 멘토 도메인 프로세서(미도시), 상기 모든 블록들과 상기 DID 메모리들의 세트(129) 사이에 통신을 제공하는 전체 멘토 스위치(127), 및 상기 MM들(126들)과 상기 전체 멘토 스위치 사이의 통신 링크(128)를 포함한다.
도 33을 참조하면, GPU 컨텍스트 내에 통합된 MM이 도시된다. 이 구성에서 상기 MM은, MH2 내지 MH7로 라벨이 붙은 다수의 L2 캐시들을 서비스 및 가상화하고 있다. 종래의 GPU 모델 안에서 각각의 SP/TP 배열에는, 프로세스 상에 작동될 수 있는 기능들의 미리 결정된 세트를 제공하는 운영체제가 적재된다. MM의 통합에 의해 상기 GPU는 하나의 운영체제, 또는 함수들의 미리 결정된 세트에 제한되지 않는다. 각각의 SP/TP 배열은, 동적으로 변경될 수 있는 기능 능력(function capability) 및 유일한 운영체제를 가질 수 있다. 상기 MM은 TPC 프로세스 모듈 안에 L1 캐시(Tex L1이라고 라벨이 붙음)와 TPC 사이에 위치될 수도 있는바, 상기 MM 시스템은 이종 환경으로 된 도 32로 축소(reduce)된다. 그러한 이종 환경은 예를 들어 SP/SPU/TP/GPU의 조합 및 태깅된 토큰 시스템을 포함할 수 있다. MM 아래에 프레임 버퍼 주소 공간을 위치시킴으로써, 통합된 MM의 다른 특징들 전부와 함께 상기 프레임 버퍼에 결함 감내성이 제공된다. 이 시스템 안에 상이한 위치에 MM을 삽입함으로써 상기 시스템이 어떻게 결함들에 반응할지, 그리고 그것의 기능이 얼마나 유연한지가 정의되는 점이 이해될 수 있다. 이 유연성의 예시로서 MM-CH는, 어떻게 도 10에 도시된 '쓰레드 프로세서'로서 수행하는지를 포함하는 규칙들을 가지는 관련 있는 규칙 강제자(relevant rule enforcer)로서 이중화(double)된다.
그리드 컴퓨팅
도 34, 35 및 36을 참조하면, 각각의 도면에는 본 발명에 따른 메타 멘토들의 그리드 컴퓨팅 시스템들 안의 통합이 도시된다. MM들의 기능에 관하여 이전에 설명된 클라우드 시스템들의 유형에 의한 제한은 없으며; MM들을 갖춘 추가적인 클라우드 시스템은 비-MM 클라우드 시스템들과도 상호작용할 수 있다. 전에 설명된 바와 같이, 그리드 시스템은 일반적으로 프론트엔드 시스템 및 백엔드 시스템으로 분할될 수 있다. MM은 프론트엔드 시스템 또는 백엔드 시스템으로서 작동할 수 있거나 또는 프론트엔드 시스템 및 백엔드 시스템 둘 모두로 작동할 수 있다. 프론트엔드 MM 시스템은 도 34에 비-MM 백엔드와 함께 도시된다.
도 34를 참조하면, 도시된 것은, 비-MM 클라우드 시스템과 MM 시스템 사이의 통신 프로세스이며, 상기 MM 시스템은 MM(130) 및 MM 스위치(131)를 포함하고 이는 노드 A로 표시된다. 데이터그램이라고 불리는 전자 신호가 상기 노드 A 외측의 시스템으로부터 형성되었다고 가정하면, MM 시스템은 메시지를 노드 A I/O 포트, 예컨대 IO-2에 송신한다. 상기 데이터그램의 도착은, 도 21과 관련하여 위에서 설명된 프로세스 시퀀스와 동일 또는 유사한 프로세스 시퀀스에 의해 상기 MM를 인터럽트하도록, 노드 A의 프로그램 가능한 인터럽트 타이머(미도시)를 촉발(trigger)한다.
예를 들어 상기 통신은 웹 브라우저 애플리케이션으로부터의 것일 수 있다. 이 유형을 어떻게 프로세싱하는지에 관하여 이용가능한, 관련 있는 규칙 세트는, 노드 A에 저장된 MM-애플리케이션 프로세스 규칙들 세트(63) 안에 배치된다. 상기 관련 있는 규칙 세트는 상기 MM(130), 예컨대 MM-CPU(미도시)에 의해, 관련 있는 규칙들 캐시, 예컨대 MHb(미도시) 안에 이전에 저장되었는바, 도 21과 관련하여 설명된 바와 같다. 이 특정 맞물림(particular engagement)을 위하여, 상기 관련 있는 규칙 세트 정보는 추상화/가상화 프로세서, 예컨대 MM-CH(미도시)가 상기 컴퓨터 시스템의 비-MM 부분들(non-MM pieces)을 가상화할 수 있게 한다. 상기 비MM 시스템 구성요소의 웹 브라우저 서비스 루틴의 주소는, 메모리 유닛들(M1-M6) 안에 배치된 적합한 가상화 메모리 위치 안으로 위치된다. 상기 웹 브라우저 프로세스는 CPU-1 또는 CPU-2를 인터럽트함으로써 시작되는바 여기서 CPU-2를 인터럽트했다고 하고, 상기 웹 브라우저 서비스 루틴은 CPU-2 상에서 시작되는바, 맞물림의 MM 프로세스 규칙들에 일치된다.
상기 통신은, 상기 웹 브라우저 프로세스가 부-프로세스를 시작하려고 시도할 때까지 계속된다. 상기 노드 A MM은 맞물림의 MM 프로세스 규칙들을 자문(consult)함으로써 상기 프로세스가 시작될 수 있는지를 결정한다. 상기 규칙 세트가 프로세싱을 허용한다면, 그 프로세싱은 가상화되고 CPU-2로부터의 정보는, 미리 결정된 프로세스 시작 주소에서 상기 가상화된 부-프로세스를 시작함으로써 계속된다. 상기 MM 규칙 세트가 프로세싱을 허용하지 않거나 요청된 주소에서의 프로세싱을 허용하지 않는다면 상기 웹 브라우저 프로세싱은 그쳐진다. 이것은 애플리케이션 에러들에 의해 야기될 수 있다. 여러 재시도들이 있을 수 있지만 전에 설명된 바와 같이 결국에는 부모 프로세스, 상기 웹 브라우저 애플리케이션가 종료(terminated)되고, CPU-2는 다른 작업을 프로세스하도록 인터럽트될 수 있다. 에러 기능(error function)이 실행되고, 마지막 체크포인트로부터의 상태 정보는 실패의 지점(point of the failure)이고, 더 영구적인 위치로 전송된다. 이 정보는 CPU-2 상에 스케줄링될 수 있으며, 상기 마지막 체크포인트로부터 상기 실패까지, 그리고 상기 부모 프로세스가 종료된 때까지를 넘어서 상기 상태들이 시작, 정지, 및 재생될 수 있다. 이 상태들을 분석함으로써 얻어진 정보는 결함에 관한 포렌식 정보를 제공할 것이다.
상기 결함이 소프트웨어에 의해 야기된다면; 경고 신호가 송신되고, 상기 소프트웨어는 필요에 따라 블랙리스트에 올려진다. 상기 결함이 하드웨어 기능 부전에 의해 야기된다면 상기 실패된 구성요소는 임의의 수의 알고리즘들에 의해 격리되고, 상기 시스템은, 상기 실패된 구성요소 또는 소프트웨어와 동일한 기능을 서비스하는 다른 구성요소들을 이용하여 계속해서 정상적으로 기능한다. 이 구성요소들 및 소프트웨어는 상기 실패된 항목들과 바이너리 호환일 필요는 없으며, 유일한 요구사항은 그것들이 동일한 기능을 제공해야 한다는 것이다.
상기 MM 시스템에 의해 상기 클라우드에 송신된 프로세스들은 그것의 도메인 안의 임의의 다른 프로세스처럼 프로세싱되고, 상기 프로세스는 클라우드 실패(cloud failure)의 경우에 재시작될 수 있다. 비-MM 클라우드 환경에서 기능하는 동안 상기 MM은 그것의 도메인 상의 제어 및 그것의 결함 감내성 속성들을 유지한다.
도 35를 참조하면, 메타 멘토 기반 클라우드 시스템이 도시된다. 모든 시스템들은 MM 시스템들이지만 클라우드 네트워크의 부분으로서 비-MM 시스템 및 MM 시스템 둘 모두를 가지는 데에 관하여 한정은 없다. MM 클라우드 시스템에는 여러 장점들이 있다. 일 장점은 보안 및 클라우드 정체성이다. 노드 A는 프론트 엔드 노드이며, 상기 클라우드로부터 백엔드 자원들을 요청한다. 상기 요청은, 백엔드 노드들로의 디스크 스토리지 자원들에 대한 브로드캐스트 데이터그램들의 형태이다. 최소 2개의 노드들이 응답하는바, 예컨대 노드 B 및 C라고 하자. 노드 E 및 F는 권한/증명(authority/certificate) 서버들로서 작용한다. 상기 MM 아키텍처에 유일한 여러 시나리오들이 있는바, 다음은 예시이다.
노드 A가 상기 클라우드 내의 자원들을 위하여 브로드캐스트하는 때에, 권한/증명 노드 E는 상기 브로드캐스트를 수신하고 B 및 C를 응답하도록 배정하며, 또한 상기 데이터그램 스트림에 헤더 시퀀스를 동적으로 배정하고, 이 목적으로 노드 A 상에 유일한 키를 위치시킨다. 이로써 유일한 식별 키 및 정보의 시퀀스가 생성되는바, 상기 정보의 시퀀스는 E 안에서 알고리즘에 의해 정렬된다. 상기 키 및 시퀀스 정보는 프라이빗 MM KAC(킵 얼라이브 컨트롤러) 네트워크 상에서 노드 E로부터 노드 B, C, 및 A로 전송된다. 상기 MM 도메인이 상기 DID로부터 연결되지 않으므로 상기 DID 안의 이용자 또는 프로세스는 상기 MM 도메인 키들 또는 시퀀스에 영향을 끼칠 수 없다. 마찬가지로 MM 도메인은 상기 DID의 데이터 또는 인스트럭션들을 변경할 수 없다. 노드 A 스케줄러는, 네트워크 연결을 통하여 전송될 시퀀스 루틴을 실행한다. 노드 E의 KAC는 노드 A의 KAC에 접촉하고 노드 B로부터 이 시퀀스를 예상하도록 통신한다. 동시에 노드 F는 노드 C에 접촉하고, 노드 C와 노드 A 사이의 전송을 위한 시퀀스를 명시(specify)한다. 이들은 상이한 시퀀스들일 수 있으며, 표준 통신 포트 상으로 암호화되어 전송될 수 있다. 그래서 이 점에서 모든 당사자들(parties) 사이에 증명 교환을 넘어서 노드 B 및 C가 노드 A와 통신하고 있다는 신뢰(confidence)가 있다.
노드 A는 2개의 경로들, 및 노드 E 및 F로부터의 알고리즘으로써 인증된다. 노드 A는, 유일한 시퀀스들에 의해 노드 B 및 C와 통신한다. 트랜잭션 중의 임의의 시각에 상기 시퀀스는 수정될 수 있으며, IP 번호들은 동적으로 배정될 수 있으며, 토큰들은 확인(verification)을 위하여 교환된다. 노드 B 및 C는 노드 E 및 F의 큐 트랜잭션에 의해 노드 A 인증(authenticity)을 결정할 수 있다. 마찬가지로 노드 B 및 C는 노드 A와 큐 서버 트랜잭션을 행할 수 있다.
레이드 5(Raid 5), 레이드 6(Raid 6), 또는 스트리핑(stripping)을 이용하는 클라우드 노드들은, 하나의 노드가 정보를 손상(compromise)시킬 수 있는 정보를 담는 것을 방지한다. 노드 A가 프로세스들을 요청하고 있다면, 어떠한 하나의 노드도 상기 프로세스 또는 결과를 추측(guess)하기에 충분한 정보를 가지지 않도록 상기 프로세스들은 스프레드 스펙트럼 구성(spread spectrum arrangement)으로 배정될 것이다. 이것들은 모두 로컬에서(locally) 결함 감내성 시스템들이고 노드 A가 고장나더라도 상기 프로세스들 및 데이터는 노드 C 또는 D에 복원(restore)될 수 있다.
도 36을 참조하면, 도시되는 것은 비-메타 멘토 프론트 엔드를 갖춘 메타 멘토 백 엔드 클라우드이다. 이 구성은, 상기 프론트 엔드와의 통신이 단일 도메인에 의해 제한된다는 점을 제외하고는 도 35에 도시된 시스템과 동일하게 기능한다. 이는 상기 노드 A의 통신 시퀀스 및 증명 정보가 I/O 포트를 통해서만 채널링(channeled)된다는 것을 의미한다. 상기 클라우드 안의 다른 노드들의 인증을 확인하는 노드 A의 통신들은 하나의 도메인 및 정적인 I/O 포트로 제한된다. 상기 MM 백 엔드 클라우드의 통신은 도 35에서와 동일하며 프라이빗 네트워크 KAC 및 IO 채널들의 조합은 상기 클라우드 안의 각각의 노드의 시퀀싱(sequencing) 및 인증을 결정한다.
노드 A의 확인은 백엔드 노드들 중 하나에 의해 성취되는바, 즉, 노드 D는 노드 F가 노드 A의 인증을 확인하기를 요청한다. 노드 F 알고리즘들은 노드 A의 인증들 및 통신 경로를 확인하고, 정보 시퀀스를 노드 A로 전송한다. 상기 알고리즘은 확인 및 정보 시퀀스 순서(information sequence order)의 노드 D로의 통신을 계속하고, 상기 노드 D는 직접적으로 노드 A와 통신한다.
동일 유형의 프로세스는 상기 메타 멘토 백엔드 클라우드 안에 스프레드 스펙트럼 접근(spread spectrum approach)을 계속할 수 있다. 상기 스프레드 스펙트럼 상의 시퀀스 및 리듬(rhythm)은 정규 MM 노드(canonical MM node)에 의해 정의되는바, 정규 MM 노드는 정보를 계산 노드들 및 프론트-엔드 노드로 중계한다. 마찬가지로, 데이터 스토리지는 정규 노드에 의해 정의되는바, 상기 정규 노드는, 데이터의 스트리핑(striping) 및 타이밍에 관한 정보를 담는다. 이 정보는, 다른 스토리지 정보 통신을 위하여 상기 프론트 엔드 노트, 또는 정규 노드에 의해 유지된다.
모든 경우에 메타 멘토는 그 고유의 도메인에서의 가상화 및 프로세스 스케줄링에 대한 제어를 유지하고, 상기 MM의 멘토 스위치 안의 관련 있는 규칙들 캐시 안에 미리-저장된 관련 있는 규칙 세트에 따라 미리-승인된(preapproved) 주소 구역 및 장치들로부터만 프로세스들이 시작할 수 있게 하는바, 이는 도 21과 관련하여 위에서 더 자세히 설명된 바와 같다. MM은 I/O 통신들을 이용하는 네트워크로부터 분리된 프라이빗 네트워크(private network)를 통하여 다른 MM들과 통신할 수 있다. 상기 메타 멘토 아키텍처의 결함 감내성 양상들은, 위에서 설명된 프로세스에 유사한 체크포인트로부터 프로세스가 재시작할 수 있게 하거나, 일련의 실패들 후에 프로세스를 타임아웃(time out)시킬 수 있게 한다.
클러스터 컴퓨팅
도 37을 참조하면, 위에서 설명된 바와 같이 클러스터 컴퓨팅은 병렬 메모리 모델 또는 분산 메모리 모델로 구성될 수 있으며, 도시된 것은 공통 메모리 모델을 갖춘 메타 멘토 클러스터인바, MM(136), MM 스위치(137), 프로세스 테이블(62), 및 규칙들 세트 메모리(63)를 포함한다. 이 모델은 도 13에 유사하지만, 공통 작업(common task)을 수행하기 위해 필요한 정보는 상기 MM 및 그것의 알고리즘들에 의해 할당(mete)된다. 상기 MM은, 각각의 프로세서의 가상화된 주소 공간을 제어함으로써 각각의 프로세서를 분리된 도메인들로 구분함을 요구하거나 프로세서간(inter-processor) 통신을 가능하게 할 수 있다. 이는, 프로세서를 개개의 작업 및 메모리 공간에 전용시킴 또는 구성요소들을 다수의 프로세스들 및 운영체제들에 동적으로 배정함을 수반할 수 있다.
도 38을 참조하면, 도시되는 것은 병렬 구성으로 된 메타 멘토이다. 이 시나리오는 MM 클라우드 컴퓨팅에 유사하지만, 클러스터 컴퓨팅에서 노드들 사이의 네트워크는 국소화(localized)되고, 광역 네트워크에 걸쳐 분산되지 않는다. 도 38의 MM 구성은 도 14 및 15의 클러스터 구성들 및 도 34, 35, 및 36의 그리드 구성들에 유사하다.
도 39를 참조하면, 도시되는 것들은 2개의 분산 프로세서 시스템들, A 및 B이며, 각각은 개별의 MM들(140 및 141)에 의해 제어되며, 상기 개별의 MM들은 서로 통신한다. 시스템 A는 4개의 CPU들(A-CPU-0 내지 A-CPU-3)을 포함하며, 상기 4개의 CPU들(A-CPU-0 내지 A-CPU-3)은 MM 스위치(142)를 통하여 시스템 A 메모리 유닛들(A-Mem-1 내지 A-Mem-6)과 통신하고, 시스템 B는 4개의 CPU들(B-CPU-0 내지 B-CPU-3)을 포함하며, 상기 4개의 CPU들(B-CPU-0 내지 B-CPU-3)은 MM 스위치(143)를 통하여 시스템 B 메모리 유닛들(B-Mem-1 내지 B-Mem-6)과 통신한다. 이는, 병렬 모델 및 분산 모델(PDM) 둘 모두로 동시에 구성된 개개의 컴퓨터 시스템들의 예시이다. PDM 안에 인스트럭션 정보 및 데이터는 IDT라는 라벨이 붙은 도메인 간 전송 연결(inter domain transfer connection)을 통하여 상기 시스템 A의 DID와 시스템 B의 DID 사이에서 전송되고, 인터럽트 정보와 같은 스케줄링 및 I/O 정보는, A 및 B의 개별의 MM 도메인들 사이의 통신을 제공하는 KAC 연결(144)을 통하여 전송된다. 간략함을 위하여 상기 MM들의 외부에 배치된 네트워킹 스위치들은 도시되지 않았지만 임의의 유형의 네트워크 스위치들이 MM 시스템 도메인들 사이에 삽입될 수 있다.
상기 MM 도메인이 프로세스들을 스케줄링하고 주소 공간을 정의하기 때문에, 시스템 메모리, 예컨대 A-Mem-1 안에 찾아지는 인스트럭션 정보를 이용하여 하나의 시스템, 예컨대 A-CPU-3에 배정되는 프로세스는 데이터 정보를 다른 시스템, 예컨대 메모리 B-Mem-4 상에 저장할 수 있다. 대안적인 시나리오는 A-CPU-1에 배정된, A-Mem-1 안에서 찾아지는 인스트럭션 정보를 이용하는 프로세스가 장치들(A-Mem-3 및 B-Mem-5) 또는 장치들의 임의의 조합으로부터 데이터 정보를 복제(replicate) 및 인출할 수 있는 것이다. 다른 조합은 2개 이상의 동일한 프로세스들을 동시에 두 시스템들 모두 위에서 시작할 수 있는바, 하나는 시스템 A 상에서 하나는 시스템 B 상에서 시작하고; 그 후에 각각의 시스템의 성능을 측정 및 비교한다. 이 기법을 이용하여 하드웨어 및 소프트웨어 구성요소들의 성능이 상기 시스템들 간의 구성요소들을 순열조합(permutating)함으로써 분석될 수 있다.
이전에 설명된 바와 같이 상기 MM 도메인은 메모리 구역들을 인스트럭션의 구역들 또는 데이터 구역들로 동적으로 정의할 수 있다. 동적으로 메모리 구역들을 정의하는 이 능력은 특정 애플리케이션들에 따라, 다른 카테고리들 및 정의들에 의해 메모리 및 프로세스들을 분류하는 것까지 확장가능하다. 고전적 폰 노이만, 하버드, 및 데이터 플로 아키텍처들에서 메모리의 유형들은 인스트럭션 및 데이터로 제한된다. 인스트럭션 정보가 입/출력 포트로서 메모리를 정의할 수 있지만, 그것은 동일한 메모리를 일반 메모리(regular memory)로, 또는 일반 메모리를 입/출력 포트들로 정의할 수도 있다. 단일 도메인에서, 메모리 주소 공간을 정의하는 알고리즘들의 순환 논리로 인하여 불변의 메모리 공간을 정의하는 것은 가능하지 않다. MM 도메인에서 인스트럭션 정보는 상기 주소 공간을 정의하지 않는다. 이는, 상기 MM이 인스트럭션 정보에 의해 변경될 수 없는, 특정 유형의 입/출력 포트를 정의한다는 것을 의미한다. 상기 MM은 메모리 접근을 기록할 수 있으며, 어떤 프로세스들이 정보를 메모리에 읽고 쓸 수 있는지에 대하여 규칙들 및 조건들을 적용할 수 있다.
예를 들어 인기 있는 입/출력 포트는 범용 직렬 버스(Universal Serial Bus; USB) 포트라고 불린다. USB 장치는 외부 소스와 상기 시스템 DID 사이에 양방향으로 정보를 전송하도록 설계된다. 이 장치는 실행되도록 의도되지 않았던 인스트럭션 정보를 실행한 것의 이력(history)을 가진다. 이는, 장치 자체로부터의 인스트럭션들을 실행함, 또는 상기 장치로부터의 인스트럭션 정보를 시스템 DID 안으로 전송함으로써 성취될 수 있다.
상기 장치로부터 인스트럭션 정보를 실행함의 경우에, 이를 방지함은 USB 장치로부터 발출되는 스케줄링 프로세스들 또는 연결을 가능하게 하지 않는 MM 규칙 세트의 간단한 문제일 수 있다. 상기 MM이 주소 공간을 정의하기 때문에 다음과 같은 규칙들이 있을 수 있다: USB 장치로부터 실행되는 임의의 장치는 디스플레이와 같은 출력 장치에만 접근할 수 있다; 이 프로세스는 메모리의 한정된 영역에만 접근할 수 있으며 다른 프로세스나 자식 프로세스를 시작할 수 없다. 그러한 규칙들은 간단하거나 꽤 광대할 수 있다.
USB 장치로부터 MM 도메인 안으로 정보를 전송하는 것은 4가지 유형들로 분류될 수 있다. 유형 1은 USB 데이터 정보를 데이터 정보로서 상기 MM 도메인에 전송하는 것이다. 상기 MM은 이 전송 유형을 데이터 메모리 주소 안으로 저장한다. 유형 2는 데이터 정보로 가장한 USB 인스트럭션 정보를 전송한다. 이 조건은 단일 도메인 시스템들에서 실행 인스트럭션 정보로 채용될 수 있는바, 이는 부정한 목적의(mean spirited) 것이며, 멀웨어로 불린다. 그러나 상기 MM 도메인 안에서 이 정보는 데이터로 지정되며 실행을 위하여 스케줄링될 수 없다. 프로세스 또는 장치가 상기 데이터 정보로써 임의의 유형의 프로세스를 시작하려고 시도하더라도, 에러가 발생될 것이고 경고가 나올 것이다. 역으로 유형 3은 상기 USB 장치로부터 인스트럭션 정보를 이 MM 시스템 안의 인스트럭션 메모리 위치로 전송한다. 프로세스가 데이터로서 상기 인스트럭션 정보를 이용하려고 시도하더라도 상기 MM 규칙 세트가 그 작동을 방지하고, 이를 에러로 식별하고 경고를 낼 것이다. 유형 4 전송은 USB로부터 상기 MM 도메인 안의 인스트럭션 메모리 위치로의 인스트럭션 정보이다. 유형 4 전송에서 인스트럭션 정보는 상기 USB 장치 자체로부터의 인스트럭션들과 동일한 규칙 세트 하에서 실행될 수 있다. 전송된 유형 4 프로세스는 다른 규칙들 세트로 승격(promote)될 수 있다. 승격은, 비-시스템 근원(non-system source), 예를 들어 키보드 또는 지문 판독기로부터 정보들을 수신하는 하드웨어 장치들로부터 입력된 암호화 및 암호들(encryption and cyphers)과 같은 형태(conformation)로 제한될 수 있으며, 상기 메타 멘토에 의해 스케줄링된다. 이 장치들은 MM 도메인 안에 스푸핑(spoofed)될 수 없는데, 왜냐하면 상기 MM은 장치를 스케줄링하고 상기 시스템 안에서 전송된 모든 정보를 정의하기 때문이다.
상기 USB 장치로의 전송 정보는 상기 MM 규칙 세트의 대상이다. 상기 규칙 세트는 상기 USB 장치에 전송되는 정보의 양, 유형, 및/또는 소유자를 정의할 수 있다. 이 규칙 세트를 변경하는 것은 상기 MM에 의해 스케줄링된 암호화 및 암호들을 이용하는 동일 형태 프로세스(the same conformation process)를 요구할 수 있다.
이전에 설명된 바와 같이, 상기 MM 도메인 안의 요소들은 상기 DID를 위한 스케줄 프로세스들(schedules processes) 및 메모리 주소들을 정의하고, 상기 DID 안의 요소들은 상기 MM 도메인에 의해 정의된 인스트럭션 및 데이터 주소 공간을 이용하여 프로세스들을 실행한다. 이 특징은 상기 MM 도메인이 상기 시스템의 개개의 구성요소들 및 프로세스들을 순열조합(permutate) 및 분석하는 것을 가능하게 한다.
도 40을 참조하면, 도시되는 것들은, 공통 구성요소들 P-0 내지 P-4, S-0, 디스플레이-1 내지 디스플레이-4에 연결된 2개의 MM 시스템들이다. 상기 2개의 MM들은 그것들 개별의 킵 얼라이브 컨트롤러들(KAC)에 의해 연결된다. 상기 구성요소들 P-O, P-l, P-2, 및 S-0은, 센서들이라고 불리는 센서 유닛들이며, 그것들의 출력을 디스플레이-1, 디스플레이-2, 디스플레이-3, 디스플레이-4 상에 각각 디스플레이한다. 이 구성요소들은 상기 MM 시스템의 대표적인 구성요소들이다. 센서들 P-0, P-1, P-2로부터의 원시 판독들(raw readings)은 데이터 정보 메모리 장치들 A-Mem-0 내지 A-Mem-7 및 B-Mem-0 내지 B-Mem-7 안에 상주하는 색인 테이블(lookup table)을 이용함으로써 의미있는, 디스플레이 준비된(display ready) 값들로 변환된다. 센서 유닛(S-0)은, A-S-알고리즘 및 B-S-알고리즘이라고 라벨이 붙는, 인스트럭션 정보 메모리를 이용하여 상기 원시 판독을 의미 있는 디스플레이로 변환하는 알고리즘을 이용한다. 구성요소 수행은, 오일러 방진들 또는 그레코 라틴 방진들을 이용하는 시스템 안의 다른 구성요소들의 상호작용 없이 값들을 비교할 것이다. 이 분석이 방진(square)을 이용하지만 상기 분석은 상기 시스템 안의 대체가능한 구성요소들을 이용하여 직사각형 형태로 구성될 수 있다.
기본 방법은 센서들 P-x(여기에서 x는 0, 1, 2를 나타냄); CPU-y(여기에서 y는 A-CPU-0 내지 A-CPU-3 및 B-CPU-0 내지 B-CPU-3을 나타냄);을 이용하고, xx는 임의의 수 0, 1, 2, 3, 4, 5, 6, 7이다.
a. CPU-y를 배정하여 P-x의 아날로그-디지털 변환(Analog-Digital Conversion; A-D)을 시작함
b. 출력을 판독함
c. 색인 테이블을 이용하여 값을 변환함
d. 상기 값을 디스플레이함
상기 센서 S-O을 이용하는 기본 방법은:
a. CPU-y를 배정하여 상기 S-0 센서로부터 새로운 판독을 시작함
b. 출력을 판독함
c. S-알고리즘을 이용하여 값을 계산함
d. 상기 값을 디스플레이함
제1 사이클(1-1)은 메타 멘토 A로써 시작되고, P-0의 A-D를 시작하도록 A-CPU-0이 배정된다. 메타 멘토 B는 P-0의 A-D를 시작하도록 B-CPU-0을 배정한다.
단계 1-2; MM-A는 P-2의 A-D를 시작하도록 A-CPU-2를 배정하고 MM-B는 S-0 변환을 시작하도록 B-CPU-1을 배정한다. 또한 이 단계에서 A-CPU-0은 P-0의 출력을 판독하고 B-CPU-0은 P-1의 출력을 판독한다.
단계 1-3; A-CPU-0은, 메모리 A-Mem-xx를 이용하여 P-0의 원시 출력을 의미있는 수로 변환하도록 색인을 수행한다. B-CPU-0은 B-Mem-xx를 이용하여 P-1의 원시 출력을 의미있는 수로 변환하도록 색인을 수행한다. A-CPU-2는 P-2의 출력을 판독하고, B-CPU-1은 S-0의 원시 출력을 판독한다.
단계 1-4; A-CPU-O은 그것의 결과를 디스플레이-1 상에 디스플레이한다. 이는 A-CPU-0으로 배정된 프로세스를 완료하고, A-CPU-0은 대기 상태로 들어간다. B-CPU-1은 그것의 결과를 디스플레이-2 상에 디스플레이한다. 이는 B-CPU-1에 배정된 프로세스를 완료하고, B-CPU-1은 대기 상태로 들어간다. A-CPU-2는 P-2의 출력을 의미있는 수로 변환하도록 색인을 수행한다. 그리고 B-CPU-1은 B-S-알고리즘을 시작하여 S-0의 원시 출력으로부터 의미있는 수를 계산한다.
단계 1-5; A-CPU-2는 그것의 결과를 디스플레이-3 상에 디스플레이한다. 이는 A-CPU-3으로 배정된 프로세스를 완료하고 A-CPU-3은 대기 상태로 들어간다. B-CPU-1은 그것의 결과를 디스플레이-4 상에 디스플레이하는바, 이로써 그것의 프로세스는 완료되고 B-CPU-1은 대기 상태로 들어간다.
도 41을 참조하면, 센서들의 출력 디스플레이가 표 A에 보여진다. 모든 디스플레이는 동일한 값에 가까워야 하고, P-2의 판독이 관찰될 수 있으며 A-CPU-2는 다른 판독들로부터 현저하게 상이하다. 고전적 컴퓨터 정족수(classical computer quorum)에서 이 시점에서 전체 시스템은 불능화(disable)될 것이다. 상기 MM 시스템은 어느 구성요소가 고장났는지를 결정할 것이며, 상기 컴퓨터 시스템은 그 자체를 재구성하고 기능을 계속할 수 있을 것이며, 고장난 구성요소 또는 프로세스는 블랙리스트에 올려진다.
제2 사이클(2-1)은 A-CPU-0 및 B-CPU-0이 이용가능하자마자 시작될 수 있다. 메타 멘토 A는 A-CPU-0이 P-1의 A-D를 시작하도록 배정되게 배정한다. 메타 멘토 B는 B-CPU-0이 P-2의 A-D를 시작하도록 배정한다.
단계 2-2; MM-A는 A-CPU-2가 S-0의 A-D를 시작하도록 배정하고, MM-B는 B-CPU-1이 P-0 변환을 시작하도록 배정한다. 또한 이 단계에서 A-CPU-0은 P-1의 출력을 판독하고, B-CPU-0은 P-2의 출력을 판독한다.
단계 2-3; A-CPU-0은 메모리 A-Mem-xx를 이용하여 P-1의 원시 출력을 의미있는 수로 변환하도록 색인을 수행한다. B-CPU-0은 메모리 B-Mem-xx를 이용하여 P-2의 원시 출력을 의미있는 수로 변환하도록 색인을 수행한다. A-CPU-2는 S-0의 출력을 판독하고, B-CPU-1은 P-0의 원시 출력을 판독한다.
단계 2-4; A-CPU-0은 그것의 결과를 디스플레이-2 상에 디스플레이한다. 이로써 A-CPU-0에 배정된 프로세스는 완료되고 A-CPU-0은 대기 상태로 들어간다. B-CPU-1은 그것의 결과를 디스플레이-3 상에 디스플레이한다. 이로써 B-CPU-1에 배정된 프로세스는 완료되고 B-CPU-1은 대기 상태로 들어간다. A-CPU-2는 A-S-알고리즘을 시작하여 S-O의 원시 출력으로부터 의미있는 수를 계산한다. B-CPU-1은, B-Mem-xx를 이용하여 P-0의 출력을 의미있는 수로 변환하도록 색인을 수행한다.
단계 2-5; A-CPU-2는 그것의 결과를 디스플레이-4 상에 디스플레이한다. 이로써 A-CPU-3에 배정된 프로세스가 완료되고 A-CPU-3은 대기 상태로 들어간다. B-CPU-1은 그것의 결과를 디스플레이-1 상에 디스플레이하는바, 이로써 그것의 프로세스는 완료되고 B-CPU-1은 대기 상태로 들어간다.
제3 사이클(3-1)은 A-CPU-0 및 B-CPU-0이 이용가능하자마자 시작될 수 있다. 메타 멘토 A는, A-CPU-0이 P-2의 A-D를 시작하도록 배정되게 배정한다. 메타 멘토 B는 B-CPU-0이 S-0의 A-D를 시작하도록 배정한다.
단계 3-2; MM-A는 P-0의 A-D를 시작하도록 A-CPU-2를 배정하고, MM-B는 P-1 변환을 시작하도록 B-CPU-1을 배정한다. 또한 이 단계에서 A-CPU-0은 P-2의 출력을 판독하고 B-CPU-0은 S-0의 출력을 판독한다.
단계 3-3; A-CPU-0은 메모리 A-Mem-xx를 이용하여 P-2의 원시 출력을 의미있는 수로 변환하도록 색인을 수행한다. B-CPU-0은 B-S-알고리즘을 시작하여 S-0의 원시 출력으로부터 의미있는 수를 계산한다. A-CPU-2는 P-0의 출력을 판독하고 B-CPU-1은 P-1의 원시 출력을 판독한다.
단계 3-4; A-CPU-0은 그것의 결과를 디스플레이-3 상에 디스플레이한다. 이로써 A-CPU-0에 배정된 프로세스는 완료되고 A-CPU-0은 대기 상태로 들어간다. B-CPU-0은 그것의 결과를 디스플레이-4 상에 디스플레이한다. 이로써 A-CPU-0에 배정된 프로세스가 완료되고 B-CPU-0은 대기 상태로 들어간다. A-CPU-2는 A-Mem-xx를 이용하여 P-0의 출력을 의미있는 수로 변환하도록 색인을 수행한다. B-CPU-1은 B-Mem-xx를 이용하여 P-1의 출력을 의미있는 수로 변환하도록 색인을 수행한다.
단계 3-5; A-CPU-2는 그것의 결과를 디스플레이-1 상에 디스플레이한다. 이로써 A-CPU-3에 배정된 프로세스는 완료되고 A-CPU-3은 대기 상태로 들어간다. B-CPU-1은 그것의 결과를 디스플레이-2 상에 디스플레이하는바, 이로써 그것의 프로세스는 완료되고 B-CPU-1은 대기 상태로 들어간다. B-CPU-1은 그것의 결과를 디스플레이-2 상에 디스플레이하는바, 이로써 그것의 프로세스는 완료되고 B-CPU-1은 대기 상태로 들어간다.
제4 사이클(4-1)은 A-CPU-0 및 B-CPU-0이 이용가능하자마자 시작될 수 있다. 메타 멘토 A는 A-CPU-0이 S-0의 A-D를 시작하도록 배정되게 배정한다. 메타 멘토 B는 B-CPU-0이 P-0의 A-D를 시작하도록 배정한다.
단계 4-2; MM-A는 P-1의 A-D를 시작하도록 A-CPU-2를 배정하고, MM-B는 P-2 변환을 시작하도록 B-CPU-1을 배정한다. 또한 이 단계에서 A-CPU-0은 S-0의 출력을 판독하고 B-CPU-0은 P-0의 출력을 판독한다.
단계 4-3; A-CPU-0는 A-S-알고리즘을 시작하여 S-0의 원시 출력으로부터 의미있는 수를 계산한다. B-CPU-0은 메모리 B-Mem-xx를 이용하여 P-2의 원시 출력을 의미있는 수로 변환하도록 색인을 수행한다. A-CPU-2는 P-0의 출력을 판독하고 B-CPU-1은 P-1의 원시 출력을 판독한다.
단계 4-4; A-CPU-0은 그것의 결과를 디스플레이-4 상에 디스플레이한다. 이로써 A-CPU-0에 배정된 프로세스는 완료되고 A-CPU-0은 대기 상태로 들어간다. B-CPU-1는 그것의 결과를 디스플레이-1 상에 디스플레이한다. 이로써 A-CPU-0 및 B-CPU-0에 배정된 프로세스는 완료되고 그것들은 대기 상태로 들어간다. A-CPU-2는 A-Mem-xx를 이용하여 P-0의 출력을 의미있는 수로 변환하도록 색인을 수행한다. B-CPU-1은 A-MM-xx를 이용하여 P-1의 출력을 의미있는 수로 변환하도록 색인을 수행한다.
단계 4-5; A-CPU-2는 그것의 결과를 디스플레이-2 상에 디스플레이한다. 이로써 A-CPU-3에 배정된 프로세스가 완료되고 A-CPU-3은 대기 상태로 들어간다. B-CPU-1은 그것의 결과를 디스플레이-3 상에 디스플레이하는바, 이로써 그것의 프로세스가 완료되고 B-CPU-1은 대기 상태로 들어간다.
도 41을 다시 참조하면, 모두 4개의 사이클들의 출력들이 표 B에 보여진다. 예상되는 출력 중 전부가 알려져있고 동일한 값을 가져야 하기 때문에 센서(P-2)가 에러난 것이 추론되고, 추가 이용되지 않도록 블랙리스트에 올려진다. 상기 시스템 안에 남아있는 구성요소들은 기능적이며 이용을 위하여 가용하다. 표 C에는 A-Mem-xx 색인 실패(lookup failure)에 대한 패턴이 도시된다. 표 D에는 B-CPU-0 프로세스의 문제가 도시되는데, 왜냐하면 B-CPU-0 실패는 값을 등록하지 않을 것이기 때문이다. 표 E에는 모든 P 시리즈 센서들의 실패가 도시된다. 그래프-A에는 실제-세계 조건에서 어떻게 3개의 모든 P 스타일 센서들이 실패할 수 있는지가 도시된다. 각각의 센서가 상이한 속도(different rate)로 실패할 것이므로 P 시리즈 센서들은 실패했고 S 시리즈 센서는 정확하게 판독하고 있다는 점이 추론될 수 있다.
도 42를 참조하면, 도시되는 것은, 메타 멘토 시스템의 프로세스들에 적용될 때의 이 유형의 분석이다. 앞서 언급된 4개 단계의 예시를 이용하면, 각각의 단계 안의 톱 프로세스(top process)는 P 센서 프로세싱이며, 이는 컴퓨팅 능력(computing capacity)의 75퍼센트를 나타낸다. 이는 표 F에 나타난다. 표 G에는 B-CPU-0 알고리즘들에 프로세스 변경이 있다면 무엇이 발생하는지가 도시된다. 이 변경은 잘못된(errant) 구성요소들, 잘못된 인스트럭션 정보, 및/또는 멀웨어 같은 의도하지 않은 추가 프로세스들로부터 올 수 있다.
상기 MM은 모든 프로세스들을 스케줄링하므로 이 프로세스들은 상기 MM의 관리 시스템들(accounting systems)에 의해 기록될 수 있으며, 문제 있는 것으로 플래그가 지정(flagged as problematic)될 수 있다. 예컨대 도 43에 도시되는 퍼지 논리(Fuzzy Logic), 신경 네트워크들 또는 분산의 분석(analysis of variance or neural networks)과 같은 수학적 기법들이 상기 MM 시스템을 정의하는 데에 이용될 수 있다. 도 43에서 신경 네트워크는 도 42의 각각의 오일러 방진에 대하여 묘사된다. 각각의 CPU는 입력 뉴런으로 여겨지며, 시스템 자원들은 출력 뉴런들이다. 이 예시에서, S 및 P 알고리즘들은 뉴런들을 시스템 자원들로 격발(fire)한다. 상기 Mem-데이터 출력 뉴런은 상기 P 알고리즘들을 표현하고, Mem-Proc 1은 상기 S 알고리즘을 표현한다. 네트워크 A에는 정상 작동 중인 시스템이 도시되고 P 뉴런을 3번 "격발"하고, S 뉴런은 사이클 당 각각의 CPU에 대하여 1번 격발한다. 이는 도 42의 표 F에 유사하다. 네트워크 B에는 시스템 작동의 변화가 도시되는바, 여기에서 A-CPU-0, A-CPU-2, 및 B-CPU-1은 네트워크 A와 동일하게 격발하지만 B-CPU-0은 새로운 뉴런, 뉴런 X를 격발하고 있으며, 상기 뉴런 X는 상이한 숨겨진 층 구성(different hidden layer configuration)이다. 뉴런 X는 2개의 새로운 시스템 자원들, Mem-Proc 2 및 I/O 자원을 이용하고 있다. 이 방식으로 상기 메타 멘토 아키텍처는 잘못된 프로세스들 및 구성요소 할당(allocation)을 쉽게 식별할 수 있다.
전술한 설명 및 도면들은 예시적 목적으로만 주어졌던 것이며, 본 발명이 개시된 실시예들에 제한되지 않으며, 오히려 청구항들에 의해 한정되는 바와 같은 본 발명의 범위 내에 속하는 임의의 그리고 모든 대체물들, 균등물들, 변경물들 및 요소들의 재배치물(rearrangements of elements)을 아우르는 것으로 의도된 것이라는 점이 이해될 것이다.

Claims (21)

  1. 결합 감내성 (fault tolerant)으로 동적으로 건립가능한 컴퓨터 시스템으로서, 상기 컴퓨터 시스템은:
    a. 데이터 및 인스트럭션 도메인으로서:
    i. 상기 데이터 및 인스트럭션 도메인 안에서만 작동하는 프로세서들의 세트, 및
    ii. 상기 데이터 및 인스트럭션 도메인 안에서 작동가능한 메모리들의 세트를
    포함하는 데이터 및 인스트럭션 도메인; 그리고
    b. 상기 데이터 및 인스트럭션 도메인과는 독립적이며 별개인 메타 멘토 도메인을 포함하며, 상기 메타 멘토 도메인은:
    i. 데이터, 알고리즘들 및 규칙 세트들을 포함하는 메타 정보;
    ii. 상기 메타 정보를 담는 멘토 도메인 메모리;
    iii. 상기 멘토 도메인 메모리 메타 정보로의 접근(access)을 포함하는 멘토 도메인 프로세서들의 세트; 그리고
    iv. 상기 데이터 및 인스트럭션 도메인 안의 프로세서들의 세트 및 메모리들의 세트 사이의 통신을 제공하는 멘토 스위치들의 세트로서, 상기 멘토 스위치들의 세트는 상기 메타 정보에 따라 상기 통신을 멘토링하기 위하여 상기 멘토 도메인 프로세서들의 세트와 협응하며, 상기 멘토링은 상기 멘토 도메인 프로세서들의 세트 중 하나 이상이 상기 멘토 스위치들에 의해 상기 데이터 및 인스트럭션 도메인을 동적으로 모니터, 제어, 구성 또는 재구성하기 위해 상기 메타 정보를 이용하는 것을 포함하는, 멘토 스위치들의 세트를 포함하며,
    v. 상기 멘토 스위치들은 애플리케이션들 및 프로세스들을 스케줄링하기 위해 상기 프로세서들의 세트들 및 자원들 사이에서 추상화층을 제공하며,
    vi. 상기 멘토 스위치들은 다중-도메인 시스템들을 생성하기 위해 다른 멘토 스위치들 사이에서 또는 시스템 구성요소들 간에 정보를 전달하는, 동적으로 건립가능한 컴퓨터 시스템.
  2. 제1항에 있어서, 상기 데이터 및 인스트럭션 도메인 안에서만 작동하는 상기 프로세서들의 세트는 폰 노이만 아키텍처, 하버드 아키텍처, 수정 하버드 아키텍처, 또는 데이터 플로(dataflow) 아키텍처를 가지는 하나 이상의 프로세서들을 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  3. 제1항에 있어서, 상기 멘토 도메인 프로세서들의 세트에 의한 멘토링은, 시스템 인터럽트들을 수신하는 것 그리고 인터럽트 서비스 프로세스들을 상기 데이터 및 인스트럭션 도메인 안의 프로세서들 및 메모리들의 세트들에 선별적으로 배정하는 것(selectively assigning)을 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  4. 제1항에 있어서, 상기 멘토 도메인 프로세서들의 세트에 의한 멘토링은, 시스템 입력 및 출력 활동들을 추상화함(abstracting)을 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  5. 제1항에 있어서, 상기 메타 정보는, 상기 멘토 도메인 프로세서들의 세트에 의해 상기 데이터 및 인스트럭션 도메인에서의 추상화(abstractions) 및/또는 가상화(virtualizations)를 생성하는 데에 이용되는 알고리즘들을 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  6. 제1항에 있어서, 상기 멘토 스위치들의 세트는, 상기 데이터 및 인스트럭션 도메인 안에서만 작동하는 상기 프로세서들의 세트와 상기 데이터 및 인스트럭션 도메인 안에서 작동가능한 상기 메모리들의 세트 사이에, 동적으로 구성가능한 통신 경로들을 포함하고, 상기 멘토 도메인 프로세서들의 세트는 상기 메타 정보에 따라 상기 통신 경로들을 원하는 대로 선별적으로 구성 및 재구성하는, 동적으로 건립가능한 컴퓨터 시스템.
  7. 제1항에 있어서:
    a. 상기 메타 정보는 규칙들의 마스터 세트를 포함하고;
    b. 상기 멘토 도메인 프로세서들의 세트는:
    i. 규칙 서버로서 기능하는 제1 프로세서; 및
    ii. 세컨더리 프로세서(secondary processor)들의 세트로서, 상기 데이터 및 인스트럭션 도메인 안에서만 작동하는 프로세서들의 대응되는 세트를 멘토링하며, 그 멘토링은 상기 제1 프로세서에 의해 서비스되는 마스터 규칙들의 서브세트를 적어도 강제함을 포함하고, 상기 데이터 및 인스트럭션 도메인 안에서만 작동하는 프로세서들의 상기 대응되는 세트에 의해 작동되고 있는(being run) 프로세스들은 상기 규칙들의 상기 서브세트와 관련 있는, 세컨더리 프로세서들의 세트;를 포함하는,
    동적으로 건립가능한 컴퓨터 시스템.
  8. 제7항에 있어서, 상기 멘토 도메인 메모리는:
    a. 상기 제1 프로세서에 의해 접근가능한 규칙들의 마스터 세트를 담는 제1 메모리; 및
    b. 상기 세컨더리 프로세서들의 세트에 대응되는 세컨더리 메모리(secondary memory)들의 세트로서, 각각의 세컨더리 메모리의 대응되는 세컨더리 프로세서들의 세트에 의해 이루어지는 멘토링에 관련 있는 규칙들의 서브세트를 상기 각각의 세컨더리 메모리가 담는, 세컨더리 메모리들의 세트;를 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  9. 제1항에 있어서,
    a. 상기 데이터 및 인스트럭션 도메인 안에서만 작동하는 프로세서들의 세트는 복수의 슬레이브 프로세서들을 포함하며;
    b. 상기 메타 정보는 알고리즘들 및 마스터 규칙 세트들을 포함하며; 그리고
    c. 상기 멘토 도메인 프로세서들의 세트는,
    i. 규칙 서버로서 기능하는 제1 프로세서;
    ii. 복수의 세컨더리 프로세서들로, 각각의 세컨더리 프로세서가 하나 이상의 슬레이브 프로세서들을 멘토링하며 상기 제1 프로세서에 의해 서비스되는 마스터 규칙들의 서브세트를 강제하고, 상기 하나 이상의 슬레이브 프로세서들에 의해 작동되고 있는 프로세스들과 상기 규칙들의 상기 서브세트가 관련 있는, 복수의 세컨더리 프로세서들; 및
    iii. 상기 슬레이브 프로세서들과, 상기 데이터 및 인스트럭션 도메인 안의 상기 메모리들의 세트 사이에 통신을 제공하는 멘토 스위치들의 세트로서, 상기 메타 정보에 따라 상기 통신을 멘토링하기 위하여 상기 세컨더리 프로세서들과 협응하는, 멘토 스위치들의 세트
    를 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  10. 제9항에 있어서, 상기 멘토 도메인 메모리는:
    a. 상기 제1 프로세서에 의해 접근가능한 규칙들의 마스터 세트를 담는 제1 메모리; 및
    b. 상기 세컨더리 프로세서들 중 하나 이상에 대응되는 세컨더리 메모리들의 세트로서, 상기 하나 이상 세컨더리 프로세서들에 의해 이루어지는 멘토링에 관련 있는 규칙들의 서브세트를 각각의 세컨더리 메모리가 담는, 세컨더리 메모리들의 세트;를 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  11. 제10항에 있어서,
    상기 데이터 및 인스트럭션 도메인 안에서만 작동하는 상기 복수의 슬레이브 프로세서들은, 각각이 폰 노이만 아키텍처, 하버드 아키텍처, 수정 하버드 아키텍처, 또는 데이터플로 아키텍처를 가지는 병렬화된 프로세서들을 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  12. 제1항에 있어서,
    상기 데이터 및 인스트럭션 도메인 안에서만 작동하는 상기 복수의 슬레이브 프로세서들은 프로세서 코어들의 세트를 포함하며, 그리고 상기 데이터 및 인스트럭션 도메인 안에서 작동가능한 메모리들의 세트는 캐시들의 세트를 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  13. 제12항에 있어서, 상기 프로세서 코어들의 세트는 단일 코어 프로세서이고, 상기 캐시들의 세트는 인스트럭션 캐시, 데이터 캐시, 및 레벨 2(level two; L2) 캐시를 포함하고, 상기 멘토 스위치들의 세트는 인스트럭션 캐시 및 데이터 캐시, 그리고 상기 L2 캐시 사이의 통신을 제공하고, 상기 멘토 스위치들의 세트는 상기 통신을 멘토링하기 위하여 상기 멘토 도메인 프로세서들의 세트와 협응하며, 상기 멘토링은 상기 L2 캐시로 전송되거나 상기 L2 캐시로부터 전송되는 정보를 가상화하는 것을 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  14. 제12항에 있어서,
    a. 상기 메타 정보는 규칙들의 마스터 세트를 포함하고;
    b. 상기 멘토 도메인 프로세서들의 세트는:
    i. 규칙 서버로서 기능하는 제1 프로세서;
    ii. 세컨더리 프로세서들의 세트로서, 프로세서 코어들의 대응되는 세트를 멘토링하며, 그 멘토링은 상기 제1 프로세서에 의해 서비스되는 마스터 규칙들의 서브세트를 적어도 강제함을 포함하고, 상기 프로세서 코어들의 대응되는 세트에 의해 작동되고 있는(being run) 프로세스들은 상기 규칙들의 상기 서브세트와 관련 있는, 세컨더리 프로세서들의 세트;
    iii. 상기 제1 프로세서에 의해 접근가능한 규칙들의 마스터 세트를 담는 제1 메모리; 및
    iv. 상기 세컨더리 프로세서들의 세트에 대응되는 세컨더리 메모리들의 세트로서, 각각의 세컨더리 메모리의 대응되는 세컨더리 프로세서들의 세트에 의해 이루어지는 멘토링에 관련 있는 규칙들의 서브세트를 각각의 세컨더리 메모리가 담는, 세컨더리 메모리들의 세트;를 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  15. 제14항에 있어서, 상기 프로세서 코어들의 세트는, 인스트럭션 캐시, 데이터 캐시, 및 레벨 2(L2) 캐시를 구비한 단일 코어를 포함하고, 상기 멘토 스위치들의 세트는 인스트럭션 캐시 및 데이터 캐시 그리고 상기 L2 캐시 사이의 통신을 제공하고, 상기 멘토 스위치들의 세트는 상기 통신을 멘토링하기 위하여 상기 멘토 도메인 프로세서들의 세트와 협응하며, 상기 멘토링은 상기 L2 캐시로 전송되거나 상기 L2 캐시로부터 전송되는 정보를 가상화하는 것을 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  16. 제14항에 있어서, 상기 프로세서 코어들의 세트는: 각각의 코어가 제어 유닛 및 산술-논리 유닛을 구비하고, 각각의 코어가 자신의 제어 유닛 안에, 공통 인스트럭션 버스와 통신되는 연관 인스트럭션 캐시를 구비하고, 각각의 코어가 자신의 산술-논리 유닛 안에, 공통 데이터 버스와 통신되는 연관 데이터 캐시, 및 공통 레벨 2(L2) 캐시를 구비하는 것을 특징으로 하는 다수의 코어들이고, 상기 컴퓨터 시스템에서:
    a. 상기 멘토 스위치들의 세트는 공통 인스트럭션 버스 및 데이터 버스 그리고 상기 L2 캐시 사이의 통신을 제공하고, 상기 멘토 스위치들의 세트는 상기 통신을 멘토링하기 위하여 상기 멘토 도메인 프로세서들의 세트와 협응하고, 그 멘토링은 상기 L2 캐시로 전송되거나 상기 L2 캐시로부터 전송되는 정보를 가상화하는 것을 포함하며; 그리고
    b. 코어 메타 멘토로서,
    i. 코어 메타 정보;
    ii. 상기 코어 메타 정보를 담는 멘토 도메인 메모리;
    iii. 상기 멘토 도메인 메모리로의 접근로를 포함하는 코어 멘토 도메인 프로세서;
    iv. 상기 코어 메타 정보에 따라 상기 코어들의 제어 유닛들과 그 코어들의 개별의 산술-논리 유닛들 사이의 모든 통신들을 멘토링하기 위하여 상기 코어 멘토 도메인 프로세서와 협응하는 코어 멘토 스위치; 및
    v. 상기 L2 캐시를 멘토링하는 상기 멘토 도메인 프로세서들의 세트와 상기 코어 멘토 도메인 프로세서 사이의 조정(coordination)을 위한 통신 링크;를 포함하는 코어 메타 멘토를 더 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  17. 제14항에 있어서, 상기 메타 멘토 도메인 안에서 작동하는 삼차 메모리로서, 상기 메타 정보에 따라 멘토 스위치와 협응하는 멘토 도메인 프로세서에 의해 각각의 프로세서 코어를 위한 적어도 2개의 구획들로 가상화되는 L2 캐시로서 기능하는, 삼차 메모리를 더 포함하는, 동적으로 건립가능한 컴퓨터 시스템.
  18. 제14항에 있어서, 상기 프로세서 코어들의 세트는 그래픽 프로세싱 유닛들의 세트를 포함하고, 상기 캐시들의 세트는, 같은 수(a like number)의 프레임 버퍼들과 통신되는 L2 캐시들의 세트를 포함하며, 상기 메타 정보는, 상기 L2 캐시들의 세트를 가상화하도록 상기 멘토 도메인 프로세서들의 세트와 협응하는 상기 멘토 스위치들의 세트에 의해 이용되는, 동적으로 건립가능한 컴퓨터 시스템.
  19. 삭제
  20. 삭제
  21. 삭제
KR1020147032964A 2012-05-24 2013-05-23 동적으로 건립가능한 컴퓨터 시스템 KR102114942B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261651064P 2012-05-24 2012-05-24
US61/651,064 2012-05-24
PCT/US2013/042324 WO2013177347A2 (en) 2012-05-24 2013-05-23 Dynamically erectable computer system

Publications (2)

Publication Number Publication Date
KR20150014464A KR20150014464A (ko) 2015-02-06
KR102114942B1 true KR102114942B1 (ko) 2020-06-05

Family

ID=49624518

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147032964A KR102114942B1 (ko) 2012-05-24 2013-05-23 동적으로 건립가능한 컴퓨터 시스템

Country Status (6)

Country Link
US (1) US9772971B2 (ko)
EP (1) EP2856313B1 (ko)
JP (1) JP2015517712A (ko)
KR (1) KR102114942B1 (ko)
CN (1) CN104662515B (ko)
WO (1) WO2013177347A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017171165A1 (ko) * 2015-12-14 2017-10-05 (주)코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 발급방법
US10452395B2 (en) 2016-07-20 2019-10-22 International Business Machines Corporation Instruction to query cache residency
US10521350B2 (en) 2016-07-20 2019-12-31 International Business Machines Corporation Determining the effectiveness of prefetch instructions
US10621095B2 (en) 2016-07-20 2020-04-14 International Business Machines Corporation Processing data based on cache residency
CN108241484B (zh) * 2016-12-26 2021-10-15 上海寒武纪信息科技有限公司 基于高带宽存储器的神经网络计算装置和方法
US11295204B2 (en) * 2017-01-06 2022-04-05 International Business Machines Corporation Area-efficient, reconfigurable, energy-efficient, speed-efficient neural network substrate
US11294641B2 (en) * 2017-05-30 2022-04-05 Dimitris Lyras Microprocessor including a model of an enterprise
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US10747280B2 (en) * 2018-11-27 2020-08-18 International Business Machines Corporation Reconfigurble CPU/GPU interconnect to mitigate power/thermal throttling
RU2760636C2 (ru) * 2018-12-19 2021-11-29 Федеральное государственное автономное учреждение науки Институт конструкторско-технологической информатики Российской академии наук (ИКТИ РАН) Отказоустойчивая нейронная сеть, способ обнаружения отказов нейронной сети, способ обеспечения отказоустойчивости нейронной сети
US11531607B2 (en) 2019-12-10 2022-12-20 Cisco Technology, Inc. Fault isolation and recovery of CPU cores for failed secondary asymmetric multiprocessing instance
US11726823B2 (en) 2020-02-06 2023-08-15 Samsung Electronics Co., Ltd. Electronic device having heterogeneous processors and method of processing task using the heterogeneous processors
CN113452383A (zh) * 2020-03-26 2021-09-28 湖南智领通信科技有限公司 针对软件无线电系统tpc译码的gpu并行优化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070005861A1 (en) * 2005-06-30 2007-01-04 Smith Roger A Fault tolerant computer system
JP2007508623A (ja) * 2003-10-08 2007-04-05 ユニシス コーポレーション 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ
US20110302450A1 (en) 2010-06-04 2011-12-08 International Business Machines Corporation Fault tolerant stability critical execution checking using redundant execution pipelines
US20120089762A1 (en) 2002-10-08 2012-04-12 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931938A (en) * 1996-12-12 1999-08-03 Sun Microsystems, Inc. Multiprocessor computer having configurable hardware system domains
US20070067366A1 (en) * 2003-10-08 2007-03-22 Landis John A Scalable partition memory mapping system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120089762A1 (en) 2002-10-08 2012-04-12 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
JP2007508623A (ja) * 2003-10-08 2007-04-05 ユニシス コーポレーション 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ
US20070005861A1 (en) * 2005-06-30 2007-01-04 Smith Roger A Fault tolerant computer system
US20110302450A1 (en) 2010-06-04 2011-12-08 International Business Machines Corporation Fault tolerant stability critical execution checking using redundant execution pipelines

Also Published As

Publication number Publication date
US20150143082A1 (en) 2015-05-21
CN104662515B (zh) 2018-12-04
US9772971B2 (en) 2017-09-26
EP2856313B1 (en) 2018-07-11
WO2013177347A3 (en) 2014-02-27
CN104662515A (zh) 2015-05-27
EP2856313A4 (en) 2016-03-02
WO2013177347A2 (en) 2013-11-28
JP2015517712A (ja) 2015-06-22
KR20150014464A (ko) 2015-02-06
EP2856313A2 (en) 2015-04-08

Similar Documents

Publication Publication Date Title
KR102114942B1 (ko) 동적으로 건립가능한 컴퓨터 시스템
US20230251882A1 (en) Parallel hardware hypervisor for virtualizing application-specific supercomputers
US8776050B2 (en) Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
CN109791536A (zh) 可配置逻辑平台
AU2019428076B2 (en) Analytics, algorithm architecture, and data processing system and method
US11861406B2 (en) Dynamic microservices allocation mechanism
Shan et al. KubeAdaptor: A docking framework for workflow containerization on Kubernetes
Lannurien et al. Serverless Cloud Computing: State of the Art and Challenges
Georgopoulos et al. Energy-efficient heterogeneous computing at exaSCALE—ECOSCALE
Lascu et al. IBM z15 (8561) Technical Guide
WO1986007174A1 (en) Super-computer system architectures
Yang et al. LMC: Automatic resource-aware program-optimized memory partitioning
Dennis et al. Research directions in computer architecture
Ghandeharizadeh et al. Disaggregated Database Management Systems
Paraskevas Enabling Direct-Access Global Shared Memory for Distributed Heterogeneous Computing
Wang et al. Disaggregating Applications Using Uniservices
Mbongue Hardware/Software Infrastructure for Transparent Multi-Tenancy in FPGA-Accelerated Clouds
Polze et al. High Performance Responsive Computing with CORE and SONiC
Pineiro et al. Towards a Big Data Multi-language Framework using Docker Containers
Cabarcas Jaramillo Castell: a heterogeneous cmp architecture scalable to hundreds of processors
Santa Ana Pueblo HotoS XIV: 14th Workshop on Hot topics in operating Systems
Verma Dr. JK Verma
de Mes Transputers
Fields PRIMEHPC FX10
JPH02148188A (ja) データフロープロセッサのメモリアクセス制御方式

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