KR101072148B1 - 사용자가 칩 프로세서상의 높은 스레디드 네트워크에서의 스루풋을 손상시키는 것을 방지하는 보안 방법 - Google Patents

사용자가 칩 프로세서상의 높은 스레디드 네트워크에서의 스루풋을 손상시키는 것을 방지하는 보안 방법 Download PDF

Info

Publication number
KR101072148B1
KR101072148B1 KR1020090068017A KR20090068017A KR101072148B1 KR 101072148 B1 KR101072148 B1 KR 101072148B1 KR 1020090068017 A KR1020090068017 A KR 1020090068017A KR 20090068017 A KR20090068017 A KR 20090068017A KR 101072148 B1 KR101072148 B1 KR 101072148B1
Authority
KR
South Korea
Prior art keywords
noc
node
memory
message
work unit
Prior art date
Application number
KR1020090068017A
Other languages
English (en)
Other versions
KR20100044686A (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 KR20100044686A publication Critical patent/KR20100044686A/ko
Application granted granted Critical
Publication of KR101072148B1 publication Critical patent/KR101072148B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)

Abstract

신뢰되지 않는 작업 유닛 메시지가 하이 스레디드(high threaded) 네트워크 온 칩(Network On a Chip: NOC) 프로세서의 스루풋(throughput)을 손상시키는 것을 방지하는 컴퓨터-구현 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다. 신뢰되지 않는 작업 유닛 메시지와 관련되는 보안 메시지는, NOC 내의 특정 노드가 하위 특권 비보안 모드로 작업 유닛 메시지로부터의 인스트럭션을 실행하는 동안 NOC 내의 다른 리소스에게는 보안 모드로 동작하도록 지시한다. 따라서, 제 1 노드 이외의 리소스들이 신뢰되지 않는 작업 유닛 메시지로부터 보호되기 때문에 NOC 내의 스루풋은 손상되지 않는다.

Description

사용자가 칩 프로세서상의 높은 스레디드 네트워크에서의 스루풋을 손상시키는 것을 방지하는 보안 방법{SECURITY METHODOLOGY TO PREVENT USER FROM COMPROMISING THROUGHPUT IN A HIGHLY THREADED NETWORK ON A CHIP PROCESSOR}
본 발명은 컴퓨터 분야에 관한 것으로, 구체적으로는 스레디드 컴퓨터(threaded computers)에 관한 것이다. 더 구체적으로는, 본 발명은 네트워크 온 칩(NOC) 집적회로 프로세서에 관한 것이다.
네트워크 온 칩(NOC)은 네트워크 아키텍처를 단일 칩에 적용하여 고유 프로세싱 유닛을 생성하는 신규한 집적 회로이다. 산술 로직 유닛과 메모리 사이와, 산술 로직 유닛과 시스템 버스 및 입력/출력(I/O) 버스를 따르는 입력/출력 버퍼 사이에 흐르는 데이터를 조정하는 제어 유닛을 갖는 표준 단일 von Neumann 아키텍터를 사용하는 대신에, NOC는 패킷을 사용하여 로직 노드들(로직 노드들의 각각은 von Neumann-유형 프로세서를 사용할 수 있음) 사이에 데이터를 전달한다. 각 패킷은 헤더를 포함하는데, 이 헤더는 패킷을 수신하고 처리할 로직 노드를 어드레싱한다.
이러한 패킷을 NOC로 디스패칭하고 NOC 내의 리소스에 접속하는 것은 흔히 커널 모드로 동작하는 호스트 컴퓨터의 제어하에 있게 되는데, 여기서 호스트 컴퓨터는 NOC를 다른 내부 리소스(즉, 메모리, 디스플레이, 입력 장치 등)처럼 취급한다. 따라서, 커널 모드로 동작하는 동안, 패킷은 호스트 컴퓨터로부터 NOC 내의 임의의 노드(즉, 프로세싱 유닛)로 디스페칭될 수 있다. 이 패킷은 임의의 사용자 소스로부터 나올 수 있으며, 간혹 신뢰되지 않는 작업 유닛 메시지의 형태로 존재한다. 결과적으로, 커널 모드로 NOC를 동작시키는 것은 NOC의 스루풋에 여러 위협을 부과하는데, NOC 내의 리소스에 대한 손상, NOC 내의 리소스에 대한 원치 않는 경합, NOC 내의 상이한 노드에 의한 동작들 사이의 충돌 및/또는 NOC 보안 허점(가령, NOC 내의 노드 및 리소스로의 내부 및/또는 외부 접속을 제어하는 로직)을 포함한다.
신뢰되지 않는 작업 유닛 메시지가 스레디드 네트워크 온 칩 프로세서의 스루풋을 손상시키는 것을 방지하는 컴퓨터-구현 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다. 신뢰되지 않는 작업 유닛 메시지와 관련되는 보안 메시지는, NOC 내의 특정 노드가 하위 특권 비보안 모드로 작업 유닛 메시지로부터의 인스트럭션을 실행하는 동안 NOC 내의 다른 리소스에게 보안 모드로 동작하도록 지시한다. 따라서, 제 1 노드 이외의 리소스들이 신뢰되지 않는 작업 유닛 메시지로부터 보호되기 때문에 NOC 내의 스루풋은 손상되지 않는다.
전술한 바외에도 본 발명의 추가적인 목적, 특징 및 장점은 다음의 상세한 설명에서 보다 명백해질 것이다.
본 발명에 의하면, 신뢰되지 않는 작업 유닛 메시지가 스레디드 네트워크 온 칩 프로세서의 스루풋을 손상시키는 것을 방지하는 컴퓨터-구현 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다.
이제 도면, 특히 도 1을 참조하면, 예시적 네트워크 온 칩(NOC)(102)이 제공된다. NOC(102)는 다수의 노드(104a-d)("d"는 정수)를 포함한다. NOC(102)에 대한 추가 세부사항은 아래의 도 2-6에 제공된다. 다수의 노드(104a-d) 각각은 적어도 하나의 프로세서 코어(코어 106a-d로 도시됨)를 포함한다. 노드(104a-d) 각각은 하나 이상의 나노커넬과 관련된다. 즉, 노드(104a-d) 각각이 상이한 전용 나노커넬(가령, 도시된 나노커넬 108a-d)과 관련되거나, 노드(104a-d) 모두가 단일 나노커넬(도시 생략)을 공유할 수 있다. 나노커넬은 NOC 내의 프로세서 노드에 의해 수행되는 프로세싱 동작을 조정함으로써 NOC 내의 소프트웨어 스레드를 관리하는 소프트웨어 로직으로서 정의된다. 이 조정은 1) 특정 작업 유닛 메시지를 특정 노드로 유도하는 것 및/또는 2) 보안 메시지에 의해 설정되는 매개 변수에 따라 NOC(102) 내의 리소스로의 접속을 관리하는 것을 포함하지만, 이에 한정되는 것은 아니다.
이제, NOC(102)에 연결되는 호스트 컴퓨터(110)를 고려한다. 호스트 컴퓨터(110)는 NOC(102)에 저장된 사용자 애플리케이션(112)으로부터의 인스트럭션을 포함한, 인스트럭션을 NOC(102)로 디스패칭하는 것을 감독한다. (사용자 애플리케이션(112)이 호스트 컴퓨터(110) 내에 저장된 것으로 도시되었지만, 사용자 애플리케이션(112)은 NOC(102) 내에 저장되거나 다른 외부 위치(도시 생략)에 저장될 수 있다는 것을 유의하자) 사용자 애플리케이션(112)은 다수의 작업 유닛 메시지(114)를 포함할 수 있으며, 이들 각각은 하나 이상의 소프트웨어 스레드를 포함할 수 있다(이들 소프트웨어 스레드는 제 1 소프트웨어 스레드(124) 및 제 2 소프트웨어 스레드(126)로서 예시적 방식으로 후술된다.) 다수의 작업 유닛 메시지(114) 중 하나가 도시된 작업 유닛 메시지(116)이고 NOC(102)의 노드(104a) 내에서 실행될 다수의 인스트럭션(가령, 페이로드(118))을 포함한다고 가정하자. 수신 로직(120)은 호스트 컴퓨터(110)로부터 작업 유닛 메시지(116)를 수신하고 이를 나노커넬(108a)로 유도한다. 나노커넬(108a)은 작업 유닛 메시지(116)를 노드(104a)로 전송한다. 따라서, 노드(104a)는 페이로드(118)를 실행할 수 있다(즉, 제 1 소프트웨어 스레드(124) 및/또는 제 2 소프트웨어 스레드(126). 도 2에서 보다 상세히 설명할 바와 같이, 제 1 소프트웨어 스레드(124) 및 제 2 소프트웨어 스레드(126)는 코어(106a) 내의 여러 하드웨어 스레드 내에서 실행될 수 있다.
또한, 노드(104a)는 작업 유닛 메시지(116) 내의 보안 메시지(122)를 처리할 수 있다. 보안 메시지(122)는 어느 리소스가 실행되는 동안에 페이로드(118)와 상호 작용할 수 있는지 또는 없는지에 관한 인스트럭션을 포함한다. 예를 들어, 노드(104a)는 제 1 소프트웨어 스레드(124)가 NOC(120) 내의 다른 노드(104b-d), 메모리 리소스(128)(즉, NOC(102) 내에 액세스 가능하거나 존재하는 동적 또는 정적 캐시, 레지스터, 시스템 메모리, 대용량 저장 장치 등) 및/또는 입력/출력(I/O) 리소스(130)(즉, 네트워크 포트, 키보드, 마우스, 프린터, 모니터 등)를 포함하는 어떤 다른 리소스에 접속하려는 것을 방지할 수 있다. 도 2에서 보다 상세히 설명할 바와 같이, 나노커넬(108a)은 또한 보안 메시지(122)에 따라 노드(104a) 내의 개별적인 하드웨어 스레드를 제어하여 (페이로드(118)로부터 특정 소프트웨어 스레드를 실행하는) 하나의 하드웨어 스레드가 동일한 코어 내의 다른 하드웨어 스레드에 접속할 수 없게 할 수 있다.
또한, 나노커넬(108a)은 제 1 소프트웨어 스레드(124) 및/또는 작업 유닛 메시지(116) 및/또는 노드(104a)로부터의 어떠한 요청도 거부하도록 다른 리소스(노드 104b-d, 메모리 리소스(128), I/O 리소스(130))에 지시하기 위해, 상기 리소스로 보안 메시지(122)를 전송할 수 있다.
전술한 바와 같이, 각 노드(가령, 노드 104a-d 각각)는 하나 이상의 프로세서 코어(가령, 도시된 프로세서 코어 106a-d 중 하나)를 포함한다. 이러한 프로세서 코어의 실시예의 추가 세부사항은 도 2의 프로세서 코어(206)로서 제공된다. 프로세서 코어(206) 내에는 ERAT(Effective-to-Real Table)(202)가 존재하는데, 이는 작업 유닛(208)으로부터 상이한 소프트웨어 스레드(204a-d)를 디스패칭하는 데에 사용되며, 사용자 애플리케이션(가령, 도 1에 도시된 사용자 애플리케이션 112) 또는 작업 유닛 메시지(가령, 도 1에 도시된 작업 유닛 메시지(116)일 수 있다. 작업 유닛(208)이 (NOC의 어드레싱된 노드 내에 존재하는) 프로세서 코어(206)에 의해 수신될 때, 레지스터(210d), 실행 유닛(212d) 및 출력 버퍼(214d)로 구성되는 특정 하드웨어 스레드(216)는 소프트웨어 스레드(204d)의 인스트럭션을 실행할 것이다. 아래의 도 6을 참조하면, 예시적 하드웨어 스레드는 FPR 맵퍼(660), FPIQ(672), FPR(688) 및 FPU(604)로 구성될 수 있다. 다른 예시적 하드웨어 스레드는 GPR 맵퍼(658), FXIQ(668), FXU(605) 및 GPR(686)으로 구성될 수 있다. 이들은 예시적 하드웨어 스레드이며, FXU(694), LSU(698), CRU(690), BEU(692) 등을 포함하는 다른 것들도 고려될 수 있다.
다시 도 2를 참조하면, 소프트웨어 스레드(204d)가 도 1에 도시된 제 1 소프트웨어 스레드(124)라고 가정하자. 따라서, 보안 메시지(122)는 하드웨어 스레 드(216)가 소프트웨어 스레드(204d)(즉, 제 1 소프트웨어 스레드 124)로부터의 인스트럭션을 실행하게 하지만, 소프트웨어 스레드(204d)가 실행되는 동안 하드웨어 스레드(216) 및/또는 소프트웨어 스레드(204d)는 다른 하드웨어 스레드 중 하나에 접속하는 것이 금지된다. 이 예에서, (소프트웨어 스레드(204b)로 도시된) 제 2 소프트웨어 스레드(126)는 하드웨어 스레드(218) 내의 보안되지 않는 커넬 모드로 실행될 수 있어서, 소프트웨어 스레드(126/204b) 및 하드웨어 스레드(218)가 NOC(102) 내의 다른 리소스에 접속하도록 허용되는 반면, 소프트웨어 스레드(124/204d) 및 하드웨어 스레드(216)는 NOC(102) 내의 다른 리소스에 접속하는 것이 금지된다.
다시 도 1을 참조하면, 예시를 위해, 사용자 애플리케이션(112)이 모니터(가령, 도 3에 도시된 디스플레이 장치)상에 오렌지의 실제 그림을 생성하기 위한 애플리케이션이라고 가정하다. 또한, 노드(104a)는 오렌지의 와이어프레임(즉, 골격 구(skeletal sphere)의 디지털 이미지)를 생성하기 위해 제 2 소프트웨어 스레드(126)를 실행하였다고 가정하다. 오렌지의 와이어프레임에 필요한 음영/색조/등을 제공하기 위해, 제 1 소프트웨어 스레드(124)는 동일한 노드(104a) 내에서 또는 노드(104b-d)에서 실행되어야 한다. 그러나, 제 1 소프트웨어 스레드(124)는, 허가되지 않은 사용자에 의해 기록되었거나 바이러스에 의해 오염되었거나(가령, 수신시 비밀/공개 키 쌍과 같은 보안 알고리즘에 의해 인증되지 않았거나) 신뢰되는 소스로부터의 신뢰되는 소프트웨어 일부인 것으로 증명되지 않은, 신뢰되지 않은 코드 일부일 수 있다. 따라서, 보안 메시지(122)는 다른 리소스들로부터 제 1 하드웨어 스레드(124)를 격리시켜서, NOC(102)의 스루풋의 어떤 손해도 방지한다. 제 1 소프트웨어 스레드(124)인 쉐이더(shader)가 신뢰되는 것으로 증명된 경우에만 실제적으로 도시된 오렌지의 최종 이미지를 생성하기 위해 제 2 소프트웨어 스레드(126)에 의해 무선프레임 생성된 와이어프레임과 동작할 수 있다.
다시, 도 1에 도시된 NOC(102)의 일 실시예에서 노드(104a-d)의 각각은 전용 개개의 나노커넬(108a-d)에 대한 배타적 권리를 갖는다는 것을 유의하자. 그러나, 다른 실시예에서, 단일 나노커넬(도시 생략)이 사용되어 모든 노드(104a-d) 사이의 메시지를 제어하는 데에 사용된다. 그러나, 바람직한 실시예는 더 견고한 아키텍처를 제공하기 위해 각 노드를 갖는 상이한 나노커넬을 사용하는데, 여기서 각 나노커넬은 고유의 사전정의된 방식으로 메시지를 관리할 수 있다.
신뢰되지 않는 제 1 소프트웨어 스레드(124)가 NOC(102) 내의 다른 리소스에 접속하는 것을 방지함으로써 여러 이점을 얻는다. 예를 들어, 작업 유닛 메시지가 어디로 송신되는지를 지정하는 라우팅 테이블이 보호될 수 있다. 이러한 작업 유닛 메시지가 어디로 송신되는지를 제어함으로써, 허가된 트래픽을 위한 대역폭이 보존되어 지연 문제점을 감소시킨다. 또한, 이는 부하 균형 및 리소스 할당을 유도하는데, 허가된 메시지만이 다양한 리소스들에 접속할 수 있기 때문이다.
본 발명에 따른 NOC를 사용하는 예시적 장치가 도 3에 하이 레벨로 도시되어 있다. 도시된 바와 같이, 도 3은 예시적 컴퓨터(302)의 블록도를 설명하는데, 이는 본 발명의 실시예에 따른 NOC와의 데이터 프로세싱에 유용하다. 컴퓨터(302)는 적어도 하나의 컴퓨터 프로세서(304)를 포함한다. 컴퓨터(302)는 또한 RAM(Random Access Memory, 360)을 포함하는데, 이는 고속 메모리 버스(308) 및 버스 어댑터(310)를 통해 프로세서(304) 및 컴퓨터(302)의 다른 구성요소에 연결되는 시스템 메모리이다.
애플리케이션 프로그램(312)이 RAM(306)에 저장되며, 예를 들어, 워드 프로세싱, 스프레드시트, 데이터베이스 연산, 비디오 게임, 주식 시장 시뮬레이션, 원자 양자 과정 시뮬레이션 또는 기타 사용자-레벨 애플리케이션과 같은 특정 데이터 프로세싱 태스크를 수행하기 위한 컴퓨터 프로그램 인스트럭션 모듈이 저장된다. 또한, 애플리케이션 프로그램(312)은 도 1 및 도 2와 도 7에 도시된 것과 같은 제어 프로세서를 포함한다. 또한, 운영 시스템(OS)(314)이 RAM(306)에 저장된다. OS(314)는 쉘(316)을 포함하여, 애플리케이션 프로그램(312)과 같은 리소스에 투명한 사용자 접속을 제공한다. 일반적으로, 쉘(316)은 사용자와 운영 시스템 사이의 해석자와 인터페이스를 제공하는 프로그램이다. 더 구체적으로, 쉘(316)은 코맨트 라인 사용자 인터페이스로 입력되거나 파일로부터의 코맨드를 실행한다. 따라서, 코맨드 프로세서로도 불리는 쉘(316)은 일반적으로 운영 시스템 소프트웨어 계층의 최고 레벨이며 코맨드 해석자로서 기능한다. 쉘은 시스템 프롬프트를 제공하고, 키보드, 마우스 또는 기타 사용자 입력 매체에 의해 입력되는 코맨드를 해석하며, 해석된 코맨드를 처리하기 위해 운영 시스템(가령, 커넬 318)의 적합한 하위 레벨로 송신한다. 쉘(316)은 텍스트 기반, 라인-지향 사용자 인터페이스이지만, 본 발명은 그래픽, 음성, 제스쳐 등과 같은 다른 사용자 인터페이스 모드를 마찬가지로 지원할 것이다.
도시된 바와 같이, OS(314)는 OS(314)에 대한 기능의 하위 레벨을 포함하는 커넬(318)도 포함하는데, OS(314)의 다른 부분과 애플리케이션(가령, 애플리케이션 312)에 의해 요구되는 핵심 서비스를 제공하는 것을 포함하고, 메모리 관리, 프로세스 및 태스트 관리, 디스크 관리 및 마우스와 키보드 관리를 포함한다.
도 3의 예에서 운영 시스템(314)과 애플리케이션(312)은 RAM(306)에 도시되어 있지만, 이러한 소프트웨어 구성요소는 데이터 저장장치(320)로서의 디스크 드라이브 등에 비휘발성 메모리일 수도 있다.
예시적 컴퓨터(302)는 본 발명에 다른 2개의 예시적 NOC, NOC 비디오 어댑터(322) 및 NOC 코프로세서(324)를 포함한다. NOC 비디오 어댑터(322)는 디스플레이 스크린 또는 컴퓨터 모니터와 같은 디스플레이 장치(346)로의 그래픽 출력을 위해 특별히 설계되는 I/O 어댑터의 일례이다. NOC 비디오 어댑터(322)는 고속 비디오 버스(326), 버스 어댑터(310) 및 역시 고속 버스인 프론트 사이드 버스(328)를 통해 프로세서(304)에 접속된다.
예시적 NOC 코프로세서(324)는 버스 어댑터(310), 프론트 사이트 버스(328) 및 역시 고속 버스인 프론트 사이드 버스(330)를 통해 프로세서(304)에 접속된다. NOC 코프로세서(324)는 메인 프로세서(304)의 지시에 따라 특정 데이터 프로세싱 태스크를 가속화하기에 최적이다.
예시적 NOC 비디오 어댑터(322) 및 NOC 코프로세서(324)는 각각 본 발명의 실시예에 따른 NOC를 포함하며, 집적 프로세서("IP") 블록, 라우터, 메모리 통신 제어기 및 네트워크 인터페이스 제어기를 포함하고, 각 IP 블록은 메모리 통신 제어기 및 네트워크 인터페이스 제어기를 통해 라우터에 접속되도록 구성되며, 각 메모리 통신 제어기는 IP 블록과 메모리 사이의 통신을 제어하고, 각 네트워크 인터페이스 제어기는 라우터를 통해 IP 블록간 통신을 제어한다. NOC 비디오 어댑터(322) 및 NOC 코프로세서(324)는 병렬 프로세싱을 사용하고 공유 메모리로의 고속 랜덤 접속도 요구하는 프로그램을 위해 최적이다. 그러나, 일 실시예에서, 본 명세서에서 설명되고 본 발명에 의한 사용을 위해 고려되는 NOC는 공유 메모리로의 직접 접속보다는 패킷 데이터만을 사용한다. 다시, 본 발명에 의한 사용을 위해 고려되는 예시적 NOC 아키텍처의 추가적인 세부사항은 도 4-6에 제공된다는 것을 유의하자.
계속해서 도 3을 참조하면, 컴퓨터(302)는 확장 버스(334)를 통해 연결되는 디스크 드라이브 어댑터(332)와, 프로세서(304)로의 버스 어댑터(310)와, 컴퓨터(302)의 다른 구성요소를 포함할 수 있다. 디스크 드라이브 어댑터(332)는 데이터 저장장치(320)로서 표현되는 디스크 드라이브의 형태로 컴퓨터(302)에 비휘발성 데이터 저장장치를 접속시킨다. 본 발명의 실시예에 따른 NOC와의 데이터 프로세싱을 위해 컴퓨터에서 유용한 디스크 드라이브 어댑터는 집적 드라이브 전자소자("IDE") 어댑터, 소형 컴퓨터 시스템 인터페이스("SCSI") 어댑터 및 당업자이게 자명할 다른 것들을 포함한다. 또한, 비휘발성 컴퓨터 메모리는 광 디스크 드라이브, 전기적으로 소거 가능한 프로그래밍 가능 판독 전용 메모리(소위 "EEPROM" 또는 "Flash" 메모리) 등과 같이 구현될 수 있으며, 이는 당업자에게 자명할 것이다.
또한, 예시적 컴퓨터(302)는 하나 이상의 입력/출력("I/O") 어댑터(336)를 포함한다. I/O 어댑터(336)는, 예를 들어, 소프트웨어 드라이버 및 컴퓨터 하드웨어를 통해 사용자-지향 입력/출력을 구현하여 컴퓨터 디스플레이 스크린과 같은 디스플레이 장치로의 출력과, 키보드 및 마우스와 같은 사용자 입력 장치(338)로부터의 사용자 입력을 제어한다.
또한, 예시적 컴퓨터(302)는 다른 컴퓨터(342)와의 데이터 통신 및 데이터 통신 네트워크(344)와의 데이터 통신을 위한 통신 어댑터(340)를 포함할 수 있다. 이러한 데이터 통신은 직렬적으로 RS-232 접속을 통해, 범용 직렬 버스("USB")와 같은 외부 버스를 통해, IP 데이터 통신 네트워크와 같은 데이터 통신 네트워크를 통해, 그리고 당업자에게 자명한 다른 방식으로 수행될 수 있다. 통신 어댑터는 직접적으로 또는 데이터 통신 네트워크를 통해 한 컴퓨터가 다른 컴퓨터로 데이터 통신을 송신하는 데이터 통신의 하드웨어 레벨을 구현한다. 본 발명의 실시예에 따른 NOC와의 데이터 프로세싱을 위해 유용한 통신 어댑터의 예는 유선 다이얼-업 통신용 모뎀과, 유선 데이터 통신 네트워크 통신용 이더넷(IEEE 802.3) 어댑터와, 무선 데이터 통신 네트워크 통신을 위한 IEEE 802.x 어댑터를 포함한다.
NOC 비디오 어댑터(322) 및 NOC 코프로세서(324)는 NOC의 2개의 예시적 사용일 뿐이며, 본 명세서에서 설명되는 NOC와 작업 패킷의 제어는 NOC가 데이터 프로세싱을 위해 유용한 임의의 상황에서 발견될 수 있다는 것을 유의하자.
이제, 도 4를 참조하면, 본 발명의 실시예에 따른 예시적 NOC(402)의 기능 블록도가 제공된다. NOC(402)는 도 3에 도시된 NOC 비디오 어댑터(322) 및/또는 NOC 코프로세서(324)로서 사용될 수 있는 예시적 NOC이다. NOC(402)는 집적 회로 칩(400)상에서 구현되며, 호스트 컴퓨터(101)(가령, 도 3에 도시된 프로세서(304))에 의해 제어된다. NOC(400)는 집적 프로세서("IP") 블록(404), 라우터(410), 메모리 통신 제어기(406), 및 네트워크 인터페이스 제어기(408)를 포함한다. 각 IP 블록(404)은 전용 메모리 통신 제어기(406) 및 전용 네트워크 인터페이스 제어기(408)를 통해 라우터(410)로 적응된다. 각 메모리 통신 제어기(406)는 IP 블록(404)과 메모리(가령, 온-칩 메모리(414) 및/또는 오프-칩 메모리(412)) 사이의 통신을 제어하고, 각 네트워크 인터페이스 제어기(408)는 라우터(401)를 통한 IP 블록간 통신을 제어한다.
NOC(402)에서, 각 IP 블록(404)은 NOC(402) 내에서 데이터 프로세싱을 위한 구성 블록으로서 사용되는 동기식 또는 비동기식 로직 설계의 재사용 가능한 유닛을 나타낸다. 간혹 "IP 블록"이라는 용어는 "지적 재산 블록"으로 지칭되므로, 어떤 사람에 의해 소유되는 설계로서 IP 블록(404)을 지정하는데, 이는 한 사람의 지적 재산이며 다른 사용자 또는 반도체 회로의 설계자에게 라이센싱된다. 그러나, 본 발명의 범위에서, IP 블록이 어떤 특정 소유권에 속하는 것은 아니므로, 이 용어는 본 명세서에서는 항상 "집적 프로세서 블록"으로서 확장된다. 따라서, 본 명세서에서 특정되는 IP 블록(404)은 지적 재산의 대상일 수도 아닐 수도 있는 로직, 셀 또는 칩 레이아웃 설계의 재사용 가능한 유닛이다. 또한, IP 블록(404)은 ASIC(Application Specific Integrated Circuit) 칩 설계 또는 FPGA(Field Programmable Gate Array) 로직 설계로서 형성될 수 있는 로직 코어이다.
유추에 의해 IP 블록을 설명하는 한 가지 방식은, NOC 설계에 있어서의 IP 블록은, 컴퓨터 프로그래밍에 있어서의 라이브러리 또는 인쇄 회로 기판 설계에 있어서의 이산 집적 회로 부품과 같다. 본 발명의 실시예에 따른 NOC에서, IP 블록은 완전한 특수 목적 또는 범용 프로세서 마이크로프로세서로서 또는 당업자에게 자명한 다른 방식으로 범용 게이트 넷리스트(generic gate netlists)로서 구현될 수 있다. 넷리스트는 IP 블록의 로직 함수의 불 대수(Boolean algebra) 표현(게이트, 표준 셀)이며, 하이 레벨 프로그램 애플리케이션용의 어셈블리-코드 리스팅과 유사하다. 또한, NOC는, 예를 들어, Verilog 또는 VHDL(VHSIC Hardware Description Language)과 같은 하드웨어 기술 언어로 설명되는 합성 가능한 형태로 구현될 수 있다. 넷리스트 및 합성 가능한 구현 외에도, NOC는 하위-레벨, 물리적 기술로 전송될 수도 있다. SERDES(Serializer/Deserializer), PLL(Phase-Locked Loop), DAC(Digital-to-Analog Converter), ADC(Analog-to-Digital Converter) 등과 같은 아날로그 IP 블록 요소가 GDSⅡ(Graphic Data System Ⅱ)와 같은 트랜지스터-레이아웃 형식으로 분배될 수 있다. IP 블로의 디지털 요소도 간혹 레이아웃 형식으로 제공된다.
도 4에 도시된 각 IP 블록(404)은 메모리 통신 제어기(406)를 통해 라우터(410)로 적응된다. 각 메모리 통신 제어기는 IP 블록과 메모리 사이의 데이터 통신을 제공하도록 구성되는 동기식 및 비동기식 로직 회로의 집합체이다. IP 블록과 메모리 사이의 이러한 통신의 예는 메모리 로드 인스트럭션 및 메모리 저장 인스트럭션이다. 메모리 통신 제어기(406)는 도 5에 보다 상세히 도시되어 있다.
도 4에 도시된 각 IP 블록(404)도 네트워크 인터페이스 제어기(408)를 통해 라우터(410)에 적응된다. 각 네트워크 인터페이스 제어기(408)는 IP 블록(404) 사이의 라우터(410)를 통해 통신을 제어한다. IP 블록들 사이의 통신의 예는 병렬 애플리케이션 및 파이프라인형 애플리케이션에서 IP 블록들 사이의 데이터 처리를 위해 데이터 및 인스트럭션을 보유하는 메시지(가령, 메시지/데이터 패킷)를 포함한다. 네트워크 인터페이스 제어기(408)는 도 5에 보다 상세히 도시되어 있다.
라우터들 사이의 라우터(410) 및 링크(420)는 도 4에 도시된 NOC(402)의 네트워크 동작을 구현한다. 링크(420)는 모든 라우터를 접속시키는 물리적, 병렬 와이어 버스상에서 구현된다. 즉, 각 링크는 와이어 버스 와이드상에서 구현되어 전체 데이터 전환 패킷을 동시에 수용하며, 모든 헤더 정보 및 페이로드 데이터를 포함한다. 패킷 구조가, 예를 들어, 8바이트 헤더와 56바이트 페이로드 데이터를 포함하는 64 바이트를 포함하는 경우, 각 링크의 범위를 정하는 와이어 버스는 64바이트 폭을 가지며 512개의 와이어를 필요로 한다. 또한, 각 링크(420)는 양방향적이어서, 링크 패킷 구조는 64 바이트를 포함하는 경우, 실제로 와이어 버스는 네트워크의 각 라우터(410)와 그 인접 라우터(410) 각각 사이에 1024개의 와이어를 포함한다. 하나의 메시지가 하나 이상의 패킷을 포함할 수 있지만, 각 패킷은 와이어 버스의 너비에 정확하게 맞는다. 라우터와 와이어 버스의 각 섹션 사이의 접속이 포트로 지칭되는 경우, 각 라우터는 5개의 포트를 포함하는데, 네트워크의 데이터 전송의 4개의 방향마다 하나씩이며, 5번째 포트는 메모리 통신 제어기와 네트워크 인터페이스 제어기를 통해 특정 IP 블록에 대한 라우터를 구성한다.
전술한 바와 같이, 각 메모리 통신 제어기(406)는 IP 블록과 메모리 사이의 통신을 제어한다. 메모리는 오프-칩 메인 RAM(412)과, 메모리 통신 제어기(406)를 통해 IP 블록에 직접적으로 접속되는 온-칩 메모리(415)와, IP 블록(414)으로서 인에이블되는 온-칩 메모리와, 온-칩 캐시를 포함할 수 있다. 도 4에 도시된 NOC(402)에서, 온-칩 메모리(414, 415) 중 어느 하나가, 예를 들어, 온-칩 캐시 메모리로서 구현될 수 있다. 모든 이들 메모리 형태는 동일한 어드레스 공간, 물리적 어드레스 또는 가상 어드레스에 배치될 수 있으며, IP 블록에 직접적으로 부착되는 메모리에 대해서고 그렇다. 그러므로, 메모리 어드레싱된 메시지는 IP 블록에 대해 완전히 양방향적일 수 있는데, 이러한 메모리는 네트워크상의 임의의 위치의 임의의 IP 블록으로부터 직접 어드레싱될 수 있기 때문이다. IP 블록상의 온-칩 메모리(414)는 그 IP 블록으로부터 또는 NOC의 다른 IP 블록으로부터 어드레싱될 수 있다. 온-칩 메모리(415)는 메모리 통신 제어기로 직접 부착되고, 그 메모리 통신 제어기에 의해 네트워크로 구성되는 IP 블록에 의해 어드레싱될 수 있다. 온-칩 메모리(415)는 다른 IP 블록(404)으로부터 NOC(402)의 임의의 위치에 어드레싱될 수도 있다는 것을 유의하자.
예시적 NOC(402)는 2개의 메모리 관리 유닛("MMU")(407 및 409)을 포함하는데, 본 발명의 실시예에 따른 NOC에 대한 2개의 다른 메모리 아키텍처를 도시하고 있다. MMU(407)는 특정 IP 블록(404)으로 구현되어, 그 IP 블록(404) 내의 프로세서가 가상 메모리에서 동작할 수 있게 하면서 NOC(402)의 전체적인 잔여 아키텍처가 물리적 메모리 어드레스 공간에서 동작할 수 있게 한다. MMU(409)는 오프-칩으로 구현되며, 포트(416)로서 지칭되는 데이터 통신 포트를 통해 NOC에 접속된다. 포트(416)는 NOC(402)와 MMU(409) 사이에서 신호를 전달하도록 요구되는 핀과 기타 상호접속부를 포함할 뿐만 아니라, NOC 패킷 포맷으로부터의 메시지 패킷을 외부 MMU(409)에 의해 요구되는 버스 포맷으로 변환하기에 충분한 지능을 갖는다. MMU(409)의 외부 위치는, NOC(402)의 모든 IP 블록(404)의 모든 프로세서가 가상 메모리 어드레스 공간에서 동작할 수 있으며, 오프-칩 메모리의 물리적 어드레스로의 모든 변환이 오프-칩 MMU(409)에 의해 처리된다는 것을 의미한다.
MMU(407 및 409)의 사용에 의해 설명되는 2개의 메모리 아키텍처 외에도, 포트(408)로서 도시되는 데이터 통신 포트는 본 발명의 실시예에 따른 NOC에서 유용한 세 번째 메모리 아키텍처를 도시하고 있다. 포트(418)는 NOC(402)의 IP 블록(404)과 오프-칩 메모리(412) 사이의 직접적인 접속을 제공한다. MMU가 프로세싱 경로에 존재하지 않으면, 이 아키텍처는 NOC의 모든 IP 블록에 의한 물리적 어드레스 공간의 사용을 제공한다. 양방향적으로 어드레스 공간을 공유함에 있어서, NOC의 모든 IP 블록은 메모리-어드레싱된 메시지에 의해 어드레스 공간의 메모리에 접속할 수 있으며, 로드와 저장을 포함하며, 포트(418)에 직접적으로 접속되는 IP 블록을 통해 유도된다. 포트(418)는 핀과, NOC와 오프-칩 메모리(412) 사이에 신호를 전달하도록 요구되는 기타 상호접속부를 포함할 뿐만 아니라, NOC 패킷 포맷으로부터의 메시지 패킷을 오프-칩 메모리(412)에 의해 요구되는 버스 포맷으로 변환하기에 충분한 지능을 갖는다.
도 4에 도시된 예시적 NOC(402)에서, IP 블록(404) 중 하나가 호스트 인터페이스 프로세서(405)로 지정된다. 호스트 인터페이스 프로세서(405)는 NOC(402)와 (도 2에 도입된) 호스트 컴퓨터(202) 사이의 인터페이스를 제공한다. 호스트 인터페이스 프로세서(405)는 NOC상의 다른 IP 블록으로 데이터 프로세싱 서비스를 제공하는데, 예를 들어, 호스트 컴퓨터로부터 NOC 데이터 프로세싱 요청의 IP 블록들 사이에서 수신하고 디스패칭하는 것을 포함한다.
호스트 컴퓨터 프로세서(405)는 포트(417)와 같은 데이터 통신 포트를 통해 더 큰 호스트 컴퓨터(110)로 접속된다. 포트(417)는 핀과, NOC(402)와 호스트 컴퓨터(110) 사이에서 신호를 전달하도록 요구되는 기타 상호접속부를 포함할 뿐만 아니라, NOC(402)로부터의 메시지 패킷을 호스트 컴퓨터(110)에 의해 요구되는 버스 포맷으로 변환하기에 충분한 지능을 갖는다. 도 3에 도시된 컴퓨터(302)의 NOC 코프로세서(324)의 예에서, 이러한 포트는 NOC 코프로세서(324)의 링크 구조와, NOC 코프로세서(324)와 버스 어댑터(310) 사이의 프론트 사이드 버스(330)에 대해 요구되는 프로토콜 사이에서의 데이터 통신 포맷 변환을 제공한다.
이제 도 5를 참조하면, 본 발명의 실시예에 따른 NOC(402)의 추가적인 세부사항이 제공된다. 도 4 및 도 5에 도시된 바와 같이, NOC(402)는 칩(가령, 도 4에 도시된 칩 400)상에서 구현되며, 집적 프로세서("IP") 블록(404)과, 라우터(410)와, 메모리 통신 제어기(406)와, 네트워크 인터페이스 제어기(408)를 포함한다. 각 IP 블록(404)은 메모리 통신 제어기(406) 및 네트워크 인터페이스 제어기(408)를 통해 라우터(410)로 구성된다. 각 메모리 통신 제어기(406)는 IP 블록과 메모리 사이의 통신을 제어하며, 각 네트워크 인터페이스 제어기(408)는 라우터(410)를 통해 IP 블록간 통신을 제어한다. 도 5의 예에서, 메모리 통신 제어기(406)와 네 트워크 인터페이스 제어기(408)를 통해 라우터(410)로 구성되는 IP 블록(404)의 한 세트(522)는 그 구조와 동작을 보다 상세히 설명하기 위해 확장된다. 도 5의 예의 모든 IP 블록, 메모리 통신 제어기, 네트워크 인터페이스 제어기 및 라우터는 확장된 세트(522)와 동일한 방식으로 구성된다.
도 5의 예에서, 각 IP 블록(404)은 컴퓨터 프로세서(526)를 포함하고, 이는 하나 이상의 코어(550) 및 I/O 기능부(524)를 포함한다. 이 예에서, 컴퓨터 메모리는 각 IP 블록(404)에서 RAM의 세그먼트로 표현된다. 도 4의 예를 참조하여 설명한 메모리가 물리적 어드레스 공간의 세그먼트를 차지할 수 있는데, 각 IP 블록의 그 콘텐츠는 NOC의 임의의 IP 블록에서 어드레싱 가능하고 접속 가능하다. 각 IP 블록상의 프로세서(526), I/O 기능부(524) 및 메모리(RAM 528)는 전반적으로 프로그래밍 가능한 마이크로컴퓨터로서 효율적으로 IP 블록을 구현한다. 그러나, 전술한 바와 같이, 본 발명의 범위에서, IP 블록은 일반적으로 NOC 내의 데이터 프로세싱을 위한 구성 블록으로서 사용되는 동기식 또는 비동기식 로직의 재사용 가능한 유닛을 나타낸다. 그러므로, 전반적으로 프로그래밍 가능한 마이크로컴퓨터로서 IP 블록을 구현하는 것은, 설명을 위해서는 유용한 공통적인 실시예가 본 발명의 제한사항은 아니다.
도 5에 도시된 NOC(402)에서, 각 메모리 통신 제어기(406)는 복수의 메모리 통신 실행 엔진(540)을 포함한다. 각 메모리 통신 실행 엔진(540)은 IP 블록(404)으로부터의 메모리 통신 인스트럭션을 실행하도록 인에이블되며, 네트워크 인터페이스 제어기(408)와 IP 블록(404) 사이의 양방향적 메모리 통신 인스트럭션 흐 름(544, 545, 546)을 포함한다. 메모리 통신 제어기에 의해 실행되는 메모리 통신 인스트럭션은, 특정 메모리 통신 제어기를 통해 라우터로 적응되는 IP 블록으로부터뿐만 아니라 NOC(402)의 임의의 위치의 IP 블록(404)으로부터도 발신할 수 있다. 즉, NOC(402)의 임의의 IP 블록(404)은 메모리 통신 인스트럭션을 생성하고, 그 메모리 통신 인스트럭션을 NOC(402)의 라우터(410)를 통해 그 메모리 통신 인스트럭션의 실행을 위해 다른 IP 블록과 관련되는 다른 메모리 통신 제어기로 전송할 수 있다. 이러한 메모리 통신 인스트럭션은, 예를 들어, 변환 룩어사이드 버퍼 제어 인스트럭션(translation lookaside buffer control instructions), 캐시 제어 인스트럭션, 배리어 인스트럭션(barrier instructions) 및 메모리 로드 및 저장 인스트럭션을 포함할 수 있다.
도시된 메모리 통신 실행 엔진(540)의 각각은 전체 메모리 통신 인스트럭션을 개별적으로 실행하고 다른 메모리 통신 실행 엔진(540)과 병렬로 실행한다. 메모리 통신 실행 엔진(540)은 메모리 통신 인스트럭션의 동시적 스루풋을 위해 최적인 스케일러블(scalable) 메모리 트랜잭션 프로세서를 구현한다. 메모리 통신 제어기(406)는 다수의 메모리 통신 실행 엔진(540)을 지원하는데, 이들 모두가 다수의 메모리 통신 인스트럭션의 동시 실행을 위해 동시에 실행된다. 새로운 메모리 통신 인스트럭션이 메모리 통신 제어기(406)에 의해 각 메모리 통신 실행 엔진(540)으로 할당되고, 메모리 통신 실행 엔진(540)은 다수의 응답 이벤트를 동시적으로 수용할 수 있다. 이 예에서, 메모리 통신 실행 엔진(540) 모두가 동일하다. 그러므로, 메모리 통신 제어기(406)에 의해 동시적으로 처리될 수 있는 메모 리 통신 인스트럭션의 수를 스케일링하는 것이 메모리 통신 실행 엔진(540)의 수를 스케일링함으로써 구현된다.
도 5에 도시된 NOC(402)에서, 각 네트워크 인터페이스 제어기(408)는 라우터(410)를 통해 코맨드 포맷으로부터의 통신 인스트럭션을 IP 블록(404)들 사이의 전송을 위해 네트워크 패킷 포맷으로 변환하도록 인에이블된다. 통신 인스트럭션은 IP 블록(410)에 의해 또는 메모리 통신 제어기(406)에 의해 코맨드 포맷으로 형식화되고 코맨드 포맷의 네트워크 인터페이스 제어기(408)에 제공된다. 코맨드 포맷은, IP 블록(404) 및 메모리 통신 제어기(406)의 아키텍처 레지스터 파일에 부합하는 네이티브 포맷이다. 네트워크 패킷 포맷은 네트워크의 라우터(410)를 통한 전송을 위해 요구되는 포맷이다. 이러한 각 메시지는 하나 이상의 네트워크 패킷으로 구성된다. 네트워크 인터페이스 제어기의 코맨드 포맷으로부터 패킷 포맷으로 변환된 이러한 통신 인스트럭션의 예는 메모리 로드 인스트럭션 및 IP 블록과 메모리 사이의 메모리 저장 인스트럭션을 포함한다. 또한, 이러한 통신 인스트럭션은 병렬 애플리케이션 및 파이프라인형 애플리케이션의 IP 블록들 사이의 데이터를 처리하기 위해 데이터와 인스트럭션을 전송하는 IP 블록들 사이에 메시지를 송신하는 통신 인스트럭션을 포함할 수 있다.
도 5에 도시된 NOC(402)에서, 각 IP 블록(404)은 메모리-어드레스-기반 통신을 IP 블록의 메모리 통신 제어기를 통해 메모리로 송신하고 그 네트워크 인터페이스 제어기를 통해 네트워크로 송신하도록 인에이블된다. 메모리-어드레스-기반 통신은 로드 인스트럭션 또는 저장 인스트럭션과 같은 메모리 접속 인스트럭션인데, 이는 IP 블록의 메모리 통신 제어기의 메모리 통신 실행 엔진에 의해 실행된다. 이러한 메모리-어드레스-기반 통신은 통상적으로 IP 블록에서 발신하며, 코맨드 포맷으로 형식화되고 실행을 위해 메모리 통신 제어기로 핸드오프된다.
많은 메모리-어드레스-기반 통신은 메시지 트래픽을 사용하여 실행되는데, 접속될 임의의 메모리가 물리적 메모리 어드레스 공간의 어느 위치, 온-칩 또는 오프-칩, NOC의 임의의 메모리 통신 제어기에 직접 부착되거나 최종적으로 NOC의 임의의 IP 블록을 통해 접속될 수 있으며 어느 IP 블록이 임의의 특정 메모리-어드레스-기반 통신에서 발신하는지와는 무관하기 때문이다. 메시지 트래픽을 사용하여 실행되는 모든 메모리-어드레스-기반 통신은 메모리 통신 제어기로부터 관련 네트워크 인터페이스 제어기로 전달되어 (인스트럭션 변환 로직(536)을 사용하여) 코맨드 포맷으로부터 패킷 포맷으로 변환되며 메시지의 네트워크를 통해 전송된다. 패킷 포맷으로 변환함에 있어서, 네트워크 인터페이스 제어기는 또한 메모리-어드레스-기반 통신에 의해 접속될 메모리 어드레스에 의존하여 패킷에 대한 네트워크 어드레스를 식별한다. 메모리 어드레스 기반 메시지는 메모리 어드레스를 사용하여 어드레싱된다. 각 메모리 어드레스는 네트워크 인터페이스 제어기에 의해 네트워크 어드레스, 통상적으로 어떤 범위의 물리적 메모리 어드레스에 대한 메모리 통신 제어기의 네트워크 위치로 맵핑된다. 또한, 메모리 통신 제어기(406)의 네트워크 위치는 자연스럽게 메모리 통신 제어기의 관련 라우터(410), 네트워크 인터페이스 제어기(408) 및 IP 블록(404)의 네트워크 위치이다. 각 네트워크 인터페이스 제어기 내의 인스트럭션 변환 로직(536)은 NOC의 메모리-어드레스-기반 통신을 전송하려는 목적을 위해 메모리 어드레스를 네트워크 어드레스로 변환할 수 있다.
네트워크의 라우터(410)로부터 메시지 트래픽을 수신하면, 각 네트워크 인터페이스 제어기(408)는 메모리 인스트럭션에 대한 각 패킷을 검사한다. 메모리 인스트럭션을 포함하는 각 패킷은 수신 네트워크 인터페이스 제어기와 관련되는 메모리 통신 제어기(406)로 넘겨지는데, 이는 추가 프로세싱을 위해 패킷의 잔여 페이로드를 IP 블록으로 송신하기 전에 메모리 인스트럭션을 실행한다. 이 방식에서, 메모리 콘텐츠는 IP 블록이 특정 메모리 콘텐츠에 의존하여 메시지로부터의 인스트럭션 실행을 시작하기 전에 IP 블록에 의한 데이터 프로세싱을 지원하도록 항상 준비된다.
이제 도 5에 도시된 바와 같은 NOC(402)를 참조하면, 각 IP 블록(404)은 메모리 통신 제어기(406)를 바이패싱하고 IP 블록간 네트워크-어드레싱된 통신(546)을 IP 블록의 네트워크 인터페이스 제어기(408)ㄹ르 통해 네트워크로 직접적으로 송신하도록 인에이블된다. 네트워크-어드레싱된 통신은 다른 IP 블록으로 네트워크 어드레스에 의해 유도된다. 이러한 메시지는 파이프라인형 애플리케이션의 작업 데이터, SIMD 애플리케이션의 IP 블록들 사이의 단일 프로그램 프로세싱에 대한 다수의 데이터 등을 전송하며, 이는 당업자에게 자명할 것이다. 이러한 메시지가 메모리-어드레스-기반 통신과 구별되는 점은, 이들은 메시지가 NOC의 라우터를 통해 이동될 네트워크 어드레스를 아는 발신 IP 블록에 의해 시작으로부터 어드레싱되는 네트워크라는 점이다. 이러한 네트워크-어드레싱된 통신은 I/O 기능부(524)를 통해 IP 블록에 의해 코맨드 포맷으로 IP 블록의 네트워크 인터페이스로 직접 전달되고, 네트워크 인터페이스 제어기에 의해 패킷 포맷으로 변환되며 NOC의 라우터를 통해 다른 IP 블록으로 전송된다. 이러한 네트워크-어드레싱된 통신(546)은 양방향적이며, 잠재적으로 NOC의 각 IP 블록으로 진행하고, 어떤 특정 애플리케이션에서의 사용에 의존한다. 그러나, 각 네트워크 인터페이스 제어기는 이러한 통신을 관련 라우터로 송신하고 수신하도록(통신 542) 인에이블되며, 각 네트워크 인터페이스 제어기는 이러한 통신을 직접 관련 IP 블록으로 송신 및 수신(통신 546)하도록 인에이블되어 관련 메모리 통신 제어기(406)를 바이패싱한다.
도 5의 예에서 각 네트워크 인터페이스 제어기(408)는 네트워크상의 가상 채널도 구현하도록 인에이블되고 네트워크 패킷의 유형을 특정한다. 각 네트워크 인터페이스 제어기(408)는 가상 채널 구현 로직부(538)를 포함하는데, 이는 각 통신 인스트럭션의 유형을 분류하고 NOC상의 전송을 위한 라우터(410)로의 패킷 형태의 인스트럭션을 핸드오프하기 전에 네트워크 패킷 포맷 필드의 인스트럭션 유형을 기록한다. 통신 인스트럭션의 예는 IP 블록간 네트워크-어드레스-기반 메시지, 요청 메시지, 요청 메시지에 대한 응답, 캐시로 유도되는 무효 메시지; 메모리 로드 및 저장 메시지; 및 메모리 로드 메시지에 대한 응답 등을 포함한다.
도 5의 예의 각 라우터(410)는 라우팅 로직(530), 가상 채널 제어 로직(532), 및 가상 채널 버퍼(534)를 포함한다. 통상적으로, 라우팅 로직은 라우터(410), 링크(420) 및 라우터들 사이의 버스 와이어에 의해 형성되는 네트워크의 데이터 통신을 위한 데이터 통신 프로토콜 스택을 구현하는 동기식 및 비동기식 로직 네트워크로서 구현된다. 라우팅 로직(530)은 오프-칩 네트워크에서 당업자가 라우팅 테이블과 관련시킬 수 있는 기능부를 포함하는데, 적어도 일부 실시예에서 라우팅 테이블은 NOC에서의 사용을 위해 너무 느리고 번거롭다고 고려된다. 동기식 및 비동기식 로직으로서 구현되는 라우팅 로직은 단일 클록 사이클만큼 빠른 라우팅 결정을 내리도록 구성될 수 있다. 이 예에서 라우팅 로직은 라우터에서 수신된 각 패킷을 전송하는 포트를 선택함으로써 패킷을 라우팅한다. 각 패킷은 패킷이 라우팅될 네트워크 어드레스를 포함한다. 이 예에서 각 라우터는 5개의 포트를 포함하는데, 4개의 포트(521)는 버스 와이어(520-A, 502-B, 520-C, 520-D)를 통해 다른 라우터로 접속되고, 5 번째 포트(523)는 네트워크 인터페이스 제어기(408) 및 메모리 통신 제어기(406)를 통해 관련 IP 블록(404)으로 각 라우터를 접속시킨다.
메모리-어드레스-기반 통신을 설명함에 있어서, 각 메모리 어드레스는 네트워크 인터페이스 제어기에 의해 네트워크 어드레스, 메모리 통신 제어기의 네트워크 위치로 맵핑되는 것으로 설명되었다. 또한, 메모리 통신 제어기(406)의 네트워크 위치는 자연스럽게 그 메모리 통신 제어기의 관련 라우터(410), 네트워크 인터페이스 제어기(408) 및 IP 블록(404)의 네트워크 위치이다. 그러므로, IP 블록간 네트워크-어드레스-기반 통신에서, 애플리케이션-레벨 데이터 프로세싱이 라우터, 링크 및 NOC의 버스 와이어에 의해 형성되는 네트워크 내의 IP 블록의 위치로서 네트워크 어드레스를 보는 것도 통상적이다. 도 4는 이러한 네트워크의 한 체계가 행과 열의 메시(a mesh)임을 도시하고 있는데, 여기서 각 네트워크 어드레스는, 예를 들어, 관련 라우터, IP 블록, 메모리 통신 제어기 및 메시의 네트워크 인터페이 스 제어기의 각 세트에 대한 고유 식별자로서, 또는 메시의 각 이러한 세트의 x, y 좌표로서 구현될 수 있다는 것을 유의해야 한다.
도 5에 도시된 NOC(402)에서, 각 라우터(410)는 2개 이상의 가상 통신 채널을 구현하는데, 각 가상 통신 채널은 통신 유형에 의해 특정된다. 그러므로, 통신 인스트럭션 유형 및 가상 채널 유형은, IP 블록간 네트워크-어드레스-기반 메시지, 요청 메시지, 요청 메시지에 대한 응답, 캐시로 유도되는 무효 메시지; 메모리 로드 및 저장 메시지; 및 메모리 로드 메시지에 대한 응답 등을 포함한다. 가상 채널의 지원에 있어서, 도 5에 도시된 각 라우터(410)는 가상 채널 제어 로직(532) 및 가상 채널 버퍼(534)도 포함한다. 가상 채널 제어 로직(532)은 할당된 통신 유형에 대한 각 수신된 패킷을 검사하고, NOC상의 인접 라우터로의 포트를 통한 전송을 위해 그 통신 유형에 대한 인출 가상 채널 버퍼에 각 패킷을 위치시킨다.
각 가상 채널 버퍼(534)는 유한 저장 공간을 갖는다. 단시간에 많은 패킷이 수신될 때, 가상 채널 버퍼는 가득 차게되어 그 버퍼에는 더 이상 패킷이 놓여질 수 없다. 다른 프로토콜에서, 버퍼가 가득 찬 가상 채널에 도달하는 패킷은 드롭될 것이다. 그러나, 이 예에서 각 가상 채널 버퍼(534)는 버스 와이어의 제어 신호를 사용하여 인에이블되어 가상 채널의 전송을 보류하도록, 즉, 특정 통신 유형의 패킷 전송을 보류하도록 가상 채널 제어 로직을 통해 주변 라우터에 통보한다. 한 가상 채널이 이렇게 보류될 때, 모든 다른 가상 채널은 영향 받지 않는다 - 그리고 전체 용량으로 계속 동작할 수 있다. 제어 신호는 각 라우터의 관련 네트워크 인터페이스 제어기(408)로의 각 라우터를 통해 줄곧 와이어링된다. 각 네트워크 인터페이스 제어기는, 이러한 신호를 수신하면, 보류된 가상 채널에 대한 통신 인스트럭션을, 관련 메모리 통신 제어기(406)로부터 또는 관련 IP 블록(404)으로부터, 수용하기를 거부하도록 구성된다. 이 방식에서, 가상 채널의 보류는 발신 IP 블록에 이르기까지의 가상 채널을 구현하는 모든 하드웨어에 영향을 준다.
가상 채널의 보류 패킷 전송의 한 가지 효과는 도 5의 아키텍처에서는 패킷이 드롭되지 않는다는 것이다. 패킷이, 예를 들어, 라우터가 인터넷 프로토콜과 같은 신뢰할 수 없는 일부 프로토콜에서 드롭될 수 있는 상황을 만나게 되면, 도 5의 예의 라우터는 버퍼 공간이 다시 이용 가능할 때까지 가상 채널 버퍼(534) 및 가상 채널 제어 로직(532)에 의해 가상 채널의 모든 패킷 전송을 보류하여 패킷을 드롭할 필요를 없앤다. 그러므로, 도 5에 도시된 바와 같이, NOC(402)는 극도로 얇은 하드웨어 층을 갖는 매우 신뢰 가능한 네트워크 통신 프로토콜을 구현한다.
도 5에 도시된 네트워크 인터페이스 제어기(408) 및 라우터(410)는 도 2에서 설명한 패킷 수신 로직(212) 및 패킷 재유도 로직(216)의 기능을 수행한다는 것을 유의하자. 또한, 브레이크포인트 검출 로직(214)은 IP 블록(404)과 접촉하여 인입 소프트웨어 패킷이 전술한 바와 같이 단일-스텝핑하도록 한다.
이제, 도 6을 참조하면, 도 5에 최초로 제공된 코어(550)의 추가적인 예시적 세부사항이 제공된다. 코어(550)는 통합된 레벨 2(L2) 캐시(616) 및 분리된 레벨 1(L1) 인스트럭션(I) 및 데이터(D) 캐시(618 및 620)을 각각 포함하는 온-칩 멀티-레벨 캐시 계층을 포함한다. 당업자에게 잘 알려진 바와 같이, 캐시(616, 618 및 620)는 시스템 메모리(가령, 도 3에 도시된 RAM 306)의 메모리 위치에 대응하는 캐 시 라인으로의 낮은 지연 접속을 제공한다.
인스트럭션은, 인스트럭션 페치(fetch) 어드레스 레지스터(IFAR)(630)에 존재하는 유효 어드레스(EA)에 응답하여 L1 I-캐시(618)로부터 프로세싱을 위해 페칭된다. 각 사이클 동안, 새로운 인스트럭션 페치 어드레스가 3개의 소스 중 하나로부터 IFAR(630)로 로딩될 수 있는데, 3개의 소스는, 추론적인 경로 및 조건 분기 인스트럭션의 예측으로부터 얻어지는 순차적 어드레스를 제공하는 분기 예측 유닛(BPU)(636)과, 플러시 및 차단 어드레스를 제공하는 글로벌 완료 테이블(GCT)(638)과, 예측된 조건부 분기 인스트럭션의 해결로부터 얻어지는 비추론적 어드레스를 제공하는 분기 실행 유닛(BEU)(692)이다. 분기 히스토리 테이블(BHT)은 BPU(636)과 관련되는데, 여기서 장래 분기 인스트럭션의 예측을 돕는 조건 분기 인스트럭션의 해결이 기록된다.
IFAR(630) 내의 인스트럭션 페치와 같은 유효 어드레스(EA)는 프로세서에 의해 생성되는 데이터 또는 인스트럭션의 어드레스이다. EA는 세그먼트 내의 세그먼트 레지스터 및 오프셋 정보를 지정한다. 메모리의 데이터(인스트럭션 포함)에 접속하기 위해, EA는 하나 이상의 변환 레벨을 통해, 데이터 또는 인스트럭션이 저장되는 물리적 위치와 관련되는 실제 어드레스(RA)로 변환된다.
코어(550) 내에서, 유효 어드레스-실제 어드레스 변환은 메모리 관리 유닛(MMU) 및 관련 어드레스 변환 기능부에 의해 수행된다. 바람직하게는, 인스트럭션 접속 및 데이터 접속을 위해 별도의 MMU가 제공된다. 도 6에서, 명료히 하기 위해 인스트럭션 저장 유닛(ISU)(601)에 대한 접속만을 보여주는 단일 MMU(611)가 도시되어 있다. 그러나, 당업자가 이해할 바와 같이, MMU(611)는 메모리 접속을 관리하기 위해 필요한 유닛(696 및 698) 및 다른 구성요소를 로딩/저장하는 접속(도시 생략)을 포함한다. MMU(611)는 데이터 변환 룩어사이드 버퍼(DTLB)(612) 및 인스트럭션 변환 룩어사이드 버퍼(ITLB)(613)를 포함한다. 각 TLB는 최근에 참조된 페이지 테이블 입력을 포함하는데, 이는 데이터(DTLB)(612) 또는 인스트럭션(ITLB)(613)을 위해 EA를 RA로 변환하기 위해 접속된다. ITLB(613)로부터의 최근에 참조된 EA-RA 변환은 유효-실제 어드레스 테이블(ERAT)(632)에서 캐싱된다.
ERAT(632)에 의한 IFAR(630)에 포함되는 EA 및 I-캐시 디렉토리(634)의 실제 어드레스(RA)의 룩업의 변환 후에, 히트/미스 로직(622)이 IFAR(630)의 EA에 대응하는 인스트럭션의 캐시 라인이 L1 I-캐시(618)에 존재하지 않는 경우, 히트/미스 로직(622)은 I-캐시 요청 버스(624)를 통한 요청 어드레스로서 RA를 L2 캐시(616)를 제공한다. 이러한 요청 어드레스는 최근 접속 패턴에 기초하여 L2 캐시(616) 내의 프리페치 로직에 의해 생성될 수도 있다. 요청 어드레스에 응답하여, L2 캐시(616)는 인스트럭션의 캐시 라인을 출력하는데, 이는, 가능하게는 선택적 프리디코드 로직(602)을 통해 전달된 후에, I-캐시 리로드 버스(626)를 통해 프리페치 버퍼(PB)(628) 및 L2 I-캐시(618)로 로딩된다.
IFAR(630)의 EA에 의해 지정된 캐시 라인이 일단 L1 캐시(618)에 존재하면, L1 I-캐시(618)는 분기 예측 유닛(BPU)(636)과 페치 버퍼(IFB)(640) 모두에 캐시 라인을 출력한다. BPU(636)는 분기 인스트럭션에 대해 인스트럭션의 캐시 라인을 스캐닝하고 주건 분기 인스트럭션이 존재하는 경우에는 그 결과를 예측한다. 분기 예측에 이어서, BPU(636)는, 전술한 바와 같이, 추론적 인스트럭션 페치 어드레스를 IFAR(630)에 공급하고, 분기 인스트럭션 큐(644)에 예측을 전달하여, 조건 분기 인스트럭션이 분기 실행 유닛(692)에 의해 순차적으로 해결될 때 예측의 정확도가 결정된다.
IFB(640)는 인스트럭션의 캐시 라인이 인스트럭션 변환 유닛(ITU)(642)에 의해 변환될 수 있을 때까지 L1 I-캐시(618)로부터 검색되는 인스트럭션의 캐시 라인을 임시로 버퍼링한다. 코어(550)의 도시된 실시예에서, ITU(642)는 사용자 인스트럭션 세트 아키텍처(UISA) 인스트럭션으로부터의 인스트럭션을 코어(550)의 실행 유닛에 의해 직접적으로 실행 가능한 가능한 여러 개수의 내부 ISA(IISA) 인스트럭션으로 변환한다. 이러한 변환은, 예를 들어, 판독 전용 메모리(ROM) 템플레이트(template)에 저장되는 마이크로코드를 참조하여 수행될 수 있다. 적어도 일부 실시예에서, UISA-IISA 변환은 UISA 인스트럭션과는 상이한 개수의 IISA 인스트럭션 및/또는 대응 UISA 인스트럭션과는 상이한 길이의 IISA 인스트럭션을 얻는다. 최종 IISA 인스트럭션은 전체 완성 테이블(638)에 의해 인스트럭션 그룹으로 할당되는데, 이들의 구성원은 서로에 대해 순서 없이 디스패칭되고 실행될 수 있다. 전체 완성 테이블(638)은 실행이 적어도 하나의 관련 EA에 의해 완성되어야 하는 각 인스트럭션 그룹을 추적하는데, 이는 인스트럭션 그룹의 최고(最古) 인스트럭션의 EA인 것이 바람직하다.
UISA-IISA 인스트럭션 변환에 이어서, 인스트럭션은 인스트럭션 유형에 기초하여 래치들(644, 646, 648 및 650) 중 하나로, 가능하게는 순서 없이, 디스패칭된 다. 즉, 분기 인스트럭션 및 인스트럭션을 수정하는 기타 조건 레지스터(CR)는 래치(644)에 디스패칭되며, 고정점 및 로드-저장 인스트럭션은 래치(646 및 648) 중 하나로 디스패칭되고, 부동점 인스트럭션은 래치(650)로 디스패칭된다. 실행 결과를 임시 저장하는 리네임(rename) 레지스터를 요구하는 각 인스트럭션은, CE 맵퍼(652), 링크 및 카운트(LC) 레지스터 맵퍼(654), 예외 레지스터(XER) 맵퍼(656), 범용 레지스터(GPR) 맵퍼(658) 및 부동점 레지스터(FPR) 맵퍼(660) 중 적합한 하나에 의해 하나 이상의 리네임 레지스터에 할당된다.
그 후, 디스패칭된 인스트럭션은 CR 이슈 큐(CRIQ)(662), 분기 이슈 큐(BIQ)(664), 고정점 이슈 큐(FXIQ)(666 및 668) 및 부동점 이슈 큐(FPIQ)(670 및 672) 중 적합한 하나에 임시 배치된다. 이슈 큐(662, 664, 666, 668, 670 및 672)로부터, 인스트럭션은 데이터 의존성 및 항의존성(antidependency)이 관측되는 한 실행을 위한 인스트럭션 유닛(603)의 실행 유닛으로 기회주의적으로 이슈될 수 있다. 그러나, 인스트럭션 중 하나가 다시 이슈되는 경우에, 인스트럭션은 인스트럭션의 실행이 완성되고 결과 데이터가 존재하는 경우에는 다시 기록될 때까지 이슈 큐(662-672)에서 관리된다.
설명한 바와 같이, 코어(550)의 실행 유닛은 CR-수정 인스트럭션을 실행하기 위한 CR 유닛(CRU)(690)과, 분기 인스트럭션을 실행하기 위한 분기 실행 유닛(BEU)(692)과, 고정점 인스트럭션을 실행하는 2개의 고정점 유닛(FXU)(694 및 605)과, 로드 및 저장 인스트럭션을 실행하기 위한 2개의 로드-저장 유닛(LSU)(696 및 698)과, 부동점 인스트럭션을 실행하기 위한 2개의 부동점 유닛(FPU)(606 및 604)를 포함한다. 실행 유닛(690-604)의 각각은 다수의 파이프라인 스테이지를 갖는 실행 파이프라인으로서 구현되는 것이 바람직하다.
실행 유닛(690-604) 중 하나 내에서 실행되는 동안, 인스트럭션은 오퍼랜드가 존재하는 경우에는 실행 유닛에 연결되는 레지스터 파일 내의 하나 이상의 아키텍처 레지스터 및/또는 리네임 레지스터로부터 오퍼랜드를 수신한다. CR-수정 또는 CR-의존 인스트럭션을 실행할 때, CRU(690) 및 BEU(692)는 CR 레지스터 파일(680)에 액세스하는데, 바람직한 실시예에서 이는 CR 및 하나 이상의 비트로 형성되는 다수의 구분되는 필드를 각각 포함하는 다수의 CR 리네임 레지스터를 포함한다. 이들 필드 중에는 0보다 작거나 0보다 크거나 0과 동일한 값(통상적으로 인스트럭션의 결과 또는 오퍼랜드)인지를 개별적으로 표시하는 LT, GT 및 EQ 필드가 존재한다. 링크 및 카운트 레지스터(LCR) 파일(682)은 카운트 레지스터(CTR), 링크 레지스터(LR) 및 각각의 리네임 레지스터를 포함하는데, 이에 의해 BEU(692)는 경로 어드레스를 획득하기 위해 조건 분기를 해결할 수도 있다. 동기화된 범용 레지스터 파일(GPR)(684 및 686)은 레지스터 파일을 복제하고 FXU(694 ALC 605) 및 LSU(696 및 698)에 의해 접속되고 생성된 고정점 및 정수 값을 저장한다. 동기화 레지스터의 복제 세트로서 구현될 수도 있는 GPR(684 및 686)과 유사한 부동점 레지스터 파일(FPR)(688)은, FPU(606 및 604)에 의한 부동점 인스트럭션 및 LSU(696 및 698)에 의한 부동점 로드 인스트럭션의 실행으로부터 얻어지는 부동점 값을 포함한다.
실행 유닛이 인스트럭션의 실행을 종료한 후, 실행은 GCT(638)를 통보하는 데, 이는 프로그램 순서의 인스트럭션의 완료를 스케줄링한다. CRU(690), FXU(694 및 605) 또는 FPU(606 및 604) 중 하나에 의해 실행되는 인스트럭션을 완성하기 위해, GCT(638)는 할당된 리네임 레지스터로부터 적합한 레지스터 파일 내의 하나 이상의 아키텍처 레지스터로 결과 데이터가 존재하는 경우에 이를 다시 기록하는 실행 유닛을 시그날링한다. 그 후, 인스트럭션이 이슈 큐로부터 제거되고, 인스트럭션 그룹 내의 모든 인스트럭션이 일단 완료되면, GCT(638)로부터 제거된다. 그러나, 인스트럭션의 다른 유형은 상이하게 완성된다.
BEU(692)가 조건 분기 인스트럭션을 해결하고 취해져야 하는 실행 경로의 경로 어드레스를 결정할 때, 경로 어드레스는 BPU(636)에 의해 예측되는 추론적 경로 어드레스에 대해 비교된다. 경로 어드레스가 일치하는 경우, 추가 프로세싱은 요구되지 않는다. 그러나, 계산된 경로 어드레스가 예측된 경로 어드레스에 일치하지 않는 경우, BEU(692)는 올바른 경로 어드레스를 IFAR(630)에 제공한다. 어떠한 경우에도, 분기 인스트럭션은 BIQ(664)로부터 제거될 수 있으며, 이 때 동일한 인스트럭션 그룹 내의 모든 다른 인스트럭션이 GCT(638)로부터 실행을 완료한다.
로드 인스트럭션의 실행에 이어서, 로드 인스트럭션을 실행하여 계산되는 유효 어드레스는 데이터 ERAT(도시 생략)에 의해 실제 어드레스로 변환되어 요청 어드레스로서 L1 D-캐시(620)에 제공된다. 이 때, 로드 인스트럭션이 FXIQ(666 또는 668)로부터 제거되고, 표시된 로드가 수행될 때까지 로드 재정렬 큐(LRQ)(609)에 배치된다. 요청 어드레스가 L1 D-캐시(620)에서 손실되는 경우, 요청 어드레스는 로드 미스 큐(LMQ)(607)에 배치되는데, 이로부터 요청된 데이터가 L2 캐시(616)로 부터 검색되고, 실패하면 다른 코더(550)로부터 또는 시스템 메모리(가령, 도 5에 도시된 RAM 528)로부터 검색된다. LRQ(609)는 배타적 접속 요청을 스누핑하고(snoops), 중요한 위치의(in flight) 로드에 대해 상호접속 패브릭(도시 생략)상에 플러시(flushes) 또는 킬(kills)하며, 히트가 발생하면 로드 인스트럭션을 취소하고 다시 이슈한다. 저장 인스트럭션은, 저장을 위한 유효 어드레스가 저장 인스트럭션의 실행에 이어서 로딩되는 저장 큐(STQ)(610)를 사용하여 유사하게 완성된다. STQ(610)로부터, 데이터가 L1 D-캐시(620) 및 L2 캐시(616) 중 하나 또는 모두로 저장될 수 있다.
특정 시각에 저장된 데이터, 인스트럭션 및 하드웨어 상태를 포함하는 코더(550)는 상태를 가지며, 본 명세서에서 "하드" 또는 "소프트"로 정의된다. "하드" 상태는 프로세서의 현재 시점으로부터 프로세서를 실행하는 코어(550)를 위해 아키텍처적으로 요구되는 코어(550) 내의 정보로서 정의된다. 반대로, "소프트" 상태는 프로세스의 실행의 효율을 개선하지만 아키텍처적으로 올바른 결과를 달성하도록 요구되지는 않는 코어(550) 내의 정보로서 정의된다. 코어(550)에서, 하드 상태는 CRR(680), LCR(682), GPR(684 및 686), FPR(699) 및 감시자 레벨 레지스터(651)와 같은 사용자-레벨 레지스터의 콘텐츠를 포함한다. 코어(550)의 소프트 상태는 L-1 I-캐시(618), L-1 D-캐시(620)의 콘텐츠와 같은 "성능-중요" 정보와, DTLB(612) 및 ITLB(613)와 같은 어드레스 변환 정보와, BHT(635) 및 L2 캐시(616)의 콘텐츠의 전부 또는 일부와 같은 덜 중요한 정보를 포함한다. 소프트웨어 스레드(가령, 제 1 소프트웨어 스레드(124) 및/또는 제 2 소프트웨어 스레드(126))가 코어(550)에 들어가거나 나갈 때마다, 하드/소프트 상태를 정해진 위치로 직접 위치시키거나 콘텍스트 스위칭을 사용하여 이들을 완전히 플러싱함으로써 하드 상태 및 소프트 상태가 개별적으로 위치되거나 복원된다. 이 상태 관리는 나노커넬(가령, 도 1에서 설명한 나노커넬(108a-d))에 의해 수행되는 것이 바람직하여서, 신뢰되지 않는 소프트웨어 부분(가령, 도 1에서 설명한 작업 유닛 메시지(116))은 콘텍스트 스위칭이 의도적으로 또는 우연히 발생되지 않게 한다.
이제 도 7을 참조하면, 신뢰되지 않는 작업 유닛 메시지가 높은 스레디드 네트워크 온 칩(NOC) 프로세서에서의 스루풋을 감소시키는 것을 방지하기 위해 취해지는 예시적 단계의 흐름도가 제공된다. 개시자 블록(702) 후, 일 실시예에서는 NOC의 특정 제 1 노드와 관련되는 나노커넬이 작업 유닛 메시지를 수신한다(블록 704). 전술한 바와 같이, 이 작업 유닛 메시지는 실행 가능한 인스트럭션의 페이로드와, 실행 가능한 인스트럭션이 제 1 노드 내에서 처리되는 동안 NOC 내의 리소스가 어떻게 사용되고 보호되는지에 관한 보안 인스트럭션을 포함한다. 따라서, 보안 메시지/인스트럭션이 작업 유닛 메시지가 실행 중인 동안(질의 블록 706)에 다른 리소스(노드, 하드웨어 스레드, 코어, 메모리, I/O 장치 등)가 보호될 필요(보안 환경에 위치할 필요)가 없다고 판단하면, 작업 유닛 메시지는 제 1 노드(블록 708) 내의 비보안 모드로 실행되는데, 여기서 NOC 내의 다른 리소스가 접속될 수 있고 프로세스는 종료된다(종료자 블록 722).
그러나, NOC 내의 다른 리소스가 보호되어야 하는 경우(가령, 작업 유닛 메시지가 신뢰되지 않는 경우), 작업 유닛 메시지를 수신하는 나노커넬은 다른 리소 스(작업 유닛 메시지의 인스트럭션이 실행될 제 1 노드 이외의 리소스)에 대한 보안 환경을 수립하며, 블록(710)에서 설명된 바와 같다. 이들 다른 리소스는 작업 유닛 메시지 내의 보안 메시지에 의해 지시되어 제 1 노드 내에서 실행되는 페이로드 인스트럭션에 대해 이들을 자신을 노출하기를 거부한다. 제 1 노드와 관련되는 나노커넬도 그 노드를 하위 특권 모드로 푸시하여, 작업 유닛으로부터의 페이로드 인스트럭션이 제 1 노드 내에서 실행되는 동안(블록 712) 제 1 노드는 NOC의 다른 리소스에 접속할 수 없다. 그 후, 제 1 노드는 모든 인스트럭션이 처리될 때까지(질의 블록 716) 작업 유닛 메시지로부터의 페이로드 인스트럭션을 실행하기 시작한다(블록 714). 작업 유닛 메시지 및/또는 제 1 노드가 NOC 내의 보호되는 리소스를 사용하려는 경우, 예외 메시지가 호스트 컴퓨터(가령, 도 1에 도시된 호스트 컴퓨터 110)로 전송될 수 있다는 것을 유의해야 하는데, 이는 적합한 방식으로 예외를 처리할 수 있으며, 다른 리소스가 손상되거나 올바르지 않게 취급될 위험 또는 증거가 있는 경우에 (예를 들어, 도 1에 도시된 사용자 애플리케이션 112으로부터의) 사용자 애플리케이션-기반 작업 유닛 메시지의 전송을 완전히 재시작하는 것을 포함한다.
블록(718)에서 설명되는 바와 같이, 작업 유닛 메시지로부터의 모든 페이로드 인스트럭션의 실행을 완료하면, 나노커넬은 자신의 관련 제 1 노드를 (자신이 NOC 내의 다른 리소스에 다시 한번 접속할 수 있는) 상위 특권 노드로 복귀하게 한다. 또한, 나노커넬은 다른 리소스가 다시 한번 제 1 노드에 대해 자신을 이용 가능하게 만들도록 지시하여, 보안 환경의 손실을 얻는다(블록 720).
본 발명의 적어도 일부 양태는 프로그램 제품을 포함하는 컴퓨터 판독 가능한 매체로 구현될 수 있다는 것을 이해해야 한다. 본 발명의 기능을 정의하는 프로그램은 다양한 유형의 신호-전송 매체를 통해 데이터 저장 시스템 또는 컴퓨터 시스템으로 전송될 수 있는데, 매체는 기록 불가능한 저장 매체(가령, CD-ROM), 기록 가능한 저장 매체(가령, 하드 디스크 드라이브. 판독/기록 CD ROM, 광 매체), 이더넷, 인터넷, 무선 네트워크 및 유사 네트워크 시스템을 포함하는 컴퓨터 및 전화 네트워크와 같은 비유형적 통신 매체를 포함하지만, 이에 한정되는 것은 아니다. 그러므로, 이러한 신호-전송 매체는 본 발명의 방법 기능을 유도하는 컴퓨터 판독 가능한 인스트럭션을 전송하거나 인코딩할 때 본 발명의 다른 실시예를 나타낸다. 또한, 본 발명은 본 명세서 또는 그 균등물에서 설명되는 바와 같은 하드웨어, 소프트웨어 또는 서프트웨어와 하드웨어의 조합의 형태로 수단을 갖는 시스템에 의해 구현될 수 있다는 것이 이해된다.
본 발명의 신규한 특징은 첨부된 청구범위에 설정된다. 그러나, 바람직한 사용 모드, 추가 목적 및 장점 외에도 본 발명 자체는 첨부된 도면을 참조하여 다음의 상세한 설명을 참조하여 가장 잘 이해될 것이다.
도 1은 본 발명의 일 실시예에서 사용하기 위해 고려되는, 호스트 컴퓨터에 연결되는 예시적 네트워크 온 칩(NOC)의 하이-레벨 도면을 도시하고 있다.
도 2는 도 1에 도시된 NOC의 한 노드 내의 코더의 추가적 세부사항을 도시하고 있다.
도 3은 본 발명의 일 실시예에 따른 하나 이상의 NOC를 사용하는 컴퓨터의 실시예를 도시하고 있다.
도 4는 도 1 및 도 3에 도시된 하나 이상의 NOC의 추가적 세부사항을 도시하고 있다.
도 5는 도 4에 도시된 NOC로부터 IP 블록 노드의 추가적 세부사항을 도시하고 있다.
도 6은 도 5에 도시된 NOC의 IP 블록 노드에서 발견된 프로세서 코어의 추가적 세부사항을 도시하고 있다.
도 7은 수신된 작업 유닛 메시지에 의한 사용을 위해 허가되지 않은 NOC 내의 리소스를 보호함으로써 NOC 내의 스루풋을 손상시키는 것을 방지하기 위해 본 발명에 의해 취해진 예시적 단계의 하이 레벨 흐름도이다.

Claims (10)

  1. 네트워크 온 칩(Network On a Chip; NOC)에서 리소스로의 허가되지 않은 접속을 방지하는 컴퓨터 구현 방법으로서,
    네트워크 온 칩(NOC)의 제 1 노드에서 작업 유닛 메시지(a work unit message)를 수신하는 단계와,
    상기 NOC의 상기 제 1 노드에서 보안 메시지를 수신하는 단계 - 상기 보안 메시지는, 상기 제 1 노드가 하위 특권 비보안 모드(a less privileged non-secure mode)에서 실행되는 동안, 상기 NOC의 제 2 노드에게 보안 모드에서 동작하도록 지시하고, 상기 보안 모드는 상기 제 1 노드가 상기 제 2 노드에 접속하는 것을 방지함 - 와,
    상기 NOC의 상기 제 1 노드에서 상기 작업 유닛 메시지를 실행하는 단계를 포함하는
    컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 제 1 노드 및 상기 제 2 노드는 상기 NOC의 상이한 노드인
    컴퓨터 구현 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 보안 메시지는, 상기 작업 유닛 메시지로부터의 인스트럭션이 상기 제 1 노드에서 실행되는 동안, 상기 NOC에 대해 이용 가능한 메모리 리소스에게 상기 제 1 노드에 접속 불가능하게 지시하는
    컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    상기 NOC의 각각의 노드는 상이한 전용 나노커넬(nanokernel)과 관련되며,
    각각의 나노커넬은 작업 유닛 메시지를 NOC 내의 노드들로 그리고 이 노드들 사이에서 전송만할 수 있는 하나의 소프트웨어 로직인
    컴퓨터 구현 방법.
  6. 제 1 항에 있어서,
    상기 보안 메시지는 상기 NOC 내의 다른 노드로의 접속을 제한함으로써 상기 NOC의 다른 노드로의 메시지 트래픽을 또한 조절하는(throttle)
    컴퓨터 구현 방법.
  7. 제 1 항에 있어서,
    상기 NOC는 호스트 컴퓨터에 의해 제어되며,
    상기 작업 유닛 메시지는 상기 호스트 컴퓨터로부터 상기 제 1 노드로 디스패칭되고,
    상기 작업 유닛 메시지는 상기 호스트 컴퓨터에 저장된 사용자 애플리케이션의 일부인
    컴퓨터 구현 방법.
  8. 제 1 항에 있어서,
    상기 작업 유닛 메시지는 신뢰되지 않은 소스로부터 송신된 신뢰되지 않은 작업 유닛이며, 상기 신뢰되지 않은 소스는 상기 NOC의 수신 로직에 의해 허가된 소스로서 인증되지 않은
    컴퓨터 구현 방법.
  9. 호스트 컴퓨터와,
    제 1 노드, 제 2 노드 및 수신 로직을 포함하며, 상기 호스트 컴퓨터에 연결되는, 네트워크 온 칩(NOC)을 포함하되,
    상기 수신 로직은,
    상기 NOC의 상기 제 1 노드로 어드레싱되는 작업 유닛 메시지를 수신하고,
    상기 제 1 노드가 하위 특권 비보안 모드에서 실행되는 동안 상기 NOC의 상기 제 2 노드에게 보안 모드에서 동작하도록 지시하는 보안 메시지를 수신하며,
    상기 보안 모드는 상기 제 1 노드가 상기 제 2 노드에 접속하는 것을 방지하고, 상기 제 1 노드는 상기 하위 특권 비보안 모드인 동안에 상기 작업 유닛 메시지를 실행하는
    시스템.
  10. 컴퓨터 프로그램이 인코딩된 컴퓨터 판독 가능한 저장 매체로서,
    상기 컴퓨터 프로그램은,
    네트워크 온 칩(NOC)의 제 1 노드에서 작업 유닛 메시지를 수신하는 단계와,
    상기 NOC의 상기 제 1 노드에서 보안 메시지를 수신하는 단계 - 상기 보안 메시지는 상기 제 1 노드가 하위 특권 비보안 모드에서 실행되는 동안 상기 NOC의 제 2 노드에게 보안 모드에서 동작하도록 지시하고, 상기 보안 모드는 상기 제 1 노드가 상기 제 2 노드에 접속하는 것을 방지함 - 와,
    상기 NOC의 상기 제 1 노드에서 상기 작업 유닛 메시지를 실행하는 단계를 수행하도록 구성되는 컴퓨터 실행 가능한 인스트럭션을 포함하는
    컴퓨터 판독 가능한 저장 매체.
KR1020090068017A 2008-10-22 2009-07-24 사용자가 칩 프로세서상의 높은 스레디드 네트워크에서의 스루풋을 손상시키는 것을 방지하는 보안 방법 KR101072148B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/255,818 2008-10-22
US12/255,818 US8108908B2 (en) 2008-10-22 2008-10-22 Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor

Publications (2)

Publication Number Publication Date
KR20100044686A KR20100044686A (ko) 2010-04-30
KR101072148B1 true KR101072148B1 (ko) 2011-10-10

Family

ID=42109669

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090068017A KR101072148B1 (ko) 2008-10-22 2009-07-24 사용자가 칩 프로세서상의 높은 스레디드 네트워크에서의 스루풋을 손상시키는 것을 방지하는 보안 방법

Country Status (4)

Country Link
US (1) US8108908B2 (ko)
JP (1) JP5473487B2 (ko)
KR (1) KR101072148B1 (ko)
TW (1) TW201030551A (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108908B2 (en) * 2008-10-22 2012-01-31 International Business Machines Corporation Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor
KR101781617B1 (ko) * 2010-04-28 2017-09-25 삼성전자주식회사 통합 입출력 메모리 관리 유닛을 포함하는 시스템 온 칩
US8996879B2 (en) * 2010-12-23 2015-03-31 Intel Corporation User identity attestation in mobile commerce
JP2013196167A (ja) * 2012-03-16 2013-09-30 Toshiba Corp 情報処理装置
KR101954733B1 (ko) * 2012-10-26 2019-03-06 삼성전자주식회사 보안 콘텐츠를 처리하는 시스템 온 칩 및 그것을 포함하는 모바일 장치
JP2014191622A (ja) * 2013-03-27 2014-10-06 Fujitsu Ltd 処理装置
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9742630B2 (en) * 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US10516606B2 (en) 2017-07-12 2019-12-24 Micron Technology, Inc. System for optimizing routing of communication between devices and resource reallocation in a network
US10511353B2 (en) 2017-07-12 2019-12-17 Micron Technology, Inc. System for optimizing routing of communication between devices and resource reallocation in a network
US10671460B2 (en) * 2018-02-05 2020-06-02 Micron Technology, Inc. Memory access communications through message passing interface implemented in memory systems
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
TWI813743B (zh) * 2018-08-23 2023-09-01 美商阿爾克斯股份有限公司 在網路路由環境中的獨立資料儲存空間
US11782713B1 (en) * 2019-08-27 2023-10-10 Amazon Technologies, Inc. Security vulnerability mitigation using address space co-execution
US20230328045A1 (en) * 2022-04-08 2023-10-12 Xilinx, Inc. Secure shell and role isolation for multi-tenant compute

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006254450A (ja) 2005-03-08 2006-09-21 Commiss Energ Atom 大域的非同期ネットワークオンチップシステムにおける通信ノードアーキテクチャ
KR100687659B1 (ko) 2005-12-22 2007-02-27 삼성전자주식회사 Axi 프로토콜에 따른 락 오퍼레이션을 제어하는네트워크 인터페이스, 상기 네트워크 인터페이스가 포함된패킷 데이터 통신 온칩 인터커넥트 시스템, 및 상기네트워크 인터페이스의 동작 방법
KR100774013B1 (ko) 2004-12-23 2007-11-08 인피니언 테크놀로지스 아게 데이터 처리 장치, 원격 통신 단말 장치 및 데이터 처리장치에 의한 데이터 처리 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2736237B2 (ja) * 1995-03-06 1998-04-02 技術研究組合新情報処理開発機構 遠隔メモリアクセス制御装置
EP1735966B1 (en) * 2004-04-05 2008-07-30 Koninklijke Philips Electronics N.V. Integrated circuit and method for time slot allocation
CN101006433B (zh) * 2004-08-25 2012-01-11 日本电气株式会社 信息通信装置和程序执行环境控制方法
JP4601557B2 (ja) * 2005-02-07 2010-12-22 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステムにおいてプロセッサのセキュアな連携を行う方法および装置
JP2007172430A (ja) * 2005-12-26 2007-07-05 Hitachi Ltd 半導体集積回路
WO2008078564A1 (ja) * 2006-12-22 2008-07-03 Panasonic Corporation 情報処理装置、集積回路、方法、およびプログラム
EP2043324A1 (en) * 2007-09-28 2009-04-01 STMicroelectronics (Grenoble) SAS Programmable data protection device, secure programming manager system and process for controlling access to an interconnect network for an integrated circuit.
US8108908B2 (en) * 2008-10-22 2012-01-31 International Business Machines Corporation Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100774013B1 (ko) 2004-12-23 2007-11-08 인피니언 테크놀로지스 아게 데이터 처리 장치, 원격 통신 단말 장치 및 데이터 처리장치에 의한 데이터 처리 방법
JP2006254450A (ja) 2005-03-08 2006-09-21 Commiss Energ Atom 大域的非同期ネットワークオンチップシステムにおける通信ノードアーキテクチャ
KR100687659B1 (ko) 2005-12-22 2007-02-27 삼성전자주식회사 Axi 프로토콜에 따른 락 오퍼레이션을 제어하는네트워크 인터페이스, 상기 네트워크 인터페이스가 포함된패킷 데이터 통신 온칩 인터커넥트 시스템, 및 상기네트워크 인터페이스의 동작 방법

Also Published As

Publication number Publication date
JP2010102694A (ja) 2010-05-06
US20100100934A1 (en) 2010-04-22
TW201030551A (en) 2010-08-16
KR20100044686A (ko) 2010-04-30
JP5473487B2 (ja) 2014-04-16
US8108908B2 (en) 2012-01-31

Similar Documents

Publication Publication Date Title
KR101072148B1 (ko) 사용자가 칩 프로세서상의 높은 스레디드 네트워크에서의 스루풋을 손상시키는 것을 방지하는 보안 방법
US8423749B2 (en) Sequential processing in network on chip nodes by threads generating message containing payload and pointer for nanokernel to access algorithm to be executed on payload in another node
US7992043B2 (en) Software debugger for packets in a network on a chip
US7873066B2 (en) Streaming direct inter-thread communication buffer packets that support hardware controlled arbitrary vector operand alignment in a densely threaded network on a chip
US8140832B2 (en) Single step mode in a software pipeline within a highly threaded network on a chip microprocessor
US8102884B2 (en) Direct inter-thread communication buffer that supports software controlled arbitrary vector operand selection in a densely threaded network on a chip
US8719404B2 (en) Regular expression searches utilizing general purpose processors on a network interconnect
US20120260252A1 (en) Scheduling software thread execution
US9710274B2 (en) Extensible execution unit interface architecture with multiple decode logic and multiple execution units
US9147078B2 (en) Instruction set architecture with secure clear instructions for protecting processing unit architected state information
US10776117B2 (en) Instruction predication using unused datapath facilities
US8275598B2 (en) Software table walk during test verification of a simulated densely threaded network on a chip
US9195463B2 (en) Processing core with speculative register preprocessing in unused execution unit cycles
US8640230B2 (en) Inter-thread communication with software security
US8892851B2 (en) Changing opcode of subsequent instruction when same destination address is not used as source address by intervening instructions
US8984260B2 (en) Predecode logic autovectorizing a group of scalar instructions including result summing add instruction to a vector instruction for execution in vector unit with dot product adder
US20140173308A1 (en) Chip level power reduction using encoded communications
US8880852B2 (en) Detecting logically non-significant operation based on opcode and operand and setting flag to decode address specified in subsequent instruction as different address

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
LAPS Lapse due to unpaid annual fee