KR20230016011A - 기하학적 범위에 기초하는 병렬 실행을 위한 라우팅 테스크 스케줄링 - Google Patents

기하학적 범위에 기초하는 병렬 실행을 위한 라우팅 테스크 스케줄링 Download PDF

Info

Publication number
KR20230016011A
KR20230016011A KR1020227045855A KR20227045855A KR20230016011A KR 20230016011 A KR20230016011 A KR 20230016011A KR 1020227045855 A KR1020227045855 A KR 1020227045855A KR 20227045855 A KR20227045855 A KR 20227045855A KR 20230016011 A KR20230016011 A KR 20230016011A
Authority
KR
South Korea
Prior art keywords
processor
task
tasks
reach
cores
Prior art date
Application number
KR1020227045855A
Other languages
English (en)
Inventor
로페즈 다니엘 바스퀘즈
케네스 레네리스
제이슨 마이클 리
마이클 비 굴딩
폴 더블유 악시사노
마투스 립카
제이미 랜들 쿠에셀
시리니바스 라구 가타
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20230016011A publication Critical patent/KR20230016011A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/195Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using superconductive devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B82NANOTECHNOLOGY
    • B82YSPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
    • B82Y10/00Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/44Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using super-conductive elements, e.g. cryotron
    • H01L39/24
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10NELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10N60/00Superconducting devices
    • H10N60/01Manufacture or treatment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Architecture (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Chemical & Material Sciences (AREA)
  • Nanotechnology (AREA)
  • Manufacturing & Machinery (AREA)
  • Computing Systems (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Superconductor Devices And Manufacturing Methods Thereof (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

기하학적 범위에 기초하는 병렬 실행을 위한 테스크 스케줄링과 관련된 시스템 및 방법이 설명된다. 예시적인 방법은 복수의 도달 영역을 생성하기 위해 공유 평면도에 포함된 초전도 구성요소 및 노드 사이의 연결에 관한 정보를 프로세싱하는 단계를 포함하며, 복수의 도달 영역 각각은 공유 평면도의 일부에 대응한다. 방법은 공유 평면도에 포함된 초전도 구성요소 및 노드 사이에서 신호를 라우팅하기 위한 와이어의 타겟 인덕턴스에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 단계를 더 포함한다. 방법은 기하학적 제약을 충족시키는 복수의 팽창된 도달 영역 중 임의의 영역 내의 초전도 구성요소 및 노드의 서브세트 사이에서 와이어를 라우팅하기 위한 테스크의 병렬 실행을 스케줄링하는 단계를 더 포함한다.

Description

기하학적 범위에 기초하는 병렬 실행을 위한 라우팅 테스크 스케줄링
디지털 프로세서와 같은 전자 디바이스에 사용되는 반도체 기반 집적 회로는 CMOS(complementary metal-oxide semiconductor) 기술에 기반한 디지털 회로를 포함한다. 그러나 CMOS 기술은 디바이스 크기 측면에서 한계에 도달하고 있다. 또한 CMOS 기술에 기반한 디지털 회로에 의한 높은 클럭 속도에서의 전력 소비는 고성능 디지털 회로 및 시스템에서 점점 더 제한 요소가 되고 있다. 예를 들어 데이터 센터의 서버는 점점 더 많은 양의 전력을 소비하고 있다. CMOS 회로가 비활성화된 경우에도 전력 소비는 부분적으로 에너지 손실로 인한 전력 손실의 결과이다. 이는 이러한 회로가 비활성화되어 동적 전력을 소비하지 않는 경우에도 CMOS 트랜지스터의 상태를 유지해야 할 필요가 있어 여전히 전력을 소비하기 때문이다.
CMOS 기술에 기초한 프로세서 및 관련 구성요소의 사용에 대한 추가적인 접근은 초전도 논리 기반 구성요소 및 디바이스의 사용이다. 초전도 논리 기반 회로는 큐비트와 같은 양자 정보를 프로세싱하는 데에도 사용될 수 있다. 많은 초전도 논리 회로는 이러한 회로의 설계를 복잡하게 할 수 있는 인덕터 및 기타 능동 요소(active element)를 포함한다.
일 양상에서, 본 개시는, 프로세서를 사용하여, 복수의 도달 영역을 생성하기 위해 공유 평면도에 포함된 노드 및 초전도 구성요소 사이의 연결에 관한 정보를 프로세싱하는 단계를 포함하는 프로세서에 의해 구현되는 방법에 관한 것이고, 복수의 도달 영역 각각은 공유 평면도의 일부에 대응한다. 방법은, 프로세서를 사용하여, 공유 평면도에 포함된 노드와 초전도 구성요소 사이에서 신호를 라우팅하기 위한 와이어의 타겟 인덕턴스에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 단계를 더 포함할 수 있다. 방법은, 프로세서를 사용하여, 기하학적 제약을 충족시키는 복수의 팽창된 도달 영역 중 임의의 영역 내의 노드 및 초전도 구성요소의 서브세트 사이에서 와이어를 라우팅하기 위한 테스크의 병렬 실행을 스케줄링하는 단계를 더 포함할 수 있다.
다른 양상에서, 본 개시는 프로세서 및 명령어를 갖는 메모리를 포함하는 시스템에 관한 것이다. 명령어는 프로세서에 의해 실행될 때 프로세서로 하여금 (1) 복수의 도달 영역을 생성하기 위해 테스크 유형에 관한 정보를 프로세싱하고 - 복수의 도달 영역 각각은 공유 공간의 일부에 대응함 -; (2) 테스크 유형과 관련된 테스크-특정 인자에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하고; (3) 공간 제약을 충족시키는 복수의 팽창된 도달 영역 중 임의의 영역과 관련된 테스크 유형의 테스크의 병렬 실행을 자동으로 스케줄링하게 할 수 있다.
또 다른 양상에서, 본 개시는 초전도 회로 설계의 일부로서 신호를 라우팅하기 위한 와이어 세트와 함께 사용하기 위해 프로세서에 의해 구현되는 방법에 관한 것이다. 방법은, 프로세서를 사용하여, 복수의 도달 영역을 생성하기 위해 와이어 세트에 관한 정보를 프로세싱하는 단계를 더 포함할 수 있다. 방법은, 프로세서를 사용하여, 와이어 세트의 타겟 인덕턴스에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 단계를 더 포함할 수 있다. 방법은, 프로세서를 사용하여, 기하학적 제약을 충족시키는 복수의 팽창된 도달 영역 중 임의의 영역과 관련된 와이어를 라우팅하기 위한 테스크의 병렬 실행을 자동으로 스케줄링하는 단계를 더 포함할 수 있다.
이 요약은 아래의 상세한 설명에서 추가로 설명되는 단순화된 형태의 개념의 선택을 소개하기 위해 제공된다. 이 요약은 청구된 발명의 핵심 기능 또는 필수 기능을 식별하기 위한 것이 아니며 또한 청구된 발명의 범위를 제한하는 데 사용되지 않는다.
본 개시는 예로서 도시되고 유사한 참조가 유사한 요소를 나타내는 첨부 도면에 의해 제한되지 않는다. 도면의 요소는 단순성과 명료성을 위해 도시되었으며 반드시 축척에 맞게 그려진 것이 아니다.
도 1은 일례에 따른 시스템 환경의 블록도이다.
도 2는 일례에 따른 도 1의 시스템 환경과 연관된 기능을 구현하는 데 사용될 수 있는 컴퓨팅 플랫폼을 도시한다.
도 3은 초전도 회로 설계의 일부와 관련된 예시적인 평면도를 도시한다.
도 4는 일례에 따른 공유 평면도에서 예시적인 도달 영역 및 팽창된 도달 영역을 도시한다.
도 5는 일례에 따른 팽창된 도달 영역에 기초하여 배치 및 라우팅 테스크의 스케줄링을 도시한다.
도 6은 일례에 따른 테스크의 상태를 도시하는 상태도이다.
도 7a 내지 도 7f는 일례에 따른 팽창된 도달 영역에 기초한 배치 및 라우팅 테스크의 스케줄링의 예를 도시한다.
도 8은 일례에 따른 예시적인 도달 체적을 도시한다.
도 9는 일례에 따라 기하학적 범위에 기초하여 라우팅 테스크를 병렬로 라우팅하는 것을 스케줄링하기 위한 방법의 흐름도이다.
도 10은 일례에 따른 기하학적 범위에 기초하여 라우팅 테스크를 병렬로 스케줄링하기 위한 다른 방법의 흐름도이다.
도 11은 일례에 따른 기하학적 범위에 기초하여 테스크를 병렬로 스케줄링하는 방법의 흐름도이다.
본 개시에 설명된 예는 기하학적 범위에 기초하여 병렬로 실행하기 위한 테스크의 스케줄링에 관한 것이다. 특정 예는 집적 회로 설계의 일부로서 와이어 라우팅과 관련된 테스크의 스케줄링과 관련이 있다. 특정 예에서, 기하학적 범위는 초전도 구성요소를 상호 연결하는 데 사용되는 제로-저항 와이어의 최대 인덕턴스 범위와 관련이 있다.
초전도 논리 기반 회로는 반도체 논리 기반 회로(예: CMOS 회로)와 많은 양상에서 상이한 초전도 논리를 요구한다. 예를 들어, 반도체 논리 기반 회로와 달리 초전도 논리 기반 회로는 제로-저항 와이어를 사용한다. 저항이 없는 와이어는 자기장에 취약한 것과 같은 다양한 문제를 나타낸다. 제로-저항 와이어는 초전도 회로에서 여러 논리 구성요소를 연결하는 데 사용할 수 있는 수동 구성요소이다. 제로-저항 와이어는 타겟 인덕턴스를 가질 수 있다. 일 예에서, 타겟 인덕턴스는 와이어가 제대로 작동하기 위해 에러 허용 오차 내에 있기 위해 가져야 할 특정 길이일 수 있다. 제로-저항 와이어의 이러한 양상은 와이어가 가능한 한 짧아야 하는 반도체 논리에 사용되는 와이어와 상이하다.
반도체 논리 기반 회로에서 전파되는 신호와 달리, 신호는(예: 마이크로파 신호)는 초전도 와이어를 통해 훨씬 더 빠르게 이동한다. 따라서 와이어 라우팅과 관련된 주요 제약은 시간이 아니라 와이어의 인덕턴스와 같은 와이어의 다른 속성이다. 이는 또한 초전도 회로의 와이어는 전달되는 신호에 대해 인덕터와 같은 역할을 하기 때문에 적절하게 크기가 조절될 필요가 있기 때문이다. 초전도 금속의 경우, 그의 속성에 기초하여, 금속의 유형과 특성에 기초하여 인덕터의 최대 범위를 결정할 수 있다. 예를 들어, 나노미터당 인덕턴스의 특정 양을 가정하면(또는 소정의 다른 길이 척도), 와이어가 초전도 구성요소의 특정 라이브러리와 관련된 설계 규칙에 따라 가능한 최대 폭을 가질 때 와이어의 특정 길이에서 얼마나 많은 인덕턴스가 축적되는지를 계산할 수 있다.
초전도 회로 설계는 수개의 라우팅 층을 포함할 수 있다. 각 라우팅 층은 라우팅 그리드로 구성될 수 있다. 일 예에서, 라우팅 그리드의 모든 사각형에 대해 노드 또는 교차점 사이에 누적할 수 있는 최대 인덕턴스 양(및 최소 인덕턴스 양)이 결정된다. 이러한 방식으로, 각 라우팅 그리드에 대해 인덕터(예: 제로 저항 와이어)가 가질 수 있는 인덕턴스의 양을 결정할 수 있고; 그 후 그러한 양을 제곱당 최소 인덕턴스로 나눈 값은 특정 와이어가 타겟 인덕턴스에 도달하기 전에 이동할 수 있는 최대 제곱 양을 제공한다.
제로-저항 와이어를 사용하여 2개의 논리 구성요소를 연결하기 위한 경로를 계산하는 것은 계산 집약적이다. 라우팅할 제로-저항 와이어의 수는 일반적으로 집적 회로 복잡성에 비례한다. 즉, 이는 설계가 더 복잡해짐에 따라 와이어를 라우팅하는 소프트웨어의 스케일링이 필요하다는 것을 의미한다. 회로 설계의 구성요소는 구성요소가 배치되는 픽셀 매트릭스로 정의되는 평면도와 같은 전역 상태를 공유할 수 있다. 예를 들어, 공유 평면도의 단일 픽셀은 해당 영역에 배치 및 라우팅될 수 있는 정사각형의 인덕터를 나타낼 수 있다. 설계 규칙은 공유 평면도의 영역에 배치 및 라우팅될 수 있는 제로-저항 와이어의 길이를 추가로 지시할 수 있다. 일 예에서, 평면도는 집적 회로의 단일 층으로 제작될 구성요소만을 포함할 수 있다. 대안적으로, 평면도는 집적 회로의 다른 층에서 제작될 구성요소를 포함할 수 있다.
테스크 스케줄링은 능동 모드 또는 수동 모드에서 수행될 수 있다. 능동 스케줄링은 최대 인덕턴스 범위를 갖는 경계 상자의 개념을 기반으로 다수의 테스크를 실행하도록 하는 것을 포함할 수 있다. 일 예에서, 그러한 능동 스케줄링을 효율적으로 수행하기 위해, 불필요한 경합을 피하는 잠금이 없는 데이터 구조로의 구현을 요구한다. 상호 배타적인 테스크를 찾는 것은 현재 스케줄링 중인 테스크의 활성 목록을 확인한 다음 새로운 테스크를 자동으로 스케줄링하려고 시도함으로써 수행될 수 있다. 수동 스케줄링은 병렬 스케줄링을 요구하는 모든 테스크가 그들을 실행하기 전에 언제 알려지는 지와 관련된다. 이 경우 최대 인덕턴스 범위를 가진 경계 상자를 기반으로 상호 배타적인 테스크 세트를 찾기 위해 기하학적 속성을 갖는 트리 데이터 구조를 사용하는 것과 같이 스케줄링이 더 정교해질 수 있다. 어쨌든, 일 예에서, 테스크의 기하학적 범위 측면에서 교차점이 없는 한 테스크가 스케줄링된다. 요약하면, 예를 들어, 스케줄링은 활성 목록에 테스크를 게시하는 것과 관련이 있으며, 이어서 모든 스레드가 작업을 훔치고 테스크를 병렬로 수행하기 시작한다. 유리하게는, 본 명세서에 설명된 스케줄러는 프로세서 또는 다중 프로세서 시스템과 연관된 컴퓨팅 코어와 같은 컴퓨팅 리소스의 거의 100퍼센트 사용을 유지하면서 테스크가 (병렬로) 실행되는 것을 보장한다.
초전도 회로는 회로와 관련된 기능을 구현하기 위해 조셉슨 접합을 사용할 수 있다. 예시적인 조셉슨 접합은 전류를 방해하는 영역을 통해 결합된 2개의 초전도체를 포함할 수 있다. 전류를 방해하는 영역은 초전도체 자체, 금속 영역 또는 얇은 절연 장벽의 물리적 협소화일 수 있다. 예를 들어, SIS(Superconductor-Insulator-Superconductor) 유형의 조셉슨 접합은 초전도 회로의 일부로 구현될 수 있다. 예를 들어, 초전도체는 전기장이 없는 상태에서 직류(DC)를 운반할 수 있는 물질이다. 초전도체는 그 아래에서 저항이 0인 임계 온도(Tc)를 가진다. 그러한 초전도체 중 하나인 니오븀(Niobium)의 임계 온도(Tc)는 9.3켈빈도이다. Tc 이하의 온도에서 니오븀은 초전도성이다. 그러나 Tc 이상의 온도에서는 전기 저항이 있는 일반 금속으로 거동한다. 따라서 SIS 유형의 조셉슨 접합에서 초전도체는 니오븀 초전도체일 수 있고 절연체는 Al2O3 장벽일 수 있다. SIS 유형의 접합에서 초전도 전자는 양자 역학적 파동 함수로 설명된다. 두 초전도체 사이의 초전도 전자 파동 함수의 위상이 시간에 따라 변화하는 위상차는 두 초전도체 사이의 전위차에 대응한다.
전송 라인을 포함하는 다양한 초전도 회로는 필요에 따라 인덕터 또는 기타 구성요소에 의해 다중 조셉슨 접합을 결합함으로써 형성될 수 있다. 마이크로파 펄스는 적어도 하나의 클록의 제어 하에 이러한 전송 라인을 통해 이동할 수 있다. 마이크로파 펄스는 양성 또는 음성, 또는 이들의 조합일 수 있다. 마이크로파 펄스는 최대 10GHz 또는 그 이상의 주파수를 가질 수 있다. 클록도 최대 10GHz 또는 그 이상의 주파수를 가질 수도 있다.
초전도 회로의 빌딩 블록은 다양한 유형의 논리 게이트를 포함할 수 있다. 논리 게이트의 예는 AND 게이트, OR 게이트, 논리 A-and-not-B(AanB) 게이트 및 논리 AND & OR(AndOr) 게이트를 포함한다. AanB 게이트는 2개의 입력과 1개의 출력(Q)을 가질 수 있다. 입력 펄스 B가 먼저 오지 않는 한 입력 펄스 A는 출력 Q로 전파될 수 있다. AndOr 게이트는 2개의 입력 및 2개의 출력(Q1 및 Q2)을 가질 수 있다. 제1 입력 펄스, 입력 펄스 A 또는 입력 펄스 B는 출력 Q1로 이동하고 제2 입력 펄스는 출력 Q2로 이동한다. 이러한 게이트의 논리적 거동은 논리 값을 인코딩하는 데 사용되는 인코딩 방법의 유형을 기초로 할 수 있다.
초전도 구성요소 및 노드(예를 들어, 네트리스트의 일부로서) 사이의 연결에 관한 정보에 액세스할 수 있게 되면, 구성요소 및 제로-저항 와이어는 초전도 구성요소(예를 들어, 논리 게이트, 인버터, 바이어스 단자, 플립플롭 등) 및 노드를 연결하기 위해 라우팅될 필요가 있을 수 있다. 예를 들어, 제로-저항 와이어는 노드를 다른 노드에, 노드를 구성요소의 입력에, 구성요소의 출력을 노드에, 층을 다른 층에, 노드를 클록 신호에, 노드를 접지 단자 또는 전원 단자에 연결하는 데 사용될 수 있다.
도 1은 일례에 따른 시스템 환경(100)의 블록도이다. 시스템 환경(100)은 초전도 회로 설계를 위한 배치 및 라우팅과 관련된 방법 및 시스템을 수행하기 위한 예시적인 블록을 도시한다. 시스템 환경(100)은 사용자 인터페이스(UI) 블록(110), 네트리스트(120), 배치 및 라우팅 엔진(PRE)(130), 초전도 논리 라이브러리(140) 및 물리적 레이아웃(150)을 포함할 수 있다. UI 블록(110)은 설계자 또는 다른 사용자가 시스템과 상호 작용할 수 있도록 하는 사용자 인터페이스를 가능하게 하는 코드를 포함할 수 있다. 예로서, UI 블록(110)은 사용자가 초전도 논리 라이브러리(140) 또는 다른 라이브러리를 선택할 수 있도록 하는 코드 및 데이터 구조를 포함할 수 있다. 이 예에서, 네트리스트(120)는 초전도 구성요소 및 노드 사이의 연결에 관한 정보를 포함할 수 있다. 네트리스트(120)는 초전도 회로 설계의 각각의 층에 대한 평면도에 대한 이러한 정보를 포함할 수 있다. 네트리스트(120)는 또한 와이어를 전원 단자, 접지 단자, 바이어스 단자, 클록 단자 또는 다른 유형의 단자에 연결하는 것과 관련된 연결 정보를 포함할 수 있다.
도 1을 계속 참조하면, PRE(130)는 구성요소 및 와이어의 배치와 라우팅 및 초전도 회로 설계를 위한 물리적 레이아웃의 생성을 허용하는 방법의 호출 가능한 세트로서 구현될 수 있다. 초전도 논리 라이브러리(140)는 주파수, AC 진폭, 및 설계와 관련된 논리 게이트의 유형에 관한 다른 파라미터에 관한 정보를 포함할 수 있다. 예를 들어, 논리 게이트는 파동 파이프라인 논리 게이트 또는 위상 모드 논리 게이트에 대응할 수 있다. 일 예에서, 초전도 논리 라이브러리(140)는 논리 게이트의 정의를 포함할 수 있다. 일 예에서, 초전도 논리 라이브러리(140)는 논리 게이트 및 다른 초전도 구성요소의 Json 및 Verilog 정의를 포함할 수 있다. 시스템 환경(100)에 도시된 바와 같이, 배치 및 라우팅의 출력은 설계 중인 초전도 회로의 물리적 레이아웃(150)에 대응하는 파일일 수 있다. 도 1은 시스템 환경(100)의 일부로서 포함된 특정 블록을 도시하지만, 추가적이거나 더 적은 블록이 있을 수 있다. 예로서, 시스템 환경(100)은 초전도 회로 설계에 관한 보고를 생성하는 데 사용될 수 있는 보고 블록을 포함할 수 있다. 다른 예로서, 시스템 환경(100)은 상이한 온도에서 동작하도록 구축된 초전도 회로 또는 상이한 제조 프로세스를 사용하여 구축된 초전도 회로를 지원하는 데 사용될 수 있는 유사한 정보를 포함할 수 있는 추가적인 타이밍 라이브러리를 포함할 수 있다.
도 2는 일례에 따른 도 1의 시스템 환경(100)과 연관된 기능을 구현하는 데 사용될 수 있는 컴퓨팅 플랫폼(200)을 도시한다. 컴퓨팅 플랫폼(200)은 버스(220)를 통해 상호 접속될 수 있는 프로세서(202), I/O 구성요소(204), 메모리(206), 프레젠테이션 구성요소(208), 센서(210), 데이터베이스(212), 네트워킹 인터페이스(214), 및 I/O 포트(216)를 포함할 수 있다. 프로세서(202)는 메모리(206)에 저장된 명령어 또는 코드를 실행할 수 있다. 명령어는 본 개시에서 설명된 다양한 모듈 및 알고리즘에 대응할 수 있다. 따라서 모듈 및 알고리즘은 프로그래밍 언어를 사용하여 구현되고 실행 파일로 컴파일되며, 그 다음 실행될 수 있다. I/O 구성요소(204)는 키보드, 마우스, 음성 인식 프로세서 또는 터치 스크린과 같은 구성요소를 포함할 수 있다. 메모리(206)는 비휘발성 저장소 또는 휘발성 저장소(예를 들어, 플래시 메모리, DRAM, SRAM 또는 다른 유형의 메모리)의 임의의 조합일 수 있다. 프리젠테이션 구성요소(208)는 LCD, LED 또는 다른 유형의 디스플레이와 같은 임의의 유형의 디스플레이, 또는 오디오 또는 햅틱 출력 구성요소를 포함하는 다른 유형의 출력 구성요소일 수 있다. 센서(210)는 오디오 센서, 광학 센서 또는 다른 유형의 센서를 포함할 수 있다.
도 2를 계속 참조하면, 데이터베이스(212)는 설계 라이브러리를 포함하는 초전도 설계 관련 정보 및 기타 설계 관련 정보를 저장하는 데 사용될 수 있다. 네트워킹 인터페이스(214)는 이더넷, 셀룰러 라디오, 블루투스 라디오, UWB 라디오, 또는 다른 유형의 무선 또는 유선 통신 인터페이스와 같은 통신 인터페이스를 포함할 수 있다. I/O 포트(216)는 컴퓨팅 플랫폼(200)이 다른 외부 구성요소와 통신하게 할 수 있다. 도 2는 특정 방식으로 배열되고 결합된 특정 수의 구성요소를 포함하는 컴퓨팅 플랫폼(200)을 도시하지만, 컴퓨팅 플랫폼은 다르게 배열되고 결합된 더 적은 수의 구성요소 또는 추가 구성요소를 포함할 수 있다. 또한, 컴퓨팅 플랫폼(200)과 관련된 기능은 필요에 따라 분산되거나 결합될 수 있다. 더욱이, 컴퓨팅 플랫폼(200)의 모든 측면이 본 명세서에 기술된 다양한 방법, 모듈 및 알고리즘을 구현하는 데 필요한 것은 아닐 수 있다.
도 3은 초전도 회로 설계의 일부와 관련된 예시적인 평면도(300)를 도시한다. 이 예에서, 평면도(300)는 초전도 회로의 한 층에 대한 구성요소 사이의 와이어 라우팅 및 구성요소의 배치를 도시한다. 초전도 회로 설계는 구성요소 및 와이어의 여러 층을 포함할 수 있으며, 이는 파운드리를 사용하여 집적 회로를 제조하는 데 사용될 수 있다. 예시적인 층은 필요에 따라 접지 층, 클록 신호 층, 여러 게이트 논리 층, 전력 분배 층 및 기타 층을 포함한다. 다양한 구성요소를 상호 연결하는 와이어는 초전도성 금속(예: 니오븀)을 사용하여 제조될 수 있으므로 제로-저항을 나타낼 수 있다. 앞에서 설명한 것처럼 저항이 없는 와이어는 자기장에 민감하고 인덕턴스가 있는 것과 같은 다른 문제를 나타낸다. 제로-저항 와이어는 초전도 회로에서 여러 논리 구성요소를 연결하는 데 사용할 수 있는 수동 구성요소이다. 제로-저항 와이어는 타겟 인덕턴스를 가질 수 있다. 타겟 인덕턴스는 와이어가 제대로 작동하기 위해 에러 허용 오차 내에 있기 위해 가져야 하는 특정 길이일 수 있다.
계속해서 도 3을 참조하면, 평면도(300)는 서로 및 다른 노드에 결합된 다양한 유형의 구성요소를 도시한다. 예시적인 구성요소는 조셉슨 접합(JJ), 바이어스 단자, 논리 게이트(예: OR 게이트, NOR 게이트, AND 게이트, NAND 게이트, AandorB 게이트), 플립플롭, 래치, 버퍼, 인버터, 및 JTL(Josephson 전송선)을 포함하지만 이에 제한되지 않는다. 예로서, 도 3은 제로-저항 와이어에 결합될 수 있는 여러 노드(예를 들어, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11...N20, N21, N22, N23, N24, N25 및 N26)를 도시한다. 도 3은 또한 DC 바이어스 또는 AC 바이어스를 초전도 회로에 제공하기 위해 사용될 수 있는 예시적인 JJ 및 바이어스 단자(BT)를 도시한다. 도 3은 예시적인 평면도(300)의 일부로서 포함될 수 있는 다른 유형의 구성요소를 더 도시한다. 또한, 제로-저항 와이어는 전원 라인(예를 들어, 초전도 구성요소에 전력을 공급하는 데 사용될 수 있는 AC 클록 신호를 운반하는 라인), 접지 라인 및 클록 라인을 연결하는 데 사용될 수 있다. 점선은 평면도(300)가 대응하는 층 위 또는 아래의 층에 있는 제로-저항 와이어를 도시한다. 따라서 와이어는 비아 또는 다른 그러한 구조를 사용하여 다른 층의 와이어와 연결할 수 있다. 도 3은 특정 방식으로 배열된 구성요소의 특정 수 및 유형을 도시하지만, 초전도 회로 설계를 위한 평면도(300)는 다른 유형일 수 있고 상이하게 배열될 수 있는 추가적인 또는 더 적은 구성요소를 포함할 수 있다. 또한, 평면도(300)는 단지 배치 및 라우팅 테스크의 병렬 스케줄링을 사용하는 초전도 회로 설계의 일부로서 다양한 유형의 구성요소 및 그 배열을 예시하기 위해 도시되어 있다.
배치 및 라우팅 도구(예를 들어, 도 1의 배치 및 라우팅 엔진(130))는 도 3에 도시된 다양한 구성요소의 배치 및 이러한 구성요소의 상호 연결을 위한 제로-저항 와이어의 라우팅 모두의 결정으로 물리적 레이아웃 출력 파일을 생성할 수 있다. 제로-저항 와이어는 설계 중인 회로의 평면도에 대해 수평 방향 및 수직 방향을 따라 라우팅될 수 있다. 초전도 회로 설계를 구현하는 데 사용되는 논리 유형과 초전도 회로 설계의 복잡성에 따라, 초전도 회로 설계를 구현하는 데 여러 층이 필요할 수 있다. 일 예에서, 각각의 층은 도 3의 평면도(300)와 유사한 대응하는 평면도를 가질 수 있다.
도 4는 일례에 따른 공유 평면도에서 예시적인 도달 영역 및 팽창된 도달 영역을 도시한다. 이 예에서 팽창된 도달 영역은 테스크가 공유 평면도에 부작용을 가질 수 있는 최대 영역을 나타낸다. 예로서, 공유 평면도(400)는 팽창된 도달 영역(410, 412, 414, 416, 418, 420, 422, 424)을 도시한다. 본 명세서에 설명된 예의 맥락에서, 테스크는 사용자 제공 기능을 수행할 수 있는 계산 유닛이다. 예를 들어 한 지점에서 다른 지점으로 인덕터를 라우팅하는 기능이다. 도 4와 관련하여 설명된 예에서, 테스크는 "도달 영역"(예를 들어, 경계 상자)과 연관되어야 한다. 일 예에서 경계 상자는 두 점, 예를 들어 점 PI와 P2로 만들어진 직사각형이다. 도달 영역을 사용하여 테스크 스케줄러는 인덕턴스를 사용하여 제로-저항 와이어의 라우팅을 개별적으로 수행하는 테스크의 실행을 병렬로 스케줄링할 수 있다. 예를 들어, 2개의 테스크 T1 및 T2는 병렬로 실행될 수 있는데, 여기서 테스크 T1은 점 PI에서 점 P2로 와이어를 라우팅하도록 스케줄링되고 테스크 T2는 점 P3에서 점 P4로 와이어를 라우팅하도록 스케줄링된다. 이 예에서 테스크 T1 및 T2는 각각의 최대 인덕턴스 범위를 갖는 팽창된 도달 영역이 상호 배타적인 경우에만 병렬로 실행될 수 있다.
도 4를 계속 참조하면, 이 예에서 팽창된 도달 영역(예를 들어, 최대 인덕턴스 범위를 갖는 경계 상자)은 제로-저항 와이어 인덕턴스의 현재 최대 범위에 기초한 값에 의해 팽창된 도달 영역(예를 들어, 경계 상자)이다. 일 예에서, 도달 영역을 팽창시키는 데 사용되는 값은 타겟 인덕턴스일 수 있으며, 이는 제로-저항 와이어를 형성하는 데 사용되는 물질의 유형(예를 들어, 니오븀 또는 일부 다른 초전도 금속 또는 합금)에 따라 달라질 수 있다. 도달 영역을 팽창시키는 데 사용되는 타겟 인덕턴스는 제로-저항 와이어의 폭과 두께에 따라 달라질 수 있다. 이 예에서, 타겟 인덕턴스는 회로가 제대로 작동하는 데 필요한 제로-저항 와이어의 특정 길이에 대응할 수 있다. 예를 들어 도달 영역을 팽창시키는 데 사용되는 타겟 인덕턴스는 특정 에러 허용 오차 한계 내에서 회로의 성능을 보장하도록 선택될 수 있다.
여전히 도 4를 참조하면, 공유 평면도의 겹치지 않는 부분인 도달 영역은 A1, A2, A3, A4, A5, A6, A7 및 A8이다. 팽창된 도달 영역은 410, 412, 414, 416, 418, 420, 422 및 424이다. 일 예에서, 특정 값만큼 팽창한다는 것은 도달 영역 주변에 패딩을 추가하여 모든 방향으로 팽창시키는 것을 의미할 수 있다. 예를 들어 팽창된 영역(점선으로 표시됨)은 각 방향으로 확장되었다. 이 예에서는 팽창된 도달 영역(422, 424)만 겹치므로 테스크의 병렬 실행 중에 부작용이 발생할 수 있다. 도 4는 공유 평면도(400)의 일부로서 직사각형 도달 영역을 도시하지만, 도달 영역을 나타내기 위해 다른 형상이 사용될 수도 있다. 예를 들어, 영역은 삼각형, 사각형, 원, 타원 또는 임의의 개수의 변이 있는 다각형에 대응하는 형상을 가질 수 있다. 또한 영역 대신 체적을 사용하여 이 예와 관련하여 기하학적 범위를 나타낼 수 있다.
도 5는 일례에 따른 팽창된 도달 영역에 기초하여 배치 및 라우팅 테스크의 스케줄링을 위한 배열(500)을 도시한다. 테스크 스케줄러(510)는 컴퓨팅 플랫폼(예를 들어, 컴퓨팅 플랫폼(200))과 연관된 리소스를 사용하여 실행할 테스크를 스케줄링할 수 있다. 테스크는 큐(520)에서 대기할 수 있다. 큐(520)는 스택, 연결 목록 또는 테스크 스케줄러(510)와 함께 사용하기 위한 임의의 다른 데이터 구조로 구현될 수 있다. 프로세서(예를 들어, 도 2의 프로세서(210))와 연관된 코어를 사용하여 실행하도록 구성된 스레드(530)는 스레드 1, 스레드 2 및 스레드 M을 포함할 수 있다. 이 예에서 시스템의 임의의 주어진 스레드는 "AwaitOnArea" 함수를 호출하며, 이 함수는 사각형 "영역"과 콜백 함수 "동작"을 파라미터로 취한다. 와이어의 배치 및 라우팅을 위해, 영역은 도 4와 관련하여 이전에 설명된 도달 영역에 대응할 수 있고 콜백 함수는 와이어 라우팅 및 배치 동작에 대응할 수 있다. 스택에 새로운 테스크가 생성되고 "영역" 및 "동작"이 할당된다. 디스패처(예를 들어, 테스크 디스패처 스레드(540))는 실행을 위한 스레드를 디스패치할 수 있다. 이 예에서, 테스크 디스패처 스레드(540)는 스케줄링이 필요한 지연된 테스크의 스냅샷을 찍고 이러한 테스크를 지연된 목록(550)에 추가할 수 있다. 임의의 스레드(530)는 디스패처 역할을 획득하고 지연된 목록(550)을 프로세싱할 수 있다. 다른 스레드는 대기 상태로 돌아가거나 활성화된 테스크를 프로세싱할 수 있다. 지연된 목록(550)으로부터의 테스크 프로세싱은 이러한 테스크 중 하나 이상을 활성 상태로 전이하여 이들이 하나 이상의 프로세서(예를 들어, 일 예에서, 도2의 프로세서(202)에 대응할 수 있는 프로세서(560))와 연관된 임의의 프로세싱 유닛(예를 들어, 코어 C1, C2, C3 및 C4)에 의해 실행되게 할 수 있다.
도 6은 일례에 따른 테스크의 상태를 도시하는 상태도(600)이다. 도 6에 도시된 바와 같이, 각각의 테스크는 스케줄링 및 실행을 통해 다수의 상태를 갖는다: 없음(610), 지연(620), 활성(630) 및 릴리스(640). 테스크가 상태 없음(610)을 가질 때, 그 상태를 지연됨(620)으로 변경하고 자신을 추가 전용, 잠금 없는 글로벌 지연 목록(예: 큐(520))에 등록할 것이다. 이렇게 하면 스케줄링 및 프로세싱을 위해 테스크가 즉시 이용가능하게 되며, 이는 이 예에서 현재 스레드가 더 이상 자신의 테스크를 소유하지 않음을 의미한다. 자신의 테스크를 포기한 스레드는 즉시, 그가 수행할 수 있는 임의의 테스크를 기다린다. 지연된 테스크는 짧은 시간이 경과하거나(예: 1밀리초) 다른 스레드(예: 스케줄링 스레드)가 테스크를 깨울 때까지 대기한다. 테스크 스케줄러(예를 들어, 도 5의 테스크 스케줄러(510))는 다수의 스레드가 도 6에 도시된 상태 사이에서 전이하도록 허용할 수 있다. 일 예에서, 깨어났거나 대기 시간이 경과한 임의의 스레드는 추가 전용 잠금 없는 지연 목록으로 "도움"을 시도할 것이다. 아래 표 1은 테스크 스케줄링과 관련된 예시적인 의사 코드(pseudocode)를 예시한다.
[표 1]
Figure pct00001
이 예에서 지연된 목록은 추가 전용이므로, 지연된 목록에 있는 특정 수의 테스크(예: 10개의 테스크)의 스냅샷을 찍는 것이 안전할 수 있다. 한편, 다른 테스크는 추가 전용 목록(예: 큐(520))에 추가될 수 있다. 스냅샷에 10개의 테스크가 포함되어 있다고 가정하면, 지연된 목록의 새 헤드는 11번째 테스크(또는 null)이만; 일 예에서, 현재 스냅샷이 완전히 프로세싱된 후에만 설정될 수 있다. 이 예에서, 테스크 디스패처 스레드(540)는 지연된 테스크(예를 들어, 10개의 테스크)의 스냅샷을 소유한다. 스냅샷의 모든 테스크는 초기에 지연된 상태(예를 들어, 도 6의 지연된 상태(620))에 있다.
도 7a 내지 도 7f는 일례에 따른 도달 영역에 기초한 배치 및 라우팅 테스크의 스케줄링의 예를 도시한다. 이 예에서, 테스크 디스패처 스레드(540)는 시스템에 있는 프로세싱 유닛(예: 코어)의 수에 액세스할 수 있고 스냅샷에서 "활성 테스크의 배치"를 구축할 수 있다. 예를 들어, 코어 수가 4개이면, "활성 테스크의 배치"의 최대 크기는 4개가 된다. 도 7a는 지연된 테스크 T1, T2, T3 및 T4를 도시한다. 이 예에서 스레드 1은 테스크 디스패처 스레드(540)의 역할을 얻었다. 테스크 디스패처 스레드는 상호 배타적인 모든 테스크를 배치로 이동시킨다. 이는 0(N)2 차수의 복잡도를 갖는 무차별 대입 알고리즘을 사용하여 달성될 수 있으며, 여기서 N은 테스크의 수이다. 무차별 대입 알고리즘의 성능은 "활성 테스크의 배치"의 크기가 상대적으로 작기(예: 80개의 활성 테스크보다 작은) 때문에 충분할 수 있다. 또한 지연된 목록에서 테스크가 연결되어 있더라도, 메모리 프리페칭을 사용하여 무차별 대입 알고리즘의 빈번한 스캔을 줄일 수 있다. 배치 크기가 100을 초과하면 다른 알고리즘을 사용할 수도 있다.
일단 배치가 가득 차면, 디스패처 스레드는 상호 배타적인 모든 테스크의 상태를 지연된 상태(예를 들어, 지연(620))에서 활성 상태(예를 들어, 활성(630))로 변경할 수 있다. 이 예에서 테스크 T2, T3 및 T4는 활성 상태로 전환되었다(도 7B). 디스패처 스레드는 대기 중인 스레드(예를 들어, 도 7c에 도시된 바와 같은 스레드 2, 스레드 3 및 스레드 4)를 더 시그널링할 수 있으며, 이는 각각의 테스크를 실행하기 시작할 수 있다. 따라서, 이 예에서는 스레드 및 테스크 간에 일대일 대응이 있다. 디스패처 스레드는 스냅샷의 각 테스크가 지연 상태에서 활성 상태로 변경될 때까지 이 프로세스를 반복한다. 상태가 지연에서 활성으로 변경되는 것을 본 스레드는 상태가 릴리스로 변경될 때까지 계속 기다려야 한다. 도 7d는 테스크 T2, T3 및 T4가 이제 릴리스 상태(예를 들어, 릴리스 640)로 전환되었음을 도시한다. 이는 이 예에서 테스크가 스레드의 스택에 있고, 따라서 스레드가 종료되면 디스패처 스레드는 무효 메모리 위치에 액세스하기 때문이다. 디스패처 스레드는 테스크의 스냅샷을 살펴보고 각 테스크에 대해 활성(630)에서 릴리스(640)로 상태를 변경한다. 디스패처 스레드는 이전 단계에서 설명한 대로 상태가 릴리스로 변경된 테스크에 더 이상 액세스하지 않는다. 이렇게 하면 테스크가 효과적으로 "삭제"되고 스레드가 종료된다. 지연된 목록의 새 헤드는 스냅샷의 마지막 테스크 다음 테스크가 된다. 따라서 이 예에서 스레드 3은 지연 상태에서 활성 상태로 상태를 변경하여 테스크 T1을 스케줄링하려고 시도할 수 있다. 그러나 스레드 3이 이 액션을 수행하기 전에, 스레드 4는 테스크 T1의 상태를 활성 상태로 변경할 수 있다. 그 결과, 도 7f에 도시된 바와 같이 테스크(T1)는 활성 상태로 전이할 것이다.
디스패처 스레드는 또한 상태가 지연 또는 활성인지를 결정하기 위해 자신의 상태를 확인할 것이다. 상태가 지연이면 이 예에서 디스패처 스레드는 스케줄링된 테스크의 어레이를 순회하기 시작할 것이다. 그렇지 않고 디스패처 스레드의 상태가 활성이면, "동작" 콜백 함수를 호출한 다음 스케줄링된 테스크의 어레이를 순회하기 시작할 것이다. 테스크가 활성으로 표시된 임의의 스레드는 시스템에서 실행 중인 임의의 동시 테스크와 충돌하지 않도록 테스크를 실행한다. 그런 다음 더 많은 테스크가 병렬로 실행될 수 있도록 스케줄링된 테스크의 어레이를 순회하는 것으로 돌아갈 것이다. 이 예에서는 테스크가 릴리스로 표시된 임의의 스레드는 종료될 것이다.
도 5, 도 6 및 도 7a 내지 도 7f와 관련하여 이전에 설명된 바와 같이 능동 모드에서의 테스크 스케줄링과는 별개로, 테스크는 수동 모드에서 스케줄링될 수 있다. 이 예에서, 디스패처(예를 들어, 도 5의 테스크 디스패처 스레드(540))는 잘 알려진 "객체" 목록(예를 들어, 100,000개의 인덕터의 어레이) 및 각 객체의 "도달 영역"을 얻기 위한 함수를 가질 것이다. 이 예에서, 이러한 객체는 변경할 수 없는 것으로 간주된다. 디스패처는 작업자 스레드 세트를 생성한다: 각 프로세싱 유닛(예: 코어)당 하나씩. 따라서, 도 5에 도시된 배열과 관련하여, 작업 스레드(W1)는 코어(C1)에 대해 생성될 수 있고, 작업 스레드(W2)는 코어(C2)에 대해 생성될 수 있으며, 작업 스레드(W3)는 코어(C3)에 대해 생성될 수 있고, 작업 스레드(W4)는 코어(C4)에 대해 생성될 수 있다.
디스패처는 각각의 제공된 객체에 대해 하나씩 새로운 테스크 어레이를 할당할 것이다. 각 테스크는 대응하는 객체를 가리키고 "도달 영역"을 얻기 위한 함수가 호출되며; 결과는 테스크에 할당된 메모리에 저장된다. 이 예에서는 테스크는 연결된다. 예를 들어, 테스크는 어레이의 일부로 연결될 수 있다. 이 예에서, 스케줄링 중에 빈번한 메모리 액세스 동작이 발생할 수 있으므로 테스크를 가능한 한 작게 유지한다. 디스패처는 연결된 테스크 목록을 입력으로 취하고 "배치" 어레이를 출력으로 반환한다. 배치는 배치의 테스크가 상호 배타적인 테스크 대한 포인터의 어레이이다. 각 배치는 시스템에서 이용 가능한 코어 수보다 큰 크기를 가질 수 없다.
디스패처는 테스크 어레이를 순회하여 상호 배타적인 테스크를 찾아 현재 배치로 이동시킬 수 있다. 어레이에서 배치로 테스크를 이동하는 것은 논리적 동작이다. 각 테스크가 연결되면, 메모리를 복사하지 않고 배치로 이동하므로 테스크 목록에서 연결이 해제된다. 배치가 완료되면, 추가 배치가 완료될 수 있다.
이 예에서, 실행을 위한 테스크의 스케줄링은 한 번에 많은 테스크의 스케줄링을 필요로 하기 때문에 긴 프로세스이지만, 일단 스케줄링이 완료되면 더 빠른 프로세싱이 장점이다. 이 예에서, 디스패처는 한 번에 하나의 배치를 프로세싱한다. 디스패처는 테스크를 실행할 준비가 될 때마다 호출되는 콜백 함수 "동작"을 취할 수 있다. 동기화 컨텍스트는 스택(메모리에 저장됨)에서 생성될 수 있으며 동기화 컨텍스트는 모든 작업자 스레드에서 볼 수 있다. 동기화 컨텍스트에는 활성 배치 및 미해결 테스크 수가 포함될 수 있다. 제1 작업자 스레드는 이용 가능한 새 배치가 있다는 알림을 받을 수 있다. 디스패처는 동기화 컨텍스트를 작업자 스레드에 전달할 수 있다. 작업자 스레드는 배치의 각 테스크를 즉시 프로세싱하기 시작한다. 테스크가 완료되면, 미해결 테스크 수가 줄어든다. 디스패처는 제1 스레드에 알린 후, 미해결 테스크를 확인하고 이것이 0보다 크면 작업자 스레드에 계속 알린다. 이 예에서, 디스패처는 현재 배치의 테스크보다 더 많은 스레드에 알리지 않도록 구성된다. 디스패처는 다음 배치로 이동하기 전에 현재 배치의 모든 테스크가 완료될 때까지 기다린다.
도 8은 일례에 따른 공유 평면도(800)의 예시적인 도달 체적을 도시한다. 앞서 설명한 바와 같이, 영역은 삼각형, 정사각형, 원, 타원 또는 임의의 수의 변이 있는 다각형에 대응하는 형상을 가질 수 있다. 또한, 영역 대신 체적을 사용하여 기하학적 범위를 나타낼 수 있다. 따라서 3차원 평면도를 나타낼 수 있는 3차원 공간에서 기하학적 범위는 직사각형의 체적에 대응할 수 있다. 따라서, 기하학적 범위는 도달 체적(802, 804, 806, 808, 810 및 812)으로 나타낼 수 있다. 이러한 유형의 기하학적 범위는 다층 초전도 설계 또는 3D 비아 및 다차원 및/또는 다중 평면으로 확장될 수 있는 다른 유형의 상호 연결 구조를 사용하는 것에 사용하는 데 유용할 수 있다.
도 9는 일례에 따른 기하학적 범위에 기초하여 병렬로 배치 및 라우팅 테스크를 스케줄링하기 위한 방법의 흐름도(900)이다. 이 예에서, 흐름도(900)의 일부로서 기재된 다양한 단계는 배치 및 라우팅 엔진에 대응하는 명령어가 프로세서(예를 들어, 도 2의 프로세서(202))에 의해 실행될 때 PRE(130)에 의해 수행될 수 있다. 단계(910)는 복수의 도달 영역을 생성하기 위해 공유 평면도에 포함된 초전도 구성요소 및 노드 사이의 연결에 관한 정보를 프로세싱하는 단계를 포함할 수 있으며, 복수의 도달 영역 각각은 공유 평면도의 일부에 대응한다. 일 예에서, 프로세서에 의해 실행될 때, 앞서 설명한 스케줄링 관련 구성요소와 함께 도 1의 PRE(130)에 대응하는 명령어는 이 단계를 수행할 수 있다. 이 예에서, 도 1의 네트리스트(120)는 연결 관련 정보를 포함할 수 있다. 도달 영역은 도 4에 도시된 도달 영역에 대응할 수 있다.
단계(920)는, 프로세서를 사용하여, 공유 평면도에 포함된 초전도 구성요소 및 노드 사이에서 신호를 라우팅하기 위한 와이어의 타겟 인덕턴스에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 것을 포함할 수 있다. 일 예에서, 프로세서에 의해 실행될 때, 앞서 설명된 스케줄링 관련 구성요소와 함께 도 1의 PRE(130)에 대응하는 명령어는 이 단계를 수행할 수 있다. 도 4와 관련하여 이전에 설명된 바와 같이, 도달 영역은 타겟 인덕턴스에 기초하여 팽창될 수 있다. 제로-저항 와이어의 다른 전기적, 자기적 또는 전자기적 속성 또한 필요에 따라 사용될 수 있다.
단계(930)는, 프로세서를 사용하여, 기하학적 제약을 충족하는 복수의 팽창된 도달 영역 중 임의의 영역 내의 초전도 구성요소 및 노드의 서브세트 사이에서 와이어를 라우팅하기 위한 테스크의 병렬 실행을 스케줄링하는 것을 포함할 수 있다. 일 예에서, 프로세서에 의해 실행될 때, 앞서 설명된 스케줄링 관련 구성요소와 함께 도 1의 PRE(130)에 대응하는 명령어는 이 단계를 수행할 수 있다. 앞서 설명한 바와 같이, 프로세서는 복수의 코어(예: 도 5의 코어 C1, C2, C3, C4)를 포함할 수 있다. 더욱이, 일 예에서, 각각의 도달 영역은 직사각형에 대응할 수 있다. 이 예에서 기하학적 제약은 임의의 직사각형이 겹치는지 여부를 결정하여 충족될 수 있다. 도 9는 특정 순서로 수행되는 특정 수의 단계를 도시하지만, 방법은 다른 순서로 수행되는 더 많거나 더 적은 단계를 포함할 수 있다.
도 10은 일례에 따른 기하학적 범위에 기초하여 병렬로 배치 및 라우팅 테스크를 스케줄링하기 위한 다른 방법의 흐름도(1000)이다. 이 예는 앞서 자세히 설명한 스케줄링의 수동 모드와 관련된다. 이 예에서, 흐름도(1000)의 일부로서 인용된 다양한 단계는 배치 및 라우팅 엔진에 대응하는 명령어가 프로세서(예를 들어, 도 2의 프로세서(202))에 의해 실행될 때 PRE(130)에 의해 수행될 수 있다. 단계(1010)는, 프로세서를 사용하여, 복수의 도달 영역을 생성하기 위해 와이어 세트에 관한 정보를 프로세싱하는 것을 포함할 수 있다. 일 예에서, 프로세서에 의해 실행될 때, 앞서 기술된 스케줄링 관련 구성요소와 함께 도 1의 PRE(130)에 대응하는 명령어는 이 단계를 수행할 수 있다. 이 예에서, 도 1의 네트리스트(120)는 연결 관련 정보를 포함할 수 있다. 도달 영역은 도 4에 도시된 도달 영역에 대응할 수 있다.
단계(1020)는, 프로세서를 사용하여, 와이어 세트의 타겟 인덕턴스에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 것을 포함할 수 있다. 일 예에서, 프로세서에 의해 실행될 때, 앞서 설명된 스케줄링 관련 구성요소와 함께 도 1의 PRE(130)에 대응하는 명령어는 이 단계를 수행할 수 있다. 도 4와 관련하여 이전에 설명된 바와 같이, 도달 영역은 타겟 인덕턴스에 기초하여 팽창될 수 있다. 필요에 따라 와이어 세트의 다른 전기적, 자기적 또는 전자기적 속성 또한 사용될 수 있다.
단계(1030)는, 프로세서를 사용하여, 기하학적 제약을 충족하는 복수의 팽창된 도달 영역 중 임의의 영역과 관련된 와이어를 라우팅하기 위한 테스크의 병렬 실행을 자동으로 스케줄링하는 것을 포함할 수 있다. 일 예에서, 프로세서에 의해 실행될 때, 앞서 기술된 스케줄링 관련 구성요소와 함께 도 1의 PRE(130)에 대응하는 명령어는 이 단계를 수행할 수 있다. 앞서 설명한 바와 같이, 프로세서는 복수의 코어(예: 도 5의 코어 C1, C2, C3, C4)를 포함할 수 있다. 더욱이, 일 예에서, 각각의 도달 영역은 직사각형에 대응할 수 있다. 이 예에서 기하학적 제약은 임의의 직사각형이 겹치는지 여부를 결정하여 충족될 수 있다. 도 10은 특정 순서로 수행되는 특정 수의 단계를 도시하지만, 방법은 다른 순서로 수행되는 더 많거나 더 적은 단계를 포함할 수 있다.
도 11은 일례에 따른 공간 제약에 기초하여 테스크를 병렬로 스케줄링하는 방법의 흐름도(1100)이다. 단계(1110)는 복수의 도달 영역을 생성하기 위해 테스크 유형에 관한 정보를 프로세싱하는 것을 포함할 수 있으며, 복수의 도달 영역 각각은 공유 공간의 일부에 대응한다. 일 예에서, 스케줄링 명령어는 도 9의 단계(910)와 관련하여 앞서 설명한 것과 유사한 방식으로 도달 영역을 생성하기 위해 테스크 관련 정보를 프로세싱할 수 있다. 공유 공간은 공유 평면도 또는 다른 유형의 공유 공간에 대응할 수 있다.
단계(1120)는 테스크 유형에 관련된 테스크 특정 인자에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 것을 포함할 수 있다. 일 예에서, 스케줄링 명령어는 도 9의 단계(920)와 관련하여 이전에 설명된 것과 유사한 방식으로 팽창된 도달 영역을 생성하기 위해 테스크 관련 정보를 프로세싱할 수 있다. 테스크 특정 인자는 스케줄링되는 테스크 유형에 특정할 수 있다. 이 인자는 최악의 시나리오에서도 한번 스케줄링된 테스크는 병렬로 실행될 수 있도록 하는 데 도움이 될 수 있다.
단계(1130)는 공간 제약을 충족하는 복수의 팽창된 도달 영역 중 임의의 영역과 관련된 테스크 유형의 테스크의 병렬 실행을 자동으로 스케줄링하는 것을 포함할 수 있다. 일 예에서, 스케줄링 명령어는 도 9의 단계(920)와 관련하여 앞서 설명한 것과 유사한 방식으로 공간 제약을 충족하는 복수의 팽창된 도달 영역 중 임의의 영역과 관련된 테스크 유형의 테스크의 병렬 실행을 자동으로 스케줄링할 수 있다. 이러한 방식으로 공유 리소스(예: 컴퓨팅 리소스)는 일반화된 전역 잠금이 아니라 공간 제약을 기반으로 잠길 수 있다. 예를 들어, 각각의 팽창된 도달 영역은 직사각형에 대응할 수 있고; 공간적 제약을 충족시키는 것은 임의의 직사각형이 중첩되는지 여부를 결정하는 것을 포함할 수 있다. 더욱이, 이전에 설명된 바와 같이, 프로세서는 복수의 코어를 포함할 수 있고, 스케줄링 명령어는 프로세서에 의해 실행될 때 프로세서로 하여금 복수의 코어에 의한 실행을 위해 스케줄링된 테스크를 디스패치하게 할 수 있으며, 여기서 복수의 코어 각각은 최소한 다른 테스크와 병렬로 스케줄링된 테스크의 서브세트를 실행하도록 구성될 수 있다.
결론적으로, 본 개시는, 프로세서를 사용하여, 복수의 도달 영역을 생성하기 위해 공유 평면도에 포함된 초전도 구성요소 및 노드 사이의 연결에 관한 정보를 프로세싱하는 것을 포함하는, 프로세서에 의해 구현되는 방법에 관한 것이며, 여기서 복수의 도달 영역 각각은 공유 평면도의 일부에 대응한다. 방법은, 프로세서를 사용하여, 공유 평면도에 포함된 초전도 구성요소 및 노드 사이에서 신호를 라우팅하기 위한 와이어의 타겟 인덕턴스에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 단계를 더 포함할 수 있다. 이 방법은, 프로세서를 사용하여, 기하학적 제약을 충족하는 임의의 복수의 팽창된 도달 영역 내의 노드 및 초전도성 구성요소의 서브세트 사이에서 와이어를 라우팅하기 위한 테스크의 병렬 실행을 스케줄링하는 단계를 더 포함할 수 있다.
프로세서는 복수의 코어를 포함할 수 있고, 방법은 복수의 코어에 의한 실행을 위해 스케줄링된 테스크를 디스패치하는 단계를 더 포함할 수 있으며, 복수의 코어 각각은 최소한 다른 테스크와 함께 스케줄링된 테스크의 서브세트를 병렬로 실행하도록 구성된다. 복수의 팽창된 도달 영역 각각은 직사각형에 대응할 수 있고, 기하학적 제약을 충족시키는 것은 임의의 직사각형이 중첩되는지 여부를 결정하는 것을 포함할 수 있다. 신호를 라우팅하기 위한 와이어의 타겟 인덕턴스와 관련된 인자에 기초하여 복수의 도달 영역 각각을 팽창시키는 단계는 복수의 영역 각각의 범위를 수평 방향 및 수직 방향 모두로 확장하는 단계를 포함할 수 있다.
방법은 각각의 스케줄링된 테스크를 지연된 상태로 할당하는 단계를 더 포함할 수 있다. 프로세서는 복수의 코어를 포함할 수 있고, 방법은 지연된 상태에서 활성 상태로 테스크를 전환하는 단계를 더 포함할 수 있으며, 활성 상태에서 스레드는 복수의 코어 중 적어도 하나를 사용하여 테스크를 실행하도록 할당된다. 활성 상태의 테스크는 복수의 코어를 이용하여 병렬로 실행될 수 있다.
다른 양상에서, 본 개시는 명령어를 갖는 메모리 및 프로세서를 포함하는 시스템에 관한 것이다. 명령어는 프로세서에 의해 실행될 때 프로세서로 하여금: (1) 복수의 도달 영역을 생성하기 위해 테스크 유형에 관한 정보를 프로세싱하도록 할 수 있고 - 복수의 도달 영역 각각은 공유 공간의 일부에 대응함 -; (2) 테스크 유형에 관련된 테스크 특정 인자에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하도록 할 수 있으며; (3) 공간적 제약을 충족하는 복수의 팽창된 도달 영역 중 임의의 영역과 관련된 테스크 유형의 테스크의 병렬 실행을 자동으로 스케줄링하도록 할 수 있다.
프로세서는 복수의 코어를 포함할 수 있고, 명령어는 프로세서에 의해 실행될 때 프로세서로 하여금 복수의 코어에 의한 실행을 위해 스케줄링된 테스크를 디스패치하게 할 수 있으며, 복수의 코어 각각은 최소한 다른 테스크와 병렬로 스케줄링된 테스크의 서브세트를 실행하도록 구성된다. 복수의 팽창된 도달 영역 각각은 직사각형에 대응할 수 있고, 공간적 제약을 충족시키는 것은 임의의 직사각형이 중첩되는지 여부를 결정하는 것을 포함할 수 있다.
메모리는 프로세서에 의해 실행될 때 지연된 상태로 스케줄링된 테스크 각각의 할당을 야기할 수 있는 명령어를 더 포함할 수 있다. 프로세서는 복수의 코어를 포함할 수 있고, 메모리는 프로세서에 의해 실행될 때 지연된 상태에서 활성 상태로 테스크의 전환을 야기할 수 있는 명령어를 더 포함할 수 있으며, 활성 상태에서 스레드는 복수의 코어 중 적어도 하나를 사용하여 테스크를 실행하도록 할당된다.
활성 상태의 테스크는 복수의 코어를 사용하여 병렬로 실행될 수 있다. 테스크의 유형은 제로-저항 와이어를 라우팅하기 위한 라우팅 테스크를 포함할 수 있고, 테스크 특정 인자는 제로-저항 와이어와 연관된 타겟 인덕턴스를 포함할 수 있다.
또 다른 양상에서, 본 개시는 초전도 회로 설계의 일부로서 신호를 라우팅하기 위한 와이어 세트와 함께 사용하기 위해 프로세서에 의해 구현되는 방법에 관한 것이다. 방법은, 프로세서를 사용하여, 복수의 도달 영역을 생성하기 위해 와이어 세트에 관한 정보를 프로세싱하는 단계를 더 포함할 수 있다. 방법은, 프로세서를 사용하여, 와이어 세트의 타겟 인덕턴스에 기초하여 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창 도달 영역을 생성하는 단계를 더 포함할 수 있다. 방법은, 프로세서를 사용하여, 기하학적 제약을 충족하는 복수의 팽창된 도달 영역 중 임의의 영역과 관련된 와이어를 라우팅하기 위한 테스크의 병렬 실행을 자동으로 스케줄링하는 단계를 더 포함할 수 있다.
방법은 테스크를 실행하도록 구성된 임의의 스레드가 볼 수 있는 동기화 컨텍스트를 생성하는 단계를 더 포함할 수 있다. 동기화 컨텍스트에는 테스크의 활성 배치에 관한 정보와 미해결 테스크에 관한 정보가 포함될 수 있다.
복수의 팽창된 도달 영역 각각은 직사각형에 대응할 수 있고, 기하학적 제약을 충족시키는 것은 임의의 직사각형이 중첩되는지 여부를 결정하는 것을 포함할 수 있다. 라우팅 와이어 세트는 제로-저항을 갖는 초전도 와이어를 포함할 수 있다. 초전도 회로 설계는 제1 층에 대응하는 제1 공유 평면도 및 제2 층에 대응하는 제2 공유 평면도를 포함할 수 있고, 방법은 제1 공유 평면도의 초전도 구성요소의 제1 세트와 제2 공유 평면도의 초전도 구성요소의 제2 세트를 상호 연결하기 위해 초전도 와이어 및 비아를 라우팅하기 위한 테스크의 병렬 실행을 자동으로 스케줄링하는 단계를 더 포함할 수 있다.
본 명세서에 묘사된 방법, 모듈 및 구성요소는 단지 예시적인 것임을 이해해야 한다. 대안적으로 또는 추가로, 본 명세서에 설명된 기능은 하나 이상의 하드웨어 논리 구성요소에 의해 적어도 부분적으로 수행될 수 있다. 예를 들어 제한 없이, 사용할 수 있는 예시적인 유형의 하드웨어 논리 구성요소에는 FPGA(Field-Programmable Gate Array), ASIC(Application-Specific Integrated Circuit), ASSP(Application-Specific Standard Product), SOC(System-on-a-Chip 시스템), CPLD(Programmable Logic Device) 등이 포함된다. 추상적이지만 여전히 명확한 의미에서, 동일한 기능을 달성하기 위한 구성요소의 임의의 배열은 원하는 기능이 달성되도록 효과적으로 "연관"된다. 따라서, 특정 기능을 달성하기 위해 본 명세서에서 결합된 임의의 두 구성요소는 아키텍처 또는 중간 구성요소에 관계없이 원하는 기능이 달성되도록 서로 "연관된" 것으로 볼 수 있다. 마찬가지로, 이와 같이 연관된 임의의 두 구성요소는 원하는 기능을 달성하기 위해 서로 "작동 가능하게 연결"되거나 "결합"되는 것으로 볼 수도 있다.
본 개시에 설명된 예와 관련된 기능은 또한 비일시적 매체에 저장된 명령어를 포함할 수 있다. 본 명세서에서 사용된 "비일시적 매체"라는 용어는 기계가 특정 방식으로 작동하게 하는 데이터 및/또는 명령어를 저장하는 임의의 매체를 나타낸다. 예시적인 비일시적 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함한다. 예를 들어 비휘발성 매체에는 하드 디스크, 솔리드 스테이트 드라이브, 자기 디스크 또는 테이프, 광학 디스크 또는 테이프, 플래시 메모리, EPROM, NVRAM, PRAM 또는 기타 이러한 매체 또는 이러한 매체의 네트워크 버전이 포함된다. 휘발성 매체는 예를 들어 DRAM, SRAM, 캐시 또는 기타 그러한 매체와 같은 동적 메모리를 포함한다. 비일시적 매체는 전송 매체와 구별되지만 함께 사용될 수 있다. 전송 매체는 프로세서(402)와 같은 기계로 또는 기계로부터 데이터 및/또는 명령어를 전송하는 데 사용된다. 예시적인 전송 매체는 동축 케이블, 광섬유 케이블, 구리선 및 전파와 같은 무선 매체를 포함한다.
또한, 당업자는 전술한 동작의 기능 사이의 경계가 단지 예시적이라는 것을 인식할 것이다. 여러 동작의 기능은 단일 동작으로 결합될 수 있으며 및/또는 단일 동작의 기능은 추가 동작으로 분산될 수 있다. 더욱이, 대안적인 실시예는 특정 동작의 다수의 인스턴스를 포함할 수 있고, 동작의 순서는 다양한 다른 실시예에서 변경될 수 있다.
본 개시는 특정 예를 제공하지만, 하기 청구범위에 기재된 바와 같은 개시의 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있다. 따라서, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 것으로 간주되어야 하며, 이러한 모든 변형은 본 발명의 범위 내에 포함되도록 의도된다. 특정 예와 관련하여 본 명세서에 설명된 모든 이점, 장점 또는 문제에 대한 솔루션은 청구 범위의 일부 또는 전부의 중요하거나 필요하거나 필수적인 특징 또는 요소로 해석되도록 의도되지 않는다.
또한, 본 명세서에서 사용되는 용어 "a" 또는 "an"은 하나 또는 하나 이상으로 정의된다. 또한, 청구범위에서 "적어도 하나" 및 "하나 이상"과 같은 도입 문구의 사용은 부정관사 "a" 또는 "an"에 의한 다른 청구항 요소의 도입이 이러한 도입된 청구항 요소를 포함하는 특정 청구항을 그러한 요소를 하나만 포함하는 발명으로 제한하는 것으로 해석되어서는 안 된다. 동일한 청구범위가 "하나 이상" 또는 "적어도 하나"라는 도입구와 "a" 또는 "an"과 같은 부정관사를 포함하는 경우에도 마찬가지이고, 정관사가 사용되는 경우에도 마찬가지이다.
달리 언급되지 않는 한, "제1" 및 "제2"와 같은 용어는 그러한 용어가 기술하는 요소를 임의로 구별하기 위해 사용된다. 따라서 이러한 용어는 반드시 이러한 요소의 시간적 또는 기타 우선 순위를 나타내기 위해 의도한 것은 아니다.

Claims (15)

  1. 프로세서에 의해 구현되는 방법으로서,
    상기 프로세서를 사용하여, 복수의 도달 영역을 생성하기 위해 공유 평면도에 포함된 초전도 구성요소 및 노드 간의 연결에 관한 정보를 프로세싱하는 단계 - 상기 복수의 도달 영역 각각은 상기 공유 평면도의 일부에 대응함 -;
    상기 프로세서를 사용하여, 상기 공유 평면도에 포함된 상기 초전도 구성요소 및 상기 노드 사이에서 신호를 라우팅하기 위한 와이어의 타겟 인덕턴스에 기초하여 상기 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 단계; 및
    상기 프로세서를 사용하여, 기하학적 제약을 충족시키는 상기 복수의 팽창된 도달 영역 중 임의의 영역 내의 상기 초전도 구성요소 및 상기 노드의 서브세트 사이에서 와이어를 라우팅하기 위한 테스크의 병렬 실행을 스케줄링하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 프로세서는 복수의 코어를 포함하고,
    상기 방법은 상기 복수의 코어에 의한 실행을 위해 스케줄링된 테스크를 디스패치하는 단계를 더 포함하고,
    상기 복수의 코어 각각은 최소한 상기 스케줄링된 테스크의 서브세트를 다른 테스크와 병렬로 실행하도록 구성되는, 방법.
  3. 제2항에 있어서,
    상기 복수의 팽창된 도달 영역 각각은 직사각형에 대응하고,
    상기 기하학적 제약을 충족시키는 것은 임의의 직사각형이 중첩되는지 여부를 결정하는 것을 포함하는, 방법.
  4. 제1항에 있어서,
    신호를 라우팅하기 위한 와이어의 상기 타겟 인덕턴스와 연관된 인자에 기초하여 상기 복수의 도달 영역 각각을 팽창시키는 것은 상기 복수의 도달 영역 각각을 수평 방향 및 수직 방향 모두로 확장시키는 것을 포함하는, 방법.
  5. 제1항에 있어서,
    상기 스케줄링된 테스크 각각을 지연된 상태로 할당하는 단계를 더 포함하는, 방법.
  6. 제5항에 있어서,
    상기 프로세서는 복수의 코어를 포함하고,
    상기 방법은 테스크를 지연된 상태에서 활성 상태로 전환하는 단계를 더 포함하고,
    상기 활성 상태에서 스레드는 상기 복수의 코어 중 적어도 하나를 사용하여 상기 테스크를 실행하도록 할당되는, 방법.
  7. 제6항에 있어서,
    상기 활성 상태에서 테스크는 상기 복수의 코어를 사용하여 병렬로 실행되는, 방법.
  8. 시스템으로서,
    프로세서 및 명령어를 갖는 메모리를 포함하고,
    상기 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금:
    복수의 도달 영역을 생성하기 위해 테스크 유형에 관련된 정보를 프로세싱하게 하고 - 상기 복수의 도달 영역 각각은 공유 공간의 일부에 대응함 -;
    상기 테스크 유형에 관련된 테스크-특정 인자에 기초하여 상기 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하게 하고;
    공간 제약을 충족시키는 상기 복수의 팽창된 도달 영역 중 임의의 영역과 관련된 상기 테스크 유형의 테스크의 병렬 실행을 자동으로 스케줄링하게 하는, 시스템.
  9. 제8항에 있어서,
    상기 프로세서는 복수의 코어를 포함하고,
    상기 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금 상기 복수의 코어에 의한 실행을 위한 스케줄링된 테스크를 디스패치하게 하고,
    상기 복수의 코어 각각은 최소한 상기 스케줄링된 테스크의 서브세트를 다른 테스크와 병렬로 실행하도록 구성되는, 시스템.
  10. 제8항에 있어서,
    상기 복수의 팽창된 도달 영역 각각은 직사각형에 대응하고,
    상기 공간 제약을 충족시키는 것은 임의의 직사각형이 중첩되는지 여부를 결정하는 것을 포함하는, 시스템.
  11. 제8항에 있어서,
    상기 메모리는 명령어를 더 포함하고,
    상기 명령어는 상기 프로세서에 의해 실행될 때 상기 스케줄링된 테스크 각각의 지연된 상태로의 할당을 야기하는, 시스템.
  12. 제11항에 있어서,
    상기 프로세서는 복수의 코어를 포함하고,
    상기 메모리는 명령어를 더 포함하고,
    상기 명령어는 상기 프로세서에 의해 실행될 때 상기 지연된 상태에서 활성 상태로 테스크의 전환을 야기하고,
    상기 활성 상태에서 스레드는 상기 복수의 코어 중 적어도 하나를 사용하여 상기 테스크를 실행하도록 할당되는, 시스템.
  13. 제12항에 있어서,
    상기 활성 상태에서 테스크는 상기 복수의 코어를 사용하여 병렬로 실행되는, 시스템.
  14. 제8항에 있어서,
    상기 테스크 유형은 제로-저항 와이어를 라우팅하기 위한 라우팅 테스크를 포함하고,
    상기 테스크-특정 인자는 상기 제로-저항 와이어와 연관된 타겟 인덕턴스를 포함하는, 시스템.
  15. 초전도 회로 설계의 일부로서 신호를 라우팅하기 위한 와이어 세트와 함께 사용하기 위해 프로세서에 의해 구현되는 방법으로서,
    상기 방법은,
    상기 프로세서를 사용하여, 복수의 도달 영역을 생성하기 위해 상기 와이어 세트에 관한 정보를 프로세싱하는 단계;
    상기 프로세서를 사용하여, 상기 와이어 세트의 타겟 인덕턴스에 기초하여 상기 복수의 도달 영역 각각을 팽창시킴으로써 복수의 팽창된 도달 영역을 생성하는 단계; 및
    상기 프로세서를 사용하여, 기하학적 제약을 충족시키는 상기 복수의 팽창된 도달 영역 중 임의의 영역에 관한 와이어를 라우팅하기 위한 테스크의 병렬 실행을 자동으로 스케줄링하는 단계를 포함하는, 방법.
KR1020227045855A 2020-05-29 2021-03-02 기하학적 범위에 기초하는 병렬 실행을 위한 라우팅 테스크 스케줄링 KR20230016011A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/887,721 2020-05-29
US16/887,721 US11233515B2 (en) 2020-05-29 2020-05-29 Scheduling of tasks for execution in parallel based on geometric reach
PCT/US2021/020496 WO2021242348A1 (en) 2020-05-29 2021-03-02 Scheduling of routing tasks for execution in parallel based on geometric reach

Publications (1)

Publication Number Publication Date
KR20230016011A true KR20230016011A (ko) 2023-01-31

Family

ID=75302631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227045855A KR20230016011A (ko) 2020-05-29 2021-03-02 기하학적 범위에 기초하는 병렬 실행을 위한 라우팅 테스크 스케줄링

Country Status (4)

Country Link
US (2) US11233515B2 (ko)
EP (1) EP4158474A1 (ko)
KR (1) KR20230016011A (ko)
WO (1) WO2021242348A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11741278B2 (en) * 2022-01-03 2023-08-29 International Business Machines Corporation Context projection and wire editing in augmented media

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587695B2 (en) * 2001-12-10 2009-09-08 Mentor Graphics Corporation Protection boundaries in a parallel printed circuit board design environment
US7305648B2 (en) * 2003-11-21 2007-12-04 Mentor Graphics Corporation Distributed autorouting of conductive paths in printed circuit boards
US7418283B2 (en) * 2004-03-29 2008-08-26 D-Wave Systems Inc. Adiabatic quantum computation with superconducting qubits
US7401329B2 (en) * 2005-04-25 2008-07-15 Arm Limited Compiling computer programs to exploit parallelism without exceeding available processing resources
US7389453B2 (en) * 2005-10-20 2008-06-17 Jon Udell Queuing methods for distributing programs for producing test data
GB0605349D0 (en) * 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array
US8250514B1 (en) * 2006-07-13 2012-08-21 Cadence Design Systems, Inc. Localized routing direction
US8370783B2 (en) * 2007-12-03 2013-02-05 Kabushiki Kaisha Toshiba Systems and methods for probabilistic interconnect planning
US8095906B2 (en) 2008-12-29 2012-01-10 Altera Corporation Method and apparatus for performing parallel routing using a multi-threaded routing procedure
US9477801B2 (en) 2009-09-02 2016-10-25 Synopsys, Inc. Multi-threaded track assignment
JP5531731B2 (ja) * 2010-03-31 2014-06-25 富士通株式会社 配線設計支援方法、配線設計支援プログラム、及び配線設計支援装置
AU2012216432A1 (en) * 2012-08-24 2014-03-13 Canon Kabushiki Kaisha Method, system and apparatus for rendering a graphical object
US9292642B2 (en) * 2014-08-01 2016-03-22 Northrop Grumman Systems Corporation Superconducting circuit physical layout system and method
US10628752B2 (en) * 2016-09-26 2020-04-21 International Business Machines Corporation Routing quantum signals in the microwave domain using time dependent switching
US10599805B2 (en) * 2017-12-01 2020-03-24 International Business Machines Corporation Superconducting quantum circuits layout design verification
US10592814B2 (en) * 2017-12-01 2020-03-17 International Business Machines Corporation Automatic design flow from schematic to layout for superconducting multi-qubit systems
WO2020047661A1 (en) * 2018-09-04 2020-03-12 Lumerical Inc. System and method for simulating and analyzing quantum circuits
US20220269645A1 (en) * 2019-08-13 2022-08-25 Neuroblade Ltd. Memory mat as a register file

Also Published As

Publication number Publication date
US20210376835A1 (en) 2021-12-02
WO2021242348A1 (en) 2021-12-02
US11233515B2 (en) 2022-01-25
US11671102B2 (en) 2023-06-06
US20220109448A1 (en) 2022-04-07
EP4158474A1 (en) 2023-04-05

Similar Documents

Publication Publication Date Title
Takeuchi et al. Adiabatic quantum-flux-parametron cell library designed using a 10 kA cm− 2 niobium fabrication process
Fujimaki et al. Bit-serial single flux quantum microprocessor CORE
Takeuchi et al. Adiabatic quantum-flux-parametron cell library adopting minimalist design
US20130117750A1 (en) Method and System for Workitem Synchronization
US10769344B1 (en) Determining timing paths and reconciling topology in a superconducting circuit design
Fujimaki et al. Large-scale integrated circuit design based on a Nb nine-layer structure for reconfigurable data-path processors
US11671102B2 (en) Scheduling of tasks for execution in parallel based on geometric reach
Takagi et al. Proposal of a desk-side supercomputer with reconfigurable data-paths using rapid single-flux-quantum circuits
US11877522B2 (en) Determining critical timing paths in a superconducting circuit design
Dorojevets et al. COOL-0: Design of an RSFQ subsystem for petaflops computing
CN113095033B (zh) 用于双时钟架构的超导rsfq电路布局方法
US11030369B2 (en) Superconducting circuit with virtual timing elements and related methods
EP3089027B1 (en) Simd processing module
US20240039533A1 (en) Superconducting Quantum Chip
US20230194606A1 (en) Data Gating Using Scan Enable Pin
Krylov et al. Dynamic Single Flux Quantum Majority Gates
Yoshikawa et al. Cell-based top-down design methodology for RSFQ digital circuits
Vayalapalli et al. Placement Algorithm of Superconducting Energy-Efficient Magnetic FPGA
Daigneault et al. High-level description and synthesis of floating-point accumulators on FPGA
Bunyk et al. RSFQ Subsystem for Petaflops-Scale Computing:‘COOL-0,’
Dorojevets COOL approach to petaflops computing
Kawaguchi Design and Verification of Single-Flux-Quantum Digital Circuits Using Clocked and Clockless Gates
Honda et al. Performance evaluations of finite difference applications realized on a single flux quantum circuits-based reconfigurable accelerator
Fujimaki Advancement of superconductor digital electronics
Zinoviev et al. Ultra-fast low-latent superconductor packet switching networks for petaflops computing