KR20220091365A - Baum-Welch 가속기 - Google Patents

Baum-Welch 가속기 Download PDF

Info

Publication number
KR20220091365A
KR20220091365A KR1020210162303A KR20210162303A KR20220091365A KR 20220091365 A KR20220091365 A KR 20220091365A KR 1020210162303 A KR1020210162303 A KR 1020210162303A KR 20210162303 A KR20210162303 A KR 20210162303A KR 20220091365 A KR20220091365 A KR 20220091365A
Authority
KR
South Korea
Prior art keywords
core
generator
observations
lvtp
generating
Prior art date
Application number
KR1020210162303A
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 KR20220091365A publication Critical patent/KR20220091365A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/02Computing arrangements based on specific mathematical models using fuzzy logic
    • G06N7/04Physical realisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • G06N3/0472
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Automation & Control Theory (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

프로세서 패키지는 적어도 하나의 Baum-Welch 코어를 포함한다. 이러한 Baum-Welch 코어는 가능성-값 생성기, 방출-확률 생성기 및 전이-확률 생성기를 포함한다. 이러한 가능성-값 생성기는 관측들의 세트에 대한 순방향 값들 및 역방향 값들을 생성한다. 이러한 방출-확률 생성기는 관측들의 세트에 대한 방출 확률들을 생성한다. 이러한 전이-확률 생성기는 관측들의 세트에 대한 전이 확률들을 생성한다. 더욱이, BW 코어는, 순방향 값들, 역방향 값들, 방출 확률들, 및 전이 확률들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성한다. 다른 실시예들이 설명되고 청구된다.

Description

Baum-Welch 가속기{BAUM-WELCH ACCELERATOR}
본 개시내용은 일반적으로 데이터 처리 시스템에 그리고 특히, Baum-Welch 알고리즘의 실행을 용이하게 하는 처리 가속기에 관련된다.
Baum-Welch 알고리즘은 HMM(hidden Markov model)의 미지의 파라미터들에 대한 값들을 추정하기 위한 방법이다. Baum-Welch 알고리즘은, 음성 인식, 암호 분석, 데이터베이스 검색 엔진들 등을 포함하는, 광범위한 애플리케이션들에서 보통 사용된다. 이것은 HMM과 연관된 학습 문제들에 대처함에 있어서 또한 사용된다.
데이터 처리 시스템에서의 소프트웨어는 처리 유닛에서의 범용 처리 코어들을 사용하여 Baum-Welch 알고리즘을 실행할 수 있다. 예를 들어, 데이터 처리 시스템은 CPU(central processing unit)에서의 또는 GPGPU(general-purpose GPU)와 같은 GPU(graphics processing unit)에서의 처리 코어들을 사용하여 Baum-Welch 알고리즘의 스테이지들을 실행할 수 있다.
그러나, Baum-Welch 알고리즘은, 소위 "순방향(forward)" 알고리즘 및 소위 "역방향(backward)" 알고리즘을 포함하는, 계산적으로 비싼 동적 프로그래밍 알고리즘들의 다수의 반복들을 요구한다. 결과적으로, Baum-Welch 알고리즘은 높은 실행 시간을 가질 수 있고, 이것을 사용하는 애플리케이션들에 대한 상당한 성능 오버헤드를 초래할 수 있다. 전형적인 경우에 대해, Baum-Welch 알고리즘의 순방향 및 역방향 스테이지들은 많은 양의 MAC(multiply-accumulate) 연산들을 필요로 한다. 더욱이, EP들(emission probabilities) 및 TP들(transition probabilities)을 업데이트하기 위한 알고리즘의 스테이지들은 역방향 스테이지에 대해 요구되는 승산 연산들의 수의 2배까지 요구할 수 있다. EP 및 TP 스테이지들은 많은 양의 제산 연산들을 또한 요구할 수 있다.
(순방향 스테이지를 제외한) Baum-Welch 알고리즘의 각각의 스테이지는 이전 스테이지로부터의 출력에 의존한다. 결과적으로, 스테이지들을 병렬로 실행하는 것은 매우 어렵다. 또한, 입력 데이터의 양에 있어서의 증가는 스토리지 및 대역폭 요건들에서의 증가를 야기한다. 추가적으로, 성능 오버헤드는 트레이닝을 위한 동일한 입력에 대한 다수의 반복들에 대한 요건에 의해 악화된다.
결과적으로, 비록 Baum-Welch 알고리즘을 사용하는 애플리케이션들이 정확도의 장점을 갖더라도, 이들은 높은 실행 시간의 단점을 갖는다. Baum-Welch 알고리즘 자체를 수행하기 위해 요구되는 시간은 일반적으로 이러한 애플리케이션의 높은 실행 시간에 대한 주요 기여자이다.
본 발명의 특징들 및 장점들은 첨부된 청구항들, 하나 이상의 예시적인 실시예의 다음의 상세한 설명, 및 대응하는 도면들로부터 명백해질 것이다.
도 1은 Baum-Welch 가속기를 포함하는 데이터 처리 시스템의 예시적인 실시예의 블록도이다.
도 2는 예시적인 시나리오에 대한 예시적인 EP 행렬, 예시적인 순방향 값 및 역방향 값 벡터들, 및 예시적인 출력 데이터를 예시하는 블록도이다.
도 3은 해당 예시적인 시나리오에 대한 예시적인 TP 행렬을 예시하는 블록도이다.
도 4는 예시적인 타일들 및 관련 데이터 구조들을 예시하는 블록도이다.
도 5는 HMM에 대한 최대화 파라미터들을 생성하기 위해 도 1의 Baum-Welch 가속기를 사용하기 위한 프로세스의 예시적인 실시예의 흐름도를 제시한다.
도 6은 도 1의 데이터 처리 시스템 내의 통신에 대한 추가 상세사항들을 갖는 블록도이다.
도 7은 도 1의 데이터 처리 시스템 내의 병렬 동작들 및 다른 동작들을 예시하는 흐름도를 제시한다.
도 8은 도 1의 Baum-Welch 코어에 대한 추가 상세사항들을 갖는 블록도이다.
도 9는 도 8의 Baum-Welch 코어로부터의 계산 섹션에 대한 추가 상세사항들을 갖는 블록도이다.
도 10은 도 9로부터의 가능성-값-및-전이-확률 엔진에 대한 추가 상세사항들을 갖는 블록도이다.
도 11은 도 8의 EP 생성기에 대한 추가 상세사항들을 갖는 블록도이다.
도 12는 도 11의 방출 제산 파이프에 대한 추가 상세사항들을 갖는 블록도이다.
도 13은 대안적인 실시예로부터의 가능성-값-및-전이-확률 엔진에 대한 상세사항들을 갖는 블록도이다.
도 14는 하나 이상의 실시예에 따른 시스템의 블록도이다.
도 15는 하나 이상의 실시예에 따른 제1의 보다 구체적인 예시적인 시스템의 블록도이다.
도 16은 하나 이상의 실시예에 따른 제2의 보다 구체적인 예시적인 시스템의 블록도이다.
도 17은 하나 이상의 실시예에 따른 시스템 온 칩의 블록도이다.
본 개시내용은 Baum-Welch 알고리즘을 실행하기 위한 처리 가속기를 설명한다. 이러한 처리 가속기는 "BW(Baum-Welch) 가속기"라고 지칭될 수 있다. 아래에 더 상세히 설명되는 바와 같이, BW 가속기는 가속기가 알고리즘의 다양한 스테이지들(예를 들어, 순방향 스테이지 및 역방향 스테이지)에 걸쳐 병렬성을 달성하는 것을 가능하게 하는 특징들을 포함할 수 있다. BW 가속기는, Baum-Welch 알고리즘을 수행하기 위해 일반 처리 코어들을 사용하는 일반 데이터 처리 시스템에 비해, (a) 메모리 대역폭 및 스토리지 요건들을 감소시키거나 또는 최소화하기 위한 그리고 (b) 계산 오버헤드를 감소시키기 위한 특징들을 또한 포함할 수 있다. BW 가속기는 그럼에도 불구하고 높은 정확도를 유지할 수 있다. 하나의 실시예에서, BW 가속기는, (a) 순방향-역방향 값 계산들과 같은 Baum-Welch 알고리즘의 양태들을 병렬화하기 위한 특징들 및 2) 재사용될 가능성이 있는 캐시 상태들에 대한 특징들을 포함하는, 전체 계산 동작들을 감소시키고 가속화하기 위해 새로운 하드웨어 최적화들을 사용한다. 본 개시내용은 BW 가속기를 구동하기 위한 하나 이상의 새로운 명령어를 또한 설명한다.
하나의 실시예에 따르면, 데이터 처리 시스템은 광범위한 도메인들(예를 들어, 음성 인식, 암호 분석, 데이터베이스 검색, HMM들과 연관된 학습 문제들의 완화 등)에서 Baum-Welch 알고리즘을 수행하기 위해 BW 가속기를 사용할 수 있다. 예를 들어, 데이터 처리 시스템은 DNN들(deep neural networks)과 관련하여 사용되는 HMM들에 대한 학습 문제들을 완화시키기 위해 BW 가속기를 사용할 수 있다.
Baum-Welch 알고리즘:
Baum-Welch 알고리즘은 EM(expectation-maximization) 알고리즘의 타입이다. 이와 같이, Baum-Welch 알고리즘은 예상-최대화 문제를 해결하기 위한 방법이다. 특히, Baum-Welch 알고리즘은 통계적 모델에서 파라미터들을 추정하기 위한 반복적 방법이고, 여기서 이러한 모델은 관측되지 않은 변수들("잠재 변수들(latent variables)" 또는 "숨겨진 변수들(hidden variables)"이라고 또한 지칭될 수 있음)을 수반한다. 보다 구체적으로, Baum-Welch 알고리즘은, 관측된 데이터("관측들(observations)")에 기초하여, 정확할 가능성이 가장 높은 파라미터 값들("최대 가능성 파라미터들(maximum likelihood parameters)")을 찾기 위한 방법이다. 다시 말해서, Baum-Welch 알고리즘은 미지의 파라미터들의 최대 가능성 추정을 생성한다. Baum-Welch 알고리즘은 관측된 데이터의 한계 가능성을 최대화하는 것에 의해 그렇게 한다.
Baum-Welch 알고리즘의 각각의 반복은 최대화 스테이지가 뒤따르는 예상 스테이지를 수반한다. 예상 스테이지에서, 알고리즘은 관측들에 기초하여 가능성 값들을 계산한다. 특히, 예상 스테이지에서, 알고리즘은, 아래에 더 상세히 설명되는 바와 같이, 순방향 확률 값들을 계산하는 순방향 계산 스테이지와 역방향 확률 값들을 계산하는 역방향 확률 계산 스테이지를 수행한다. 본 개시내용의 목적들을 위해, 예상 스테이지로부터의 순방향 확률 값들 및 역방향 확률 값들은 각각 순방향 값들 및 역방향 값들, 및 집합적으로 "F-B(forward-backward) 값들" 또는 "LV들(likelihood values)"이라고 지칭될 수 있다.
최대화 스테이지에서, 알고리즘은, 사후(즉, 업데이트된) 파라미터들을 사용할 때, 관측들의 가능성을 최대화하도록 모델의 파라미터들을 업데이트하기 위해 이러한 가능성 값들을 사용한다. 최대화 스테이지에서 업데이트되는 파라미터들은 "최대화 파라미터들(maximization parameters)"라고 지칭될 수 있고, 이들은 TP들(transition probabilities) 및 EP들(emission probabilities)을 포함한다. 특히, TP들은 TP 행렬에서의 TP 벡터들에 저장될 수 있고, EP들은 EP 행렬에서의 EP 벡터들에 저장될 수 있다.
다시 말해서, Baum-Welch 알고리즘은 입력 값들 "S"의 세트를 취하고, 통계적 모델 "G(V, A)"의 최대화 파라미터들(즉, TP들 및 EP들)을 업데이트하기 위해 그 입력 값들을 관측들로서 사용하며, 여기서 V는 정점들 또는 노드들의 세트이고, A는 지향된 에지들 또는 전이들의 세트이다. 특히, 알고리즘은 3개의 스테이지들: 1) 순방향 계산, 2) 역방향 계산, 및 3) 최대화-파라미터 업데이트에서 S에 기초하여 예상 최대화를 수행한다.
순방향 계산:
순방향 계산 스테이지에서, 알고리즘은 제1 엘리먼트 "S[1]"로부터 최종 엘리먼트 "S[ns]"까지의 순서로 S의 관측들(또는 "엘리먼트들(elements)")을 처리하며, 여기서 "ns"는 S의 길이(즉, S의 엘리먼트들의 수)이다. 해당 프로세스에서의 각각의 단계 "t"에 대해, 모든 이전 입력들 S[1] 내지 S[t-1]가 상태들 vi로 이어지는 미지의 경로를 뒤따르는 것에 의해 처리된다는 점을 고려하면, 알고리즘은 엘리먼트 "S[t]"가 상태들 "vi"에서 방출될 때 순방향 값들 "Ft(i)"의 세트를 계산하기 위해 최대화 파라미터들을 사용한다. 따라서, Ft(i)는 주어진 엘리먼트 S[t] 및 상태들 vi에 대해 이러한 이벤트들이 발생할 가능성을 표현한다고 가정된다.
예를 들어, 프로세스에서의 제1 단계에 대해, 알고리즘은 F2(i)를 계산하기 위해 엘리먼트 #1의 값 및 최대화 파라미터들을 사용하며, 여기서 F2(i)는, V에서의 각각의 상태 i에 대해, 엘리먼트 #2가 해당 상태를 가질 개연성이 어느 정도인지를 표시하는 확률들의 세트이다. 특히, 하나의 실시예에서, 순방향 계산 스테이지는 다음의 수학식 1에 따라 Ft(i)를 계산한다.
Figure pat00001
역방향 계산:
역방향 계산 스테이지는 입력 S의 최종 엘리먼트(즉, S[ns])로부터 입력 S의 제1 엘리먼트(즉, S[1])까지 처리하기 위해 최대화 파라미터들을 사용한다. 역방향 계산의 목표는 역방향 값들을 찾기 위해 상태들 및 입력들을 역 방식으로 처리하는 것을 제외하고는 순방향 계산과 유사하다. 역방향 값들 "Bt(i)"의 세트는, 모든 추가의 입력들 S[t+1] 내지 S[ns]가 상태들 vi로 이어지는 역방향들로부터의 미지의 경로를 뒤따르는 것(즉, 역 전이들을 취하는 것)에 의해 처리된다는 점을 고려하면, 엘리먼트 S[t]가 상태들 vi에 있을 가능성들을 표현한다. 하나의 실시예에서, 역방향 계산 스테이지는 다음의 수학식 2에 따라 Bt (i)를 계산한다.
Figure pat00002
최대화-파라미터 업데이트:
최대화-파라미터 업데이트 스테이지에서, 알고리즘은 G(V, A)에서의 EP들 및 TP들을 업데이트하기 위한 예상으로서 이전 2개의 스테이지들에서 계산된 가능성 값들(즉, 순방향 및 역방향 값들)을 사용하여, 관측들이 S일 때 사후 확률들이 가능성 값들을 최대화할 것이다. 따라서, Baum-Welch 알고리즘은 최대화 파라미터를 업데이트하기 위한 통계로서 예상 스테이지로부터의 가능성 값을 사용한다. 특히, 하나의 실시예에서, 알고리즘은 다음의 수학식 3에 따라 TP들을 그리고 다음의 수학식 4에 따라 EP들을 업데이트한다.
Figure pat00003
Figure pat00004
수학식 4에서, [S[t] = X]는 조건이 만족되면 1을 반환하는(즉, S[t] = X, 여기서 X는 Σ의 엘리먼트임) 그리고 그렇지 않으면 0을 반환하는 조건 변수이다.
또한, 이러한 스테이지들이 보통 반복된다. 특히, Baum-Welch 알고리즘은 다음 반복에서 하나의 반복으로부터 사후 최대화 파라미터들(즉, 사후 TP들 및 EP들)을 사용하는 것을 보통 수반하며, 사후 최대화 파라미터들은 새로운 세트의 순방향 및 역방향 계산들을 수행하여 새로운 세트의 가능성 값들을 생성하기 위해 사용되고, 이러한 새로운 가능성 값들은 새로운 세트의 최대화 파라미터들을 생성하기 위해 사용된다. 최대화 파라미터들에 대한 업데이트들이 무시할 수 있게 되는 포인트에 확률들이 수렴할 때까지 동일한 입력에 대해 반복들이 수행될 수 있다.
BW 가속기:
위에 표시된 바와 같이, 본 개시내용은 Baum-Welch 알고리즘을 실행하기 위한 처리 가속기를 설명하고, 이러한 처리 가속기는 "BW 가속기(BW accelerator)"라고 지칭될 수 있다. 아래에 더 상세히 설명되는 바와 같이, BW 가속기는 Baum-Welch 알고리즘의 일부 또는 모든 양태들을 효과적으로 그리고 효율적으로 실행하도록 설계되는 하나 이상의 처리 코어를 포함할 수 있다. 이러한 처리 코어는 "BW 코어(BW core)"이라고 지칭될 수 있고, 하드웨어 회로로서 구현될 수 있다.
도 1은 BW 가속기(41)를 포함하는 데이터 처리 시스템(10)의 예시적인 실시예의 블록도이다. 특히, 예시의 목적들을 위해, 도 1은 호스트 코어(20), 시스템 에이전트(30) 및 BW 가속기(41)를 포함하는 프로세서 패키지(12)를 포함하는 가상 데이터 처리 시스템(10)을 도시하며, 다수의 BW 코어들(40A-40B)이 BW 가속기(41)에 존재하고, 글로벌 이벤트 제어기(52) 및 다른 컴포넌트들이 시스템 에이전트(30)에 존재한다. 이러한 컴포넌트들(즉, 호스트 코어(20), 시스템 에이전트(30), BW 가속기(41), BW 코어들(40A-40B), 글로벌 이벤트 제어기(52), 및 시스템 에이전트(30)에 존재하는 다른 컴포넌트들) 각각은 각각의 하드웨어 회로들로서 구현될 수 있다. 호스트 코어(20)는, 예를 들어, 범용 처리 코어일 수 있다. 따라서, 호스트 코어(20)는 "호스트 프로세서(host processor)"라고 또한 지칭될 수 있다. 그러나, 컴포넌트들의 수 및 배열은 다른 실시예들에서 상이할 수 있다. 예를 들어, 다른 실시예들에서, 프로세서 패키지는 단일 BW 코어, 또는 2개보다 많은 BW 코어들을 포함할 수 있다. 또한 또는 대안적으로, 프로세서 패키지는 하나보다 많은 호스트 코어를 포함할 수 있다. 또한 또는 대안적으로, 데이터 처리 시스템은 다수의 프로세서 패키지들을 포함할 수 있고, 하나(또는 그 이상)의 프로세서 패키지 상의 하나 이상의 호스트 코어 및 하나 이상의 상이한 프로세서 패키지 상의 하나 이상의 BW 코어를 갖는 하나 이상의 BW 가속기를 갖는다. 다른 실시예에서, BW 가속기의 컴포넌트들의 일부 또는 전부가 시스템 에이전트의 내부에 존재할 수 있다. 가능한 실시예들은 4, 8, 16, 32개 또는 그 이상의 BW 코어들을 갖는 데이터 처리 시스템들을 포함한다.
데이터 처리 시스템(10)은 프로세서 패키지(12)에 연결되는 또는 그와 통신하는 RAM(random-access memory)(14) 및 NVS(non-volatile storage)(18)를 또한 포함한다. RAM(14)은 메인 메모리 또는 시스템 메모리로서 기능하고, 예를 들어, DRAM(dynamic random-access memory)의 하나 이상의 모듈로서 구현될 수 있다. NVS(18)는 OS(operating system)(60) 및 애플리케이션(62)과 같은 소프트웨어를 포함할 수 있다. 애플리케이션(62)은 음성 인식 애플리케이션, 암호 분석 애플리케이션, 데이터베이스 검색 애플리케이션, 또는 HMM의 파라미터들을 추정하기 위해 Baum-Welch 알고리즘을 사용하는 임의의 다른 타입의 애플리케이션일 수 있다.
데이터 처리 시스템(10)은 실행을 위해 소프트웨어를 NVS(18)로부터 RAM(14)으로 복사할 수 있다. NVS(18)는 애플리케이션(62)에 대한 입력 데이터를 또한 포함할 수 있고, 데이터 처리 시스템(10)은 처리를 위해 해당 입력 데이터를 RAM(14)에 복사할 수 있다. 다른 실시예 또는 시나리오에서, 애플리케이션(62)은 다른 소스로부터 BW 입력 데이터를 획득한다. 본 개시내용의 목적들을 위해, Baum-Welch 알고리즘에 대한 원래의 입력 데이터는 "BW 입력 데이터(BW input data)"(64)라고 지칭될 수 있다. 특히, BW 입력 데이터(64)는 관측들의 시퀀스를 포함한다. 예를 들어, 하나의 실시예 또는 시나리오에서, 이러한 관측들은 환자로부터의 DNA(deoxyribonucleic acid) 샘플에서 검출된 뉴클레오티드들(예를 들어, 아데닌, 시토신, 구아닌, 및 우라실(또는 티민))의 서열을 표현하고, 각각의 관측은, A, C, G, 및 U(또는 0-3과 같은, 각각의 수는 A, C, G, 또는 U에 대응함)와 같은, 4개의 값들 중 하나를 갖는다. 다른 실시예들 또는 시나리오들에서, 이러한 관측들은 금융 거래들에 또는 Baum-Welch 알고리즘을 갖는 분석에 적합한 임의의 다른 대상에 관련된다.
아래에 더 상세히 설명되는 바와 같이, 애플리케이션(62)은 BW 입력 데이터(64)를 처리하기 위해 글로벌 이벤트 제어기(52) 및 BW 가속기(41)와 같은 컴포넌트들을 사용한다. 본 개시내용의 목적들을 위해, 글로벌 이벤트 제어기(52), BW 가속기(41), 및 글로벌 이벤트 제어기(52) 및 BW 가속기(41)가 협력하는 것을 가능하게 하는 호스트 코어(20) 외부의 컴포넌트들이 집합적으로 "BW 서브시스템(BW subsystem)"(50)이라고 지칭될 수 있다.
애플리케이션(62)은, 호스트 코어(20)에 의해 실행될 때, BW 가속기(41)로 하여금, BW 입력 데이터(64)에서의 관측들에 기초하여, HMM에 대한 최대화 파라미터들을 추정하기 위해 Baum-Welch 알고리즘을 사용하게 하는 명령어들을 포함한다. 따라서, 애플리케이션(62)은, BW 입력 데이터에 기초하여, HMM에 대한 최대화 파라미터들을 생성하기 위해 BW 가속기를 이용하도록 설계된다. 이러한 생성된 파라미터들은 "처리된 출력(processed outpu)" 또는 "BW 출력 데이터(BW output data)(66)"이라고 지칭될 수 있다.
도 1에 도시되는 바와 같이, BW 서브시스템(50)의 일부 컴포넌트들이 시스템 에이전트(30)에 존재한다. 이러한 컴포넌트들은 L2C(level-2 cache)(32)를 포함한다. 또한, 각각의 BW 코어는, BW 코어(40A)에서의 L1C(46A) 및 BW 코어(40B)에서의 L1C(46B)와 같은, L1C(level-one cache)를 포함한다. L1C는 또한 "로컬 메모리(local memory)" 또는 "로컬 버퍼(a local buffer)"라고 지칭될 수 있다. 시스템 에이전트(30)에서의 BW 서브시스템(50)의 컴포넌트들은 L2C(32)와 같은 소스로부터 L1C(46A)와 같은 L1 캐시들로의 데이터의 전송을 관리하는 L1 DMA(direct memory access) 엔진(36)을 또한 포함한다. L1 캐시로의 DMA 전송은 "L1 DMA 전송(L1 DMA transfer)"이라고 지칭될 수 있다. 도 1의 실시예에서, DMA 엔진(36)은 하드웨어로 구현된다. 대안적인 실시예에서, 데이터 처리 시스템은 소프트웨어로 또는 하드웨어와 소프트웨어의 조합으로 구현되는 하나 이상의 DMA 엔진을 사용할 수 있다. 일반적으로, DMA 엔진은 소스로부터 목적지로의 데이터 전송들을 착수하고 감독한다. 시스템 에이전트(30)에서의 BW 서브시스템(50)의 컴포넌트들은 RAM(14)과 같은 소스로부터 L2C(32)로의 데이터의 전송을 관리하는 L2 DMA 엔진(34)을 또한 포함한다. 시스템 에이전트(30)에서의 BW 서브시스템(50)의 컴포넌트들은 글로벌 이벤트 제어기(52)를 또한 포함하고, 이는 시스템의 상이한 스테이지들 및 컴포넌트들에서 다양한 이벤트들의 스케줄링 및 실행을 추적한다. 예를 들어, 글로벌 이벤트 제어기(52)는 BW 서브시스템(50)의 다른 컴포넌트들에 걸쳐 동기화 에이전트 또는 마스터로서 역할을 할 수 있다. 따라서, 글로벌 이벤트 제어기는 "마스터 이벤트 제어기(master event controller)"라고 또한 지칭될 수 있다.
위에 표시된 바와 같이, BW 가속기(41)는 BW 코어들(40A-40B)을 포함한다. BW 가속기(41)는 TP DMA 엔진(38)을 또한 포함하고, 이는 RAM(14)으로부터 BW 코어로의 TP 데이터의 전송을 착수하고 감독한다. 특히, 아래에 더 상세히 설명되는 바와 같이, 각각의 BW 코어는 TP 캐시를 포함하고, 글로벌 이벤트 제어기(52)는 해당 TP 캐시에 기입하고 그로부터 판독하기 위해 TP DMA 엔진(38)을 사용한다. 예를 들어, 도 10에 관하여 아래에 더 상세히 설명되는 바와 같이, BW 코어(40A)는 TP 캐시(179)를 포함하고, 글로벌 이벤트 제어기(52)가 초기 TP 행렬로부터의 벡터들을 RAM(14)으로부터 BW 코어(40A)에서의 TP 캐시(179)로 복사하기로 결정할 때, 글로벌 이벤트 제어기(52)는 이러한 전송들을 착수하고 감독하기 위해 TP DMA 엔진(38)을 사용한다.
L2 DMA 엔진(34)은 초기 EP 행렬로부터의 관측 데이터 및 벡터를 L2C(32)에 로딩하기 위해 L2 DMA 테이블을 사용하고, L1 DMA 엔진(36)은 이러한 데이터를 각각의 코어 내의 L1C에 기입하기 위해 L1 DMA 테이블을 사용한다. 예시되는 바와 같이, 프로세서 패키지(12)는, 다양한 컴포넌트들이 서로 통신하는 것을 가능하게 하기 위해, 다양한 컴포넌트들을 연결하기 위한 다양한 인터커넥트들을 또한 포함한다.
위에 표시된 바와 같이, 각각의 BW 코어는 특정 크기의 L1C 및 특정 크기의 TP 캐시를 포함한다. 아래에 더 상세히 설명되는 바와 같이, 각각의 BW 코어는 다수의 다른 컴포넌트들을 또한 포함한다. 하나의 실시예에서, L1C는, BW 코어의 다른 컴포넌트들 중 하나 이상에 의해 부과되는 제약들로 인해, BW 코어가 Baum-Welch 알고리즘의 반복에서 처리할 수 있는 것보다 상당히 더 많은 데이터(예를 들어, 관측들 및 EP 벡터들)를 보유할 수 있다. 본 개시내용의 목적들을 위해, BW 코어가 Baum-Welch 알고리즘의 반복에서 처리할 수 있는 데이터의 양은 "L1 청크 크기(L1 chunk size)"라고 지칭될 수 있다. 또한, BW 서브시스템에서의 L2C의 크기를 명시하는 데이터 값은 "L2 청크 크기(L2 chunk size)"라고 지칭될 수 있다.
BW 서브시스템(50)(예를 들어, 글로벌 이벤트 제어기(52))은 구체적인 BW 코어로 하여금 HMM에 대한 또는 HMM의 일부에 대한 최대화 파라미터들을 생성하게 하기 위해 특정 타입의 명령어를 사용한다. 본 개시내용의 목적들을 위해, 이러한 명령어는 "BW 가속 명령어(BW acceleration instruction)" 또는 "BWAXF 명령어(BWAXF instruction)"라고 지칭될 수 있다.
또한, 임의의 BWAXF 명령어들이 실행되기 전에, 애플리케이션(62)은 BW 서브시스템(50)으로 하여금 특정 통계 모델을 HMM으로서 적용하게 하는 데이터로 BW 서브시스템(50)을 구성할 수 있다. 해당 구성은 해당 특정 통계적 모델에 대한 "네트워크(network)"라고 지칭될 수 있다. 이러한 통계적 모델 자체가 "네트워크(network)"라고 또한 지칭될 수 있다. 특히, 애플리케이션(62)은 지향된 비순환 그래프를 수반하는 Bayesian 네트워크에 따라 입력 데이터를 처리하도록 BW 서브시스템(50)을 구성할 수 있으며, 이러한 네트워크는 처리되는 입력 데이터의 타입에 적절한 미리 결정된 특징들/속성들을 갖는다. 애플리케이션(62)이 BW 서브시스템(50)을 구성하기 위해 사용하는 데이터는 "BW 구성 데이터(BW configuration data)"라고 지칭될 수 있다. 예를 들어, BW 구성 데이터는 다음과 같은 속성들을 포함/명시할 수 있다:
"판독 크기(read size)"(즉, BW 입력 데이터(64)에서의 관측들/엘리먼트들의 총 수 "N");
"관측 크기(observation size)" 또는 "엘리먼트 크기(element size)"(즉, 관측/엘리먼트를 보유하기 위해 필요한 스토리지 공간의 양)를 또한 표시할 수 있는, 관측/엘리먼트들에 대한 데이터 타입인 "판독 타입(read type)";
관측에 대한 잠재적 상태들/값들의 수;
관측들에 대한 잠재적 상태들/값들;
초기 EP 행렬;
초기 TP 행렬; 및
Baum-Welch 알고리즘의 충분한 반복들이 완료되었는지를 결정하기 위해 BW 코어들에 의해 사용될 수렴 임계값.
또한, BW 구성 데이터는 BW 코어들의 수, 각각의 코어에서의 L1C의 크기, 및 BW 서브시스템(50)에서의 L2C의 크기와 같은 BW 서브시스템(50)의 속성들을 명시할 수 있다. 대안적으로, 글로벌 이벤트 제어기(52)는 이러한 종류의 속성들로 미리 구성될 수 있고, 및/또는 글로벌 이벤트 제어기(52)는 이러한 종류의 속성들을 검출할 수 있다. 따라서, 글로벌 이벤트 제어기(52)는 애플리케이션에 의해 명시되는 속성들 및 글로벌 이벤트 제어기(52)에 미리 구성되는 또는 글로벌 이벤트 제어기(52)에 의해 발견되는 속성들에 관해 "알(know)" 것이다. 글로벌 이벤트 제어기(52)는 다른 알려진 속성들에 기초하여 BW 서브시스템(50)의 특성들을 또한 결정할 수 있다. 예를 들어, 글로벌 이벤트 제어기(52)는, L1C의 크기에 적어도 부분적으로 기초하여, L1 청크 크기를 계산할 수 있다.
원하는 네트워크를 BW 서브시스템(50)에 로딩한 후에, BW 입력 데이터(64)가 비교적 작으면(예를 들어, 각각의 BW 코어의 관측 크기 및 스토리지 용량과 같은 인자들에 의존하여, 100개 또는 200개 또는 500개 또는 1000개 또는 2000개 이하의 관측들을 포함함), BW 서브시스템(50)은 관측들의 전체 세트를 처리하기 위해 단일 BWAXF 명령어 및 단일 BW 코어를 사용할 수 있다. 그러나, BW 입력 데이터(64)가 비교적 크면(예를 들어, 100개 또는 200개 또는 500개 또는 1000개 또는 2000개보다 많은 관측들을 포함함), BW 서브시스템(50)은 입력 데이터를 다수의 서브-벡터들 또는 관측들의 서브세트들로 분할할 수 있고, BW 서브시스템(50)은 다수의 BW 코어들(또는 단일 BW 코어)로 하여금 그 서브세트들에 Baum-Welch 알고리즘을 적용하게 할 수 있다.
본 개시내용의 목적들을 위해, "입력 슬라이스(input slice)"라는 용어는, 이러한 엘리먼트들에 Baum-Welch 알고리즘의 하나 이상의 반복을 적용하는 것에 의해 BW 코어에 의해 세트로서 처리될, BW 입력 데이터의 엘리먼트들의 시퀀스를 지칭한다. 따라서, BW 서브시스템(50)은 BW 입력 데이터(64)를 2개(또는 그 이상)의 입력 슬라이스들로 분할할 수 있다. BW 서브시스템(50)은 다음으로 해당 입력 슬라이스들을 처리하기 위해 다수의 BW 코어들(또는 단일 BW 코어)을 사용할 수 있다. 하나의 실시예에서, 글로벌 이벤트 제어기(52)는 (a) BW 코어의 L1C에 로딩될 수 있는 그리고 (b) BW 코어에 의한 RAM에 대한 임의의 액세스 없이 해당 BW 코어에 의해 처리될 수 있는 크기를 갖도록 각각의 입력 슬라이스를 정의한다.
또한, BW 코어는 해당 엘리먼트들에 Baum-Welch 알고리즘을 적용하기 위해 입력 슬라이스에서의 엘리먼트들에 대응하는 EP 벡터들 및 TP 벡터들을 사용한다. 본 개시내용의 목적들을 위해, "필터(filter)"라는 용어는 특정 관측에 관련된 최대화 파라미터들을 지칭한다. 특히, 하나의 실시예 또는 시나리오에서, 각각의 필터는 (a) 하나의 EP 벡터 및 (b) 특정 수의 TP 벡터들(예를 들어, 각각의 잠재적 관측 상태에 대해 하나의 TP 벡터)을 포함한다.
또한, 글로벌 이벤트 제어기(52)는 입력 슬라이스에 관한 다수의 필터들을 "필터 블록(filter block)"으로서 알려진 집합으로 수집할 수 있다. 예를 들어, 입력 슬라이스를 생성하는 것과 관련하여, 글로벌 이벤트 제어기(52)는 해당 입력 슬라이스에서의 관측들에 관련된 필터들 전부를 포함하는 필터 블록을 생성할 수 있다. 본 개시내용의 목적들을 위해, 필터 블록에서의 EP 벡터들은 집합적으로 "EP 슬라이스(EP slice)"라고 지칭될 수 있고, 해당 필터 블록에서의 TP 벡터들은 집합적으로 "TP 슬라이스(TP slice)"라고 지칭될 수 있다. 다시 말해서, EP 슬라이스는 입력 슬라이스에서의 관측들에 관련된 EP 행렬로부터의 벡터들을 포함하고, TP 슬라이스는 해당 관측들에 관련된 TP 행렬로부터의 벡터들을 포함한다.
또한, 입력 슬라이스 및 대응하는 필터 블록은 집합적으로 "BW 입력 유닛(BW input unit)"이라고 지칭될 수 있다. 하나의 실시예에서, 글로벌 이벤트 제어기(52)는 L1 청크 크기에 따라 BW 입력 유닛들을 생성한다. 다시 말해서, 각각의 BW 유닛은 BW 코어에 의해 세트로서 처리가능하도록 설계된다. 따라서, 각각의 BW 입력 유닛은 L1 청크 크기 이하이다.
글로벌 이벤트 제어기(52)는 하나 이상의 BW 입력 유닛을 포함하는"타일(tile)"로서 알려진 데이터 구조를 또한 생성할 수 있다. 하나의 실시예에서, 글로벌 이벤트 제어기(52)는 BW 코어의 L1C에 로딩될 수 있는 크기를 갖도록 각각의 타일을 정의한다. 다음으로 글로벌 이벤트 제어기(52)는 각각의 BW 코어로 하여금 하나 이상의 타일을 처리하게 할 수 있다. 예를 들어, 글로벌 이벤트 제어기(52)는 입력 데이터를 다수의 타일들(각각이 적어도 하나의 입력 슬라이스를 포함함)로 분할할 수 있고, 글로벌 이벤트 제어기(52)는 상이한 BW 코어로 하여금 이러한 타일들 각각에 Baum-Welch 알고리즘을 적용하게 할 수 있다. 결과적으로, BW 서브시스템(50)은 Baum-Welch 알고리즘의 적어도 일부 부분들을 병렬로 실행할 수 있다. 또한, 위에 표시된 바와 같이, BW 서브시스템(50)은 다수의 연속적인 타일들을 BW 코어에 배정할 수 있다. 또한, BW 코어가 타일을 처리할 때, BW 코어는 한 번에 하나의 슬라이스에 Baum-Welch 알고리즘을 적용할 수 있다.
예를 들어, 글로벌 이벤트 제어기(52)는 제1 및 제2 타일들을 생성할 수 있고, 글로벌 이벤트 제어기(52)는 다음으로 BW 코어(40A)로 하여금 제1 타일을 처리하게 하는 제1 BWAXF 명령어 및 BW 코어(40B)로 하여금 제2 타일을 처리하게 하는 제2 BWAXF 명령어를 사용할 수 있다. 마찬가지로, 4개의 BW 코어들 및 10,000개의 관측들을 포함하는 BW 입력 데이터를 갖는 데이터 처리 시스템에서, 글로벌 이벤트 제어기는 입력 데이터를 각각 625개의 관측들을 포함하는 16개의 입력 슬라이스들로 분할할 수 있고, 글로벌 이벤트 제어기는 각각 4개의 입력 슬라이스들을 포함하는 4개의 타일들을 생성할 수 있고, 글로벌 이벤트 제어기는 각각의 BW 코어로 하여금 그 타일들 중 하나를 처리하게 하는 4개의 BWAXF 명령어들을 사용할 수 있다. 그리고 2개의 BW 코어들만을 갖는 데이터 처리 시스템에서 동일한 BW 입력 데이터를 처리하기 위해, 글로벌 이벤트 제어기는 각각의 BW 코어로 하여금 이러한 타일들 중 2개를 처리하게 하는 4개의 BWAXF 명령어들(BW 코어 당 2개)을 사용할 수 있다. 따라서, 각각의 BWAXF 명령어는 구체적인 BW 코어로 지향되고, 해당 BW 코어는 다음으로 해당 BWAXF 명령어를 실행한다.
입력 슬라이스들, 필터들, 필터 블록들, 및 타일들과 같은 데이터 구조들을 정의하거나 또는 명시하기 위해 임의의 적합한 기술이 사용될 수 있다. 예를 들어, 입력 슬라이스는 관련 관측 값들을 포함할 수 있거나, 또는 입력 슬라이스는 관련 관측 값들을 명시(예를 들어, 식별 또는 위치 확인)하기 위한 데이터를 포함할 수 있다. 어느 경우든, 입력 슬라이스는 이러한 관측들을 "포함(containing 또는 including)"하는 것이라고 지칭될 수 있다. 최대화 파라미터들의 세트들이 이러한 방식으로 또한 지칭될 수 있다. 예를 들어, 특정 TP 벡터들을 포함하는(containing 또는 including) 것으로서 논의되는 필터는 관련 TP 벡터 엘리먼트들을 포함할 수 있거나, 또는 관련 TP 벡터 엘리먼트들을 명시하는 데이터를 포함할 수 있다. 다른 데이터 구조들(예를 들어, 필터 블록들 및 타일들)이 이러한 방식으로 또한 지칭될 수 있다.
예시의 목적들을 위해, 본 개시내용은 BW 입력 데이터(64)가 관측들에 대한 4개의 잠재적인 상태들: A, C, G, 및 U를 수반하는 DNA 판독 서열을 반영하는 3000개의 관측들을 포함하는 가상 시나리오를 논의한다. 또한, 아래에 더 상세히 설명되는 바와 같이, 이러한 시나리오에서, 글로벌 이벤트 제어기(52)는 BW 입력 데이터(64)를 각각 500개의 관측들을 포함하는 6개의 입력 슬라이스들로 분할하고, 글로벌 이벤트 제어기(52)는 이러한 입력 슬라이스들 중 3개를 각각 포함하는 2개의 타일들을 생성한다. 또한, 타일에서의 관측들 전부는 집합적으로 "관측 타일(observation tile)"이라고 지칭될 수 있고, 타일에서의 TP 벡터들 전부는 집합적으로 "TP 타일(TP tile)"이라고 지칭될 수 있는 등이다.
도 2는 이러한 시나리오에 대한 예시적인 EP 행렬(210), 각각, 예시적인 순방향 값 및 역방향 값 벡터들(230 및 240), 및 예시적인 BW 출력 데이터(66)를 예시하기 위한 블록도이다. 이러한 데이터 구조들 또는 파일들 각각은 하나의 시간에 또는 다른 시간에 RAM(14)에 존재할 수 있다. 예시적인 시나리오에서, EP 행렬(210)은, 입력 시퀀스에서의 각각의 위치에 대해, 잠재적인 상태들(A, C, G, 및 U) 각각을 관측할 확률을 제공한다. 다시 말해서, EP 행렬(210)은, BW 입력 데이터(64)에서의 각각의 위치 "t"에 대해(즉, t1 내지 t3000에 대해) 그리고 각각의 잠재적 상태 "V"에 대해(즉, 상태들 A, C, G, 및 U 각각에 대해), 해당 위치에서의 관측이 해당 상태에 있을 가능성을 표시하는 확률 값들을 포함한다. 예를 들어, EP 행렬(210)에서의 제1 엘리먼트는 제1 관측이 상태 A에 있을 확률을 반영하고, EP 행렬(210)에서의 제2 엘리먼트는 제1 관측이 상태 C에 있을 확률을 반영하는 등이며, EP 행렬(210)에서의 최종 엘리먼트는 (위치 t3000에서의) 최종 관측이 상태 U에 있을 확률을 반영한다.
도 3은 이러한 시나리오에 대한 예시적인 TP 행렬(220)을 예시하는 블록도이다. 예시적인 시나리오에서, TP 행렬(220)은, 입력 시퀀스에서의 각각의 위치에 대해, 각각의 잠재적 상태로부터 각각의 잠재적 상태로 전이할 확률을 제공한다. 다시 말해서, TP 행렬(220)은, 최종 위치를 제외한 BW 입력 데이터(64)내의 각각의 현재 위치 "t"에 대해(즉, t1 내지 t2999에 대해) 그리고 현재 위치에서의 각각의 잠재적 상태 "V"에 대해, 현재 위치에서의 관측이 명시된 바와 같을 때 다음 위치(즉, 위치 t+1)에서의 관측이 잠재적 상태들 중 특정 하나에 있을 가능성을 표시하는 확률 값들을 포함한다. 예를 들어, TP 행렬(220)에서의 제1 엘리먼트는 제1 관측이 A일 때 제2 관측이 상태 A에 있을 확률을 반영하고, TP 행렬(220)에서의 제2 엘리먼트는 제1 관측이 A일 때 제2 관측이 상태 C에 있을 확률을 반영하는 등이며, TP 행렬(220)에서의 최종 엘리먼트는 끝에서 두번째 관측이 상태 U에 있을 때 최종 관측이 상태 U에 있을 확률을 반영한다.
애플리케이션(62)이 BW 서브시스템(50)에 로딩하는 네트워크는 EP 행렬(210) 및 TP 행렬(220)에 대한 초기 확률 값들을 포함할 수 있다. 따라서, EP 행렬(210) 및 TP 행렬(220)은 각각 초기 EP 행렬(210) 및 초기 TP 행렬(220)이라고 지칭될 수 있어, 이러한 행렬들이 초기 확률 값들을 포함한다는 점을 표시한다. 결과적으로, 초기 EP 행렬(210) 및 초기 TP 행렬(220)은 네트워크의 거동에 대한 미리 결정된 예상들을 반영할 수 있다.
또한, 행렬들이 행들 및 열들을 포함하는 특정 구조로 본 명세서에서 예시될 수 있더라도, 행렬의 엘리먼트들은 확률 값들의 시퀀스로서 단순히 저장될 수 있다. 예를 들어, RAM(14)에서의 초기 TP 행렬(220)의 엘리먼트들은 확률 값들의 다음의 시퀀스(각각의 확률 값은 0과 1 사이의 수치 값임)처럼 보일 수 있다: probA1A, probA1C, probA1G, probA1U, probC1A, probC1C, ... probU2999U.
또한, 도 2를 다시 참조하면, BW 입력 데이터(64)를 처리하는 것에 의해, 데이터 처리 시스템(10)은 사후 EP 행렬(212) 및 사후 TP 행렬(222)을 포함하는 BW 출력 데이터(66)를 생성할 수 있으며, 이러한 행렬들은, BW 입력 데이터(64)에 Baum-Welch 알고리즘을 적용하는 것에 의해, 초기 EP 및 TP 행렬들(210 및 220)에 비해 BW 서브시스템(50)이 업데이트한 또는 변경한 확률 값들을 포함한다. 또한, 위에 표시된 바와 같이, BW 서브시스템(50)은 최대화 파라미터들에 대한 업데이트들이 무시할 수 있게 된 것으로 결정하기 전에 Baum-Welch 알고리즘의 다수의 반복들을 완료할 수 있다. 본 개시내용의 목적들을 위해, BW 서브시스템(50)이 새로운/업데이트된 EP들 및 TP들을 생성하기 위해 사용하는 EP들 및 TP들은 "현재(current)" EP들 및 TP들이라고 지칭될 수 있고, 생성된 EP들 및 TP들은 "사후(posterior)" EP들 및 TP들이라고 지칭될 수 있다. 위에 표시된 바와 같이, 제1 반복에 대해, BW 서브시스템(50)은 현재 EP 및 TP 행렬들로서 초기 EP 행렬(210) 및 초기 TP 행렬(220)을 사용할 수 있다. 그리고 최대화 파라미터들에 대한 업데이트들이 무시할 수 있게 되었다고 결정하는 것에 응답하여, BW 서브시스템(50)은 사후 EP 및 TP 행렬들(212 및 222)의 최종 세트를 최종 EP 및 TP 행렬들(212 및 222)로서 취급할 수 있다.
추가적으로, Baum-Welch 알고리즘의 예상 스테이지에서, BW 코어는, 위에 표시된 바와 같이, 순방향 값들 및 역방향 값들을 생성한다. 본 개시내용의 목적들을 위해, BW 입력 데이터(64)에 대한 순방향 값들의 완료 세트는 FV(forward value) 행렬(230)이라고 지칭될 수 있고, BW 입력 데이터(64)에 대한 역방향 값들의 완료 세트는 BV(backward value) 행렬(240)이라고 지칭될 수 있다.
또한, 6개의 입력 슬라이스들을 수반하는 예시적인 시나리오에서, 각각의 BW 코어는 FV 행렬(230)의 일부 및 BV 행렬(240)의 일부를 생성할 수 있다. 본 개시내용의 목적들을 위해, 입력 슬라이스에 기초하여 생성되는 FV 행렬의 일부는 "FV 슬라이스(FV slice)"라고 지칭될 수 있고, 입력 슬라이스에 기초하여 생성되는 BV 행렬의 일부는 "BV 슬라이스(BV slice)"라고 지칭될 수 있다. BW 코어(40A)가 입력 슬라이스 #1을 처리할 때, BW 코어(40A)는 대응하는 FV 슬라이스 #1을 생성한다. 도 2에 도시되는 바와 같이, FV 슬라이스 #1은 FV1로부터 FV500까지의 500개의 FV의 시퀀스들을 포함한다. 그리고 BW 코어(40A)가 입력 슬라이스 #2를 처리할 때, BW 코어(40A)는 대응하는 FV 슬라이스 #2를 생성한다. 그리고 이와 같이, BW 코어(40A)는 3개의 FV 슬라이스들 및 3개의 BV 슬라이스들을 생성하고, BW 코어(40B)는 3개의 다른 FV 슬라이스들 및 다른 BV 슬라이스들을 생성한다.
유사하게, 최대화 스테이지에서, BW 코어는 사후 EP 및 TP 값들을 생성한다. 6개의 입력 슬라이스들을 수반하는 예시적인 시나리오에서, 각각의 BW 코어는 사후 EP 행렬(212)의 일부 및 사후 EP 행렬(222)의 일부를 생성할 수 있다. 본 개시내용의 목적들을 위해, Baum-Welch 알고리즘을 입력 슬라이스에 적용하는 것에 의해 생성되는 EP 행렬의 일부는 "사후 EP 슬라이스(posterior EP slice)"라고 지칭될 수 있고, Baum-Welch 알고리즘을 입력 슬라이스에 적용하는 것에 의해 생성되는 TP 행렬의 일부는 "사후 TP 슬라이스(posterior TP slice)"라고 지칭될 수 있다. BW 코어(40A)가 입력 슬라이스들 #1-#3을 처리할 때, BW 코어(40A)는 3개의 대응하는 사후 EP 슬라이스들 및 3개의 대응하는 사후 TP 슬라이스들을 생성한다. 그리고 BW 코어(40B)가 입력 슬라이스들 #4-#6을 처리할 때, BW 코어(40B)는 3개의 추가적인 사후 EP 슬라이스들 및 3개의 추가적인 사후 TP 슬라이스들을 생성한다. 따라서, 사후 EP 행렬(212) 및 사후 TP 행렬(222)은 6개의 슬라이스들을 각각 포함할 수 있다.
위에 표시된 바와 같이, 예시적인 시나리오에서, BW 입력 데이터(64)는 3000개의 관측들을 포함하고, BW 서브시스템(50)은 BW 입력 데이터(64)를 각각 500개의 관측들을 포함하는 6개의 입력 슬라이스들로 분할한다. 다음으로 BW 서브시스템(50)은 이러한 입력 슬라이스들 중 3개를 처리하기 위해 BW 코어(40A)를 사용하고, 다른 3개의 입력 슬라이스들을 처리하기 위해 BW 코어(40B)를 사용할 것이다.
도 4는 타일 및 관련 데이터 구조를 예시하는 블록도이다. 도 4에서, BW 입력 데이터(64)로부터의 처음 3개의 입력 슬라이스들은 입력 슬라이스 #1 내지 입력 슬라이스 #3으로서 도시되고, 최종 3개의 입력 슬라이스들은 입력 슬라이스 #4 내지 입력 슬라이스 #6으로서 도시된다. 특히, 가상 시나리오에서, 글로벌 이벤트 제어기(52)는 입력 슬라이스들 #1-#3을 BW 코어(40A)에 배정하고 입력 슬라이스들 #4-#6을 BW 코어(40B)에 배정하기로 결정했다. 결과적으로, 글로벌 이벤트 제어기(52)는 입력 슬라이스들 #1-#3을 RAM(14)에서의 제1 타일(63A)로 복사하고, 글로벌 이벤트 제어기(52)는 입력 슬라이스들 #4-#6을 RAM(14)에서의 제2 타일(63B)로 복사한다. 글로벌 이벤트 제어기(52)는 코어(40A)로 하여금 타일(63A)을 처리하게 하고 코어(40B)로 하여금 타일(63B)을 처리하게 하는 BWAXF 명령어들을 후속하여 사용할 것이다.
글로벌 이벤트 제어기(52)는, 위에 표시된 바와 같이, 각각의 타일에 필터 블록들을 또한 포함할 수 있다. 예를 들어, 도 4에 도시되는 바와 같이, 가상 시나리오에서, 글로벌 이벤트 제어기(52)는 입력 슬라이스들 #1-#3 및 대응하는 필터 블록들(FB들) #1-#3을 타일(63A)에 저장하였고, 글로벌 이벤트 제어기(52)는 입력 슬라이스들 #4-#6 및 대응하는 FB들 #4-#6을 타일(63B)에 저장하였다. (예시의 목적들을 위해, 타일들(63A 및 63B)에서의 "FB들(FBs)"은 필터 블록들이 이러한 타일들에 존재함을 표시하기 위해 실선들로 도시되고, "필터 블록 #1(filter block #1)", "필터 블록 #2(filter block #2)" 등은, "필터 블록 #1(filter block #1)", "필터 블록 #2(filter block #2)" 등이 타일들(63A 및 63B)에서의 대응하는 FB들의 확대도들임을 표시하기 위해, 타일들(63A 및 63B) 아래에 점선들로 도시된다). 글로벌 이벤트 제어기(52)는, 예를 들어, 필터 블록 #1이 필터들 #1-#500을 포함할 때까지, 현재 EP 행렬로부터의 제1 벡터 및 현재 TP 행렬로부터의 처음 4개의 벡터들을 필터 블록 #1 내의 제1 필터("필터 #1(filter #1)")에 추가하는 것 등에 의해 필터 블록 #1을 생성했을 수 있다. 따라서, 글로벌 이벤트 제어기(52)는 입력 슬라이스에서의 각각의 관측에 대해 하나의 필터를 생성할 수 있으며, 이러한 필터들은 필터 블록에 존재한다.
도 4에서, 필터 블록 #1에서, "현재 EP 행렬로부터의 벡터 #1(Vector #1 From The Current EP Matrix)"로 라벨링되는 블록은 현재 EP 행렬의 제1 행 또는 벡터를 나타내며, 이는 도 2에 도시되는 바와 같이, 위치 #1(즉, 관측 #1)이 4개의 잠재적인 관측 상태들 각각에 있을 방출 확률 값들을 포함한다. 유사하게, "현재 TP 행렬로부터의 벡터들 #1-#4(Vectors #1-#4 From The Current TP Matrix)"로 라벨링되는 블록은 현재 TP 행렬의 처음 4개의 행들 또는 벡터들을 나타낸다. 이러한 행들은 위치 #1의 4개의 잠재적인 상태들 각각의 전이 확률 값들을 포함한다. 예를 들어, 이러한 행들 중 첫번째는, 도 3에 도시되는 바와 같이, 위치 #1이 상태 A를 가질 때 위치 #2가 4개의 잠재적인 관측 상태들 각각에 있을 확률을 반영한다. 따라서, 가상 시나리오에서, 필터 블록 #1은 입력 슬라이스 #1에서의 관측들에 관련된 EP 및 TP 벡터들 등을 포함한다. 대안적으로, 위에 표시된 바와 같이, 필터는 이러한 실제 벡터들 대신에 TP 벡터들에 대한 포인터들을 포함할 수 있다.
도 4에 예시되는 바와 같이, 글로벌 이벤트 제어기(52)는 6개의 필터 블록들을 생성하며, 각각의 필터 블록은 500개의 필터들을 포함하고, 각각의 필터는 입력 슬라이스에서의 대응하는 관측에 대해 EP 벡터 및 특정 수의 TP 벡터들을 포함한다. 도 4에 추가로 예시되는 바와 같이, 처음 3개의 입력 슬라이스들 및 3개의 대응하는 필터 블록들이 타일(63A)에 존재하고, 다른 3개의 입력 슬라이스들 및 이러한 입력 슬라이스들에 대한 필터 블록들이 타일(63B)에 존재한다.
타일들(63A 및 63B)을 생성한 후에, 글로벌 이벤트 제어기(52)는 BW 코어(40A)로 하여금 타일(63A)에서의 입력 슬라이스들을 처리하게 하는 제1 BWAXF 명령어, 및 BW 코어(40A)로 하여금 타일(63B)에서의 입력 슬라이스들을 처리하게 하는 제2 BWAXF 명령어를 사용할 수 있다. 따라서 글로벌 이벤트 제어기(52)는 Baum-Welch 알고리즘의 적어도 일부 부분들을 병렬로 처리할 수 있다.
도 4의 시나리오에서, 타일(63A)은 3개의 BW 입력 유닛들을 포함하고, 타일(63B)은 3개의 BW 입력 유닛들을 포함한다. 글로벌 이벤트 제어기(52)는 BW 코어의 L1C 내에 맞도록 각각의 타일을 그리고 BW 코어에 의해 세트로서 처리가능하도록 각각의 입력 슬라이스를 구성하였다. 예를 들어, 각각의 BW 코어의 L1C가 1 MB(megabyte)의 용량을 갖는 경우, 글로벌 이벤트 제어기(52)는 1 MB 이하인 타일 크기를 사용할 수 있고, 글로벌 이벤트 제어기(52)는 BW 입력 데이터(64)를, 각각이 대응하는 필터 블록들과 조합될 때 BW 코어에 의해 세트로서 처리가능하기에 충분히 작은 입력 슬라이스들로 분할할 수 있다.
BWAXF 명령어를 BW 코어에 전송하기 전에, 글로벌 이벤트 제어기(52)는 처리될 타일을 해당 BW 코어의 L1C에 로딩한다. 글로벌 이벤트 제어기(52)는 그렇게 함으로써 해당 BW 코어가 해당 타일의 처리 동안 실행 시간 및 데이터 전송 대역폭을 소비하는 것을 회피하는 것을 허용한다. 또한, 위에 표시된 바와 같이, 글로벌 이벤트 제어기(52)는 하나 이상의 입력 슬라이스 및 하나 이상의 대응하는 필터 블록을 포함하는 타일을 각각의 BW 코어에 공급할 수 있고, 글로벌 이벤트 제어기(52)는 해당 BW 코어로 하여금 상이한 파라미터 값들을 갖는 BWAXF 명령어들을 이러한 BW 코어들에 전송하는 것에 의해 해당 데이터를 처리하게 할 수 있다.
하나의 실시예에서, BW 가속 명령어(또는 "BWAXF 명령어(BWAXF instruction)")는 다음의 명령어 ID 및 파라미터들을 갖는 포맷을 사용한다:
BWAXF dest, src1, src2, src3.
해당 포맷에 따르면, 명령어 ID의 최종 2개의 문자들 또는 바이트들(즉, X 및 F)는, 각각, 특정 타일로부터 처리될 입력 슬라이스들의 수 및 각각의 입력 슬라이스와 함께 사용될 필터들의 수를 식별한다. 예를 들어, "BMA3500"은 3개의 입력 슬라이스들이 현재 타일로부터 처리되어야 하고, 500개의 필터들이, 위에 논의된 가상 시나리오에 따라, 각각의 입력 슬라이스에 대해 사용되어야 한다는 점을 표시한다.
또한, src3 파라미터는, 각각 "src3-F", "src3-Y" 및 "src3-Z"라고 지칭될 수 있는, 3개의 부분들을 갖는다. src3에 대해 공급되는 값(또는 값들의 세트)에 관하여, 최종 바이트는 src3-Z에 대해 사용되고, 끝에서 두번째 바이트는 src3-Y에 대해 사용되고, 나머지는 src3-F에 대해 사용된다. 다음의 리스트는 명령어 ID로부터 "X" 및 "F" 바이트들의 의미를 다시 반복하고, 이것은 BWAXF 명령어의 다른 파라미터들의 의미를 설명한다:
X: 현재 타일로부터 처리될 입력 슬라이스들의 수를 명시함.
F: 각각의 입력 슬라이스와 함께 사용될 필터들의 수를 명시함.
dest: 현재 타일에 대해 사후 EP 값들을 저장하기 위한 베이스 어드레스를 명시함.
src1: 현재 타일에 대해 입력 슬라이스들에 대한 베이스 어드레스를 명시함.
src2: 현재 타일에 대해 필터 블록들의 베이스 어드레스를 명시함.
src3-F: 현재 타일에 대해 순방향 값들에 대한 베이스 어드레스를 명시함.
src3-Y: 입력 슬라이스 당 관측들/엘리먼트들의 수를 명시함.
src3-Z: 각각의 필터에서의 확률들/엘리먼트들의 총 수를 명시함.
예를 들어, 도 4에 관하여, 위에 논의된 시나리오에서, 글로벌 이벤트 제어기(52)는 BW 코어(40A)로 하여금 타일(63A)을 처리하게 하는 제1 BWAXF 명령어를 BW 코어(40A)에 전송하고, 글로벌 이벤트 제어기(52)는 BW 코어(40B)로 하여금 타일(63B)을 처리하게 하는 제2 BWAXF 명령어를 BW 코어(40B)에 전송한다. 특히, 해당 제1 BWAXF 명령어에 대해, BW 코어(40A)로 하여금 타일(63A)을 "현재" 타일로서 처리하게 하기 위해, 글로벌 이벤트 제어기(52)는 파라미터들을 다음의 값들로 설정할 수 있다:
X = 3: 현재 타일로부터 처리될 입력 슬라이스들의 수를 명시함.
F = 500: 각각의 입력 슬라이스와 함께 사용될 필터들의 수를 명시함.
dest = 사후 EP 행렬에 대한 베이스 어드레스: 현재 타일에 대해 사후 EP 값들에 대한 베이스 어드레스를 명시함(도 2 참조).
src1 = 슬라이스 #1에 대한 베이스 어드레스: 현재 타일에 대해 입력 슬라이스들에 대한 베이스 어드레스를 명시함.
src2 = FB#1에 대한 베이스 어드레스: 현재 타일에 대해 필터 블록들의 베이스 어드레스를 명시함.
src3-F - FV 슬라이스 #1에 대한 베이스 어드레스: 현재 타일에 대해 순방향 값들에 대한 베이스 어드레스를 명시함(도 2 참조).
src3-Y = 500: 입력 슬라이스 당 엘리먼트들의 수를 명시함.
src3-Z = 20: 각각의 필터에서의 엘리먼트들의 총 수를 명시함.
가상 시나리오에서, 글로벌 이벤트 제어기(52)는 "src3-Z"를 20으로 설정하는데, 그 이유는 각각의 필터에 20개의 엘리먼트들: EP 벡터로부터의 4개의 엘리먼트들, 및 4개의 TP 벡터들로부터의 16개의 엘리먼트들(이들 각각은 4개의 엘리먼트들을 가짐)가 존재하기 때문이다.
또한, 도 2에 도시되는 바와 같이, 타일(63A)에 대해, 글로벌 이벤트 제어기(52)는, 입력 슬라이스 #1에 기초하여, BW 코어(40A)가 생성할 FV 슬라이스(즉, FV 슬라이스 #1)에 대한 베이스 어드레스에 "src3-F"를 설정한다. 유사하게, 글로벌 이벤트 제어기(52)는 현재 타일에 대해 처리된 데이터(즉, 업데이트된 TP들 및 EP들)를 다시 기입하기 위해 베이스 어드레스에 "dest"를 설정한다. 특히, 도 2에 도시되는 바와 같이, 글로벌 이벤트 제어기(52)는, 입력 슬라이스 #1에 기초하여, BW 코어(40A)가 생성할 EP 슬라이스(즉, EP 슬라이스 #1)에 대한 베이스 어드레스에 타일(63A)에 대한 "dest"를 설정한다.
대조적으로, 궁극적으로 BW 코어(40B)에 지향되는, 위에 언급된 제2 BWAXF 명령어는 EP 슬라이스 #4의 시작을 포인팅하는 "dest" 파라미터(도 2 참조), 입력 슬라이스 #4를 포인팅하는 "src1" 파라미터(도 4 참조), 필터 블록 #4를 포인팅하는 "src2" 파라미터(도 4 참조), 및 FV 슬라이스 #4의 시작을 포인팅하는 "src3-F" 파라미터(도 2 참조)를 포함한다.
BW 코어는 "dest"와 같은 파라미터들을 포인터들로서 취급할 수 있고, BW 코어는 필요에 따라 이러한 포인터들을 업데이트할 수 있다. 예를 들어, BW 코어가 하나의 입력 슬라이스를 마무리하고 현재 타일로부터 다음 입력 슬라이스를 시작할 때, BW 코어는 따라서 관련 포인터들을 자동으로 조정할 수 있다. 예를 들어, BW 코어(40A)가 입력 슬라이스 #1을 처리하는 것을 마무리할 때, BW 코어(40A)는 EP 슬라이스 #2의 시작을 포인팅하는 "dest" 포인터(도 2 참조), 입력 슬라이스 #2를 포인팅하는 "src1" 포인터(도 4 참조), 필터 블록 #2를 포인팅하는 "src2" 포인터(도 4 참조), 및 FV 슬라이스 #2의 시작을 포인팅하는 "src3-F" 포인터(도 2 참조)를 자동으로 업데이트할 수 있다.
또한, BW 코어들은, 위 파라미터들에 기초하여, 다른 데이터 구조들에 대한 베이스 어드레스를 자동으로 계산할 수 있다. 이러한 다른 데이터 구조들은 BV 슬라이스들 및 TP 슬라이스들을 포함할 수 있다. 예를 들어, BW 코어(40A)는 FV 행렬의 크기를 "src3-F" 포인터에 가산하는 것에 의해 타일(63A)에 대한 역방향 값들을 저장하기 위한 베이스 어드레스를 자동으로 계산할 수 있다. 유사하게, BW 코어(40A)는 EP 행렬의 크기를 "dest" 포인터에 가산하는 것에 의해 TP들을 저장하기 위한 베이스 어드레스를 자동으로 계산할 수 있다. 그리고 BW 코어는 BW 입력 데이터(64)에서의 관측들의 총 수 "N"에 기초하여 FV 행렬의 크기 및 EP 행렬의 크기와 같은 값들을 계산할 수 있다. 유사하게, BW 코어(40A)는 엘리먼트의 크기 및 "N"과 동일한 FV 행렬(230)에 대한 엘리먼트들의 총 수에 기초하여 FV 행렬(230)에 대한 총 크기를 계산할 수 있다. 따라서, BW 코어(40A)는 FV 행렬(230)을 바로 뒤따르는 BV 행렬(240)을 저장하도록 구성될 수 있다.
또한, 글로벌 이벤트 제어기(52)는 TP 데이터를 BW 코어들의 TP 캐시에 로딩하기 위해 DMA(direct memory access)를 사용하기 위한 명령어를 지원한다. 본 개시내용의 목적들을 위해, 이러한 명령어는 "Baum-Welch 전이-확률 로드 명령어(Baum-Welch transition-probability load instruction)", "BW TP 로드 명령어(BW TP load instruction)", 또는 "BWTPL 명령어(BWTPL instruction)"라고 지칭될 수 있다. 하나의 실시예에서, BW TP 로드 명령어는 다음의 명령어 ID 및 파라미터들을 갖는 포맷을 사용한다:
BWTPL src1, src2.
"src1" 파라미터는 RAM에서의 TP 데이터의 베이스 어드레스를 포인팅하고, "src2" 파라미터는 BW 코어에서의 L1C에 로딩될 TP 벡터들의 수를 식별한다. BWTPL 명령어에 대한 추가 상세사항들이 도 5의 흐름도에 관하여 아래에 제공된다.
도 5는 HMM에 대한 최대화 파라미터들을 생성하기 위해 BW 가속기(41)를 사용하기 위한 프로세스의 예시적인 실시예의 흐름도를 제시한다. 해당 프로세스는, 타일들(63A 및 63B)을 수반하는, 위에 논의된 가상 시나리오의 맥락에서 아래에 논의된다.
도 5의 프로세스는 애플리케이션(62)이 관련 통계 모델에 대한 BW 구성 데이터로 글로벌 이벤트 제어기(52)를 구성하는 블록 310에서 시작한다. 예를 들어, 위에 표시된 바와 같이, BW 구성 데이터는 관측들에 대한 잠재적 값들 또는 상태들, 잠재적 상태들의 수, 판독 크기, 수렴 임계값, 초기 EP 행렬(210) 및 초기 TP 행렬(220)을 명시할 수 있으며, 애플리케이션(62)은 해당 BW 구성 데이터(또는 해당 데이터에 대한 포인터들)를 글로벌 이벤트 제어기(52)에 전송할 수 있다.
블록 312에 도시되는 바와 같이, 애플리케이션(62)은 다음으로 BW 서브시스템(50)을 다음으로 시작할 수 있다. 예를 들어, 애플리케이션(62)은 시작 신호를 글로벌 이벤트 제어기(52)에 전송할 수 있다. 이에 응답하여, 블록 314에 도시되는 바와 같이, 글로벌 이벤트 제어기(52)는, BW 코어들의 수 및 각각의 BW 코어에서의 L1C의 크기와 같은, BW 서브시스템(50)의 알려진 속성들 및 BW 구성 데이터에 기초하여, BW 입력 데이터(64)를 처리하기에 적합한 타일 속성들을 결정할 수 있다. 이러한 타일 속성들은 사용될 타일들의 수, 각각의 타일에 포함할 입력 슬라이스들의 수, 각각의 입력 슬라이스에 포함할 BW 입력 유닛들의 수, 필터 블록에서의 각각의 필터에 대해 사용될 필터 크기, 및 각각의 필터에 포함할 TP 벡터들의 수를 포함할 수 있다. 예를 들어, 글로벌 이벤트 제어기(52)는, 각각이, 2 비트와 같은 미리 결정된 크기를 갖는, 그 결과 필터 크기는 80 비트 또는 10 바이트인, 총 20개의 엘리먼트들에 대해, 각각의 필터가 4개의 엘리먼트들을 갖는 EP 벡터 및 4개의 엘리먼트들을 각각 갖는 4개의 TP 벡터들을 포함해야 한다고 결정할 수 있다. 글로벌 이벤트 제어기(52)는 다음으로 동일한 수의 필터들과 함께 BW 입력 유닛에 얼마나 많은 관측들이 맞을 수 있는지를 결정할 수 있다. 다음으로 글로벌 이벤트 제어기(52)는 사용될 입력 슬라이스들의 수를 결정하기 위해 판독 크기(즉, 관측들의 총 수)를 BW 입력 유닛에서의 관측들의 수로 제산할 수 있다. 다음으로 글로벌 이벤트 제어기(52)는 얼마나 많은 타일들을 사용할지를 결정할 수 있다. 예를 들어, 코어들보다 더 많은 입력 슬라이스들이 존재하면, 글로벌 이벤트 제어기(52)는 각각의 BW 코어에 대해 적어도 하나의 타일을 사용하기로 결정할 수 있다. 다음으로 글로벌 이벤트 제어기(52)는, L1C 크기 및 BW 입력 유닛의 크기에 기초하여, 각각의 타일에 얼마나 많은 입력 슬라이스들을 포함할지를 결정할 수 있다. 가상 시나리오에서, 글로벌 이벤트 제어기(52)는 2개의 타일들을 사용하기로, 그리고 각각의 타일에 3개의 BW 입력 유닛들을 배정하기로 결정한다(여기서 각각의 BW 입력 유닛은 하나의 입력 슬라이스 및 하나의 필터 블록을 포함한다).
따라서, 블록 316에 도시되는 바와 같이, 다음으로 글로벌 이벤트 제어기(52)가 이러한 타일들을 생성한다. 예를 들어, 글로벌 이벤트 제어기(52)는 입력 슬라이스들 및 필터 블록들 #1-#3에 대한 데이터를 타일(63A)에 복사할 수 있고, 글로벌 이벤트 제어기(52)는 입력 슬라이스들 및 필터 블록들 #4-#6에 대한 데이터를 타일(63B)에 복사할 수 있다. 대안적으로, 글로벌 이벤트 제어기(52)는 타일의 특정 컴포넌트들이 어디에 존재하는지를 표시하는 하나 이상의 테이블을 생성하는 것에 의해 타일들(63A 및 63B)을 생성할 수 있다. 따라서, 타일의 컴포넌트들이 어디에 존재하는지를 표시하는 테이블(또는 테이블들의 집합) 또한 "타일(tile)"이라고 지칭될 수 있다. 예를 들어, 위에 표시된 바와 같이, 타일은 입력 슬라이스들을 포함할 수 있으며, 필터 블록들은 EP 벡터들 및 TP 벡터들에 대한 포인터들을 포함한다.
블록 318에 도시되는 바와 같이, 다음으로 글로벌 이벤트 제어기(52)가 BW 서브시스템(50)의 다른 컴포넌트들을 따라서 구성할 수 있다. 예를 들어, 글로벌 이벤트 제어기(52)는, 판독 타입, 수렴 임계값, 관측에 대한 잠재적 상태들/값들의 수 및 값들, 필터에서의 TP 벡터들의 수, 입력 슬라이스에서의 관측들의 수, 및 BW 입력 유닛내의 상이한 항목들의 상대 위치들과 같은, L1C 내로 로딩될 데이터의 속성들을 명시하기 위한 구성 데이터로 BW 코어들(40A 및 40B)을 구성할 수 있다. 예를 들어, 구성 데이터는 L1C에서의 각각의 BW 입력 유닛이 해당 BW 입력 유닛에 대한 관측들로 시작하여 조직되고, 관련 EP 벡터들이 뒤따르고, 관련 TP 벡터들(또는 이러한 TP 벡터들에 대한 포인터들)이 뒤따를 것이라는 점을 표시할 수 있다. 또한, 글로벌 이벤트 제어기(52)는 L1 DMA 엔진(36), L2 DMA 엔진(34), 및 TP DMA 엔진(38)에 구성 데이터를 전송할 수 있으며, 해당 구성 데이터는, 도 6에 관하여 아래에 더 상세히 설명되는 바와 같이, L1 청크 크기 및 L2 청크 크기와 같은 속성들을 명시할 수 있다.
블록 320에 도시되는 바와 같이, 글로벌 이벤트 제어기(52)가 다음으로 각각의 코어를 해당 코어에 의해 처리될 데이터로 채울 수 있다. 예를 들어, 글로벌 이벤트 제어기(52)는 상이한 타일을 BW 코어 각각의 L1C에 로딩할 수 있다. 특히, 글로벌 이벤트 제어기(52)는 타일의 관측들, EP 벡터들, 및 TP 벡터 포인터들을 BW 코어의 L1C에 복사할 수 있고, 글로벌 이벤트 제어기(52)는 타일의 실제 TP 벡터들을 해당 BW 코어의 TP 캐시에 로딩하게 하는 BWTPL 명령어를 사용할 수 있다. 글로벌 이벤트 제어기(52)가 BWTPL 명령어를 실행할 때, 해당 명령어는 관련 TP 벡터들을 관련 BW 코어의 TP 캐시에 로딩하기 위해 글로벌 이벤트 제어기(52)로 하여금 TP DMA 엔진(38)을 사용하게 한다.
예를 들어, 글로벌 이벤트 제어기(52)가 타일(63A)을 처리하기 위해 BW 코어(40A)를 준비하고 있을 때, 글로벌 이벤트 제어기(52)는 타일에 대한 TP 벡터들을 TP 캐시(179)에 로딩하게 하는 BWTPL 명령어를 사용할 수 있다. 예를 들어, 가상 시나리오에서, 글로벌 이벤트 제어기(52)는, (a) 타일에서의 필터들의 수(가상 시나리오에서 1500개임: 필터 블록 당 500개) 및 (b) 각각의 필터에서의 TP 벡터들의 수(가상 시나리오에서 4개임)에 기초하여, 로딩될 TP 벡터들의 수를 6000개로 계산할 수 있다. 결과적으로, 글로벌 이벤트 제어기(52)는 필터 블록 #1의 베이스를 포인팅하는 "src1"(도 4 참조) 및 6000으로 설정되는 "src2"로 BWTPL 명령어를 실행할 수 있다. 또는, 필터들이 TP 벡터들에 대한 포인터들을 포함하면, 글로벌 이벤트 제어기(52)는 필터 블록 #1에서의 제1 TP-벡터 포인터에서 반영되는 어드레스를 포인팅하도록 "src1" 파라미터를 설정한다.
또한, 하나의 실시예에서, 목적지(TP 캐시(179))는 고정되므로, 목적지 어드레스는 요구되지 않는다. 따라서, 글로벌 이벤트 제어기(52)는 타일(63A)을 BW 코어(40A)에 로딩하고, 타일(63B)을 BW 코어(40B)에 로딩할 수 있다. 하나의 실시예에서, BW 서브시스템(50)은 Baum-Welch 알고리즘의 구성 동안 및 실행 동안 컴포넌트들 사이의 다양한 상이한 타입들의 통신을 지원하는 다양한 통신 경로들을 포함한다.
도 6은 데이터 처리 시스템(10) 내의 통신에 대한 추가 상세사항들을 갖는 블록도이다. 도 6에서의 화살표들은 상이한 컴포넌트들 사이의 상이한 타입들의 통신을 식별한다. 또한, 이러한 화살표들에 대한 참조 번호들에서의 상이한 문자들은 대응하는 통신에 대한 상이한 엔드포인트들을 나타낸다. 예를 들어, 화살표 70A1은 호스트 코어(20)가 BW 입력 데이터(64)에서의 관측들에 대한(즉, Baum-Welch 알고리즘에 대한 입력으로서 사용될 관측들의 스트림에 대한) 판독 타입 및 판독 크기와 같은 파라미터들을 글로벌 이벤트 제어기(30)에 제공한다는 점을 표시하고, 한편 화살표 70A2는 호스트 코어(20)가 BW 입력 데이터(64) 및 초기 EP 및 TP 행렬들(210 및 220)과 같은 항목들을 RAM(14)에 로딩한다는 점을 표시한다.
화살표 70B1은 글로벌 이벤트 제어기(52)가 BW 코어들(40A 및 40B) 각각에 L1 청크 크기를 공급한다는 점을 표시한다. 유사하게, 화살표들 70B2 및 70B3은 글로벌 이벤트 제어기(52)가 L1 청크 크기를 L1 DMA 엔진(36) 및 TP DMA 엔진(38)에 각각 공급한다는 점을 표시한다. 화살표 70B2는 글로벌 이벤트 제어기(52)가 TP DMA 엔진(38)으로의 요청 및 TP DMA 엔진(38)으로부터 수신된 응답을 전송한다는 점을 또한 표시한다. 화살표 70B4는 글로벌 이벤트 제어기(52)가 L2 DMA 엔진(34)에 L2 청크 크기를 공급한다는 점을 표시한다.
화살표 70C1은 L2 DMA 엔진(34)이 RAM(14)으로부터 L2 DMA 테이블을 획득한다는 점을 표시한다. 화살표 70C2는 L2 DMA 엔진(34)이 RAM(14)으로부터 BW 입력 데이터를 획득한다는 점을 표시하고, 화살표 70C3는, L2 DMA 엔진(34)이 BW 코어들에 데이터를 로딩하는 것과 관련하여, 해당 데이터를 L2C(32)에 전송한다는 점을 표시한다. L2 DMA 엔진(34)은 RAM(14)으로부터 L2C(32)로 BW 입력 데이터를 복사하는 것과 관련하여 어드레스 변환을 수행하기 위해 L2 DMA 테이블을 사용할 수 있다.
화살표 70D1은 L1 DMA 엔진(36)이 (예를 들어, 명령 완료, 동작 완료 등과 같은 이벤트들을 표시하기 위해) 일부 L1 DMA 동작들로부터의 응답들을 글로벌 이벤트 제어기(39)에 전송한다는 점을 표시한다. 그리고 화살표 70D2는 L1 DMA 엔진(36)이 (예를 들어, 명령 완료, 동작 완료 등과 같은 이벤트를 표시하기 위해) 일부 L1 DMA 동작으로부터의 응답을 L2C(32)에 전송한다는 점을 표시한다. 화살표 70D3은 L1 DMA 엔진(36)이 공유 버스를 통해 BW 코어들에서의 L1C에 데이터를 전송한다는 점을 표시한다.
화살표 70E1은 TP DMA 엔진(38)이 RAM(14)으로부터 TP DMA 테이블을 획득한다는 점을 표시한다. 화살표들 70E2 및 70E3은 TP DMA 엔진(38)이 RAM(14)으로부터의 TP 데이터를 BW 코어로 로딩하기 위해 TP DMA 테이블을 사용하고, TP DMA 엔진(38)은 BW 코어에 액세스하기 위해 공유 버스를 사용한다는 점을 표시한다. 하나의 실시예에서, RAM(14)은 각각의 BW 코어에 대해 하나의 TP DMA 테이블을 포함한다.
또한, 화살표 70A2는 BW 서브시스템(50)이 Baum-Welch 알고리즘을 완료한 후에 호스트 코어(20)가 RAM으로부터 최종 EP 및 TP 행렬들을 획득한다는 점을 또한 표시한다.
더욱이, 글로벌 이벤트 제어기(39)는 활동들을 조정 또는 동기화하기 위해 동기화 신호들(예를 들어, 시작 및 정지 신호들)을 다양한 컴포넌트들에 전송할 수 있다. 예를 들어, 글로벌 이벤트 제어기(39)는, 도 5의 블록 312에 도시되는 바와 같이, 호스트 코어(20)가 글로벌 이벤트 제어기(39)에 제어를 전송하는 것에 응답하여 글로벌 이벤트 제어기(39)가 시스템 실행을 인계받았다는 점을 표시하기 위해 동기화 신호(예를 들어, 시작 확인 또는 "ack")를 호스트 코어(20)에 전송할 수 있다. 그리고 글로벌 이벤트 제어기(39)는 BW 코어들 및 DMA 엔진들과 같은 컴포넌트들에 상이한 동기화 신호(예를 들어, 시작 펄스)를 전송하여, 이러한 컴포넌트들로 하여금 시스템 내에서 그들의 동작들을 시작하게 할 수 있다. 예를 들어, 글로벌 이벤트 제어기(52)는 BWTPL 명령어를 TP DMA 엔진(38)에 전송한 후에 시작 신호를 TP DMA 엔진(38)에 전송할 수 있고, 글로벌 이벤트 제어기(52)는 BWAXF 명령어를 해당 BW 코어에 전송한 후에 시작 신호를 BW 코어에 전송할 수 있다. 유사하게, 글로벌 이벤트 제어기(52)는 데이터의 블록(예를 들어, 입력 슬라이스)을 BW 코어에 로딩하기 위한 파라미터들을 전송한 후에 시작 신호를 L1 DMA 엔진(36)에 전송할 수 있고, 해당 신호에 응답하여, L1 DMA 엔진(36)은 RAM(14)으로부터 L1 DMA 테이블을 판독할 수 있고, 다음으로 L1 DMA 엔진(36)은 명시된 데이터를 명시된 BW 코어에 로딩할 수 있다.
또한, 트랜잭션들은 순차적일 수 있으며, L1 DMA 엔진(36)은 하나의 BW 코어에 대한 데이터를 해당 BW 코어의 L1C에 채우고 다음으로 다른 BW 코어에 대한 데이터를 해당 BW 코어에 대한 L1C에 채운다. L1 DMA 엔진(36)은 따라서 L1 DMA 테이블을 또한 업데이트할 수 있다. 또한, TP DMA 엔진(38)은 TP 벡터들을 코어들에 순차적으로 로딩하여, 하나의 BW 코어에 대한 데이터를 해당 BW 코어의 TP 캐시에 채우고 다음으로 다른 BW 코어에 대한 데이터를 해당 BW 코어에 대한 TP 캐시에 채울 수 있다.
도 5를 다시 참조하면, 블록 322에 도시되는 바와 같이, 글로벌 이벤트 제어기(52)가 BW 서브시스템(50)의 BW 코어들 및 다른 컴포넌트들을 구성한 후에, 다음으로 글로벌 이벤트 제어기(52)는 수반되는 것으로 추정되는 각각의 BW 코어에 BWAXF 명령어를 전송하는 것에 의해 Baum-Welch 알고리즘의 착수를 트리거할 수 있다. 특히, 가상 시나리오에서, 글로벌 이벤트 제어기(52)는 BW 코어(40A)로 하여금 타일(63A)을 처리하게 하는 제1 BWAXF 명령어를 BW 코어(40A)에 전송하고, BW 코어(40B)로 하여금 타일(63B)을 처리하게 하는 제2 BWAXF 명령어를 BW 코어(40B)에 전송한다. 글로벌 이벤트 제어기(52)는 대응하는 시작 신호들을 BW 코어들(40A 및 40B)에 또한 전송할 수 있다.
블록 324에 도시되는 바와 같이, 다음으로 각각의 BW 코어는, 아래에 더 상세히 설명되는 바와 같이, 그 현재 입력 슬라이스를 처리할 수 있다. 블록 330에 도시되는 바와 같이, BW 코어가 사후 EP 및 TP 슬라이스들을 생성한 후에, BW 코어는 수렴 임계값이 충족되었는지를 결정할 수 있다. 충족되지 않았다면, 블록 332에 도시되는 바와 같이, BW 코어는 다음 반복을 위한 현재 EP 및 TP 슬라이스들로서 사용될 해당 반복으로부터의 사후 EP 및 TP 슬라이스들을 저장할 수 있고, 프로세스는 블록 324로 복귀할 수 있고, BW 코어는 Baum-Welch 알고리즘의 다른 반복을 수행한다.
블록 334에 도시되는 바와 같이, 일단 수렴 임계값이 충족되었다면, BW 코어는 명시된 "dest" 파라미터에 따라 L1C에 사후 EP 및 TP 슬라이스들을 저장할 수 있다. (결국, 일단 BW 코어에 대한 모든 타일들이 처리되었다면, 글로벌 이벤트 제어기(52)는 최종 EP 및 TP 슬라이스들을 L1C로부터 RAM(14)으로 복사할 것이다.)
블록 340에 도시되는 바와 같이, 다음으로 BW 코어는 타일이 처리할 임의의 더 많은 입력 슬라이스들을 포함하는지를 결정할 수 있다. 모든 입력 슬라이스들이 처리되지 않았다면, 블록 342에 도시되는 바와 같이, 다음으로 BW 코어는 다음 입력 슬라이스를 어드레싱하도록 모든 관련 포인터들 등을 업데이트할 수 있고, 프로세스는 BW 코어가 해당 다음 슬라이스를 처리하기 위해 블록 324으로 복귀할 수 있다.
블록 350에 도시되는 바와 같이, 일단 모든 입력 슬라이스들이 처리되었다면, BW 코어는 완료된 신호를 글로벌 이벤트 제어기(52)에 전송할 수 있고, 글로벌 이벤트 제어기(52)는 해당 BW 코어에 대한 타일들 전부가 처리되었는지를 결정할 수 있다. 처리될 임의의 타일들이 남아 있으면, 프로세스는 블록 320으로 복귀할 수 있고, 글로벌 이벤트 제어기(52)는, 위에 설명된 바와 같은 처리를 위해, 새로운 타일을 BW 코어에 로딩한다. 일단 모든 타일들이 처리되었다면, 글로벌 이벤트 제어기(52)는 BW 출력 데이터(66)를 구성하기 위해 사후 EP 및 TP 행렬들을 RAM(14)에 저장할 수 있다. 따라서, BW 출력 데이터(66)는, 도 2에 도시되는 바와 같이, 최종 EP 행렬(212) 및 최종 TP 행렬(222)을 포함할 것이다.
도 7은, 위에 논의된 가상 시나리오에 따른, 데이터 처리 시스템(10) 내의 병렬 동작들 및 다른 동작들을 예시하는 흐름도를 제시한다. 다시 말해서, 도 7은 실행 흐름을 묘사한다. 특히, 도 7에서, 수평 축은 시간의 경과를 반영하고, 수직 축은 데이터 처리 시스템의 상이한 컴포넌트들에 대해 상이한 행들을 제공하고, 이러한 행들에서의 항목들 또는 동작들은 이러한 항목들 및 동작들이 활성 및 비활성(또는 시작 및 정지)이 될 때를 반영하도록 수직으로 정렬된다. 또한, TP 캐시(179)는 TP 캐시 A로서 도시되고, BW 코어(40B)에서의 TP 캐시는 TP 캐시 B로서 도시된다. 또한, 도 7은, "Baum-Welch 실행(Baum-Welch Execution)" 블록들이 BW 코어 당 하나의 타일의 처리를 반영하는, 위에 논의된 가상 시나리오에 주로 초점을 맞춘다. 그러나, 도 7은 BW 코어(40A)에 의한 제2 타일의 실행을 수반하는 대안적인 시나리오를 반영하기 위해, 점선 윤곽들을 갖는 "Baum-Welch 실행(Baum-Welch Execution)" 블록을 또한 포함한다.
도 7에서의 동작들은 호스트 코어(20)가 BW 입력 데이터(64)를 RAM(14)에 로딩하는 것으로 시작한다. 다음으로 호스트 코어(20A)는 제어를 BW 서브시스템(50)에 전송한다. 다음으로 글로벌 이벤트 제어기(52)는, (a) 필요에 따라 L2C(32)에 데이터를 로딩하라는 요청들, (b) L2C(32)로부터 L1C(46A) 또는 L1C(46B)로 데이터를 복사하라는 요청들, 및 (c) TP 캐시 A 및 TP 캐시 B에 데이터를 복사하라는 요청들을 포함하는, DMA 요청들을 다양한 메모리 계층들에 걸쳐 발행한다. 예시되는 바와 같이, BW 서브시스템(50)은 상이한 L1C들로의 전송들을 순차적으로 처리할 수 있고, BW 서브시스템(50)은 상이한 TP 캐시들로의 전송들을 순차적으로 처리할 수 있다. 또한, 일단 관련 데이터가 해당 BW 코어에 대한 L1C 및 TP 캐시에 복사되었다면, 글로벌 이벤트 제어기(52)는 각각의 BW 코어를 비동기적으로 시작할 수 있다. 또한, 예시되는 바와 같이, 다수의 BW 코어들이 Baum-Welch 알고리즘을 병렬로 실행할 수 있다.
또한, BW 코어가 타일 내의 입력 슬라이스들을 처리할 때, BW 코어는 L1C로부터 슬라이스별 데이터를 페치할 수 있다. 그리고 BW 코어가 다수의 타일을 실행해야 하면, BW 서브시스템(50)은, "BW 코어(40A)에 대한 프리페치(Prefetch For BW Core 40A)"로 라벨링되는 점선에 의해 표시되는 바와 같이, BW 코어가 현재 타일을 마무리하기 전에 다음 타일에 대한 데이터를 해당 BW 코어의 L1C로 로딩하기 시작하기 위해 프리페치를 사용할 수 있다. 예를 들어, 하나의 실시예 또는 시나리오에서, 일단 최종 입력 슬라이스가 실행되고 있으면, 해당 슬라이스의 실행 중간에, BW 코어는 현재 타일이 거의 마무리된다는 점을 표시하도록 플래그(예를 들어, "ready-for-L1-prefetch flag")를 설정할 수 있다. 글로벌 이벤트 제어기(52)는 다음으로 해당 플래그가 설정되었음을 자동으로 검출할 수 있고, 이에 응답하여, 글로벌 이벤트 제어기(52)는 BW 코어에서의 L1C로 L2C(32)로부터 다음 타일에 대한 데이터를 페치하기 위해 DMA 엔진들을 트리거할 수 있다. 그러나, BW 알고리즘의 다수의 반복들이 존재할 수 있으면, BW 코어는, 위에 설명된 바와 같이, 미리 결정된 수렴 임계값에 의해 요구되는 바와 같이 최대화 파라미터들이 수렴될 때까지 ready-for-prefetch 플래그를 설정하는 것을 지연시킬 수 있다.
또한, BW 코어가 다수의 타일을 실행해야 하지만, 이러한 타일들 전부가 L2C(32)에 맞지는 않으면, 글로벌 이벤트 제어기(52)는, "L2 프리페치 준비(Ready For L2 Prefetch)"로 라벨링되는 점선에 의해 표시되는 바와 같이, RAM(14)으로부터 L2C(32)로 데이터를 프리페치할 수 있다. 하나의 실시예에서, BW 서브시스템(50)은, BW 코어가 L2C(32)에 현재 존재하는 최종 타일을 처리하기 시작했다는 점을 표시하기 위해 BW 코어(또는 BW 서브시스템(50)의 일부 다른 컴포넌트들)가 다른 하드웨어 플래그(예를 들어, "ready-for-L2-prefetch flag")를 설정하는 것에 응답하여 글로벌 이벤트 제어기(52)가 이러한 프리페치를 착수하는 것을 제외하고는, L1C로의 프리페치에 대한 것과 기본적으로 동일한 접근법을 사용한다. L2C(32)로부터의 모든 타일 데이터가 L1C에 복사되기 때문에, 글로벌 이벤트 제어기(52)는 RAM(14)으로부터 L2C(32)로 하나 이상의 추가적 타일을 복사하는 것에 의해 해당 플래그에 응답한다. "L2 데이터 완료(L2 Data Done)"로 라벨링되는 점선에 의해 표시된 바와 같이, 코어가 새로운 타일에 대해 준비되기 전에 해당 프리페치가 완료될 수 있으며, 그렇게 함으로써 BW 서브시스템(50)의 효율을 강화한다.
일단 모든 BW 코어들이 그들 각각의 타일들 전부를 처리하는 것을 마무리하였다면, 글로벌 이벤트 제어기(52)는 완료 신호를 호스트 코어(20)에 전송하고, 제어를 호스트 코어(20)에 릴리즈한다.
마이크로아키텍처 개요
도 8 내지 도 12는 BW 코어(40A)에 대한 마이크로아키텍처 상세사항들을 제시한다. BW 코어(40B)는 동일한 종류의 상세사항들을 가질 수 있다.
도 8은 BW 코어(40A)에 대한 추가 상세사항들을 갖는 블록도이다. 특히, 도 8은 비교적 하이-레벨 관점에서 BW 코어(40A)의 특정 동작 유닛들을 도시한다. 예시되는 바와 같이, 이러한 동작 유닛들은 2개의 주요 섹션들: 제어 섹션(50) 및 계산 섹션(90)으로 조직될 수 있다. 제어 섹션(50) 및 계산 섹션(90)은 각각의 하드웨어 회로들을 사용하여 구현될 수 있다. 제어 섹션(50)은, 적절한 동작들(예를 들어, 순방향 계산들)을 위해 계산 섹션(90)을 구성하도록, 메모리 요청들 및 적절한 커맨드들 양자 모두를 계산 섹션(90)에 발행하는 것을 주로 담당한다.
계산 섹션(90)은 제어 섹션(50)에 의해 설정되는 구성에 기초하여 기본 계산 동작들을 수행하는 것을 담당한다. 예를 들어, 계산 섹션(90)은 제어 섹션(50)에 의해 전달되는 적절한 데이터를 판독하고 해당 데이터에 대해 동작한다. 특히, 계산 섹션(90)은 LV들(likelihood values) 및 TP들을 생성한다.
계산 섹션(90)은 다양한 하드웨어 회로들 또는 블록들을 포함한다. 이러한 주요 블록들 또는 회로들 중 하나는 EP 생성기(74)이다. 다른 하나의 다른 주요 블록 또는 회로는 LVTP(likelihood-value-and-transition-probability) 생성기(80)이다. 계산 섹션(90)은 인덱스 생성기(72)를 위한 회로를 또한 포함한다. LVTP 생성기는 LV들(즉, 순방향 값들 및 역방향 값들) 및 TP들을 생성하기 위한 회로를 포함한다. 도 8의 실시예에서, 해당 회로는 2개의 LVTP 집합체들(82A-82B)을 포함한다. 그러나, 다른 실시예들에서, LVTP 생성기는 2개보다 많은 LVTP 집합체들을 포함할 수 있다. 예를 들어, LVTP 생성기는 128개 이상의 LVTP 집합체들을 포함할 수 있고, 이러한 LVTP 집합체들의 일부 또는 전부는 관측들의 세트 내의 상이한 시퀀스 위치들에서 상이한 엘리먼트들 또는 노드들에 대한 FV들, BV들, EP들, 및 TP들을 계산하도록 병렬로 작동할 수 있다.
각각의 LVTP 집합체(예를 들어, LVTP 집합체(82A))는 레지스터들의 세트(86) 및 다수의 LVTP 엔진들(84)을 포함한다. 특히, 하나의 실시예에서, 각각의 LVTP 집합체는, 도 9에 도시되는 바와 같이, 4개의 LVTP 엔진들(LVTP 엔진들(84A-84D))을 포함한다. BW 코어(40A)가 입력 슬라이스를 처리하기 위해 호출될 때, BW 코어(40A)는 해당 입력 슬라이스를 다수의 섹션들로 자동으로 분할하고, 이러한 섹션들 각각을 처리하기 위해 하나의 LVTP 집합체(82A)를 사용할 수 있다. 예를 들어, 입력 슬라이스가 400개의 관측들을 포함하고 40개의 LVTP 집합체들이 존재하면, BW 코어(40A)는 슬라이스를 40개의 섹션들(예를 들어, 섹션 당 10개의 관측들을 가짐)으로 자동으로 분할할 수 있고, BW 코어(40A)는 각각의 섹션을 처리하기 위해 하나의 LVTP 집합체를 사용할 수 있다. 또한, LVTP 집합체에서의 4개의 LVTP 엔진들이 연속적인 관측을 처리할 수 있다. 예를 들어, LVTP 엔진(84A)은 제1 관측을 처리할 수 있고, LVTP 엔진(84B)은 제2 관측을 처리할 수 있는 등이다. 그리고 다음으로 LVTP 엔진(84A)은 제5 관측을 처리할 수 있는 등이다.
또한, 도 9에 관하여 아래에 표시되는 바와 같이, 각각의 LVTP 집합체(82A)는 레지스터들(86)의 세트를 포함할 수 있다. 그리고 각각의 LVTP 엔진은 해당 LVTP 엔진에 의해 처리되는 각각의 관측에 대한 LV를 생성할 수 있다. 레지스터(86)는 4개의 LVTP 엔진들로부터의 4개의 LV들을 라인으로 통합하기 위해 사용될 수 있다. 하나의 실시예에서, LVTP 집합체(82A)는 4개의 32 비트 값들을 128 비트 라인으로 통합하기 위해 레지스터들(86)을 사용한다.
LVTP 엔진에 대한 추가 상세사항들이, 도 9에 관하여, 아래에 제공된다. 또한, 도 10에 도시되는 바와 같이, 각각의 LVTP 엔진은 LV 생성기 및 TP 생성기를 포함할 수 있다.
또한, LVTP 생성기(80)는, LVTP 집합체들 각각으로부터 출력을 수신하고, 해당 출력을 L1C(46A)에 저장하며, (LVTP 집합체가 FV-생성 모드 또는 BV-생성 모드에 있는지에 기초하여) 해당 출력을 추가 처리를 위해 TP 생성기들에 전달할지를 결정하는 순방향 기입 선택기(88)를 포함한다.
하나의 실시예에서, 제어 섹션(50)은 6개의 주요 단계들의 실행을 감독하는 하드웨어 회로 또는 논리 블록들을 포함한다. 단계 1에서, 입력 판독 제어기(52)는 L1C(46A)로부터 현재 슬라이스에 대한 입력 데이터를 획득하기 위해 L1C(46A)에 판독 요청을 발행한다. 해당 입력 데이터는, 예를 들어, 현재 입력 슬라이스에 대한 관측들을 포함할 수 있다. 단계 2에서, 최대화-파라미터 판독 제어기(54)는, 현재 실행 페이즈의 타입에 기초하여, Baum-Welch 알고리즘의 초기/이전 반복으로부터 Baum-Welch 알고리즘의 현재 반복에 대한 최대화 파라미터들을 획득하기 위해 L1C(46A)에 판독 요청을 발행한다(이러한 타입은 순방향 계산 페이즈 또는 역방향 계산 페이즈임). 따라서, BW 코어(40A)는 이전 반복으로부터의 사후 EP 및 TP 벡터들을 현재 반복에 대한 현재 EP 및 TP 벡터들로서 사용할 수 있다. Baum-Welch 알고리즘의 이러한 반복은 "타임스탬프(timestamp)"라고 지칭될 수 있다. 따라서, BW 코어는 하나의 타임스탬프로부터의 사후 벡터들을 다음 타임스탬프에서의 현재 벡터들로서 사용할 수 있다. 단계 3에서, EP 업데이트 제어기(56)는 EP 생성기(74)와 협력하여 EP들을 업데이트하는 페이즈를 제어한다.
단계 4에서, 분류 히스토그램 생성기(58)는 BW 코어(40A) 내의 다양한 컴포넌트들로부터 기입 요청들을 수집하고, L1C(46A)에 대한 임의의 복제 요청들을 회피한다. 본 개시내용의 목적들을 위해, 해당 BW 코어의 L1C에 기입 요청들을 발행하는 BW 코어의 컴포넌트는 "기입 클라이언트(write client)"라고 지칭될 수 있고, 판독 요청들을 발행하는 것은 "판독 클라이언트(read client)"라고 지칭될 수 있다. 단계 5에서, 판독/기입 중재기(60)는 판독 및 기입 클라이언트들 사이에서 중재한다. 예를 들어, EP 생성기(74) 및 LVTP 생성기(80)는 실질적으로 동시에 판독 또는 기입 요청들을 발행할 수 있고, 판독/기입 중재기(60)는 이러한 클라이언트들로부터의 요청들을 중재한다. 단계 6에서, 판독/기입 중재기(60)는 판독 및 기입 요청들을 L1C(46)에 파이프라인한다.
도 9는 BW 코어(40A)로부터의 계산 섹션(90)에 대한 추가 상세사항들을 갖는 블록도이다. 특히, 도 9는 LVTP 집합체(82A)에 주로 초점을 맞추며, LVTP 엔진(84)들이 4개의 LVTP 엔진들(84A-84D)을 포함하고, 각각의 LVTP 엔진은 L1C(46A)로부터의 LV들(91) 및 인덱스 생성기(72)로부터의 인덱스 값들을 수신한다는 점을 도시한다. 예를 들어, 하나의 실시예에서, L1C(46A) 및 TP 캐시(179)와 같은 컴포넌트들은 128 비트(또는 16 바이트)의 라인 크기를 갖는다. 또한, L1C(46A)에서의 LV들 및 TP 캐시(179)에서의 분자들 및 분모들과 같은 항목들은 4 바이트의 크기를 갖는다. 결과적으로, 단일 판독은 4개의 연속적인 값들을 반환한다. 따라서, LVTP 집합체(82A)가 L1C(46A)로부터 LV들을 판독할 때, 4개의 연속적인 LV를 수신한다. 더욱이, 각각의 LVTP 집합체 및 LV들 전부가 LVTP 집합체들 각각에서의 LVTP 엔진들 각각에 판독된다. 다음으로 각각의 LVTP 엔진은 해당 엔진에 대한 현재 LV를 생성하기 위한 프로세스에서 이러한 LV의 일부 또는 전부를 사용할 수 있다.
또한, 인덱스 생성기(72)는 4개의 연속적인 i들 및/또는 4개의 연속적인 j들을 생성하며, 이러한 i들 중 하나 및/또는 이러한 j들 중 하나는 LVTP 집합체(82A)에서의 각각의 LVTP 엔진에 전송된다. LV들 및 인덱스 생성기(72)로부터의 인덱스들에 기초하여, 이러한 LVTP 엔진들 각각은 다음으로 출력 데이터를 생성하고, 도 10에 관하여 아래에 더 상세히 설명되는 바와 같이, 해당 데이터를 레지스터들(86), L1C(46A), 및/또는 TP 캐시(179)에 저장한다. 인덱스 생성기(72)는 다른 LVTP 집합체들에서의 LVTP 엔진에 대한 인덱스를 또한 생성하고, 이러한 LVTP 엔진들 각각은 그 배정된 관측에 대한 출력을 생성하도록 LVTP 엔진(84A)처럼 작동한다.
도 10은 LVTP 엔진(84A)에 대한 추가 상세사항들을 갖는 블록도이다. 위에 표시된 바와 같이, 하나의 실시예에서, 각각의 LVTP 집합체는 4개의 LVTP 엔진들을 포함한다. LVTP 엔진(84A)은 아래에 더 상세히 설명된다. LVTP 엔진들(84B-D)은 동일한 또는 유사한 상세사항들을 포함할 수 있다. LVTP 엔진(84A)의 주요 컴포넌트들은 LV 생성기(150) 및 TP 생성기(170)이다. TP 생성기는 전이 파이프라인이라고 또한 지칭될 수 있다. 또한, 이러한 컴포넌트들이 LVTP 엔진(910)의 외부에 존재한다는 점을 나타내기 위해, 86, L1C(46A), 및 순방향 기입 선택기(88)가 점선으로 도시된다.
LV 생성기(150)는 Baum-Welch 알고리즘에 따라(예를 들어, 각각, 수학식 1 및 2에 따라) FV들 및 BV들을 생성하는 동작들을 수행한다. LVTP 집합체(82A)가 FV-생성 모드에 있을 때, LV 생성기(150)는, 각각의 FV가 i 및 j 인덱스들로 어드레싱될 수 있는 모든 상태와 링크되도록, FV들을 순차적으로 계산한다. 예를 들어, "i번째" 상태로부터 "j번째" 상태의 FV는 인덱스 "i,j"로 어드레싱될 수 있다.
하나의 실시예에서, Baum-Welch 알고리즘을 시작하기 위해, 제어 섹션(50)은 모든 LVTP 집합체(82A)를 FV-생성 모드로 설정한다. 다음으로 LVTP 엔진들은 FV 행렬(230)을 생성하도록 아래에 설명되는 바와 같이 병렬로 동작한다. 다음으로, 제어 섹션(50)은 모든 LVTP 집합체들을 BV-생성 모드로 설정한다. LVTP 엔진들은, 아래에 더 상세히 설명되는 바와 같이, BV 행렬(240), 최종 EP 행렬(212) 및 최종 TP 행렬(222)을 생성하도록 병렬로 동작한다.
도시되는 바와 같이, LV들을 생성할 때, LVTP 엔진(84A)은 LV들 및 소위 "전이 * 방출 확률들(transition * emission probabilities)"을 입력으로서 획득하고, LVTP 엔진(84A)은 계산된 LV를 출력으로서 생성한다. (본 개시내용의 목적들을 위해, 전이 * 방출 확률은 "(T*E) 확률" 또는 단순히 "T*E"라고 또한 지칭될 수 있다.) LVTP 엔진(84A)의 동작의 모드(즉, FV-생성 모드 또는 BV-생성 모드)에 의존하여, 이러한 LV들은 FV들 또는 BV들이다. LV 생성기(150)는 계산된 LV를 순방향 기입 선택기(88)에 전송할 수 있다. 다음으로 순방향 기입 선택기(88)는, src3-F 파라미터에 따라, 그리고 인덱스 생성기(72)로부터의 현재 i 및 j 인덱스들에 따라, 해당 LV를 L1C(46A)에 저장할 수 있다. 또한, LV가 BV이면, 순방향 기입 선택기(88)는 TP들을 생성하기 위한 즉각적인 소비를 위해 TP 생성기(170)에 직접 해당 BV를 전송할 수 있다.
LV들에 관하여, 하나의 실시예에서, LV 생성기(150)는, 인덱스 생성기(72)로부터의 i 및 j 인덱스 값들에 기초하여, L1C(46A)로부터 이미 계산된 LV들을 판독한다. LV 생성기(150)는 TP 생성기(170)로부터 대응하는 T*E 값들을 또한 획득한다. 특히, TP 생성기(170)는, 아래에 더 상세히 설명되는 바와 같이, T*E 값들의 세트를 레지스터들(86)에 저장할 수 있고, LV 생성기(150)는 레지스터들(86)로부터 T*E 값들의 해당 세트를 판독할 수 있다. 다음으로 LV 생성기(150) 내의 회로는 (예를 들어, LVTP 엔진(84A)이 FV 생성 모드 또는 BV 생성 모드에 있는지에 의존하여, 수학식 (1) 또는 (2)에 따라) 해당 입력 데이터에 기초하여 새로운 "계산된 LV(computed LV)"를 생성한다. 특히, 해당 회로는 타겟 관측에 대한(즉, 해당 LVTP 엔진에 배정되는 관측에 대한) 새로운 LV를 생성하기 위해 필요한 만큼 많은 상이한 T*E들 및 LV들을 계속 "스핀(spin)"하고 처리할 수 있다.
하나의 실시예 또는 시나리오에서, LV들을 생성하기 위한 LV 생성기(150)에서의 회로는 내적 트리(152), 누산기(154) 및 감소 트리(156)를 포함한다. 또한, LV 생성기(150)가 LV들을 획득할 때, 인덱스 생성기(72)로부터의 i 및 j 인덱스 값들에 기초하여, L1C(46A)로부터 LV들의 라인을 판독한다. 해당 라인은 4개의 연속적인 32 비트 LV들을 포함한다. 그리고 LV 생성기(150)가 이러한 LV들에 대응하는 T*E들을 획득할 때, 위에 표시된 바와 같이, 레지스터들(86)로부터 그들을 획득한다. 다음으로 LV 생성기(150)는, 각각의 쌍에서의 값들을 승산하기 위해 내적 트리(152)를 사용하여, 각각의 LV 및 대응하는 T*E를 쌍으로서 취급한다. 하나의 실시예에서, 내적 트리(152)는 단일-정밀도 부동-소수점("FP32") 변수들의 4개의 쌍들에 대해 내적 연산을 수행하여, 하나의 스칼라 값(예를 들어, 하나의 FP32 값)을 출력으로서 생성한다. (BW 코어(40a)는, IEEE 754-2019로서, 2019년 7월 22일에 공개된 바와 같이, 부동-소수점 산술에 대한 IEEE 754 표준(IEEE 754 Standard for Floating-Point Arithmetic)과 같은 IEEE(Institute of Electrical and Electronics Engineer) 표준에 따라 FP23 변수들을 핸들링할 수 있다.) 누산기(154)는 내적 트리(152)로부터의 출력을 수신하고 누산한다. 또한, 누산기는 해당 출력을 누산하기 위해 다수의 채널들을 사용할 수 있다. 감소 트리(156)는 이러한 채널들 전부로부터 출력을 수신하고 단일 스칼라 출력을 생성하기 위해 이를 감소시킨다. 해당 출력은 LV(FV 또는 BV)일 것이다. 따라서, 도 10에는 "계산된 LV(Computed LV)"로서 예시된다.
특히, LV 생성기(150)는 계산된 LV를 순방향 기입 선택기(88)에 전송한다. LV가 BV인 경우, 순방향 기입 선택기(88)는, src3-F 파라미터에 따라, 그리고 인덱스 생성기(72)로부터의 현재 i 및 j 인덱스들에 따라, 해당 FV를 L1C(46A)에 저장한다. 그러나, LV가 BV이면, 순방향 기입 선택기(88)는 TP들을 생성하기 위한 즉각적인 소비를 위해 해당 BV를 TP 생성기(170)에 직접 전송한다.
TP 생성기(170)는 Baum-Welch 알고리즘에 따라(예를 들어, 수학식 3에 따라) TP들을 업데이트하는 동작들을 수행한다. 위에 표시된 바와 같이, 전이-확률 생성기(170)는, TP들을 저장하기 위한 로컬 메모리인, TP 캐시(179)를 포함한다. 특히, TP들은 TP 분자들 및 TP 분모들로서 저장된다. (유사하게, EP들은 EP 분자들 및 EP 분모들로서 저장된다.)
TP 생성기(170)는 LV 생성기(150)에 의해 사용될 T*E 값들을 또한 계산한다. 시작하기 위해, TP 생성기(170)는 인덱스 생성기(72)로부터의 i 및 j 인덱스들에 기초하여 L1C(46A)로부터 현재 EP를 판독한다. TP 생성기(170)는 이러한 인덱스들에 기초하여 현재 전이 분자에 대한 적절한 어드레스를 또한 생성한다. 다음으로 TP 생성기(170)는 TP 캐시(179)로부터 현재 전이 분자를 판독하기 위해 해당 어드레스를 사용한다.
승산기(172)는 현재 전이 분자 및 현재 EP를 취하고, 이러한 값들로부터 T*E를 계산한다. 다음으로 TP 생성기(170)는, LV들을 결정하기 위해 LV 생성기(150)에 의해 사용하기 위해, 결과를 레지스터들(86)에 저장한다.
또한, TP 생성기(170)는 승산기(178), 가산기(176), 및 멀티플렉서(177)를 포함한다. 승산기(178)는 (예를 들어, 수학식 (3)에 따라) 전이 확률에 대한 분자를 계산하는 것을 돕는다. 특히, 승산기(178)는 L1C(46A)로부터 현재 FV를 판독하고, 승산기(178)는 (순방향 기입 선택기(88)를 통해) LV 생성기(150)로부터 직접 계산된 BV를 수신한다. 승산기(178)는 이러한 2개의 입력 값들을 승산하고 다음으로 결과를 가산기(176)에 전달한다. 가산기(176)는 또한 TP 캐시(179)로부터 이전 분자 값들을 획득한다. 다음으로 가산기(176)는 (예를 들어, 수학식 (3)의 합산 부분들에 따라) 현재 전이 분자에 업데이트된 전이 분자를 가산하여 사후 전이 분자를 생성하고, 가산기(176)는 이를 멀티플렉서(177)에 전송한다. 다음으로 멀티플렉서(177)는 TP 캐시(179)에 사후 전이 분자를 저장한다.
또한, 수학식 (3)에서의 분자 공식과 분모 공식은 거의 동일하고, TP 생성기(170)는 분모 또는 분자가 완료될 때를 표시하기 위해 하드웨어 플래그를 사용하여 차이를 핸들링한다. 결과적으로, TP 생성기(170)에서의 컴포넌트들은 마무리될 때까지 마무리되지 않은 값에 대한 동작들을 계속 수행한다.
TP 생성기(170)는 4개의 단일-정밀도 부동-소수점 제산들을 핸들링할 수 있는 FP(floating-point) 제산 파이프(174)를 또한 포함한다. 예를 들어, FP 제산 파이프(174)는 병렬로 작동하는 4개의 제산 파이프라인들을 포함할 수 있다. 또한, FP 제산 파이프(174)가 TP 캐시(179)로부터 판독할 때, 해당 판독 동작은 4개의 FP32 값들을 포함하는 128 비트의 데이터를 반환한다. 따라서, 하나의 제수/분모 판독은 4개의 제수들을 반환하고, 하나의 피제수/분자 판독은 4개의 피제수들을 반환한다. 다음으로 FP 제산 파이프(174)는 4개의 피제수-제수 쌍들 모두에 대해 병렬로 FP32 제산을 수행할 수 있다.
또한, 멀티플렉서(177)는, 수학식 (3)에서의 합산 부분들을 수행하기 위해 후속하여 사용되도록, TP 캐시(179)에 이전 값으로서 저장될, FP 제산 파이프(174)의 출력 또는 가산기(176)의 출력 중 어느 하나를 선택한다. 그러나, 분자 또는 분모 값들이 양자 모두 TP 캐시(179)에서 준비되지 않으면, FP 제산 파이프(174)는 인에이블되지 않을 것이다.
도 11은 EP 생성기(74)에 대한 추가 상세사항들을 갖는 블록도이다. 도시되는 바와 같이, EP 생성기(74)는 3개의 더 작은 블록들: 방출 분자 파이프(110), 방출 분모 파이프(120), 및 방출 제산 파이프(130)를 포함한다. EP 생성기(74)는 (예를 들어, 수학식 4에 따라) EP들을 생성하기 위해 이러한 블록들을 사용할 수 있다.
도시되는 바와 같이, 방출 분자 파이프(110)는 메모리 인터페이스(116), 순방향-어드레스 생성기(112), 역방향 어드레스 생성기(118), 출력-어드레스 생성기(114), 승산기(113) 및 가산기 또는 증분기(115)를 포함한다. 현재 입력 슬라이스에서의 타겟 위치 "X"에서 관측에 대한 사후 EP 분자를 생성하기 위해, 방출 분자 파이프(110)는 위치 1로부터 타겟 위치 X까지의 모든 위치들에 대해 현재 FV 분자들과 현재 BV 분자들을 합산할 필요가 있다. 결과적으로, 순방향-어드레스 생성기(112)는 EP 업데이트 제어기(56)로부터 현재 슬라이스에서의 제1 FV 분자에 대한 (L1C(46A)에서의) 베이스 어드레스를 얻는다. 마찬가지로, 역방향-어드레스 생성기(118)는 EP 업데이트 제어기(56)로부터 현재 슬라이스에서의 제1 BV 분자에 대한 베이스 어드레스를 또한 얻는다. 다음으로 순방향-어드레스 생성기(112) 및 역방향 어드레스 생성기(118)는, 메모리 인터페이스(116)를 통해, L1C(46A)로부터 제1 순방향 분자("FVNUM") 및 제1 역방향 분자("BVNUM")를 판독하기 위해 이러한 베이스 어드레스를 사용하여 적절한 어드레스를 생성한다.
다음으로 승산기(113)는 이러한 2개의 값들을 승산하고 결과적인 "작업 분자(working numerator)"를 가산기(115)에 전송한다. 방출 분자 파이프(110)는, 최종 결과를 결국 보유할 위치에 존재하기 위해, 작업 분자를 L1C에 또한 저장한다. 방출 분자 파이프(110)는 해당 어드레스를 결정하고 기입을 수행하기 위해 출력 어드레스 생성기(110) 및 메모리 인터페이스(116)를 사용할 수 있다.
다음으로 순방향-어드레스 생성기(112) 및 역방향-어드레스 생성기(112)는 판독 어드레스를 증분시키고 L1C로부터 다음 순방향 분자 및 다음 역방향 분자를 판독할 수 있다. 다음으로 승산기(113)는 이러한 2개의 값들을 승산하고 결과적인 "새로운 분자(new numerator)"를 가산기(115)에 전송한다. 다음으로 가산기(115)는 L1C(46A)로부터 작업 분자 "WorkingNUM"를 판독하고, 이것에 새로운 분자를 가산한다. 다음으로 방출 분자 파이프(110)는, 최종 결과를 결국 보유할 위치에 존재하도록, 새로운 작업 분자를 L1C에 저장한다. 이러한 프로세스는 방출 분자 파이프(110)가 타겟 위치 X에서 현재 분자들을 처리하는 것을 마무리하고 결과적인 작업 분자를 L1C(46A)에 기입할 때까지 계속될 수 있다. 다음으로 해당 값은 사후 EP 분자일 것이다.
방출 분모 파이프(120)는 방출 분자 파이프(110)와 동일한 설계 또는 유사한 설계를 가질 수 있다. 그러나, 방출 분모들을 생성하는 것 외에도, 방출 분모 파이프(120)는 또한 전이 분모를 생성한다. TP 분모를 생성하기 위해, 방출 분모 파이프(120)는 위에 설명된 것과 유사한 프로세스를 사용한다. 하지만 방출 분모 파이프(120)가 위치 X-1에 대해 분모를 계산하는 것을 마무리했을 때, 방출 제산 파이프(130)는 해당 분모를 사후 TP 분모로서 TP 캐시(179)에 저장한다. 다음으로 방출 제산 파이프(130)는 위치 X에 대한 프로세스를 실행하고, 결과적인 분모를 사후 EP 분모로서 L1C에 저장한다.
또한, EP 생성기(74)는 분자들 및 분모들을 서로 독립적으로 병렬로 계산한다.
도 12는 방출 제산 파이프(130)에 대한 추가 상세사항들을 갖는 블록도이다. 도시되는 바와 같이, 방출 제산 파이프(130)는 메모리 인터페이스(136), 분자 어드레스 생성기(132), 및 분모 어드레스 생성기(138), 출력 어드레스 생성기(134), 및 FP 제산 파이프(139)를 포함한다. 타겟 위치 "X"에 대한 EP를 생성하기 위해, 방출 제산 파이프(130)는 위치 X에 대한 분자 및 분모의 어드레스를 결정하기 위해 분자 어드레스 생성기(132) 및 분모 어드레스 생성기(138)를 사용하고, 방출 제산 파이프(130)는 L1C(46A)로부터 이러한 값들을 판독하기 위해 메모리 인터페이스(136)를 사용한다.
다음으로 FP 제산 파이프(139)는 분자를 분모로 제산하고 결과적인 EP를 출력 어드레스 생성기(134)에 전송하며, 이는 해당 EP를 저장하기 위한 L1C에서의 적절한 위치를 결정한다. 다음으로 메모리 인터페이스(136)는 해당 EP를 해당 위치에 기입하여, 사후 EP로서 역할을 한다.
더욱이, 방출 제산 파이프(130), 방출 분자 파이프(110), 방출 분모 파이프(120), 및 TP 생성기(170)와 같은 컴포넌트들이 TP들, EP들, EP 분모들 등과 같은 값들을 생성할 때, 이러한 값들은 값들의 세트 또는 벡터를 실제로 포함할 수 있고, 각각의 잠재적 관측 상태에 대해 상이한 값을 갖는다. 예를 들어, 4개의 잠재적인 관측 상태들이 존재하면, BW 서브시스템(50)은 사후 EP들, 사후 TP들 등과 같은 항목들에 대한 4개의 확률들의 세트 또는 벡터를 저장한다.
또한, 본 명세서에 설명되는 BW 서브시스템은, 애플리케이션들이, 잠재적인 관측 상태들의 수를 포함하는, 수많은 상이한 파라미터들을 명시하는 것을 허용한다는 점에서, 매우 유연하다.
개시된 BW 서브시스템은 실행 시간에 관하여 또한 효율적인데, 그 이유는 BV 스테이지, EP 업데이트 스테이지, 및 TP 업데이트 스테이지 모두가 FV 스테이지의 완료 후에 병렬로 작동하기 때문이다. 더욱이, LV 생성기로부터의 BV 데이터는 캡처되어 EP 업데이트 및 TP 업데이트 스테이지들에서 직접 사용된다. 또한, FV들이 L1C로부터 판독되고, 이들은 다른 스테이지들의 실행 전에 저장된 것이다. 그리고 EP 업데이트 및 TP 업데이트가 L1C로부터 FV들을 판독하고, 그렇게 함으로써 RAM에 대한 고가의 액세스를 회피한다.
BW 서브시스템 내에서 BV 데이터를 쉽게 이용가능하게 하는 것의 하나의 장점은 그렇게 하는 것이 BW 서브시스템이, 승산들과 같은, 중복 계산들을 회피하는 것을 가능하게 한다는 점이다. 또한, BW 서브시스템 내에서 BV 데이터를 쉽게 이용가능하게 하는 것은, 다른 접근법들에 비해, BW 코어들과 다른 컴포넌트들 사이에 필요한 통신 대역폭을 감소시킨다. 예를 들어, 본 접근법은 TP 업데이트 스테이지가 BV 데이터를 재계산하거나 또는 RAM으로부터 BV 데이터를 검색할 필요없이 BV 데이터를 TP 업데이트 스테이지에 이용가능하게 한다.
그리고 본 교시내용은 TP들을 절약하기 위해 BW 코어에서의 TP 캐시를 제공하는 것에 의해 대역폭 효율을 추가로 강화한다. 결과적으로, 이러한 값들을 판독하기 위해 외부 대역폭이 필요하지 않다.
본 교시내용은 BV 스테이지가 여전히 진행 중인 동안 BW 서브시스템이, 해당 데이터가 이용가능하게 됨에 따라 BV 스테이지 동안 생성되는 데이터를 사용하여, TP들 및 EP들을 업데이트하기 시작하는 것을 또한 가능하게 한다. 이러한 접근법은 "부분 계산 접근법(the partial compute approach)"이라고 지칭될 수 있다. 대조적으로, 다른 접근법들은 FV 및 BV 스테이지들이 완료된 후에만 EP들 및 TP들을 업데이트하기 시작할 수 있다.
부분 계산 접근법은 전체 메모리 액세스 및 스토리지 요건들을 감소시킬 수 있고, BW 서브시스템 외부의 계산 리소스들의 이용을 증가시키지 않고, 다른 접근법들에 비해 병렬성을 증가시키고 Baum-Welch 알고리즘의 실행 시간을 감소시킬 수 있다.
T*E 룩업 테이블
도 13은 BW 가속기의 대안적인 실시예에 대한 상세사항들을 갖는 블록도이다. 특히, 도 13은 PHMM(profile hidden Markov model)에 따라 관측들을 효율적으로 처리하기 위한 특징들을 갖는 LVTP 엔진(910)에 주로 초점을 맞춘다. 예를 들어, 생물학 분야에서의 관측들이 PHMM에 따른 처리에 적합할 수 있다.
하나의 실시예 또는 시나리오에서, LVTP 엔진(910)은, LVTP 엔진의 특정 양태들 및 BW 코어의 제어 섹션의 특정 양태들에 대한 변경들을 제외하고, 데이터 처리 시스템(10)과 동일한 종류의 컴포넌트들을 포함하는 데이터 처리 시스템에서의 BW 가속기에 존재한다. 도 13의 실시예에서, LVTP 엔진(910)은 BW 가속기(41)가 PHMM에 따라 관측들을 효율적으로 분석하는 것을 가능하게 하는 특징들을 포함한다. 특히, LVTP 엔진(910)은 T*E 값들에 대해 최대 36개의 엘리먼트들을 사용하는 PHMM으로 구성될 수 있다. 본 개시내용의 목적들을 위해, 이러한 PHMM은 "일반 PHMM(generic PHMM)"이라고 지칭될 수 있다. 따라서, 도 13에서의 것들과 같은 특징들을 갖는 BW 서브시스템, BW 가속기, 및 BW 코어는, 각각, "일반 BW 서브시스템(generic BW subsystem)", "일반 BW 가속기(generic BW accelerator)", 및 "일반 BW 코어(generic BW core)"라고 지칭될 수 있다.
도시되는 바와 같이, LVTP 엔진(910)은 LV 생성기(920) 및 TP 생성기(930)를 포함한다. LV 생성기(150)와 같이, LV 생성기(920)는 내적 트리(922), 누산기(924), 및 감소 트리(926)를 포함한다. 그러나, LV 생성기(150)와 달리, LV 생성기(920)는 TELUT 스토리지(980)에 저장되는 TELUT들(T*E look-up tables)을 또한 포함한다. LV 생성기(920)는, TELUT들이 인에이블될 때, 레지스터들을 통해 TP 생성기로부터 T*E들을 획득하기보다는 오히려, 내적 트리(922)가 TELUT 스토리지(980)에서의 TELUT들로부터 T*E들을 획득한다는 점을 제외하고는, LV 생성기 (920 150)와 같이 동작할 수 있다. 특히, TELUT들이 인에이블될 때, LV 생성기(920)는 TELUT 스토리지(980)로부터 판독할 TELUT 셀 또는 셀들을 결정하기 위해 인덱스 생성기로부터의 i 및 j 인덱스들을 사용하여, 현재 T*E 값 또는 값들을 획득한다.
내적 트리(922)에서 승산기 당 하나의 TELUT가 이용된다. 결과적으로, 도 13에서의 TELUT 스토리지(980)는 4개의 TELUT들을 포함하고, 이러한 테이블들 각각으로부터의 하나의 값은 내적 트리(922)에 공급된다. 또한, 하나의 실시예 또는 시나리오에서, 이러한 4개의 TELUT들 각각은 1 x 36 테이블로서 조직되고, i,j의 각각의 조합은 엔트리 또는 셀에 매핑된다. LVTP 엔진(910)이 관측들을 처리하기 시작하기 전에, 글로벌 이벤트 제어기는 적절한 값들을 갖는 TELUT들을 TELUT 스토리지(980)에 로딩할 수 있다.
하나의 실시예 또는 시나리오에서, TELUT 스토리지(980)에서의 TELUT들은 미리 설정된(즉, 초기) 전이 및 방출 확률들의 모든 가능한 조합들을 캡처한다. 초기 전이 및 방출 확률들의 모든 조합의 곱들이 LUT들에 저장되는데 그 이유는 이러한 계산들이 많은 타임스탬프들에 걸쳐 중복적이고, 이러한 곱이 Baum-Welch 알고리즘의 순방향 및 역방향 계산 양자 모두에서 공통 파라미터이기 때문이다.
TP 생성기(170)와 같이, TP 생성기(930)는 승산기(932), 가산기(934), 멀티플렉서(936), TP 캐시(940), FP 제산 파이프(942), 및 승산기(944)를 포함한다. 그러나, TELUT들이 인에이블될 때, 승산기(944)는 디스에이블되거나 또는 사용되지 않을 수 있다. 결과적으로, 승산기(944)는 점 채움으로 도시된다.
TELUT는 최대 36개의 LUT 엔트리들을 보유할 수 있기 때문에, LVTP 엔진(910)은 전이 및 방출 확률의 별도의 조합을 위해 36개의 엔트리들 내에 맞을 수 있는 임의의 애플리케이션과 함께 효과적으로 그리고 효율적으로 사용될 수 있다. 그러나, 다른 타입들의 애플리케이션들에 대해, TELUT들(또는 TELUT 스토리지(980))이 디스에이블될 수 있고, LV 생성기(920)가 TP 생성기(930)로부터 계산된 T*E 값들을 획득할 수 있고, 전이 확률들이 승산을 수행하기 위해 TP 캐시로부터 판독될 수 있고, TP 생성기(930)가 L1C로부터 방출 확률들을 판독할 수 있다.
TELUT 스토리지(980) 및 그 안의 TELUT들은 TP 생성기(930)가 전이 및 방출 확률들의 중복 승산들을 회피하는 것을 가능하게 한다. 하나의 실시예 또는 시나리오에서, TELUT 스토리지(980)에서 TELUT들을 사용하여, LVTP 엔진(910)은 LVTP 엔진(910) 당 66%까지의 처리 대역폭 감소를 실현한다. 예를 들어, TP 생성기(930)는, 판독 길이가 약 650개의 베이스들일 때, 순방향 페이즈들에서의 약 1억개의 승산들 및 역방향 페이즈에서의 6천 1백만개의 승산들을 회피할 수 있다.
도 13에서, 레지스터(950), L1C(970), 및 순방향 기입 선택기(960)는 이러한 컴포넌트들이 LVTP 엔진(910)의 외부에 존재한다는 점을 나타내기 위해 점선들로 도시된다. 위에 표시된 바와 같이, 이러한 컴포넌트들은 데이터 처리 시스템(10)에 관하여 논의된 것과 동일한 종류의 컴포넌트들일 수 있다.
LV들을 분류하고 필터링함
또한, BW 코어의 제어 섹션은 상태의 순방향 또는 역방향 값이 계산될 필요가 있는지를 결정하기 위해 히스토그램-기반 분류 메커니즘을 사용하는 분류 히스토그램 관리기(990)를 포함할 수 있다. 일부 애플리케이션들에서, 분류는 Baum-Welch 알고리즘의 정확도를 감소시키지 않고 각각의 타임스탬프에서 계산될 필요가 있는 상태들의 수를 크게 감소시키는(즉, 필터링하는) 것을 가능하게 할 수 있다.
일반적으로, 분류 및 필터링이 인에이블될 때, 분류 히스토그램 관리기(990)는 FV들 및 BV들을 분류하고, 다음으로 분류 히스토그램 관리기(990)는 계산 요건들을 감소시키기 위해 특정 임계값 아래의 값들을 폐기하는데, 그 이유는 이러한 값들이 결과에 상당히 기여하지 않을 것이기 때문이다. 특히, 분류가 인에이블되면, 분류 히스토그램 관리기(990)는 각각의 기입 값(예를 들어, 순방향 값 Ft (i))을 16개의 미리 정의된 임계값들과 비교하여 임계값 아래로 떨어지는 기입 값들의 수를 카운트한다. 하나의 실시예 또는 시나리오에서, 분류 히스토그램 관리기(990)는 단일-정밀도 부동-소수점 수에 대한 전체 범위를 16개의 동일한 부분들로 분할하고(예를 들어, 각각의 그룹 범위는 4.25E+37임), 분류 히스토그램 관리기(990)는 어느 범위 또는 임계 확률 값이 임계 수의 기입들을 필터링할 것인지를 결정한다. 다시 말해서, 분류 히스토그램 관리기(990)는 기입들을 필터링하기 위해 확률-값 임계값 및 기입-카운트 임계값을 사용한다.
예를 들어, FV 행렬이 10,000개의 FV들을 포함하면, 분류 히스토그램 관리기(990)는 이러한 FV들을 내림차순으로 10,000개의 값들로 분류하고, 다음으로 값들의 수를 기입-카운트 임계값 이하로 감소시키기 위해 어느 확률-값 임계값이 사용될 수 있는지를 결정한다. 예를 들어, 기입-카운트 임계값이 1000개의 기입들 또는 10%의 기입들이면, 분류 히스토그램 관리기(990)는 처리되어야 하는 기입들의 수를 1000개로 감소시키기 위해 어느 확률-값 임계값이 사용될 수 있는지를 결정한다. 다음으로, 다음 타임스탬프 동안, 분류 히스토그램 관리기(990)는 계산된 확률-값 임계값 아래로 떨어지는 모든 기입들을 필터링한다. 결과적으로, 전체 실행은 10,000개의 FV들 대신에 1000개의 FV들을 사용하여 수행될 것이다. 일부 애플리케이션들(예를 들어, 게놈들을 폴리싱하기 위한 애플리케이션들)에 대해, 이러한 종류의 근사화는 Baum-Welch 알고리즘의 전체 정확도에 영향을 미치지 않을 것이다.
또한, 분류 히스토그램 관리기(990)는 각각의 그룹에 대한 임계값들을 요구되는 바에 따라 변화시키도록 구성가능하다. 특정 임계값을 초과하는 상태들의 카운트는 분류 히스토그램 관리기(990)가 특정 임계값을 선택하여 다음 타임스탬프에서 선택된 임계값 아래로 떨어지는 상태들을 효율적으로 폐기하는 것을 가능하게 한다.
표준 PHMM을 일반 PHMM으로 변환함
임의의 표준 PHMM을 일반적인 PHMM들로 변환하는 것이 이론적으로 가능하지만, 정확도 또는 계산 리소스 목적들을 위해 항상 실용적인 것은 아닐 수 있다. 논의의 목적들 위해, "표준 HMM(standard HMM)"은 "G1(V1, A1)"로 표기되고, "일반 PHMM(generic PHMM)"은 "G(V, A)"로 표기된다. 또한, 양자 모두의 그래프들은 길이 "N = nS G"인 동일한 단일 시퀀스 "S G"를 표현하도록, 그리고 소스 상태 "v0" 및 싱크 상태 "vN+1"를 갖도록 구성되는 것으로 가정되며, 여기서 이들은 그래프의 맨 처음과 끝에 위치된다. 트레이닝 또는 추론 단계에서 사용할 입력 시퀀스 "S"가 존재한다고 또한 가정된다. 표준 및 일반 PHMM들 양자 모두에서의 정합 상태들은 정합 및 치환 이벤트들을 동일하게 수행한다. 이러한 가정들에 기초하여, 일반 PHMM들은 (a) 표준 PHMM이 삽입할 수 있는 것만큼 많은 문자들을 삽입할 수 있는 것과 (b) 표준 PHMM이 삭제할 수 있는 것만큼 많은 문자들을 삭제할 수 있는 것 양자 모두를 할 수 있으며, 이는 일반 PHMM이 표준 PHMM에 비교하여 할 수 있는 수정들의 조합들을 고려할 때 일반 PHMM이 어떠한 이론적 제한들도 갖지 않는다는 점을 증명한다는 것을 알 수 있다.
첫째, 표준 PHMM이 2개의 문자들 SG[t] 및 SG[t + 1] 사이에 삽입할 수 있는 문자들의 최대 수는 nS이라는 점이 주장된다. 이러한 주장은 다음의 보조정리: 삽입 상태 vt I,1는 결코 nS + 1만큼 많이 방문될 수 없다에 의해 증명된다. 이러한 것은 삽입 상태, vt I,1,를 방문하는 것이 입력 시퀀스 S로부터 문자를 소비(즉, 방출)하기 때문인 것으로 알려져 있다. 따라서, vt I,1를 nS 회 이하로 방문하는 것만이 가능하다. 따라서, 최대 삽입 상태들 파라미터가 l = nS 로 설정되면, 일반 PHMM은 표준 PHMM이 삽입할 수 있는 만큼 많은 문자들을 삽입할 수 있다는 점을 알 수 있다.
둘째, 표준 PHMM이 SG로부터 삭제할 수 있는 문자들의 최대 수는 nSG이라는 점이 주장된다. 이러한 주장은 다음의 보조정리: 표준 PHMM에서 nSG 삭제 상태들 이하가 존재하는데 그 이유는 (a) 정합 상태들만큼 많은 삭제 상태들만이 존재하고 (b) S G에서 각각의 문자에 대해 단일 정합 상태만이 존재하기 때문이다에 의해 증명된다. 따라서, nSG보다 더 많은 삭제 상태들이 존재할 수 없다. 따라서, nSG 문자들보다 많이 삭제하는 것은 불가능하다. 일반 PHMM은 P(α0,j) > 0 ∀ 1 < j ≤ N이면 표준 pHMM이 삭제할 수 있는 만큼 많은 문자들을 삭제할 수 있다.
그럼에도 불구하고, 일반 BW 가속기를 갖는 일반 PHMM을 구현할 때 실제 제한들이 존재한다.
추가적 실시예들
도 14는 하나 이상의 실시예에 따른 시스템(1200)의 블록도이다. 시스템(1200)은, 제어기 허브(1220)에 연결되는, 하나 이상의 프로세서(1210, 1215)를 포함할 수 있다. 하나의 실시예에서, 제어기 허브(1220)는 GMCH(graphics memory controller hub)(1290) 및 IOH(Input/Output Hub)(1250)(개별 칩들 상에 있을 수 있음)를 포함하고; GMCH(1290)는 메모리(1240) 및 코프로세서(1245)에 연결되는 그래픽 제어기 및 연결된 메모리 내의 동작들을 제어하는 메모리 제어기를 포함하고; IOH(1250)는 I/O(input/output) 디바이스들(1260)을 GMCH(1290)에 연결한다. 대안적으로, 메모리 및 그래픽 제어기들 중 하나 또는 양자 모두는 프로세서 내에 통합되고, 메모리(1240) 및 코프로세서(1245)는 프로세서(1210)에 직접 연결되고, 제어기 허브(1220)는 IOH(1250)와 단일 칩에 있다.
추가적인 프로세서들(1215)의 선택적 속성이 도 14에 파선들로 표기된다. 각각의 프로세서(1210, 1215)는 하나 이상의 처리 코어를 포함할 수 있고, 프로세서(12)의 일부 버전일 수 있다.
메모리(1240)는, 예를 들어, DRAM(dynamic random access memory), PCM(phase change memory), 또는 이러한 둘의 조합일 수 있다. 적어도 하나의 실시예에 대하여, 제어기 허브(1220)는 FSB(frontside bus)와 같은 멀티-드롭 버스(multi-drop bus), QPI(QuickPath Interconnect)와 같은 포인트-투-포인트 인터페이스, 또는 유사한 접속(1295)을 통해 프로세서(들)(1210, 1215)와 통신한다.
하나의 실시예에서, 코프로세서(1245)는, 예를 들어, 하이-스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, GPU(graphics processing unit), GPGPU(general purpose GPU), 내장형 프로세서, BW 가속기 등과 같은, 특수-목적 프로세서이다. 하나의 실시예에서, 제어기 허브(1220)는 통합 그래픽 가속기를 포함할 수 있다.
아키텍처, 마이크로아키텍처, 열, 전력 소비 특성들 등을 포함하는 성능의 메트릭들의 스펙트럼의 면에서 물리적 리소스들(1210, 1215) 사이에 다양한 차이가 존재할 수 있다.
하나의 실시예에서, 프로세서(1210)는 일반적인 타입의 데이터 처리 동작들을 제어하는 명령어들을 실행한다. 이러한 명령어들 내에는 코프로세서 명령어들이 내장될 수 있다. 프로세서(1210)는 이러한 코프로세서 명령어들을 부속된 코프로세서(1245)에 의해 실행되어야 하는 타입의 것으로 인식한다. 따라서, 프로세서(1210)는 이러한 코프로세서 명령어들(또는 코프로세서 명령어들을 표현하는 제어 신호들)을 코프로세서 버스 또는 다른 인터커넥트 상에서 코프로세서(1245)에 발행한다. 코프로세서(들)(1245)는 수신된 코프로세서 명령어들을 수락하여 실행한다.
도 15는 하나 이상의 실시예에 따른 제1의 보다 구체적인 예시적인 시스템(1300)의 블록도이다. 도 15에 도시되는 바와 같이, 멀티프로세서 시스템(1300)은 포인트-투-포인트 인터커넥트 시스템이며, 포인트-투-포인트 인터커넥트(1350)를 통해 연결되는 제1 프로세서(1370) 및 제2 프로세서(1380)를 포함한다. 프로세서들(1370 및 1380) 각각은 프로세서(12)의 일부 버전일 수 있다. 하나의 실시예에서, 프로세서들(1370 및 1380)은 각각 프로세서들(1210 및 1215)이고, 한편 코프로세서(1338)는 코프로세서(1245)이다. 다른 실시예에서, 프로세서들(1370 및 1380)은 각각 프로세서(1210) 및 코프로세서(1245)이다. 대안적으로, 프로세서(1380)는 BW 가속기일 수 있다.
프로세서들(1370, 1380)은, 각각, IMC(Integrated Memory Controller) 유닛들(1372, 1382)을 포함하는 것으로 도시된다. 프로세서(1370)는 버스 제어기 유닛의 P-P(point-to-point) 인터페이스들(1376 및 1378)을 그 일부로서 또한 포함하고; 유사하게, 제2 프로세서(1380)는 P-P 인터페이스들(1386 및 1388)을 포함한다. 프로세서들(1370, 1380)은 P-P 인터페이스 회로들(1378, 1388)을 사용하여 P-P 인터페이스(1350)를 통해 정보를 교환할 수 있다. 도 15에 도시되는 바와 같이, IMC들(1372 및 1382)은 프로세서들을 각각의 메모리들, 즉 메모리(1332) 및 메모리(1334)에 연결하며, 이는 각각의 프로세서들에 국부적으로 부속되는 메인 메모리의 일부일 수 있다.
프로세서들(1370, 1380)은 포인트 투 포인트 인터페이스 회로들(1376, 1394, 1386, 1398)을 사용하여 개별 P-P 인터페이스들(1352, 1354)을 통해 칩셋(1390)과 정보를 각각 교환할 수 있다. 칩셋(1390)은 고성능 인터페이스(1339)를 통해 코프로세서(1338)와 정보를 선택적으로 교환할 수 있다. 하나의 실시예에서, 코프로세서(1338)는, 예를 들어, 하이-스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장형 프로세서 등과 같은 특수-목적 프로세서이다.
공유 캐시(도시되지 않음)가 양자 모두의 프로세서들의 외부에 또는 어느 하나의 프로세서에 포함될 수 있지만, P-P 인터커넥트를 통해 프로세서들과 접속되어, 프로세서가 저 전력 모드로 배치되면 어느 하나의 프로세서 또는 양자 모두의 프로세서의 로컬 캐시 정보가 공유 캐시에 저장될 수 있다.
칩셋(1390)은 인터페이스(1396)를 통해 제1 버스(1316)에 연결될 수 있다. 하나의 실시예에서, 제1 버스(1316)는 PCI(Peripheral Component Interconnect) 버스이거나, 또는 PCI Express 버스 또는 다른 제3 세대 I/O 인터커넥트 버스와 같은 버스일 수 있지만, 본 발명의 범위가 이에 제한되는 것은 아니다.
도 15에 도시되는 바와 같이, 제1 버스(1316)를 제2 버스(1320)에 연결하는 버스 브릿지(1318)와 함께, 다양한 I/O 디바이스들(1314)이 제1 버스(1316)에 연결될 수 있다. 하나의 실시예에서, 코프로세서들, 하이-스루풋 MIC 프로세서들, GPGPU들, (예를 들어, 그래픽 가속기들 또는 DSP(digital signal processing) 유닛들과 같은) 가속기들, FPGA들(field programmable gate arrays), 또는 임의의 다른 프로세서와 같은, 하나 이상의 추가적인 프로세서(1315)가 제1 버스(1316)에 연결된다. 하나의 실시예에서, 제2 버스(1320)는 LPC(low pin count) 버스일 수 있다. 하나의 실시예에서, 예를 들어, 키보드 및/또는 마우스(1322), 통신 디바이스들(1327), 및 명령어들/코드 및 데이터(1330)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 스토리지 디바이스와 같은 스토리지 유닛(1328)을 포함하는 다양한 디바이스들이 제2 버스(1320)에 연결될 수 있다. 추가로, 오디오 I/O(1324)가 제2 버스(1320)에 연결될 수 있다. 다른 아키텍처들이 가능하다는 점에 주목한다. 예를 들어, 도 15의 포인트-투-포인트 아키텍처 대신에, 시스템은 멀티-드롭 버스 또는 다른 이러한 아키텍처를 구현할 수 있다.
도 16은 하나 이상의 실시예에 따른 제2의 보다 구체적인 예시적인 시스템(1400)의 블록도이다. 도 15의 특정 양태들은 도 16의 다른 양태들을 불명료하게 하는 것을 회피하기 위해 도 16으로부터 생략되었다.
도 16은 프로세서들(1370, 1380)이, 각각, 통합 메모리 및 I/O 제어 로직("CL")(1372, 1382)을 포함할 수 있다는 점을 예시한다. 따라서, CL(1372, 1382)은 통합 메모리 제어기 유닛들을 포함하고 I/O 제어 로직을 포함한다. 도 16은, CL(1372, 1382)에 메모리(1332, 1334)가 연결되어 있을 뿐만 아니라, 또한 I/O 디바이스들(1414)이 제어 로직(1372, 1382)에 또한 연결되어 있는 것을 예시하고 있다. 레거시 I/O 디바이스들(1415)이 칩셋(1390)에 연결된다.
도 17은 하나 이상의 실시예에 따른 SoC(system on a chip)(1500)의 블록도이다. 점선 박스들은 더 진보된 SoC들 상의 선택적 특징들이다. 도 17에서, 인터커넥트 유닛(들)(1502)은, 하나 이상의 코어(1102A-N)(구성 캐시 유닛들(1104A-N)을 포함함)의 세트 및 공유 캐시 유닛(들)(1106)을 포함하는 애플리케이션 프로세서(1510); 시스템 에이전트 유닛(1110); 버스 제어기 유닛(들)(1116); 통합 메모리 제어기 유닛(들)(1114); 통합 그래픽 로직, 이미지 프로세서, 오디오 프로세서, 비디오 프로세서, 및/또는 BW 가속기를 포함할 수 있는 하나 이상의 코프로세서(1520)의 세트; SRAM(static random-access memory) 유닛(1530); DMA(direct memory access) 유닛(1532); 및 하나 이상의 외부 디스플레이에 연결하기 위한 디스플레이 유닛(1540)에 연결된다. 하나의 실시예에서, 코프로세서(들)(1520)는, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 하이-스루풋 MIC 프로세서, 내장형 프로세서, 보안 프로세서 등과 같은 특수-목적 프로세서를 포함한다.
실시예들은 다음의 예들을 또한 포함한다:
예 A1은 적어도 하나의 BW 코어, 및 이러한 BW 코어에서의 LV 생성기를 포함하는 프로세서 패키지이다. LV 생성기는 관측들의 세트에 대한 FV들 및 BV들을 생성한다. BW 코어는 관측들의 세트에 대한 TP들을 생성하는 TP 생성기를 또한 포함한다. BW 코어는 관측들의 세트에 대한 EP들을 생성하는 EP 생성기를 또한 포함한다. BW 코어는 FV들, BV들, EP들, 및 TP들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성한다.
예 A2는 예 A1에 따른 프로세서 패키지로서, BW 코어에서의 LVTP 엔진을 추가로 포함한다. LVTP 엔진은 LV 생성기 및 TP 생성기를 포함한다. LV 생성기는 완료된 BV를 생성하는 것에 응답하여 완료된 BV를 TP 생성기에 이용가능하게 한다. TP 생성기는 LV 생성기가 BV들을 생성하는 것을 마무리하기 전에 TP들 중 적어도 하나를 생성하기 위해 해당 완료된 BV를 사용한다.
예 A3은 예 A2에 따른 프로세서 패키지로서, EP 생성기는 LV 생성기가 BV들을 생성하는 것을 마무리하기 전에 관측들의 세트에 대한 적어도 하나의 EP를 생성한다.
예 A4는 예 A1에 따른 프로세서 패키지로서, BW 코어에서의 적어도 제1 및 제2 LVTP 엔진들을 추가로 포함한다. 제1 LVTP 엔진은 관측들의 세트로부터 관측들의 제1 서브세트에 대한 FV들을 생성하는 제1 LV 생성기를 포함한다. 제2 LVTP 엔진은 관측들의 세트로부터 관측들의 제2 서브세트에 대한 FV들을 생성하는 제2 LV 생성기를 포함한다. 제1 및 제2 LVTP들은 FV들을 생성할 때 병렬로 작동한다. 예 A4는 예들 A2-A3 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 A5는 예 A4에 따른 프로세서 패키지로서, BW 코어에서의 적어도 제1 및 제2 LVTP 집합체들을 추가로 포함한다. 제1 LVTP 집합체는 제1 및 제2 LVTP 엔진들을 포함하고, 제2 LVTP 집합체는 제3 및 제4 LVTP 엔진들을 포함한다. 또한, 제1, 제2, 제3 및 제4 LVTP 엔진들은 FV를 생성할 때 병렬로 작동한다.
예 A6은 예 A1에 따른 프로세서 패키지로서, BW 코어와 통신하는 글로벌 이벤트 제어기를 추가로 포함한다. 글로벌 이벤트 제어기는 관측들의 세트에 Baum-Welch 알고리즘을 적용하기 위한 파라미터들을 애플리케이션이 명시하는 것을 가능하게 하고, 파라미터들은 얼마나 많은 잠재적 상태들이 관측에 대해 이용가능한지를 명시하는 수치 파라미터를 포함한다. 예 A6은 예들 A2-A5 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 A7은 예 A1에 따른 프로세서 패키지로서, BW 코어는 처리될 관측 슬라이스들의 수를 명시하는 제1 파라미터 및 관측 슬라이스 당 처리될 관측들의 수를 명시하는 제2 파라미터를 포함하는 BW 가속 명령어를 지원한다. 예 A7은 예들 A2-A6 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 A8은 예 A1에 따른 프로세서 패키지로서, BW 코어에서의 TP 캐시를 추가로 포함하고, TP 생성기는 생성된 TP들을 TP 캐시에 저장하고 TP 캐시로부터 TP 데이터를 판독한다. 예 A8은 예들 A2-A7 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 A9는 예 A8에 따른 프로세서 패키지로서, BW 코어와 통신하는 글로벌 이벤트 제어기를 추가로 포함한다. 글로벌 이벤트 제어기는 초기 TP 행렬에 대한 TP들을 TP 캐시에 복사한다.
예 A10은 예 A1에 따른 프로세서 패키지로서, BW 코어에서의 L1C를 추가로 포함한다. 또한, EP 생성기는 생성된 EP들을 L1C에 저장한다. 예 A10은 예들 A2-A9 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 B1은 호스트 프로세서, 호스트 프로세서와 통신하는 RAM, 및 호스트 프로세서와 통신하는 적어도 하나의 BW 코어를 포함하는 데이터 처리 시스템이다. BW 코어는 관측들의 세트에 대한 FV들 및 BV들을 생성하는 LV 생성기, 관측들의 세트에 대한 TP들을 생성하는 TP 생성기; 및 관측들의 세트에 대한 EP들을 생성하는 EP 생성기를 포함한다. 또한, BW 코어는 FV들, BV들, EP들, 및 TP들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성한다.
예 B2는 예 B1에 따른 데이터 처리 시스템으로서, BW 코어에서의 LVTP 엔진을 추가로 포함한다. LVTP 엔진은 LV 생성기 및 TP 생성기를 포함한다. 또한, LV 생성기는 완료된 BV를 생성하는 것에 응답하여 완료된 BV를 TP 생성기에 이용가능하게 하고, TP 생성기는 LV 생성기가 BV들을 생성하는 것을 마무리하기 전에 TP들 중 적어도 하나를 생성하기 위해 해당 완료된 BV를 사용한다.
예 B3은 예 B1에 따른 데이터 처리 시스템으로서, 호스트 프로세서, BW 코어, 및 글로벌 이벤트 제어기를 포함하는 프로세서 패키지를 추가로 포함한다. 글로벌 이벤트 제어기는 관측들의 세트에 Baum-Welch 알고리즘을 적용하기 위한 파라미터들을 애플리케이션이 명시하는 것을 가능하게 하고, 파라미터들은 얼마나 많은 잠재적 상태들이 관측에 대해 이용가능한지를 명시하는 제1 파라미터를 포함한다. 예 B3은 예 B2의 특징을 또한 포함할 수 있다.
예 B4는 예 B1에 따른 데이터 처리 시스템으로서, 적어도 하나의 BW 코어는 제1 BW 코어 및 제2 BW 코어를 포함한다. 또한, 데이터 처리 시스템은 글로벌 이벤트 제어기를 추가로 포함한다. 글로벌 이벤트 제어기는, (a) 애플리케이션으로부터의 관측들의 원래의 세트를 제1 및 제2 서브세트들로 자동으로 분할하고, (b) 제1 BW 코어로 하여금 제1 서브세트에 대한 TP들을 생성하게 하고, (c) 제2 BW 코어로 하여금 제2 서브세트에 대한 TP들을 생성하게 한다. 예 B4는 예들 B2-B3 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 B5는 예 B4에 따른 데이터 처리 시스템으로서, 제1 BW 코어에서의 제1 L1C 및 제2 BW 코어에서의 제2 L1C를 추가로 포함한다. 또한, 글로벌 이벤트 제어기는, (a) 관측들의 제1 서브세트 및 필터들의 제1 세트를 포함하는 제1 타일을 자동으로 생성하고, (b) 관측들의 제2 서브세트 및 필터들의 제2 세트를 포함하는 제2 타일을 자동으로 생성하고, (c) 제1 타일을 제1 L1C에 로딩하고, (d) 제2 타일을 제2 L1C에 로딩한다.
예 B6은 예 B1에 따른 데이터 처리 시스템으로서, BW 코어에서의 적어도 제1 및 제2 LVTP 엔진들을 추가로 포함한다. 제1 LVTP 엔진은 관측들의 세트로부터 관측들의 제1 서브세트에 대한 FV들을 생성하는 제1 LV 생성기를 포함한다. 제2 LVTP 엔진은 관측들의 세트로부터 관측들의 제2 서브세트에 대한 FV들을 생성하는 제2 LV 생성기를 포함한다. 제1 및 제2 LVTP들은 FV들을 생성할 때 병렬로 작동한다. 예 B6은 예들 B2-B5 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 B7은 예 B6에 따른 데이터 처리 시스템으로서, 적어도 하나의 BW 코어는 제1 BW 코어 및 제2 BW 코어를 포함하고; 제1 BW 코어는, 다수의 LVTP 엔진들을 각각 포함하는, 다수의 LVTP 집합체들을 포함하고; 제2 BW 코어는, 다수의 LVTP 엔진들을 각각 포함하는, 다수의 LVTP 집합체들을 포함하고; 상기 BW 코어들 전부에서의 상기 LVTP 집합체들 전부로부터의 LVTP 엔진들은 FV들을 생성할 때 병렬로 작동한다.
예 C1은 컴퓨터-판독가능 매체, 및 컴퓨터-판독가능 매체에서의 명령어들을 포함하는 장치로서, 이러한 명령어는, 적어도 하나의 BW 코어를 포함하는 BW 서브시스템을 포함하는 데이터 처리 시스템에서의 호스트 코어에 의해 실행될 때, BW 서브시스템으로 하여금 (a) 관측들의 세트에 대한 FV들 및 BV들을 생성하고; (b) 관측들의 세트에 대한 TP들을 생성하고; (c) 관측들의 세트에 대한 EP들을 생성하게 하고; 명령어들은, 실행될 때, BW 서브시스템으로 하여금, FV들, BV들, EP들, 및 TP들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성하게 한다.
예 C2는 예 C1에 따른 장치로서, 명령어들은, 실행될 때, BW 서브시스템에서의 글로벌 이벤트 제어기로 하여금, 애플리케이션에 의해 제공되는 파라미터들에 기초하여, BW 서브시스템을 구성하게 하고, 파라미터들은 얼마나 많은 잠재적 상태들이 관측에 대해 이용가능한지를 명시하는 수치 파라미터를 포함한다.
예 C3은 예 C2에 따른 장치로서, 명령어들은, 실행될 때, 추가로 글로벌 이벤트 제어기로 하여금 (a) 애플리케이션으로부터의 관측들의 원래의 세트를 제1 및 제2 서브세트들로 자동으로 분할하고, (b) 제1 서브세트에 대한 FV들을 생성하기 위해 BW 서브시스템에서의 제1 BW 코어를 사용하고, (c) 제2 서브세트에 대한 FV들을 생성하기 위해 BW 서브시스템에서의 제2 BW 코어를 사용하게 한다.
예 D1은 프로세서 패키지로서, 적어도 하나의 BW 코어; BW 코어에서의 LV 생성기- LV 생성기는 관측들의 세트에 대한 FV들 및 BV들을 생성함 -; BW 코어에서의 EP 생성기- EP 생성기는 관측들의 세트에 대한 EP들을 생성함 -; BW 코어에서의 TP 생성기- TP 생성기는 관측들의 세트에 대한 TP들을 생성함 -; 및 BW 코어에서의 TELUT 스토리지- TELUT 스토리지는 FV들 및 BV들을 생성할 때 LV 생성기에 의해 사용될 미리 구성된 T*E 값들을 저장함 -를 포함한다.
예 D2는 예 D1에 따른 프로세서 패키지를 포함하고, TELUT 스토리지는 TP 생성기가 관측들의 세트에서의 관측들 중 적어도 일부에 대한 T*E 값들을 계산하지 않고 Baum-Welch 알고리즘의 반복을 완료하는 것을 가능하게 한다.
예 D3은 예 D1에 따른 프로세서 패키지로서, BW 코어에서의 적어도 제1 및 제2 LVTP 엔진들을 추가로 포함한다. 제1 LVTP 엔진은 제1 LV 생성기 및 제1 TELUT 스토리지를 포함하고, 제1 LV 생성기는 관측들의 세트로부터 관측들의 제1 서브세트에 대한 FV들을 생성한다. 제2 LVTP 엔진은 제2 LV 생성기 및 제2 TELUT 스토리지를 포함하고, 제2 LV 생성기는 관측들의 세트로부터 관측들의 제2 서브세트에 대한 FV들을 생성한다. 제1 및 제2 LVTP들은 FV들을 생성할 때 병렬로 작동한다. 제1 및 제2 LV 생성기들은, FV들 및 BV들을 생성할 때, 각각, 제1 및 제2 TELUT 스토리지들로부터의 T*E 값들을 사용한다. 예 D3은 예 D2의 특징을 또한 포함할 수 있다.
예 D4는 예 D1에 따른 프로세서 패키지로서, BW 코어에서의 제어 섹션을 추가로 포함하고, 제어 섹션은 FV들을 임계값과 비교하고 임계값 아래의 값들을 갖는 FV들을 폐기한다. 예 D4는 예들 D2-D3 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 D5는 예 D4에 따른 프로세서 패키지로서, 제어 섹션은 추가로 제1 타임스탬프 동안 FV들을 분류하고, FV들을 임계 확률 값과 비교하고, 제2 타임스탬프 동안 임계값 아래의 값들을 갖는 FV들을 폐기한다.
예 D6은 예 D4에 따른 프로세서 패키지로서, 제어 섹션은 추가로 제1 타임스탬프 동안 FV들을 분류하고, 유지될 FV들의 임계량을 분류하기 위해 임계 확률 값을 결정하고, 제2 타임스탬프 동안 임계 확률 값 아래의 값들을 갖는 FV들을 폐기한다. 예 D6은 예 D5의 특징을 또한 포함할 수 있다.
예 D7은 예 D1에 따른 프로세서 패키지로서, BW 코어와 통신하는 글로벌 이벤트 제어기를 추가로 포함하고, 글로벌 이벤트 제어기는 LV 생성기가 FV들 및 BV들을 생성하기 시작하기 전에 미리 결정된 T*E 값들로 TELUT 스토리지를 구성한다. 예 D7은 예들 D2-D6 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 D8은 예 D7에 따른 프로세서 패키지로서, TELUT 스토리지는 36개의 엔트리들을 포함하는 적어도 하나의 TELUT를 저장한다.
예 D9는 예 D1에 따른 프로세서 패키지로서, BW 코어는 FV들, BV들, EP들, 및 TP들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성한다. 예 d9는 예들 D2-D8 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 D10은 예 D9에 따른 프로세서 패키지로서, EP 생성기는 LV 생성기가 BV들을 생성하는 것을 마무리하기 전에 관측들의 세트에 대한 적어도 하나의 EP를 생성한다.
예 D11은 예 D1에 따른 프로세서 패키지로서, BW 코어와 통신하는 호스트 코어를 추가로 포함한다.
예 E1은 호스트 프로세서, 호스트 프로세서와 통신하는 RAM, 호스트 프로세서와 통신하는 적어도 하나의 BW 코어, 및 BW 코어에서의 LV 생성기를 포함하는 데이터 처리 시스템이다. LV 생성기는 관측들의 세트에 대한 FV들 및 BV들을 생성한다. BW 코어는 EP 생성기 및 TP 생성기를 또한 포함한다. EP 생성기는 관측들의 세트에 대한 EP들을 생성하고, TP 생성기는 관측들의 세트에 대한 TP들을 생성한다. BW 코어는 FV들 및 BV들을 생성할 때 LV 생성기에 의해 사용될 미리 구성된 T*E 값들을 포함하는 TELUT를 저장하는 TELUT 스토리지를 또한 포함한다.
예 E2는 예 E1에 따른 데이터 처리 시스템으로서, TELUT 스토리지는 TP 생성기가 관측들의 세트에서의 관측들 중 적어도 일부에 대한 T*E 값들을 계산하지 않고 Baum-Welch 알고리즘의 반복을 완료하는 것을 가능하게 한다.
예 E3은 예 E1에 따른 데이터 처리 시스템으로서, BW 코어에서의 적어도 제1 및 제2 LVTP 엔진들을 추가로 포함한다. 제1 LVTP 엔진은 제1 LV 생성기 및 제1 TELUT 스토리지를 포함하고, 제1 LV 생성기는 관측들의 세트로부터 관측들의 제1 서브세트에 대한 FV들을 생성한다. 제2 LVTP 엔진은 제2 LV 생성기 및 제2 TELUT 스토리지를 포함하고, 제2 LV 생성기는 관측들의 세트로부터 관측들의 제2 서브세트에 대한 FV들을 생성한다. 또한, 제1 및 제2 LVTP들은 FV들을 생성할 때 병렬로 작동하고, 제1 및 제2 LV 생성기들은, FV들 및 BV들을 생성할 때, 각각, 제1 및 제2 TELUT 스토리지들로부터의 T*E 값들을 사용한다. 예 E3은 예 E2의 특징을 또한 포함할 수 있다.
예 E4는 예 E1에 따른 데이터 처리 시스템으로서, BW 코어에서의 제어 섹션을 추가로 포함하고, 제어 섹션은 FV들을 임계값과 비교하고 임계값 아래의 값들을 갖는 FV들을 폐기한다. 예 E4는 예들 E2-E3 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 E5는 예 E4에 따른 데이터 처리 시스템으로서, 제어 섹션은 추가로 제1 타임스탬프 동안 FV들을 분류하고, FV들을 임계 확률 값과 비교하고, 제2 타임스탬프 동안 임계값 아래의 값들을 갖는 FV들을 폐기한다.
예 E6은 예 E4에 따른 데이터 처리 시스템으로서, 제어 섹션은 추가로 제1 타임스탬프 동안 FV들을 분류하고, 유지될 FV들의 임계량을 분류하기 위해 임계 확률 값을 결정하고, 제2 타임스탬프 동안 임계 확률 값 아래의 값들을 갖는 FV들을 폐기한다. 예 E6은 예 E5의 특징을 또한 포함할 수 있다.
예 E7은 예 E1에 따른 데이터 처리 시스템으로서, BW 코어와 통신하는 글로벌 이벤트 제어기를 추가로 포함하고, 글로벌 이벤트 제어기는 LV 생성기가 FV들 및 BV들을 생성하기 시작하기 전에 미리 결정된 T*E 값들로 TELUT 스토리지를 구성한다. 예 E7은 예들 E2-E6 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 E8은 예 E1에 따른 데이터 처리 시스템으로서, BW 코어는 FV들, BV들, EP들, 및 TP들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성한다. 예 E8은 예들 E2-E7 중 임의의 하나 이상의 특징을 또한 포함할 수 있다.
예 F1은 컴퓨터-판독가능 매체, 및 컴퓨터-판독가능 매체에서의 명령어들을 포함하는 장치로서, 이러한 명령어는, 적어도 하나의 BW 코어를 포함하는 BW 서브시스템을 포함하는 데이터 처리 시스템에서의 호스트 코어에 의해 실행될 때, BW 서브시스템으로 하여금 (a) BW 코어에서의 TELUT 스토리지로부터의 미리 구성된 T*E 값들에 적어도 부분적으로 기초하여, 관측들의 세트에 대한 FV들 및 BV들을 생성하고; (b) 관측들의 세트에 대한 EP들을 생성하고; (c) 관측들의 세트에 대한 TP들을 생성하게 한다.
예 F2는 예 F1에 따른 장치로서, TELUT 스토리지는 BW 서브시스템에서의 TP 생성기가 관측들의 세트에서의 관측들 중 적어도 일부에 대한 T*E 값들을 계산하지 않고 Baum-Welch 알고리즘의 반복을 완료하는 것을 가능하게 한다.
텍스트 및/또는 예시에 의해 본 개시내용에 설명되는 원리들 및 예시적인 실시예들에 비추어, 해당 분야에서의 기술자는 설명된 실시예들이 본 명세서에 설명되는 원리들로부터 벗어나지 않고 배열 및 상세사항에 있어서 수정될 수 있다는 점을 인식할 것이다. 더욱이, 본 개시내용은 실시예 가능성들을 설명하기 위해 "하나의 실시예(one embodiment)" 및 "다른 실시예(another embodiment)"와 같은 표현들을 사용한다. 그러나, 이러한 표현들은 본 개시내용의 범위를 특정 실시예 구성들로 제한하도록 의도되는 것은 아니다. 예를 들어, 이러한 표현들은 동일한 실시예 또는 상이한 실시예들을 참조할 수 있고, 이러한 상이한 실시예들은 다른 실시예들로 조합될 수 있다.
추가적으로, 본 교시내용은 많은 상이한 종류의 데이터 처리 시스템에서 장점을 취하기 위해 사용될 수 있다. 이러한 데이터 처리 시스템은, 제한없이, 메인프레임 컴퓨터들, 미니-컴퓨터들, 수퍼컴퓨터들, 고성능 컴퓨팅 시스템들, 컴퓨팅 클러스터들, 분산형 컴퓨팅 시스템들, PC들(personal computers), 워크스테이션들, 서버들, 클라이언트-서버 시스템들, 휴대형 컴퓨터들, 랩톱 컴퓨터들, 태블릿 컴퓨터들, 엔터테인먼트 디바이스들, 오디오 디바이스들, 비디오 디바이스들, 오디오/비디오 디바이스들(예를 들어, 텔레비전들 및 셋-톱 박스들), 핸드헬드 디바이스들, 스마트폰들, 전화들, PDA들(personal digital assistants), 웨어러블 디바이스들, 차량 처리 시스템들, 가속기들, SoC들(systems on a chip), 및 정보를 처리 및/또는 송신하기 위한 다른 디바이스들을 포함할 수 있다. 따라서, 달리 명시적으로 명시되거나 또는 문맥에 의해 요구되지 않는 한, 임의의 특정 타입의 데이터 처리 시스템(예를 들어, PC)에 대한 참조는, 마찬가지로, 다른 타입들의 데이터 처리 시스템들을 포함하는 것으로서 이해되어야 한다. 데이터 처리 시스템은 "장치(apparatus)"라고 또한 지칭될 수 있다. 데이터 처리 시스템의 컴포넌트들은 "장치(apparatus)"라고 또한 지칭될 수 있다.
또한, 본 개시내용에 따르면, 디바이스는, 프로세서에 의해 액세스될 때, 디바이스로 하여금 특정 동작들을 수행하게 하는 명령어들 및 다른 데이터를 포함할 수 있다. 본 개시내용의 목적들을 위해, 디바이스로 하여금 동작들을 수행하게 하는 명령어들 또는 다른 데이터는 "소프트웨어(software)" 또는 "제어 로직(control logic)"이라고 일반적으로 지칭될 수 있다. 부팅 프로세스 동안 사용되는 소프트웨어는 "펌웨어(firmware)"라고 지칭될 수 있다. 비-휘발성 메모리에 저장되는 소프트웨어는 또한 "펌웨어(firmware)"라고 지칭될 수 있다. 소프트웨어는 임의의 적합한 구조 또는 구조들의 조합을 사용하여 조직될 수 있다. 따라서, 프로그램 및 모듈과 같은 용어들은, 제한없이, 애플리케이션 프로그램들, 서브프로그램들, 루틴들, 함수들, 프로시저들, 드라이버들, 라이브러리들, 데이터 구조들, 프로세스들, 마이크로코드, 및 다른 타입들의 소프트웨어 컴포넌트들을 포함하는, 광범위한 소프트웨어 구성들을 커버하기 위해 일반적으로 사용될 수 있다. 또한, 소프트웨어 모듈은 하나보다 많은 컴포넌트를 포함할 수 있고, 이러한 컴포넌트들은 모듈의 동작들을 완료하도록 협력할 수 있다는 점이 이해되어야 한다. 또한, 소프트웨어가 디바이스로 하여금 수행하게 하는 동작들은 동작 컨텍스트를 생성하는 것, 특정 데이터 구조를 인스턴스화하는 것 등을 포함할 수 있다. 또한, 실시예들은 임의의 적합한 운영 환경 및 프로그래밍 언어(또는 운영 환경들과 프로그래밍 언어들의 조합)를 사용하여 구현되는 소프트웨어를 포함할 수 있다. 예를 들어, 프로그램 코드는 컴파일된 언어로, 해석된 언어로, 프로시저형 언어로, 객체-지향 언어로, 어셈블리 언어로, 기계어로, 또는 임의의 다른 적합한 언어로 구현될 수 있다.
데이터를 포함하는 그리고 다른 컴포넌트가 해당 데이터를 획득하는 것을 허용하는 매체는 "머신-액세스가능 매체(machine-accessible medium)" 또는 "머신-판독가능 매체(machine-readable medium)"라고 지칭될 수 있다. 따라서, 실시예들은 본 명세서에 설명되는 동작들의 일부 또는 전부를 수행하기 위한 명령어들을 포함하는 머신-판독가능 매체를 포함할 수 있다. 이러한 매체는 "장치(apparatus)", 특히 "프로그램 제품(program products)"이라고 일반적으로 지칭될 수 있다. 하나의 실시예에서, 다수의 컴포넌트들에 대한 소프트웨어가 하나의 머신-판독가능 매체에 저장될 수 있다. 다른 실시예들에서, 2개 이상의 머신-판독가능 매체가 하나 이상의 컴포넌트에 대한 소프트웨어를 저장하기 위해 사용될 수 있다. 예를 들어, 하나의 컴포넌트에 대한 명령어들이 하나의 매체에 저장될 수 있고, 다른 컴포넌트에 대한 명령어들이 다른 매체에 저장될 수 있다. 또는 하나의 컴포넌트에 대한 명령어들의 일부가 하나의 매체에 저장될 수 있고, 해당 컴포넌트에 대한 명령어들(마찬가지로 다른 컴포넌트들에 대한 명령어들)의 나머지가 하나 이상의 다른 매체에 저장될 수 있다. 유사하게, 하나의 실시예에서 특정 디바이스 상에 존재하는 것으로 위에 설명된 소프트웨어는, 다른 실시예들에서, 하나 이상의 다른 디바이스 상에 존재할 수 있다. 예를 들어, 분산 환경에서, 일부 소프트웨어는 국부적으로 저장될 수 있고, 일부는 원격으로 저장될 수 있다. 일부 실시예들에 대한 머신-판독가능 매체는, 제한없이, 자기 디스크들, 광학 디스크들, 광자기 디스크들, 동적 RAM(random-access memory), 정적 RAM, NVRAM(non-volatile RAM), ROM(read-only memory), SSD들(solid state drives), PCM(phase change memory) 등과 같은 유형의 비-일시적 스토리지 컴포넌트들 뿐만 아니라, 프로세서들, 제어기들, 및 데이터 스토리지 설비들을 포함하는 다른 컴포넌트들을 포함할 수 있다. 본 개시내용의 목적들을 위해, "ROM"이라는 용어는 EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 ROM, 플래시 메모리 등과 같은 비-휘발성 메모리 디바이스들을 지칭하기 위해 일반적으로 사용될 수 있다.
또한, 하나의 실시예에서 하나의 특정 디바이스 상에서 수행되는 것으로서 설명되는 동작들은, 다른 실시예들에서, 하나 이상의 다른 디바이스에 의해 수행될 수 있다. 또한, 하나 이상의 예시적인 프로세스가 특정 시퀀스로 수행되는 특정 동작들에 관해 설명되었지만, 본 발명의 다수의 대안적인 실시예들을 유도하기 위해 다수의 수정들이 해당 프로세스들에 적용될 수 있다. 예를 들어, 대안적인 실시예들은 개시된 동작들 전부보다 더 적은 동작들을 사용하는 프로세스들, 추가적인 동작들을 사용하는 프로세스들, 및 본 명세서에 개시되는 개별 동작들이 조합되고, 세부분할되고, 재배열되거나, 또는 그렇지 않으면 변경되는 프로세스들을 포함할 수 있다.
또한, 본 명세서에 묘사되는 하드웨어 및 소프트웨어 컴포넌트들은, 각각이 다른 것들과는 실질적으로 독립적으로 설계, 구성, 또는 업데이트될 수 있도록, 알맞게 자체 완비된(reasonably self-contained) 기능 엘리먼트를 표현한다는 점이 또한 이해되어야 한다. 대안적인 실시예들에서, 컴포넌트들은 본 명세서에 설명되고 예시되는 기능성을 제공하기 위한 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합들로서 구현될 수 있다. 예를 들어, 일부 실시예들에서, 설명된 기능성을 구현하기 위한 제어 로직의 일부 또는 전부는, ASIC(application-specific integrated circuit) 또는 PGA(programmable gate array)와 같은, 하드웨어 로직 회로로 구현될 수 있다. 유사하게, 제어 로직의 일부 또는 전부는 집적 회로 칩에서의 마이크로코드로서 구현될 수 있다. 또한, "회로(circuit 및 circuitry)"와 같은 용어들은 본 명세서에서 교환가능하게 사용될 수 있다. "로직(logic)"과 같은 용어들 및 용어들은 아날로그 회로, 디지털 회로, 프로세서 회로, 마이크로제어기 회로, 하드웨어 로직 회로, 하드-와이어드 회로, 프로그램가능 회로, 상태 머신 회로, 임의의 다른 타입의 하드웨어 컴포넌트, 또는 하드웨어 컴포넌트들의 임의의 적합한 조합을 지칭하기 위해 사용될 수 있다.
또한, 명확히 달리 명시되지 않는 한, 서로 연결되는 것, 또는 서로 통신하는 것, 또는 서로 응답하는 것 등으로서 설명되는 컴포넌트들이 서로 연속적으로 통신할 필요가 없고 서로 직접 연결될 필요가 없다. 마찬가지로, 하나의 컴포넌트가 데이터를 다른 컴포넌트로부터 수신하는 것 또는 또다른 컴포넌트에 전송하는 것으로서 설명될 때, 달리 명확하게 명시되지 않는 한, 해당 데이터는 하나 이상의 중간 컴포넌트를 통해 전송되거나 또는 수신될 수 있다. 또한, 데이터 처리 시스템의 일부 컴포넌트들은 버스와 통신하기 위한 인터페이스들(예를 들어, 커넥터)을 갖는 어댑터 카드들로서 구현될 수 있다. 대안적으로, 디바이스들 또는 컴포넌트들은 프로그램가능 또는 비-프로그램가능 로직 디바이스들 또는 어레이들, ASIC들, 내장형 컴퓨터들, 스마트 카드들 등과 같은 컴포넌트들을 사용하여 내장형 제어기들로서 구현될 수 있다. 본 개시내용의 목적들을 위해, "버스(bus)"이라는 용어는 2개보다 많은 디바이스들에 의해 공유될 수 있는 경로들, 뿐만 아니라 포인트-투-포인트 경로들을 포함한다. 유사하게, "라인(line)", "핀(pin)" 등과 같은 용어들은 와이어, 와이어들의 세트, 또는 임의의 다른 적합한 전도체 또는 전도체들의 세트를 지칭하는 것으로서 이해되어야 한다. 예를 들어, 버스는 하나 이상의 직렬 링크를 포함할 수 있고, 직렬 링크는 하나 이상의 레인을 포함할 수 있고, 레인은 하나 이상의 차동 시그널링 쌍으로 구성될 수 있고, 이러한 전도체들 운반하고 있는 전기의 변화하는 특성들은 "신호들(signals)"이라고 지칭될 수 있다. 또한, 본 개시내용의 목적을 위해, "프로세서(processor)"라는 용어는 소프트웨어를 실행할 수 있는 하드웨어 컴포넌트를 나타낸다. 예를 들어, 프로세서는 CPU(central processing unit)로서 또는 임의의 다른 적합한 타입의 처리 엘리먼트로서 구현될 수 있다. CPU는 하나 이상의 처리 코어를 포함할 수 있다. 프로세서 패키지는 "프로세서(processor)"라고 또한 지칭될 수 있다. 그리고 디바이스는 하나 이상의 프로세서를 포함할 수 있다.
다른 실시예들은 데이터로 구현될 수 있고, 적어도 하나의 머신에 의해 사용되는 경우, 적어도 하나의 머신으로 하여금 본 개시내용에 따른 하나 이상의 동작을 수행하기 위해 적어도 하나의 집적 회로를 제조하게 하는, 비-일시적 스토리지 매체 상에 저장될 수 있다. 또 다른 실시예들은, SoC 또는 다른 프로세서로 제조될 때, 본 개시내용에 따른 하나 이상의 동작을 수행하도록 SoC 또는 다른 프로세서를 구성하는 정보를 포함하는 컴퓨터-판독가능 스토리지 매체에서 구현될 수 있다. 적어도 하나의 실시예의 하나 이상의 양태는, 프로세서 내의 다양한 로직 유닛들을 표현하고, 머신에 의해 판독될 때, 머신으로 하여금 본 명세서에 설명되는 기법들을 수행하기 위한 로직 유닛들을 제조하게 하는, 머신-판독가능 매체 상에 저장된 대표적인 명령어들에 의해 구현될 수 있다. 다양한 로직 유닛들을 표현하는 명령어들은 "IP 코어들("IP cores)"이라고 지칭될 수 있고, 이들은 유형의 머신-판독가능 매체 상에 저장될 수 있고, 로직 유닛들 또는 프로세서를 만드는 제조 머신들에 로딩하기 위해 다양한 고객들 또는 제조 설비들에 공급될 수 있다. 적어도 하나의 실시예의 하나 이상의 양태는 본 명세서에 설명되는 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는 명령어들 또는 설계 데이터를 포함하는 머신-판독가능 매체를 포함할 수 있다. 예를 들어, 설계 데이터는 HDL(hardware description language)로 포맷될 수 있다.
본 명세서에 설명되는 예시적인 실시예들로부터 용이하게 유도될 수 있는 광범위한 유용한 치환들의 관점에서, 이러한 상세한 설명은 단지 예시적인 것으로 의도되며, 커버리지의 범위를 제한하는 것으로서 해석되지 않아야 한다.

Claims (25)

  1. 프로세서 패키지로서,
    적어도 하나의 BW(Baum-Welch) 코어;
    상기 BW 코어에서의 LV(likelihood-value) 생성기- 상기 LV 생성기는 관측들의 세트에 대한 FV들(forward values) 및 BV들(backward values)을 생성함 -;
    상기 BW 코어에서의 TP(transition-probability) 생성기- 상기 TP 생성기는 상기 관측들의 세트에 대한 TP들을 생성함 -; 및
    상기 BW 코어에서의 EP(emission-probability) 생성기- 상기 EP 생성기는 상기 관측들의 세트에 대한 EP들을 생성함 -를 포함하고;
    상기 BW 코어는 FV들, BV들, EP들, 및 TP들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성하는 프로세서 패키지.
  2. 제1항에 있어서, 추가로,
    상기 BW 코어에서의 LVTP(likelihood-value-and-transition-probability) 엔진을 포함하고,
    상기 LVTP 엔진은 상기 LV 생성기 및 상기 TP 생성기를 포함하고;
    상기 LV 생성기는 완료된 BV를 생성하는 것에 응답하여 상기 완료된 BV를 상기 TP 생성기에 이용가능하게 하고;
    상기 TP 생성기는 상기 LV 생성기가 상기 BV들을 생성하는 것을 마무리하기 전에 상기 완료된 BV를 사용하여 상기 TP들 중 적어도 하나를 생성하는 프로세서 패키지.
  3. 제2항에 있어서, 상기 EP 생성기는 상기 LV 생성기가 상기 BV들을 생성하는 것을 마무리하기 전에 상기 관측들의 세트에 대한 적어도 하나의 EP를 생성하는 프로세서 패키지.
  4. 제1항에 있어서, 추가로,
    상기 BW 코어에서의 적어도 제1 및 제2 LVTP(likelihood-value-and-transition-probability) 엔진들을 포함하고,
    상기 제1 LVTP 엔진은 상기 관측들의 세트로부터 관측들의 제1 서브세트에 대한 FV들을 생성하는 제1 LV 생성기를 포함하고;
    상기 제2 LVTP 엔진은 상기 관측들의 세트로부터 관측들의 제2 서브세트에 대한 FV들을 생성하는 제2 LV 생성기를 포함하고;
    상기 제1 및 제2 LVTP들은 FV들을 생성할 때 병렬로 작동하는 프로세서 패키지.
  5. 제4항에 있어서, 추가로,
    상기 BW 코어에서의 적어도 제1 및 제2 LVTP 집합체들을 포함하고,
    상기 제1 LVTP 집합체는 상기 제1 및 제2 LVTP 엔진들을 포함하고;
    상기 제2 LVTP 집합체는 제3 및 제4 LVTP 엔진들을 포함하고;
    상기 제1, 제2, 제3, 및 제4 LVTP 엔진들은 FV들을 생성할 때 병렬로 작동하는 프로세서 패키지.
  6. 제1항에 있어서, 추가로,
    상기 BW 코어와 통신하는 글로벌 이벤트 제어기- 상기 글로벌 이벤트 제어기는 상기 관측들의 세트에 Baum-Welch 알고리즘을 적용하기 위한 파라미터들을 애플리케이션이 명시하는 것을 가능하게 함 -를 포함하고, 상기 파라미터들은 얼마나 많은 잠재적 상태들이 관측에 대해 이용가능한지를 명시하는 수치 파라미터를 포함하는 프로세서 패키지.
  7. 제1항에 있어서, 상기 BW 코어는 BW 가속 명령어를 지원하고, 상기 BW 가속 명령어는,
    처리될 관측 슬라이스들의 수를 명시하는 제1 파라미터; 및
    관측 슬라이스 당 처리될 관측들의 수를 명시하는 제2 파라미터를 포함하는 프로세서 패키지.
  8. 제1항에 있어서, 추가로,
    상기 BW 코어에서의 TP 캐시를 포함하고, 상기 TP 생성기는 상기 생성된 TP들을 상기 TP 캐시에 저장하고 상기 TP 캐시로부터 TP 데이터를 판독하는 프로세서 패키지.
  9. 제8항에 있어서, 상기 BW 코어와 통신하는 글로벌 이벤트 제어기를 추가로 포함하고, 상기 글로벌 이벤트 제어기는 초기 TP 행렬에 대한 TP들을 상기 TP 캐시에 복사하는 프로세서 패키지.
  10. 제1항에 있어서, 추가로,
    상기 BW 코어에서의 L1C(level-one cache)를 포함하고;
    상기 EP 생성기는 상기 생성된 EP들을 상기 L1C에 저장하는 프로세서 패키지.
  11. 제1항에 있어서, 추가로,
    상기 BW 코어와 통신하는 호스트 코어를 포함하는 프로세서 패키지.
  12. 데이터 처리 시스템으로서,
    호스트 프로세서;
    상기 호스트 프로세서와 통신하는 RAM(random-access memory);
    상기 호스트 프로세서와 통신하는 적어도 하나의 BW(Baum-Welch) 코어;
    상기 BW 코어에서의 LV(likelihood-value) 생성기- 상기 LV 생성기는 관측들의 세트에 대한 FV들(forward values) 및 BV들(backward values)을 생성함 -;
    상기 BW 코어에서의 TP(transition-probability) 생성기- 상기 TP 생성기는 상기 관측들의 세트에 대한 TP들을 생성함 -; 및
    상기 BW 코어에서의 EP(emission-probability) 생성기- 상기 EP 생성기는 상기 관측들의 세트에 대한 EP들을 생성함 -를 포함하고;
    상기 BW 코어는 FV들, BV들, EP들, 및 TP들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성하는 데이터 처리 시스템.
  13. 제12항에 있어서, 추가로,
    상기 BW 코어에서의 LVTP(likelihood-value-and-transition-probability) 엔진을 포함하고,
    상기 LVTP 엔진은 상기 LV 생성기 및 상기 TP 생성기를 포함하고;
    상기 LV 생성기는 완료된 BV를 생성하는 것에 응답하여 상기 완료된 BV를 상기 TP 생성기에 이용가능하게 하고;
    상기 TP 생성기는 상기 LV 생성기가 상기 BV들을 생성하는 것을 마무리하기 전에 상기 완료된 BV를 사용하여 상기 TP들 중 적어도 하나를 생성하는 데이터 처리 시스템.
  14. 제12항에 있어서, 추가로,
    상기 호스트 프로세서, 상기 BW 코어, 및 글로벌 이벤트 제어기를 포함하는 프로세서 패키지를 포함하고;
    상기 글로벌 이벤트 제어기는 상기 관측들의 세트에 Baum-Welch 알고리즘을 적용하기 위한 파라미터들을 애플리케이션이 명시하는 것을 가능하게 하고, 상기 파라미터들은 얼마나 많은 잠재적 상태들이 관측에 대해 이용가능한지를 명시하는 제1 파라미터를 포함하는 데이터 처리 시스템.
  15. 제12항에 있어서,
    상기 적어도 하나의 BW 코어는 제1 BW 코어 및 제2 BW 코어를 포함하고;
    상기 데이터 처리 시스템은, 애플리케이션으로부터의 관측들의 원래의 세트를 제1 및 제2 서브세트들로 자동으로 분할하는, 상기 제1 BW 코어로 하여금 상기 제1 서브세트에 대한 TP들을 생성하게 하는, 그리고 상기 제2 BW 코어로 하여금 상기 제2 서브세트에 대한 TP들을 생성하게 하는 글로벌 이벤트 제어기를 추가로 포함하는 데이터 처리 시스템.
  16. 제15항에 있어서, 추가로,
    상기 제1 BW 코어에서의 제1 L1C(level-one cache); 및
    상기 제2 BW 코어에서의 제2 L1C를 포함하고;
    상기 글로벌 이벤트 제어기는,
    상기 관측들의 제1 서브세트 및 필터들의 제1 세트를 포함하는 제1 타일을 자동으로 생성하고;
    상기 관측들의 제2 서브세트 및 필터들의 제2 세트를 포함하는 제2 타일을 자동으로 생성하고;
    상기 제1 타일을 상기 제1 L1C에 로딩하고;
    상기 제2 타일을 상기 제2 L1C에 로딩하는 데이터 처리 시스템.
  17. 제12항에 있어서, 추가로,
    상기 BW 코어에서의 적어도 제1 및 제2 LVTP(likelihood-value-and-transition-probability) 엔진들을 포함하고,
    상기 제1 LVTP 엔진은 상기 관측들의 세트로부터 관측들의 제1 서브세트에 대한 FV들을 생성하는 제1 LV 생성기를 포함하고;
    상기 제2 LVTP 엔진은 상기 관측들의 세트로부터 관측들의 제2 서브세트에 대한 FV들을 생성하는 제2 LV 생성기를 포함하고;
    상기 제1 및 제2 LVTP들은 FV들을 생성할 때 병렬로 작동하는 데이터 처리 시스템.
  18. 제17항에 있어서,
    상기 적어도 하나의 BW 코어는 제1 BW 코어 및 제2 BW 코어를 포함하고;
    상기 제1 BW 코어는, 다수의 LVTP 엔진들을 각각 포함하는, 다수의 LVTP 집합체들을 포함하고;
    상기 제2 BW 코어는, 다수의 LVTP 엔진들을 각각 포함하는, 다수의 LVTP 집합체들을 포함하고;
    상기 BW 코어들 전부에서의 상기 LVTP 집합체들 전부로부터의 LVTP 엔진들은 FV들을 생성할 때 병렬로 작동하는 데이터 처리 시스템.
  19. 방법으로서,
    적어도 하나의 BW 코어를 포함하는 BW(Baum-Welch) 서브시스템을 포함하는 데이터 처리 시스템에서의 호스트 코어에서, 상기 BW 서브시스템으로 하여금,
    관측들의 세트에 대한 FV들(forward values) 및 BV들(backward values)을 생성하고;
    상기 관측들의 세트에 대한 TP들(transition probabilities)을 생성하고;
    상기 관측들의 세트에 대한 EP들(emission probabilities)을 생성하게 하는 명령어들을 실행하는 단계를 포함하고;
    상기 FV들, BV들, TP들, 및 EP들을 생성하는 동작들은 FV들, BV들, EP들, 및 TP들로 이루어지는 그룹으로부터 적어도 2개의 타입들의 확률 값들을, 병렬로, 생성하는 것을 포함하는 방법.
  20. 제19항에 있어서, 추가로,
    애플리케이션에 의해 제공되는 파라미터들에 기초하여, 상기 BW 서브시스템을 구성하는 단계를 포함하고, 상기 파라미터들은 얼마나 많은 잠재적 상태들이 관측에 대해 이용가능한지를 명시하는 수치 파라미터를 포함하고, 상기 BW 서브시스템을 구성하는 동작은 상기 BW 서브시스템에서의 글로벌 이벤트 제어기에 의해 수행되는 방법.
  21. 제20항에 있어서, 추가로,
    애플리케이션으로부터의 관측들의 원래의 세트를 제1 및 제2 서브세트들로 자동으로 분할하는 단계;
    상기 BW 서브시스템에서의 제1 BW 코어를 사용하여 상기 제1 서브세트에 대한 FV들을 생성하는 단계; 및
    상기 BW 서브시스템에서의 제2 BW 코어를 사용하여 상기 제2 서브세트에 대한 FV들을 생성하는 단계를 포함하고;
    (i) 애플리케이션으로부터의 관측들의 원래의 세트를 제1 및 제2 서브세트들로 자동으로 분할하고, (ii) 상기 BW 서브시스템에서의 제1 BW 코어를 사용하여 상기 제1 서브세트에 대한 FV들을 생성하고, (iii) 상기 BW 서브시스템에서의 제2 BW 코어를 사용하여 상기 제2 서브세트에 대한 FV들을 생성하는 동작들은 상기 글로벌 이벤트 제어기에 의해 수행되는 방법.
  22. 제19항에 있어서, 추가로,
    상기 BW 서브시스템에서의 LV 생성기에 의해, 완료된 BV를 생성하는 것에 응답하여 상기 완료된 BV를 상기 TP 생성기에 이용가능하게 하는 단계; 및
    상기 TP 생성기에 의해, 상기 LV 생성기가 상기 BV들을 생성하는 것을 마무리하기 전에 상기 완료된 BV를 사용하여 상기 TP들 중 적어도 하나를 생성하는 단계를 포함하는 방법.
  23. 제22항에 있어서, 추가로,
    상기 EP 생성기에 의해, 상기 LV 생성기가 상기 BV들을 생성하는 것을 마무리하기 전에 상기 관측들의 세트에 대한 적어도 하나의 EP를 생성하는 단계를 포함하는 방법.
  24. 머신 판독가능 매체로서, 머신에 의해 실행될 때, 상기 머신으로 하여금 제19항 내지 제23항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 포함하는 머신 판독가능 매체.
  25. 프로세서 패키지로서, 제19항 내지 제23항 중 어느 한 항의 방법을 수행하기 위한 수단을 포함하는 프로세서 패키지.
KR1020210162303A 2020-12-23 2021-11-23 Baum-Welch 가속기 KR20220091365A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/131,925 2020-12-23
US17/131,925 US20220198306A1 (en) 2020-12-23 2020-12-23 Baum-Welch Accelerator

Publications (1)

Publication Number Publication Date
KR20220091365A true KR20220091365A (ko) 2022-06-30

Family

ID=77910695

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210162303A KR20220091365A (ko) 2020-12-23 2021-11-23 Baum-Welch 가속기

Country Status (4)

Country Link
US (1) US20220198306A1 (ko)
EP (1) EP4020332A1 (ko)
KR (1) KR20220091365A (ko)
CN (1) CN114661643A (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963906A (en) * 1997-05-20 1999-10-05 At & T Corp Speech recognition training
US20060100874A1 (en) * 2004-10-22 2006-05-11 Oblinger Daniel A Method for inducing a Hidden Markov Model with a similarity metric
US8478711B2 (en) * 2011-02-18 2013-07-02 Larus Technologies Corporation System and method for data fusion with adaptive learning
US8433893B2 (en) * 2011-03-30 2013-04-30 Mitsubishi Electric Research Laboratories, Inc. Privacy-preserving probabilistic inference based on hidden markov models
US9508045B2 (en) * 2012-08-17 2016-11-29 Raytheon Company Continuous-time baum-welch training
US10929767B2 (en) * 2016-05-25 2021-02-23 International Business Machines Corporation Method for complex events detection using hidden markov models
US20180189675A1 (en) * 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US20200334560A1 (en) * 2019-04-18 2020-10-22 Vicarious Fpc, Inc. Method and system for determining and using a cloned hidden markov model

Also Published As

Publication number Publication date
EP4020332A1 (en) 2022-06-29
US20220198306A1 (en) 2022-06-23
CN114661643A (zh) 2022-06-24

Similar Documents

Publication Publication Date Title
US20170061279A1 (en) Updating an artificial neural network using flexible fixed point representation
US8131659B2 (en) Field-programmable gate array based accelerator system
US8676874B2 (en) Data structure for tiling and packetizing a sparse matrix
US8762655B2 (en) Optimizing output vector data generation using a formatted matrix data structure
CN114127740A (zh) 人工智能模型的分布式训练中的数据并行性
US11354579B2 (en) Dynamic multi-layer execution for artificial intelligence modeling
US20210019151A1 (en) Executing large artificial intelligence models on memory-constrained devices
Nolet et al. Bringing UMAP closer to the speed of light with GPU acceleration
CN113435682A (zh) 分布式训练的梯度压缩
Ito et al. A power-efficient FPGA accelerator: Systolic array with cache-coherent interface for pair-HMM algorithm
US11275561B2 (en) Mixed precision floating-point multiply-add operation
US11295236B2 (en) Machine learning in heterogeneous processing systems
Ahmad et al. FFConv: an FPGA-based accelerator for fast convolution layers in convolutional neural networks
CN110689045A (zh) 一种深度学习模型的分布式训练方法及装置
JP2023068601A (ja) データ経路回路を設計するための装置、システム、及び方法
CN112395548A (zh) 通过指令用于动态编程的处理器及配置该处理器的方法
WO2024104232A1 (zh) 用于训练神经网络的方法、装置、设备和存储介质
Firtina et al. Aphmm: Accelerating profile hidden markov models for fast and energy-efficient genome analysis
KR20220091365A (ko) Baum-Welch 가속기
US20220198307A1 (en) Baum-Welch Accelerator
US20210334703A1 (en) Methods and systems configured to specify resources for hyperdimensional computing implemented in programmable devices using a parameterized template for hyperdimensional computing
Dey et al. An application specific processor architecture with 3D integration for recurrent neural networks
Zhou et al. Paraml: A polyvalent multicore accelerator for machine learning
CN115023685A (zh) 用于密集和稀疏矩阵计算的加速器
US20220051095A1 (en) Machine Learning Computer