JP2023004898A - 5g-nrマルチ・セル・ソフトウェア・フレームワーク - Google Patents

5g-nrマルチ・セル・ソフトウェア・フレームワーク Download PDF

Info

Publication number
JP2023004898A
JP2023004898A JP2022087329A JP2022087329A JP2023004898A JP 2023004898 A JP2023004898 A JP 2023004898A JP 2022087329 A JP2022087329 A JP 2022087329A JP 2022087329 A JP2022087329 A JP 2022087329A JP 2023004898 A JP2023004898 A JP 2023004898A
Authority
JP
Japan
Prior art keywords
operations
phy
library
parameters
computing resources
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2022087329A
Other languages
English (en)
Inventor
ディーパク バヌリ ナンジェ ゴウダ ハーシャ
Deepak Banuli Nanje Harsha
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of JP2023004898A publication Critical patent/JP2023004898A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W72/00Local resource management
    • H04W72/04Wireless resource allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signaling, i.e. of overhead other than pilot signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/16Central resource management; Negotiation of resources or communication parameters, e.g. negotiating bandwidth or QoS [Quality of Service]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/20Services signaling; Auxiliary data signalling, i.e. transmitting data via a non-traffic channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/50Service provisioning or reconfiguring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W80/00Wireless network protocols or protocol adaptations to wireless operation
    • H04W80/02Data link layer protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】第5世代(5G)新無線(NR)ネットワークにおけるマルチ・セル物理層(PHY)処理を実行する装置、システム、及び技法を提供すること。【解決手段】少なくとも一実施例では、PHYパイプラインを実装するPHYライブラリは、そのPHYライブラリによって提供されたアプリケーション・プログラミング・インターフェースへの1つ又は複数の関数呼出しの結果として、並列実行のためのマルチ・ユーザ及び/又はマルチ・セル5G-NR PHY動作をグループ化する。【選択図】図1

Description

少なくとも一実施例は、第5世代(5G)新無線(NR)ネットワークにおけるマルチ・セル物理層(PHY)処理を実行及び容易化するために使用される処理リソースに関する。たとえば、少なくとも一実施例は、本明細書に記載の様々な新規の技法にしたがって、PHYパイプラインを実装するソフトウェアPHYライブラリを使用する、並列化されたマルチ・ユーザ及び/又はマルチ・セルの5G-NR PHY動作を実行するために使用されるプロセッサ又はコンピューティング・システムに関する。
第5世代(5G)新無線(NR)通信ネットワークにおける物理層(PHY)の動作の処理は、膨大なメモリ・リソース、時間リソース、又は他のコンピューティング・リソースを使用し得る。このリソース使用は、5G-NRネットワークにおける5G-NR基地局への更なるユーザ又はコンピューティング・セルの追加に伴って増加する。ワイヤレス通信デバイスの偏在性の増加、更に5G-NRネットワーク・インフラストラクチャの実装の増加は、5G-NRネットワーク処理リソースの需要を増加させている。
少なくとも一実施例による、PHYライブラリによって実装された第5世代(5G)新無線(NR)物理層(PHY)パイプラインを示すブロック図である。 少なくとも一実施例による、PHY動作を実行するためにPHYライブラリによって実装されたPHYパイプラインへの関数呼出しを示すブロック図である。 少なくとも一実施例による、PHY記述子を示すブロック図である。 少なくとも一実施例による、PHYライブラリによって実装されたPHYパイプラインにおける実例のPUSCHパイプライン記述子を示すブロック図である。 少なくとも一実施例による、PHYライブラリによって実装されたPHYパイプライン用の階層的データ編成を示すブロック図である。 少なくとも一実施例による、PHYライブラリによって実装されたPHYパイプライン用の時間的データ編成を示すブロック図である。 少なくとも一実施例による、PHYライブラリによって実装されたPHYパイプライン用の実例のPUSCHデータ構造を示すブロック図である。 少なくとも一実施例による、PHY記述子バッファリングを示すブロック図である。 少なくとも一実施例による、PHY動作バッチ中のバッチ済みパラメータ編成を示すブロック図である。 少なくとも一実施例による、バッチ済みPHY動作ワークロードを実行する実例のパイプライン・トポロジを示すブロック図である。 少なくとも一実施例による、タイム・スロットをベースとしたPHYパイプライン・バッチ・トポロジの実例を示すブロック図である。 少なくとも一実施例による、バッチ済みPHY記述子の配置を示すブロック図である。 少なくとも一実施例による、PHYライブラリによって実装された物理層PHYパイプラインへの実例のアプリケーション・プログラミング・インターフェース(API)を示すブロック図である。 少なくとも一実施例による、PHYライブラリによって実装された5G-NRのPHYパイプラインにおいてPHY動作を実行するためのプロセスを示す図である。 少なくとも一実施例による、実例のデータ・センタ・システムを示す図である。 少なくとも一実施例による、自律車両の実例を示す図である。 少なくとも一実施例による、図14Aの自律車両のカメラのロケーション及び視野の実例を示す図である。 少なくとも一実施例による、図14Aの自律車両の実例のシステム・アーキテクチャを示すブロック図である。 少なくとも一実施例による、クラウド・ベースのサーバと図14Aの自律車両との通信のためのシステムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示すブロック図である。 少なくとも一実施例による、コンピュータ・システムを示すブロック図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、共有プログラミング・モデルを示す図である。 少なくとも一実施例による、共有プログラミング・モデルを示す図である。 少なくとも一実施例による、実例の集積回路及び関連グラフィックス・プロセッサを示す図である。 少なくとも一実施例による、実例の集積回路及び関連グラフィックス・プロセッサを示す図である。 少なくとも一実施例による、実例の集積回路及び関連グラフィックス・プロセッサを示す図である。 少なくとも一実施例による、追加の実例のグラフィックス・プロセッサ論理を示す図である。 少なくとも一実施例による、追加の実例のグラフィックス・プロセッサ論理を示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、並列プロセッサを示す図である。 少なくとも一実施例による、パーティション・ユニットを示す図である。 少なくとも一実施例による、処理クラスタを示す図である。 少なくとも一実施例による、グラフィックス・マルチプロセッサを示す図である。 少なくとも一実施例による、マルチ・グラフィックス・プロセッシング・ユニット(GPU)システムを示す図である。 少なくとも一実施例による、グラフィックス・プロセッサを示す図である。 少なくとも一実施例による、プロセッサ用のプロセッサ・マイクロ・アーキテクチャを示すブロック図である。 1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。 1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。 1つ又は複数の一実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。 少なくとも一実施例による、グラフィックス・プロセッサのグラフィックス処理エンジンのブロック図である。 少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部分のブロック図である。 少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理を示す図である。 少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理を示す図である。 少なくとも一実施例による、並列処理ユニット(「PPU」)を示す図である。 少なくとも一実施例による、汎用処理クラスタ(「GPC」)を示す図である。 少なくとも一実施例による、並列処理ユニット(「PPU」)のメモリ・パーティション・ユニットを示す図である。 少なくとも一実施例による、ストリーミング・マルチプロセッサを示す図である。 少なくとも一実施例による、5Gワイヤレス通信ネットワーク内でデータを伝送するためのネットワークを示す図である。 少なくとも一実施例による、5G LTEワイヤレス・ネットワークのためのネットワーク・アーキテクチャを示す図である。 少なくとも一実施例による、LTE及び5Gの原理にしたがって動作するモバイル電気通信ネットワーク/システムのいずれかの基本的な機能性を示す図である。 少なくとも一実施例による、5Gネットワーク・アーキテクチャの一部であり得る無線アクセス・ネットワークを示す図である。 少なくとも一実施例による、複数の異なる種類のデバイスが使用される5Gモバイル通信システムの実例の図である。 少なくとも一実施例による、実例の上位システムを示す図である。 少なくとも一実施例による、ネットワークのシステムのアーキテクチャを示す図である。 少なくとも一実施例による、デバイスの実例の構成要素を示す図である。 少なくとも一実施例による、ベースバンド回路の実例のインターフェースを示す図である。 少なくとも一実施例による、アップリンク・チャネルの実例を示す図である。 少なくとも一実施例による、ネットワークのシステムのアーキテクチャを示す図である。 少なくとも一実施例による、制御プレーンのプロトコル・スタックを示す図である。 少なくとも一実施例による、ユーザ・プレーンのプロトコル・スタックを示す図である。 少なくとも一実施例による、コア・ネットワークの構成要素を示す図である。 少なくとも一実施例による、ネットワーク機能仮想化(NFV:network function virtualization)をサポートするシステムの構成要素を示す図である。
図1は、少なくとも一実施例による、cuPHY、cuBB、又は任意の他のソフトウェア第5世代(5G)新無線(NR)ライブラリなどのPHYライブラリによって実装された第5世代(5G)新無線(NR)物理層(PHY)パイプラインを示すブロック図である。少なくとも一実施例では、5G-NRは、無線アクセス技術のためのネットワーク通信規格であり、5Gは、それがワイヤレス技術の第5世代であることを示し、新無線は、セルラ通信ネットワークのための新無線インターフェース及び無線アクセス技術を示す。少なくとも一実施例では、5G-NRネットワークは、携帯電話などの複数の接続ユーザ機器(UE:user equipment)を有する塔などのセルからの通信情報を処理する基地局を備える。複数のセルからの情報を処理するために、一実施例では、各基地局が本明細書で更に説明される様々な処理動作を実施する。少なくとも一実施例では、5G-NRネットワークにおける処理動作は、より低いレベルの動作を実行する第1層(L1)106又は物理層(PHY)と、より高いレベルの動作を実行する第2層(L2)102などの異なる層を含む階層に分類される。
少なくとも一実施例では、第2層(L2)102は、ハードウェア動作、ソフトウェア動作、並びにそのハードウェア及びソフトウェアを備える基地局によって実行された高レベルの動作の論理的編成である。少なくとも一実施例では、高レベルの動作は、基地局上でL1/PHY106において実施されるより低いレベルの動作との相互作用に依存する、又は他のやり方でその相互作用を求める5G-NR計算動作である。少なくとも一実施例では、L2 102は、5G-NRネットワーク通信を容易にする1つ又は複数の計算動作を含む。少なくとも一実施例では、L2 102の動作が、L1/PHY106によって実行される計算動作のためのデータ及び/又は他の情報を準備する。L1/PHY106によって実行される1つ又は複数の計算動作を呼び出すため、又はそれと他のやり方で相互作用するために、L2 102は、L2-L1インターフェース104を使用する。
少なくとも一実施例では、L2-L1インターフェース104は、実行された時に、5G-NRネットワークにおけるL2 102とL1 106との間にインターフェースを提供するハードウェア及び/又はソフトウェアの命令である。少なくとも一実施例では、L2-L1インターフェース104は、アプリケーション・プログラミング・インターフェース(API)である。少なくとも一実施例では、L2-L1インターフェース104は、ハードウェア・インターフェースである。少なくとも一実施例では、L2-L1インターフェース104は、5G-NRネットワークのL2 102とL1 106との間での相互作用並びにデータ及び/又は他の情報の転送を容易にする他のインターフェースである。
少なくとも一実施例では、第1層(L1)106又は物理層(PHY)は、ハードウェア動作、ソフトウェア動作、並びにそのハードウェア及びソフトウェアを備える基地局によって実行される低レベルの動作の論理的編成である。少なくとも一実施例では、L1/PHY106は、ハードウェアで実装される。少なくとも一実施例では、L1/PHY106は、1つ又は複数のソフトウェア・ライブラリによって実装される。少なくとも一実施例では、L1/PHY106は、グラフィックス処理ユニット(GPU)などの1つ又は複数の並列処理ユニット(PPU:parallel processing unit)を使用してL1/PHY106の動作の加速を実現するために、1つ又は複数のソフトウェア・ライブラリによって実装される。
少なくとも一実施例では、L1/PHY106は、アップリンク及びダウンリンクなど、物理チャネルに編成される。少なくとも一実施例では、各チャネルは、データの送信及び受信のための機能を実行する。少なくとも一実施例では、各チャネルは、制御情報、セル・ディスカバリ、及び初期アクセスの送信及び受信のための機能を実行する。少なくとも一実施例では、物理層(PHY)ライブラリ116において実施されるソフトウェア動作など、L1/PHY106のためのアップリンク及びダウンリンク信号処理コンポーネントは、各L1/PHY106のチャネル固有の動作の信号処理ブロックを有する信号処理パイプラインを提供する。少なくとも一実施例では、ベースバンド装置(BBU:baseband unit)が送信機通信を実施しているダウンリンク・チャネルのために、信号処理ブロックは、3rd Generation Partnership Project(3GPP)のNR標準規格によって決定される。少なくとも一実施例では、BBUが受信機通信を実施しているアップリンク・チャネルのために、信号処理ブロックは、実装固有のものであり、本明細書で更に説明される動作を実施する様々な構成要素を備え得る。
少なくとも一実施例では、5G-NR通信ネットワーク又は任意の他の種類の通信ネットワークのL1/PHY106とL2 102との間で、L2-L1インターフェース104は、BBUのL2 102などの上位層に対して、cuPHY、cuBB、又は任意の他のソフトウェア第5世代5G-NRライブラリなど、ソフトウェアPHYライブラリ116によって実施された動作などのL1/PHY106層の信号処理動作間のインターフェースを提供する。少なくとも一実施例では、L2-L1インターフェース104は、信号処理動作を実施するPHYライブラリ116などのL1/PHY106の構成要素と、3rd Generation Partnership Project(3GPP)プロトコル・スタックの上位層(L2 102など)との間のインターフェースとして動作する。
少なくとも一実施例では、L2-L1インターフェースは、物理層(PHY)ライブラリ・ドライバ112と相互作用する、又は他のやり方で通信する。少なくとも一実施例では、PHYライブラリ・ドライバは、実行された時に、物理層(PHY)ライブラリ116によって実施された1つ又は複数のL1/PHY106の信号処理動作をオーケストレートする、及び/又は呼び出すソフトウェア命令である。PHYライブラリ・ドライバ112の信号処理動作の呼出しを実行するため、又は呼び出させるために、一実施例では、上記のPHYライブラリ・ドライバ112は、物理層(PHY)ライブラリ・ドライバ・インターフェース110を実装する。少なくとも一実施例では、PHYライブラリ・ドライバ・インターフェース110は、実行された時に、PHYライブラリ・ドライバ112によって実行され少なくとも部分的にPHYライブラリ116によって実施される1つ又は複数のL1/PHY106の信号処理動作を呼び出すために、アプリケーション・プログラミング・インターフェース(API)を提供するソフトウェア命令である。
少なくとも一実施例では、物理層(PHY)ライブラリ116は、実行された時に、3GPPプロトコル・スタックなどの5G-NRプロトコル・スタックにしたがって様々な信号処理動作を実行するソフトウェア命令である。少なくとも一実施例では、PHYライブラリ116は、物理層(PHY)ライブラリ・インターフェース114を備える、又は他のやり方で提供する。少なくとも一実施例では、PHYライブラリ・インターフェース114は、実行された時に、上記のPHYライブラリ116によって実施される様々な信号処理動作を実行するために、APIをPHYライブラリ116に提供するソフトウェア命令である。少なくとも一実施例では、PHYライブラリ・インターフェース114は、APIである。少なくとも一実施例では、PHYライブラリ・インターフェース114は、Small Cell ForumのFAPIインターフェースなどの規格に準拠したAPIを提供する。少なくとも一実施例では、PHYライブラリ・インターフェース114は、独自のものであるAPIを提供する。
少なくとも一実施例では、cuPHY、cuBB、又は任意の他のソフトウェア第5世代5G-NRライブラリなどのPHYライブラリ116は、本明細書で更に説明されるグラフィックス処理ユニット(GPU)などの1つ又は複数の並列処理ユニット(PPU)で実行されるソフトウェアを管理する。少なくとも一実施例では、PHYライブラリ116は、5G-NRワイヤレス通信システムのL1/PHY106のための信号処理動作を実施する1つ又は複数の特定動作を実行するソフトウェア・カーネル、又はソフトウェア命令のセグメントを管理し、上記のソフトウェア・カーネルは、本明細書で更に説明されるように、GPUなどの1つ又は複数のPPUによって実行される。
少なくとも一実施例では、GPUなどの1つ又は複数のPPUは、信号処理パイプラインにおけるL1/PHY106の全動作などの全機能を実施する。少なくとも一実施例では、GPUなどの1つ又は複数のPPUは、信号処理パイプラインの、L1/PHY106の特定動作、又はL1/PHY106動作のブロックを加速する。少なくとも一実施例では、PHYライブラリ・ドライバ112及び/又はPHYライブラリ106は、PPUの相互作用を管理するために、1つ又は複数のインターフェース110、114、若しくは他のAPIなどのソフトウェアを提供する。少なくとも一実施例では、PHYライブラリ116は、L1/PHY106の1つ又は複数の信号処理動作を実行するために、GPUなどの1つ又は複数のPPUによって実行されている1つ又は複数のソフトウェア・カーネルへ、後述するように、1つ又は複数のパラメータ及び/又は記述子を送信する、又は他のやり方で提供する。少なくとも一実施例では、PHYライブラリ116及び/又はPHYライブラリ・ドライバ112は、GPUなどの1つ又は複数のPPUによって実行された1つ又は複数のソフトウェア・カーネルからの出力を管理する。
少なくとも一実施例では、PHYライブラリ116は、5G-NRネットワークのL1/PHY106におけるデータ及び/又は他の情報の送信のために信号処理動作を実施及び/又は実行する。少なくとも一実施例では、PHYライブラリ116によって実施及び/又は実行された信号処理動作は、物理アップリンク共有チャネル(PUSCH:physical uplink shared channel)を含む。少なくとも一実施例では、5G-NRにおけるPUSCHは、本明細書で更に説明されるように、多重化された制御情報及びユーザ・アプリケーション・データを運ぶために指定される。少なくとも一実施例では、PHYライブラリ116によって実施及び/又は実行された信号処理動作は、物理ダウンリンク共有チャネル(PDSCH:physical downlink shared channel)を含む。少なくとも一実施例では、PDSCHは、本明細書で更に説明されるように、ユーザ・データ及び上位層シグナリングを運ぶ。
少なくとも一実施例では、PHYライブラリ116によって実施及び/又は実行された信号処理動作は、制御情報送信のためのコンポーネントを備える。少なくとも一実施例では、制御情報送信コンポーネントは、物理ダウンリンク制御チャネル(PDCCH:physical downlink control channel)と、物理アップリンク制御チャネル(PUCCH:physical uplink control channel)を含む。少なくとも一実施例では、PDCCH及びPUCCHは、以下で更に説明されるように、PDSCH及びPUSCHチャネルに関係した伝送形式及びリソース割り当てに関する情報を運ぶ。
少なくとも一実施例では、制御情報送信コンポーネントは、L1/PHY106基準信号を含む。少なくとも一実施例では、制御情報送信コンポーネントにおけるL1/PHY106の基準信号は、復調基準信号(DMRS:demodulation reference signal)、位相追跡基準信号(PTRS:phase-tracking reference signal)、サウンディング基準信号(SRS:sounding reference signal)、及びチャネル状態情報基準信号(CSI-RS:channel-state information reference signal)である。少なくとも一実施例では、DMRSは、本明細書で更に説明されるように、復調のための無線チャネルを推定するために使用される。少なくとも一実施例では、PTRSは、本明細書で更に説明されるように、発振器位相雑音の補償を可能とするために利用される。少なくとも一実施例では、SRS及びCSI-RSは、本明細書で更に説明されるように、スケジューリング、ビームフォーミング、及び/又はリンク適応のためのチャネル状態情報(CSI)測定を実行するために利用される。
少なくとも一実施例では、PHYライブラリ116によって実施及び/又は実行された信号処理動作は、初期アクセス及びセル・ディスカバリのためのコンポーネントを提供する。少なくとも一実施例では、セル・ディスカバリは、本明細書で更に説明されるように、物理的ランダム・アクセス・チャネル(PRACH:physical random access channel)及び物理的ブロードキャスト・チャネル(PBCH:physical broadcast channel)を少なくとも備える。少なくとも一実施例では、同期信号ブロック(SS Block:synchronization signal block)は、本明細書で更に説明されるように、サービング・セルを選択するためにブロードキャストされ得る。
少なくとも一実施例では、PHYライブラリ116によって実施及び/又は実行される信号処理動作は、本明細書で更に説明される、5G-NR信号に対する基本動作を実行する下位物理層(Low PHY)機能を含む。少なくとも一実施例では、Low PHY機能は、高速フーリエ変換(FFT:fast fourier transform)及び逆高速フーリエ変換(IFFT:inverse fast fourier transform)を含む。少なくとも一実施例では、FFT及びIFFTは、本明細書に更に記載されるように、周波数ベースの信号情報を、処理のための時間ベースのデータに変換し、その逆も行う。少なくとも一実施例では、Low PHY機能は、サイクリック・プレフィックス(CP)の挿入及び削除を含む。少なくとも一実施例では、CPの挿入及び削除は、本明細書に更に記載されるように、畳み込みを実行するFFT及びIFFT動作の実行を容易にする。少なくとも一実施例では、Low PHY機能は、送信ビームフォーミング(Tx Beamforming)及び受信ビームフォーミング(Rx Beamforming)を含む。少なくとも一実施例では、本明細書で更に説明されるように、ビームフォーミングは、5G-NR及び他のワイヤレス・ネットワークで使用される信号濾過技法である。少なくとも一実施例では、セルなどの1つ又は複数のラジオ・ユニットにおける1つ又は複数のアンテナは、携帯電話及び/又は他のワイヤレス通信対応デバイスなどの1つ又は複数のユーザ機器(UE)から信号データを送信及び受信する。
少なくとも一実施例では、PHYライブラリ116によって実施及び/又は実行される信号処理動作は、本明細書に更に説明され、及び/又は、3GPP規格又は他の5G-NR規格文書によって要件とされている他のL1/PHY106動作を含む。L1/PHY106動作がL2 102と相互作用するために、又は他のやり方でデータを転送するために、上記のL1/PHY106動作は、上述したように、L2 102とL1 106との間でL2-L1インターフェース104を使用する。
図2は、少なくとも一実施例による、図1と併せて上述された動作を含むPHY動作を実行するためにPHYライブラリ210によって実装された物理層(PHY)パイプラインへの関数呼出し202を示すブロック図である。少なくとも一実施例では、上述したように、第2層(L2)又は第1層(L1)のPHYドライバなどの第5世代(5G)新無線(NR)ネットワーク・プロトコル・スタックを実装する1つ又は複数のコンポーネントは、PHYライブラリ・インターフェース208への1つ又は複数の関数呼出し202を実行する。少なくとも一実施例では、PHYライブラリ・インターフェース208は、実行された時に、アプリケーション・プログラミング・インターフェース(API)をPHYライブラリ210に提供するソフトウェア命令である。少なくとも一実施例では、PHYライブラリ210は、図1と併せて上述され、本明細書において更に説明される、5G-NRプロトコル・スタックの1つ又は複数のPHY機能を実行するために、実行された時に、1つ又は複数のL1動作を実施するソフトウェア命令である。少なくとも一実施例では、PHYライブラリ210は、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどのソフトウェア実装5G-NRライブラリである。
少なくとも一実施例では、1つ又は複数の関数呼出し202は、実行された時に、PHYライブラリ・インターフェース208のAPIによって提供される1つ又は複数の関数を呼ぶ、又は他のやり方で呼び出すソフトウェア命令である。少なくとも一実施例では、図3A及び図3Bと併せて以下で更に説明するように、1つ又は複数の関数呼出しは、上記の1つ又は複数の関数呼出しへの入力として、1つ又は複数の記述子204を含む。少なくとも一実施例では、記述子204は、PHYライブラリ210によって実装されたPHYパイプラインの1つ又は複数の構成要素に対するパラメータ206のためのソフトウェア・コンテナなどのデータ構造である。少なくとも一実施例では、記述子204は、1つ又は複数のカーネル・インターフェースのコンテキストにおいて発生する。少なくとも一実施例では、記述子204は、5G-NRプラットフォームの他のインターフェースのコンテキストで発生する。少なくとも一実施例では、以下で更に説明されるように、パラメータ206は、PHYライブラリ210によって実装されたPHYパイプラインの1つ又は複数の構成要素によって実行される1つ又は複数の動作に提供される情報を示す、又はその情報を含むデータ値である。少なくとも一実施例では、パラメータ206は、1つ又は複数のPHY動作の属性を含む。少なくとも一実施例では、属性は、1つ又は複数のPHY動作の1つ又は複数のプロパティを示すデータ値である。たとえば、一実施例では、属性は、PHYライブラリ210によって実装された1つ又は複数のPHY動作によって少なくとも処理される1つ又は複数のユーザ機器(UE)デバイスから情報を伝送する1つ又は複数のセルを示す。他の実施例では、属性は、1つのUEデバイスに一意、又は複数のUEデバイス間で共有される識別子を示す。
少なくとも一実施例では、以下で更に説明するように、1つ又は複数の関数呼出し202は、PHYライブラリ210へのPHYライブラリ・インターフェース208によって提供された1つ又は複数の関数を呼び出し、上記のPHYライブラリ・インターフェース208によって提供された上記の1つ又は複数の関数への入力として、1つ又は複数のパラメータ206を含む1つ又は複数の記述子204を提供する。少なくとも一実施例では、PHYライブラリ210は、1つ又は複数の信号処理動作を実施する。少なくとも一実施例では、1つ又は複数のパラメータ206を含む1つ又は複数の記述子204は、1つ又は複数の関数呼出し202によって呼び出された1つ又は複数の信号処理動作のバッチ214を実行するために、PHYライブラリ210によって実施された1つ又は複数の信号処理動作の1つ又は複数の構成を示す。
少なくとも一実施例では、バッチ214は、PHYライブラリ210によって実施された1つ又は複数の信号処理動作を構成する1つ又は複数の信号処理動作又は記述子204並びに/若しくはパラメータ206の論理的編成である。少なくとも一実施例では、PHYライブラリ210は、1つ又は複数の関数呼出し202の1つ又は複数の特性にしたがってバッチ214を実行する。たとえば、一実施例では、PHYライブラリ210は、5G-NRネットワークにおける1つ又は複数のユーザ機器(UE)の単一又は複数のセル・サイト又は他のグループ化に対応する1つ又は複数の関数呼出し202のバッチ214を実行する。他の実施例では、PHYライブラリ210は、5G-NRネットワークのメンバー及び/又は構成要素の他の論理的編成にしたがってバッチ214を実行する。バッチ214を実行又は他のやり方でサポートするために、一実施例では、以下で更に説明するように、PHYライブラリ210は、構造化データ編成212を含む。少なくとも一実施例では、データ編成212は、上記のPHYライブラリ210のデータ・コンテナ間の木又は他の連結データ関係を通してなど、PHYライブラリ210によるバッチ214を容易にするデータの論理的編成である。
図3Aは、少なくとも一実施例による物理層(PHY)記述子302を示すブロック図である。少なくとも一実施例では、PHY記述子302は、コンポーネント・パラメータ304、306、308を含むデータ・コンテナである。少なくとも一実施例では、コンポーネント・パラメータ304、306、308は、図1と併せて上述したように、PHY処理パイプラインのための制御及び/又はデータ情報の配置を説明する1つ又は複数の値又は他のデータ・コンテナ、並びに/若しくはPHY処理パイプライン内で情報を処理するコンポーネントを含むデータである。
少なくとも一実施例では、PHY記述子302は、PHYパイプラインにおける1つ又は複数の処理コンポーネントにわたって利用可能な共通パラメータを示すデータ値を含む。少なくとも一実施例では、以下で説明するように、PHY記述子302は、PHYパイプラインにおける1つ又は複数の処理コンポーネントのためのカーネル引数316を示すデータ値を含む。少なくとも一実施例では、PHY記述子302は、グラフィックス処理ユニット(GPU)などの1つ又は複数の並列処理ユニット(PPU)のうちのいずれのコンピューティング・ユニットが異なるカーネルを実行してPHY処理パイプラインを実行するために使用されるかなど、起動ジオメトリを示すデータ値を含む。少なくとも一実施例では、PHY記述子302は、GPUなどのPPUによって実行されたいずれのカーネルがPHY処理パイプラインの様々なコンピューティング・コンポーネントを実行するかを決定するカーネル選択パラメータを示すデータ値を含む。少なくとも一実施例では、PHY記述子302は、中央処理装置(CPU)及び/又はGPUなどのPPUによって制御及び/又はデータ処理を構成する他の情報を示すデータ値を含む。
少なくとも一実施例では、コンポーネント・パラメータ304、306、308は、図3Bと併せて説明されるように、PHY処理パイプライ又はPHY処理パイプラインの処理コンポーネントを構成するために使用可能な1つ又は複数のデータ値を含むデータ・コンテナである。少なくとも一実施例では、コンポーネント・パラメータ304、306、308は、メモリにおけるデータ配置、動作タイミング、データ・サイズ、及び/又はデータ・リフレッシュ・レートを制御するデータ値を含む。少なくとも一実施例では、コンポーネント・パラメータ304、306、308は、メモリにおけるコンポーネント記述子310のデータ値の配置を制御するデータ値を含む。少なくとも一実施例では、コンポーネント・パラメータ304、306、308は、PHY処理パイプライン及び/又はそのPHY処理パイプラインの処理コンポーネントへのパラメータの更新時間及び/又は更新レートを示すデータ値を含む。たとえば、一実施例では、コンポーネント・パラメータ304、306、308は、図1と併せて上述したように、ドライバによるセットアップ・タイム又はラン・タイムに更新されるなど、開始時間ウインドウ中の早期にカーネル引数が更新されることを示すデータ値を含む。少なくとも一実施例では、コンポーネント・パラメータ304、306、308は、GPUなどのPPUの1つのカーネルに対応する全パラメータを移動することによってなど、バルク・データ転送として、メモリにおけるパラメータの動きを示すデータ値を含む。
少なくとも一実施例では、コンポーネント・パラメータ304、306、308は、コンポーネント記述子310などのデータ・コンテナを含む。少なくとも一実施例では、コンポーネント記述子310は、PHYパイプラインの1つ又は複数の処理コンポーネントを構成するために使用可能なデータ値を含むデータ値のコンテナである。少なくとも一実施例では、コンポーネント記述子310は、5G-NRネットワーク動作を容易にするために、5G-NRベースバンド装置又は他の計算デバイスにおけるスロット処理エンジンによる処理動作の構成を容易にする。少なくとも一実施例では、スロット処理エンジンは、スロット中に実行される計算をスケジューリングする。少なくとも一実施例では、スロットは、中央処理装置(CPU)、又はGPUなどのPPUによる実行のための時間ウインドウである。
少なくとも一実施例では、コンポーネント記述子310は、1つ又は複数のフラグ312を含む。少なくとも一実施例では、フラグ312は、PHYパイプラインの処理コンポーネントに対応する1つ又は複数のバイナリ又は他のデータ値を示すデータ値である。たとえば、一実施例では、フラグ312は、PHYパイプラインの処理コンポーネントがイネーブルであるかを示すバイナリ・データ値を含む。少なくとも一実施例では、コンポーネント記述子310は、構成314のデータ値を含む。少なくとも一実施例では、構成314のデータ値は、PHYパイプラインの処理コンポーネントを構成するために使用可能なデータ値である。たとえば、一実施例では、構成314のデータ値は、コンポーネント記述子310によって示されるPHYパイプラインの処理コンポーネントを実行するために、GPUなどのPPUによって実行される1つ又は複数のカーネルを示す。少なくとも一実施例では、コンポーネント記述子310は、カーネル引数316を含む。少なくとも一実施例では、カーネル引数は、PHYパイプラインにおいて処理コンポーネント動作を実施及び実行するために、ソフトウェア・カーネルなどのカーネルの構成を示す1つ又は複数のデータ値を示すデータ値である。少なくとも一実施例では、コンポーネント記述子310は、PHYパイプラインの処理コンポーネントを構成するために使用可能な他のデータ値を含む。
図3Bは、図1と併せて上述したように、少なくとも一実施例による、cuPHY、cuBB、又は任意の他のソフトウェア第5世代(5G)新無線(NR)ライブラリなどのPHYライブラリによって実装された物理層(PHY)パイプラインにおける実例のPUSCHパイプライン記述子318を示すブロック図である。少なくとも一実施例では、PUSCHパイプライン記述子318は、図3Aと併せて上述したように、PHY記述子である。すなわち、一実施例では、PUSCHパイプライン記述子318は、図1と併せて上述したように、PHYパイプラインでPUSCHを実行する1つ又は複数の動作を構成するために使用可能なデータ値及び/又は追加のデータ・コンテナを含む実例のデータ・コンテナである。
少なくとも一実施例では、実例のPUSCHパイプライン記述子318は、コンテナ322、324、326、328、330、332、334、336を含み、各コンテナ322、324、326、328、330、332、334、336は、第5世代(5G)新無線(NR)ネットワークでPUSCHを実行するために使用可能な低レベルのPHY処理動作に固有のパラメータを含む。少なくとも一実施例では、PUSCHパイプライン記述子318は、そのPUSCHパイプライン記述子318内の1つ又は複数のコンテナ322、324、326、328、330、332、334、336のうちで共有される1つ又は複数の構成又は他のオプションを示すデータ値である共通パラメータ320を含む。
少なくとも一実施例では、PUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、PUSCHパイプライン記述子318によって表されるPUSCHコンピューティング・パイプラインの一部として実行される各低レベルの計算動作固有の個別のコンテナを含む。少なくとも一実施例では、実例のPUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、チャネル推定パラメータ322を含む。少なくとも一実施例では、チャネル推定パラメータ322は、本明細書で更に説明されるように、PUSCHパイプライン中に実行されたチャネル推定動作を構成するために使用可能な情報を含むデータ値である。少なくとも一実施例では、実例のPUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、等化器パラメータ324を含む。少なくとも一実施例では、等化器パラメータ324は、PUSCHパイプライン中に実行された1つ又は複数の等化動作を構成するために使用可能な情報を含むデータ値である。少なくとも一実施例では、実例のPUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、ソフト・デマップ・パラメータ326を含む。少なくとも一実施例では、ソフト・デマップ・パラメータ326は、PUSCHパイプライン中に実行されたソフト・デマッピング動作を構成するために使用可能な情報を含むデータ値である。
実例のPUSCHパイプライン記述子318は、一実施例では、スクランブル解析パラメータ328を含むコンテナ322、324、326、328、330、332、334、336を含む。少なくとも一実施例では、スクランブル解析パラメータ328は、PUSCHパイプライン中に実行されるスクランブル解析動作を構成するために使用可能な情報を含むデータ値である。少なくとも一実施例では、実例のPUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、レート・マッチング330を含む。少なくとも一実施例では、レート・マッチング・パラメータ330は、PUSCHパイプライン中に実行される1つ又は複数のレート・マッチング動作を構成するために使用可能な情報を含むデータ値である。少なくとも一実施例では、実例のPUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、低密度パリティ検査(LDPC:low density parity check)復号パラメータ332を含む。少なくとも一実施例では、LDPC復号パラメータ332は、PUSCHパイプラインの一部として実行された1つ又は複数のLDPC復号動作を構成するために使用可能な情報を含むデータ値である。
少なくとも一実施例では、実例のPUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、符号ブロック周期的冗長検査(CRC:cyclic redundancy check)パラメータ334を含む。符号ブロックCRCパラメータ334は、PUSCHパイプライン記述子318に対応するPUSCHパイプラインの一部として実行された、本明細書で更に説明されるように、1つ又は複数の符号ブロックCRC動作を構成するために使用可能な情報を含むデータ値である。少なくとも一実施例では、実例のPUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、トランスポート・ブロックCRCパラメータ336を含む。少なくとも一実施例では、トランスポート・ブロックCRCパラメータ336は、PUSCHパイプラインの一部として実行される1つ又は複数のトランスポート・ブロックCRC動作を構成するために使用可能な情報を含むデータ値である。
少なくとも一実施例では、1つ又は複数の実例のPUSCHパイプライン記述子318のコンテナ322、324、326、328、330、332、334、336は、PUSCHコンポーネント記述子338を少なくとも含む。少なくとも一実施例では、PUSCHコンポーネント記述子338は、PUSCHパイプラインの計算コンポーネントのための1つ又は複数の構成オプションを示すデータ値を含むデータ・コンテナである。たとえば、一実施例では、PUSCHコンポーネント記述子338は、PUSCHコンポーネント記述子338に対応する所与のPUSCHコンポーネントがPUSCHパイプライン中にイネーブルであるか、又は実行されるかを示すデータ値であるイネーブル・フラグ340を含む。少なくとも一実施例では、PUSCHコンポーネント記述子338は、カーネル・カウント342を含む。少なくとも一実施例では、カーネル・カウント342は、カーネルを選択して、それらの選択カーネルに対して引数を供給するデータ値及び/又はデータ構造である。たとえば、カーネル・カウント342は、一実施例では、バイナリ値の一次元又は二次元のアレイを少なくとも含むデータ項目であるビットマップであり、各バイナリ値は、特定のソフトウェア・カーネルがグラフィックス処理ユニット(GPU)などの並列処理ユニット(PPU)上でPUSCHコンポーネント動作を実行するかを示す。少なくとも一実施例では、PUSCHコンポーネント記述子338は、カーネル選択ビットマップ342によって選択されたカーネル毎に1つ又は複数のカーネル引数344、346、348を含む。少なくとも一実施例では、カーネル引数344、346、348は、GPUなどのPPU上でPUSHコンポーネント動作を実行するために、それぞれの選択カーネルに対して提供される1つ又は複数の引数又はパラメータを示すデータ値である。
図4Aは、少なくとも一実施例による、PHYライブラリによって実装された物理層(PHY)パイプライン用の階層的データ編成を示すブロック図である。少なくとも一実施例では、木において1つ又は複数のデータ値の検索及びアクセスが高速計算動作であり、木構造は低いストレージ・オーバーヘッドを有するため、階層的データ編成は、データのアクセス及び格納の効率を改善する。少なくとも一実施例では、木構造のルートにおいて、図4Aに図示されるようにデータを編成するために、セル・パラメータ402は、第5世代(5G)新無線(NR)ネットワークのセル固有の構成情報などの情報を示すデータ値を含む。上記の木構造のルートにおいてセル固有パラメータ402を有する木構造にセル固有の全情報を含むことによって、一実施例では、セル間の情報共有がなくなり、データ依存性を低減させ、既存のセル構成を修正せずに、セルを5G-NRネットワークに追加することを可能とする。少なくとも一実施例では、セル・パラメータ402は、バージョニング情報、デバイス固有情報、表現されているセル数とともに、セル特有の他の情報を含むデータ値を含む。少なくとも一実施例では、表現されているセル数は、5G-NR実装におけるより高いレベルの抽象の属性である。少なくとも一実施例では、セル・パラメータ402によって示されるセル情報は、木構造によって表現されるセルに対応するその木構造の他の全要素にとって可視である。
少なくとも一実施例では、木構造における親セル・パラメータ402のノードの子は、パイプライン固有パラメータ404、406、408、410である。少なくとも一実施例では、パイプライン固有パラメータ404、406、408、410は、異なるパイプライン404、406、408、410にわたって共有され得る情報などのパイプライン・レベル情報を含み、パイプライン・レベル情報は、親セル・パラメータ402に伝搬されて戻るのではなく、各パイプライン内に包含される。少なくとも一実施例では、パイプライン固有パラメータ404、406、408、410は、木構造の各パイプライン固有パラメータ404、406、408、410のノードから、その木構造の全ての子及び子孫ノード(descending node)まで可視である情報を含む。
少なくとも一実施例では、パイプライン固有パラメータ404、406、408、410は、PUCCH受信パラメータ404などのPHYチャネル・パラメータを含む。少なくとも一実施例では、PUCCH受信パラメータ404は、図3A及び図3Bと併せて上述したように、コンテナであり、図1と併せて上述したように、PHYパイプラインにおけるPUCCH受信動作に固有のパラメータ及び/又は他の情報を含む。少なくとも一実施例では、パイプライン固有パラメータ404、406、408、410は、PUSCH受信パラメータ406を含む。少なくとも一実施例では、PUSCH受信パラメータ406は、図3A及び図3Bと併せて上述したように、コンテナであり、図1と併せて上述したように、PHYパイプラインにおけるPUSCH受信動作に固有のパラメータ及び/又は他の情報を含む。少なくとも一実施例では、パイプライン固有パラメータ404、406、408、410は、PDSCH送信パラメータ408を含む。少なくとも一実施例では、PDSCH送信パラメータ408は、図3A及び図3Bと併せて上述したように、コンテナであり、図1と併せて上述したように、PHYパイプラインにおけるPDSCH送信動作に固有のパラメータ及び/又は他の情報を含む。少なくとも一実施例では、パイプライン固有パラメータ404、406、408、410は、PDCCH送信パラメータ410を含む。少なくとも一実施例では、PDCCH送信パラメータ410は、図3A及び図3Bと併せて上述したように、コンテナであり、図1と併せて上述したように、PHYパイプラインにおけるPDCCH送信動作に固有のパラメータ及び/又は他の情報を含む。
少なくとも一実施例では、各パイプライン固有パラメータ404、406、408、410のコンテナは、パイプライン固有動作パラメータ412、414、416、418を含む。少なくとも一実施例では、パイプライン固有動作パラメータ412、414、416、418は、図3A及び図3Bと併せて上述したように、コンポーネント記述子である。少なくとも一実施例では、パイプライン固有動作パラメータ412、414、416、418は、図3Bと併せて上述したように、共通パラメータを含む。少なくとも一実施例では、パイプライン固有動作パラメータ412、414、416、418は、図3Bと併せて上述したように、チャネル推定パラメータ414、レート・マッチング・パラメータ416、低密度パリティ検査(LDPC)パラメータ418とともに、周期的冗長検査(CRC)パラメータなど、図4に明示していない他のコンポーネント・パラメータを含む。少なくとも一実施例では、パイプライン固有動作パラメータ412、414、416、418は、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア5G-NRライブラリなどPHYライブラリによって実装されたPHYパイプラインの一部として実行された1つ又は複数のPHYパイプライン動作に対応する任意の他のパラメータを含む。
図4Bは、少なくとも一実施例による、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア第5世代(5G)新無線(NR)ライブラリなどのPHYライブラリによって実装されたPHYパイプラインのための時間的データ編成を示すブロック図である。少なくとも一実施例では、中央処理装置(CPU)及び/又はグラフィックス処理ユニット(GPU)などの並列処理ユニット(PPU)上のパラメータは、アクセス・レート及び可変性などの時間的に考慮すべき要素にしたがって、本明細書で更に説明される、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって編成される。少なくとも一実施例では、時間的に編成されたパラメータは、静的パラメータ422、準静的パラメータ424、及び/又は動的パラメータ426を含む。
少なくとも一実施例では、静的パラメータ422は、図3A及び図3Bと併せて上述したパラメータなど、実行中に不変であるパラメータである。少なくとも一実施例では、静的パラメータ422は、パイプライン構築時及び/又は構成時に、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって初期化され、持続性メモリに格納され、又はバックアップされる。少なくとも一実施例では、準静的パラメータ424は、図3A及び図3Bと併せて上述したパラメータなど、5G-NRパイプライン実行中に、比較的少数のスロット又は計算ウインドウにわたって変化するパラメータである。少なくとも一実施例では、準静的パラメータ424は、上位層(図1と併せて上述したように、たとえば、第2層)からの構成メッセージなど、特定のイベントが発生した時に初期化される。少なくとも一実施例では、動的パラメータ426は、図3A及び図3Bと併せて上述したパラメータなど、PHYパイプライン実行スロット毎に、スロット・レートで、及び/又は実行スロット設定中に、更新されるパラメータである。少なくとも一実施例では、動的パラメータ426は、高頻度で更新される値又は値が高頻度で変化するパラメータである。
少なくとも一実施例では、時間的に編成されたパラメータは、増加する柔軟性428を有する。すなわち、一実施例では、静的パラメータ422は、低い柔軟性を有し、又は変化する能力が低く、その一方で準静的パラメータ424は柔軟性が増加し、動的パラメータ426は最大限に柔軟性があり、更新又は変更されることが可能である。少なくとも一実施例では、時間的に編成されたパラメータは、柔軟性428と逆相関した増加する性能430を有する。すなわち、一実施例では、動的パラメータ426は、高頻度の更新に起因して低い性能を有する一方、準静的パラメータ424は、より低い頻度の更新及び/又は変更に起因して性能が増加しており、静的パラメータ422は、その不変性に起因して最大限の性能を有する。
図5は、少なくとも一実施例による、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア第5世代(5G)新無線(NR)ライブラリなどのソフトウェアPHYライブラリによって実装された物理層(PHY)パイプラインのための実例のPUSCHパイプライン・データ構造を示すブロック図である。少なくとも一実施例では、実例のPUSCH受信パラメータ502は、図3Aと併せて上述したように、PHY記述子又はPHYコンポーネント記述子である。少なくとも一実施例では、PUSCH受信パラメータ502は、階層的データ編成のための、図4Aと併せて上述したような木構造の親へのポインタなど、親へのポインタ504を含む。
少なくとも一実施例では、PUSCH受信パラメータ502は共通パラメータ506を含み、ここで、共通パラメータは、上記のPUSCH受信パラメータ502の記述子に対応する1つ又は複数のコンポーネント記述子510、512、514間で共有される1つ又は複数の構成オプション又は他の情報を示すデータ値である。少なくとも一実施例では、PUSCH受信パラメータ502は、図4と併せて上述したように、階層的編成における子へのポインタ508を含む。
少なくとも一実施例では、子へのポインタ508は、子コンポーネント記述子510、512、514を指す。少なくとも一実施例では、子コンポーネント記述子510、512、514は、図1及び図3Bと併せて上述したように、チャネル推定パラメータ510、レート・マッチング・パラメータ512、低密度パリティ検査(LDPC)パラメータ、及び/又はPUSCH受信パイプラインを実行するために1つ又は複数の計算動作を実施するコンポーネントに対応する任意の他のパラメータなど、PUSCH受信パイプラインを実行する計算コンポーネントを含む。
少なくとも一実施例では、図4Bと併せて上述したように、PUSCH受信パラメータ502記述子における共通パラメータ506、516は、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア5G-NRライブラリなどのソフトウェアPHYライブラリによって、静的パラメータ518、準静的パラメータ520、及び/又は動的パラメータ522に編成される。少なくとも一実施例では、静的パラメータ518、524は、i個のパラメータ526、528を含み、ここで、図4Bと併せて上述したように、そのi個のパラメータ526、528は不変である。少なくとも一実施例では、準静的パラメータ520、530はj個のパラメータ532、534を含み、ここで、そのj個のパラメータ532、534は、図4Bと併せて上述したように、PUSCH受信パイプラインなどのPHYパイプラインを実行するために、1つ又は複数のスロットのためのスロット周波数又は他の実行スケジューリング・メトリックにしたがって変化する。少なくとも一実施例では、動的パラメータ522、536は、k個のパラメータ538、540を含み、ここで、図4Bと併せて上述したように、そのk個のパラメータ538、540は変化し、及び/又は高頻度で更新される。
少なくとも一実施例では、グラフィックス処理ユニット(GPU)などの並列処理ユニット(PPU)542は、不変のデータ値を格納するために使用可能なメモリに、静的パラメータ524、544を格納する。少なくとも一実施例では、GPUなどのPPU542は、定期的に更新されたデータ値を格納するために使用可能なメモリに、準静的パラメータ530、546を格納する。少なくとも一実施例では、GPUなどのPPU542は、高頻度の変更及び/又は更新を有するデータ値のために使用可能なメモリに、動的パラメータ536、548を格納する。
図6は、少なくとも一実施例による、物理層(PHY)記述子バッファリングを示すブロック図である。少なくとも一実施例では、静的PHY記述子604に対応するPHYパイプラインのためのスロット実行時間の前に、静的PHY記述子604は、図3A及び図4Bと併せて上述したように中央処理装置(CPU)602のメモリにおいて、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア第5世代(5G)新無線(NR)ライブラリなどのソフトウェアPHYライブラリによってアセンブルされ、グラフィックス処理ユニット(GPU)のメモリなど、並列処理ユニット(PPU)610のメモリにコピーされる。少なくとも一実施例では、静的PHY記述子603は、その静的PHY記述子に対応するPHYパイプラインのセットアップ中にソフトウェアPHYライブラリによってアセンブルされる。少なくとも一実施例では、GPUなどのPPU610は、図5と併せて上述したように、コピーされた静的PHY記述子612を格納する。
少なくとも一実施例では、cuPHY、cuBB、又は更に本明細書で記載される任意の他のソフトウェア第5世代5G-NRライブラリなどのソフトウェアPHYライブラリは、CPU602上に準静的PHY記述子606及び動的PHY記述子608をバッファリングする。少なくとも一実施例では、準静的PHY記述子606及び動的PHY記述子608をバッファリングすることは、その準静的PHY記述子606及び動的PHY記述子608に対応するPHYパイプラインのスロット処理を容易にする。少なくとも一実施例では、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア5G-NRライブラリなどのソフトウェアPHYライブラリは、CPU602上に準静的PHY記述子606及び動的PHY記述子608をバッファリングし、その準静的PHY記述子606及び動的PHY記述子608を1つ又は複数のPPU610にコピーする。少なくとも一実施例では、GPUなどの1つ又は複数のPPU610は、図5と併せて上述したように、コピーされた準静的PHY記述子614と、コピーされた動的PHY記述子616とを格納する。
少なくとも一実施例では、図6に図示するように、時間的に分類されたPHY記述子のバッファリングは、必要な場合のみ使用される。たとえば、一実施例では、パイプライン・レベルは、静的PHY記述子604、612に含まれた静的、準静的、及び動的パラメータと、バッファリングされた準静的PHY記述子606、614と、バッファリングされた動的PHY記述子608、616とを必要とし得るが、コンポーネントは、静的PHY記述子604、612、及び/又はバッファリングされた動的PHYパラメータ608、616のみを必要とし得る。少なくとも一実施例では、多くのPHYチャネル処理パイプライン及び対応するPHY記述子バッファの深さは、処理レイテンシを補填するために、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア5G-NRライブラリなどのソフトウェアPHYライブラリによって調節される。たとえば、N個までの準静的PHY記述子606、614及びM個までの動的PHY記述子608、616が、一実施例では、5G-NR処理中の実行スロットのための処理レイテンシを補填するために、ソフトウェアPHYライブラリによってバッファリングされてもよい。
図7は、少なくとも一実施例による、物理層(PHY)動作バッチ中のバッチ済みパラメータ編成を示すブロック図である。少なくとも一実施例では、バッチは、PHY動作が、グラフィックス処理ユニット(GPU)などの並列処理ユニット(PPU)上で1つ又は複数のカーネルによって計算されるようにする、PHYパイプラインにおける計算PHY動作の論理的編成又はその組み合わせである。少なくとも一実施例では、cuPHY、cuBB、又は本明細書で更に説明されるような任意の他のソフトウェア第5世代(5G)新無線(NR)ライブラリなどのソフトウェアPHYライブラリが、異なるワークロード構成にしたがってPHY動作をバッチする。少なくとも一実施例では、実例のワークロード構成は、5G-NRベースバンド装置(BBU)によって処理される、携帯電話などの接続された少数のユーザ機器(UE)を有する多数のセル・サイトである。少なくとも一実施例では、他の実例のワークロード構成は、5G-NR BBUによって処理される、接続された多数のUEを有する少数のセル・サイトである。
少なくとも一実施例では、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア5G-NRライブラリなどのソフトウェアPHYライブラリは、ワークロードに基づいてPHYパイプライン動作に対応するパラメータをバッチする。たとえば、ソフトウェアPHYライブラリは、一実施例では、ワークロードの到着にしたがって、PHYパイプライン動作に対応するパラメータをバッチする。少なくとも一実施例では、ワークロードの到着にしたがったバッチは、空間的特性にしたがってパラメータを配置又はグループ化し、ここで、ソフトウェアPHYライブラリは、セル内又は複数のセルにわたってデバイスから受信された情報に対する動作を構成するパラメータなど、所与のスロット、処理時間スロットで利用可能な同時ワークロードにわたってパラメータをバッチする。他の実施例で、ワークロード到着にしたがったバッチは、時間的特性にしたがってパラメータをグループ化し、ここで、ソフトウェアPHYライブラリは、PUSCH及びPDSCHなどの動作を順次実行するために、実行スロット内の複数のシンボルを処理する、セル毎の小さいワークロードに対して複数のセルを連続して処理する、又は複数のPHYチャネルにわたって処理するなどによって、時間間隔にわたってパラメータ・ワークロードをバッチする。
ワークロードに基づくPHYパイプライン動作に対応するPHYパラメータのバッチの他の実例は、一実施例では、ワークロード構成にしたがってバッチする、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどソフトウェアPHYライブラリである。少なくとも一実施例では、ワークロード構成にしたがったバッチは、バッチ対象のPHY動作パラメータの同質の特性にしたがってパラメータを配置又はグループ化する。少なくとも一実施例では、同質のバッチによって、単一のカーネルが、複数の同一構成されたワークロードを処理できる。少なくとも一実施例では、同質の特性にしたがったバッチは、ソフトウェアPHYライブラリに同時に到着したパラメータ、又は時間の経過に伴って到着したパラメータを集約することによって、特定のカーネル特化次元(dimension)内におけるバッチを含む。少なくとも一実施例では、ワークロード構成にしたがったバッチは、バッチ対象のPHY動作パラメータの異質の特性にしたがってパラメータを配置又はグループ化する。少なくとも一実施例では、異質のバッチによって、いくつかの異質のワークロードが、単一のコンポーネントによってセットアップ及び処理されることが可能となる。少なくとも一実施例では、異質の特性にしたがったバッチは、ワークロードを単一の計算グラフに組み合わせるために、カーネル特化次元を越えたバッチを含む。
少なくとも一実施例では、カーネル特化次元は、GPUなどのPPUによって実行されるカーネルであり、そのカーネルは、問題サイズに適合するためにワークロード構成毎にソフトウェアPHYライブラリによってカスタマイズされ、起動オーバーヘッドの増加を犠牲にしてより良好な実行時間及び/又はスループットにつながる。少なくとも一実施例では、カーネル汎化次元は、GPUなどのPPUによって実行されるカーネルであり、そのカーネルは、複数のワークロードをサポートするためにソフトウェアPHYライブラリによってカスタマイズされ、それによってカーネルの効率を下げ得る。
図7は、ソフトウェアPHYライブラリによる入力パラメータのバッチの実例を示すブロック図である。PUSCHバッチ構成パラメータ702は、一実施例では、チャネル推定バッチ・パラメータ704、チャネル等化バッチ・パラメータ706、及び低密度パリティ検査(LDPC)バッチ・パラメータ708など、PHY PUSCHを実行するために、PHYパイプライン動作毎にバッチされるパラメータ704、706、708を含むデータ・コンテナである。少なくとも一実施例では、バッチ構成パラメータ702は、UEグループ・スーパー・セットのパラメータをどのようにグループ化するかなど、どのようにバッチが行われるかを指定する。少なくとも一実施例では、バッチ構成パラメータ702は、各コンポーネントの一部である。少なくとも一実施例では、バッチ構成パラメータ702は、PHYパイプラインの一部である。少なくとも一実施例では、ソフトウェアPHYライブラリは、ワークロード・タイプにしたがった異質性バッチを実行する。第1のLDPCバッチ・パラメータ710は、一実施例では、ソフトウェアPHYライブラリによってバッチされる多数の異なるワークロード・タイプを示す。たとえば、図7において、第1のLDPCバッチ・パラメータ710は、LDPC動作を実行するために3つのソフトウェア・カーネル712、726、736を必要とする3つのワークロード・タイプを示す。少なくとも一実施例では、ソフトウェアPHYライブラリは、第1のLDPCバッチ・パラメータ710によって示された多数のカーネル712、726、736にパラメータをバッチ又はグループ化する。第1のタイプのLDPCバッチ・パラメータ714、716、718、720、722、724に対して、一実施例では、ソフトウェアPHYライブラリは、そのバッチ・パラメータを第1のLDPCカーネル712にバッチする。
第1のタイプのLDPCバッチ・パラメータ714、716、718、720、722、724に対して、一実施例では、ソフトウェアPHYライブラリは、第1のLDPCカーネル712によって処理又は実行されるそのLDPCバッチ・パラメータ714、716、718、720、722、724を、ワークロードのタイプによって、異質にグループ化又はバッチする。少なくとも一実施例では、第2のタイプのLDPCバッチ・パラメータ728、730、732、734に対して、ソフトウェアPHYライブラリは、第2のLDPCカーネル726によって処理又は実行されるLDPCバッチ・パラメータ728、730、732、734をワークロードのタイプによって、異質にグループ化又はバッチする。少なくとも一実施例では、第3のタイプのLDPCバッチ・パラメータ738、740、742、744、746に対して、ソフトウェアPHYライブラリは、第3のLDPCカーネル736によって処理又は実行されるLDPCバッチ・パラメータ738、740、742、744、746をワークロードのタイプによって、異質にグループ化又はバッチする。
少なくとも一実施例では、LDPCバッチ・パラメータ714、716、718、720、724、728、730、732、734、738、740、742、744、746などのバッチ・パラメータは、図7に示すように、柔軟性と効率的なメモリ使用のために、タイプ-長さ-値のフォーマットで符号化される。少なくとも一実施例では、LDPCバッチ・パラメータ714、716、718、720、724、728、730、732、734、738、740、742、744、746などのバッチ・パラメータは、各グループ又はバッチのタイプに対して固定の最大の長さのアレイを使用するために、5G-NR PHYライブラリによって符号化される。少なくとも一実施例では、LDPCバッチ・パラメータ714、716、718、720、724、728、730、732、734、738、740、742、744、746の各グループ又はバッチに対して、第1のLDPCバッチ・パラメータ714、728、738は、各LDPCカーネル712、726、736によって処理されるLDPCバッチ・パラメータ714、716、718、720、724、728、730、732、734、738、740、742、744、746の各グループ又はバッチと関連付けられたタイプを示す。少なくとも一実施例では、LDPCバッチ・パラメータ714、716、718、720、724、728、730、732、734、738、740、742、744、746の各グループ又はバッチに対して、第2のLDPCバッチ・パラメータ716、730、740は、そのLDPCバッチ・パラメータ714、716、718、720、724、728、730、732、734、738、740、742、744、746の各グループ又はバッチにおけるパラメータの長さ又は数を示す。少なくとも一実施例では、LDPCバッチ・パラメータ714、716、718、720、724、728、730、732、734、738、740、742、744、746のグループ又はバッチの残りのLDPCバッチ・パラメータ718、720、722、724、732、734、742、744、746は、以下で説明するように、ユーザ機器(UE)グループ・スーパー・セット748への指標などのパラメータ・データ値を含む。他の実施例では、LDPCバッチ・パラメータ714、716、718、720、724、728、730、732、734、738、740、742、744、746のグループ又はバッチの残りのLDPCバッチ・パラメータ718、720、722、724、732、734、742、744、746は、1つ又は複数のPHYパイプライン動作の構成を容易にする任意の他のパラメータ・データ値を含む。
少なくとも一実施例では、UEグループ・スーパー・セット748は、各カーネル712、726、736に対するバッチ済みPUSCHカーネル・パラメータ750、752、754を含むデータ・コンテナである。少なくとも一実施例では、ソフトウェアPHYライブラリは、到着時間又はスロット実行時間の要件など、上記のPUSCHカーネル・パラメータ750、752、754の1つ又は複数の特性にしたがって、PUSCHカーネル・パラメータ750、752、754をUEグループ・スーパー・セット748に異質にバッチする。少なくとも一実施例では、ソフトウェアPHYライブラリは、パラメータのタイプにしたがって、チャネル推定704、チャネル等化706、LDPC、及び/又は任意の他の低レベルのPHY動作などの各計算動作に対するパラメータ714、716、718、720、722、724、728、730、732、734、738、740、742、744、746を、1つ又は複数のカーネル712、726、736に異質にバッチする。少なくとも一実施例では、ソフトウェアPHYライブラリは、到着時間又はスロット実行時間の要件など、他のパラメータ特性にしたがって、パラメータ750、752、754をUEグループ・スーパー・セット748に異質にバッチする。
図8は、少なくとも一実施例による、バッチ済みPHY動作ワークロードを実行する実例のパイプライン・トポロジを示すブロック図である。少なくとも一実施例では、グラフィックス処理ユニット(GPU)などの1つ又は複数の並列処理ユニット(PPU)は、ソフトウェア・カーネル802、810、834を実行し、ここで、各ソフトウェア・カーネルは、1つ又は複数のPHY計算動作を行う。少なくとも一実施例では、各ソフトウェア・カーネル802、810、834は、図7と併せて上述したように、バッチ済みパラメータを使用して、1つ又は複数のPHY計算動作を行う。少なくとも一実施例では、各ソフトウェア・カーネル802、810、834は、バッチ済みパラメータを使用して1つ又は複数のPHY計算動作を行い、ここで、バッチ済みパラメータは、図7と併せて上述したように、同質のワークロード構成バッチにしたがってグループ化される。少なくとも一実施例では、各ソフトウェア・カーネル802、810、834は、バッチ済みパラメータを使用して1つ又は複数のPHY計算動作を行い、ここで、バッチ済みパラメータは、図7と併せて上述したように、異質のワークロード構成バッチにしたがってグループ化される。少なくとも一実施例では、各ソフトウェア・カーネル802、810、834は、バッチ済みパラメータを使用して1つ又は複数のPHY計算動作を行い、ここで、そのバッチ済みパラメータは、図7と併せて上述したように、ワークロード到着に基づく空間的グループ化にしたがってグループ化される。少なくとも一実施例では、各ソフトウェア・カーネル802、810、834は、バッチ済みパラメータを使用して1つ又は複数のPHY計算動作を行い、ここで、そのバッチ済みパラメータは、図7と併せて上述したように、ワークロード到着に基づいて時間的グループ化にしたがってグループ化される。
少なくとも一実施例では、ソフトウェア・カーネル802、810、834は、他のソフトウェア・カーネル802、810、834と並列で1つ又は複数のPHY計算動作を実行する。少なくとも一実施例では、各ソフトウェア・カーネル802、814、834は、上述したように、異質のバッチによって、タイプにしたがってグループ化又はバッチされたパラメータに基づいて構成された1つ又は複数のPHY計算動作を実行する。少なくとも一実施例では、各ソフトウェア・カーネル802、810、834は、パイプライン・ステージ818、820、822、826、828毎に1つ又は複数のPHY計算動作を実行する。個別にバッチされたパラメータによって指定された構成毎に、一実施例では、ソフトウェア・カーネル802、810、834は、1つ又は複数のPHY計算動作を実行する。PHY計算動作間で、1つ又は複数のパイプライン・ステージ818、820、822、826、828は、バッチ済みパラメータにしたがって構成された各PHY計算動作の結果として計算されたデータを格納する。
少なくとも一実施例では、1つ又は複数のパイプライン・ステージ818、820、822、826、828は、1つ又は複数のカーネル802、810、834によって実行された1つ又は複数の並列PHY計算動作からの出力データとして、その1つ又は複数のパイプライン・ステージ818、820、822、826、828によって受信された1つ又は複数の値を格納する、レジスタなどのメモリである。少なくとも一実施例では、1つ又は複数のパイプライン・ステージ818、820、822、826、828は、1つ又は複数のカーネル802、810、834にわたって共有される。少なくとも一実施例では、1つ又は複数のカーネル802、810、834のそれぞれは、1つ又は複数のカーネル802、810、834のうちの対応カーネルによって実行された1つ又は複数のPHY計算動作の中間データ結果を格納する個別パイプライン・ステージを備える。
各パイプライン・ステージ818、820、822、826、828間で、1つ又は複数のカーネル802、810、834のそれぞれは、1つ又は複数のPHY計算動作を実行し、ここで、各カーネルによって実行された各計算動作は、図7と併せて上述したように、ワークロードに固有のバッチ済み又はグループ化済みパラメータによって構成される。少なくとも一実施例では、1つ又は複数のPHY計算動作は、本明細書で更に説明されるように、チャネル推定804、812、836を含む。少なくとも一実施例では、各チャネル推定804、812、836の動作は、図7と併せて上述したように、ワークロードのタイプに対応するパラメータのバッチによって構成される。少なくとも一実施例では、1つ又は複数のPHY計算動作は、本明細書で更に説明されるように、チャネル推定806、814、838を含む。少なくとも一実施例では、各チャネル推定806、814、838の動作は、図7と併せて上述したように、ワークロードのタイプに対応するパラメータのバッチによって構成される。
少なくとも一実施例では、1つ又は複数のPHY計算動作は、バッチによってグループ化された構成パラメータのセット間で共有される。少なくとも一実施例では、共有されたPHY計算動作は、レート・マッチング及びスクランブル解析824、符号ブロック周期的冗長検査(CB CRC)及び集約830、トランスポート・ブロック(TB)CRC832、並びに/若しくは構成パラメータのバッチ間で共有可能な任意の他のPHY計算動作を含む。少なくとも一実施例では、1つ又は複数のカーネル802、810、834間で共有されない1つ又は複数のPHY計算動作は、本明細書で更に説明されるように、低密度パリティ検査(LDPC)復号及び/又は符号化808、816、840を含む。少なくとも一実施例では、各LDPC復号及び/又は符号化808、816、840の動作は、図7と併せて上述したように、ワークロードのタイプに対応するパラメータのバッチによって構成される。
図9は、少なくとも一実施例による、ワークロード・タイム・スロットに基づく物理層(PHY)バッチング・トポロジの実例を示すブロック図である。少なくとも一実施例では、1つ又は複数のカーネル906、926、946は、本明細書で更に説明されるように、セグメント化及び符号ブロック周期的冗長検査(Seg+CB CRC)908、928、948、低密度パリティ検査(LDPC)符号化/復号910、930、950、レート・マッチング912、932、952、スクランブル914、934、954、変調916、936、956、レイヤ・マッピング918、938、958、プリコーディング920、940、960、マッピング922、942、962、並びに/若しくは任意の他の第5世代(5G)新無線(NR)PHYパイプライン動作などの1つ又は複数のPHY計算動作を実行する。少なくとも一実施例では、カーネル906、926、946は、図7と併せて更に上述したように、スロット実行時間などの時間的特性にしたがったグループ化に基づいたパラメータを用いて構成された1つ又は複数のPHY計算動作を実行する。
少なくとも一実施例では、1つ又は複数のカーネル906、926、946は、実行時間スロットにしたがってバッチされたパラメータによって構成された1つ又は複数のPHY計算動作を実行する。少なくとも一実施例では、スロット実行開始点902は、その後に1つ又は複数のカーネル906、926、946がcuPHY、cuBB、又は本明細書に記載の任意の他のソフトウェア5G-NRライブラリなどのソフトウェアPHYライブラリによって提供されるスケジューラによって実行がスケジューリングされる時点である。少なくとも一実施例では、タイム・スロット904、924、944は、スロット実行開始点902の後に発生するスロット実行時間のウインドウである。スロット実行開始点902から、一実施例では、1つ又は複数のソフトウェア・カーネル906は、タイム・スロットt904にしたがってバッチされたパラメータを用いて構成された1つ又は複数のPHYパイプライン計算動作を実行する。少なくとも一実施例では、1つ又は複数のソフトウェア・カーネル926は、後のタイム・スロットt924にしたがってバッチされた他のパラメータを用いて構成された1つ又は複数のPHYパイプライン計算動作を実行する。スロット実行開始点902からの遅延t944後、一実施例では、1つ又は複数のカーネル946は、実行スロットへの上記の時間遅延tにしたがって、ソフトウェアPHYライブラリによってバッチされたパラメータを用いて構成された1つ又は複数のPHYパイプライン計算動作を実行する。少なくとも一実施例では、各タイム・スロットt924・・・t944に対して、t≧t+tprocであり、ここで、Xは、PHYパイプライン及び/又は1つ又は複数のPHYパイプライン動作などのプロセスを完了する時間である。
図10は、少なくとも一実施例による、バッチ済み物理層(PHY)記述子の配置を示すブロック図である。少なくとも一実施例では、本明細書で更に説明されるようなPUSCHパイプラインに対して、PUSCHパイプライン・バッチ記述子1002は、cuPHY、cuBB、又は本明細書に記載の任意の他のソフトウェア第5世代(5G)新無線(NR)ライブラリなどのソフトウェアPHYライブラリによってバッチ済みPUSCHパイプライン動作を実行する多数のパイプライン・インスタンス1004のための1つ又は複数のパイプライン記述子1006、1008、1010を含むコンテナである。少なくとも一実施例では、PUSCHパイプライン・バッチ記述子1002又は任意の他のPHYパイプライン・バッチ記述子は、パイプライン・インスタンス1004の数を示すデータとともに、1つ又は複数のパイプライン記述子1006、1008、1010への1つ又は複数のポインタを含む。少なくとも一実施例では、パイプライン記述子1006、1008、1010への各ポインタは、PUSCHパイプラインPHY記述子1012などのパイプラインPHY記述子のための格納場所を示すメモリ・アドレスを含むデータである。
少なくとも一実施例では、PUSCHパイプラインPHY記述子1012などのパイプラインPHY記述子は、データ・コンテナである。少なくとも一実施例では、PUSCHパイプラインPHY記述子1012などのパイプラインPHY記述子は、図3及び図5と併せて上述したように、共通パラメータ1014と、コンポーネント記述子1016、1018、1020への1つ又は複数のポインタとを含むデータ・コンテナである。少なくとも一実施例では、コンポーネント記述子1016、1018、1020への1つ又は複数のポインタは、PUSCHコンポーネント・バッチ記述子1022などの1つ又は複数のコンポーネント記述子のための格納場所を示すメモリ・アドレスを含むデータである。少なくとも一実施例では、コンポーネントは、上述したように、グラフィックス処理ユニット(GPU)などの1つ又は複数の並列処理ユニット(PPU)を使用して、1つ又は複数のカーネルによって実行される1つ又は複数のPHY計算動作である。
少なくとも一実施例では、PUSCHコンポーネント・バッチ記述子1022などのコンポーネント記述子は、データ・コンテナである。少なくとも一実施例では、PUSCHコンポーネント・バッチ記述子1022などのコンポーネント記述子は、それぞれがコンポーネント・パラメータ1026、1028、1030、1032によって示される異なる構成を実行する個別カーネルによって実行されるコンポーネント・インスタンスの数を示すデータを含む。少なくとも一実施例では、PUSCHコンポーネント・バッチ記述子1022などのコンポーネント記述子は、cuPHY、cuBB、又は本明細書に記載の任意の他のソフトウェア5G-NRライブラリなどのソフトウェアPHYライブラリによって、図7と併せて上述したように、PHYコンポーネント内の異質のバッチにしたがってグループ化されたパラメータを含む。少なくとも一実施例では、PUSCHコンポーネント・バッチ記述子1022などのコンポーネント記述子は、バッチ済みコンポーネント記述子へのポインタ及び/又は異質の構成のためのパラメータを含み、ここでN3個のカーネルは、それぞれ、コンポーネント・パラメータ1026、1028、1030、1032としてバッチされた異なる構成を実行する。少なくとも一実施例では、PUSCHコンポーネント・バッチ記述子1022などのコンポーネント記述子は、コンポーネント・インスタンス1024の数を含む。少なくとも一実施例では、コンポーネント・インスタンス1024の数は、それぞれがコンポーネント・パラメータ1026、1028、1030、1032によって示される異なるコンポーネント構成を実行するN3個のカーネルによって実行されるそのコンポーネント・パラメータ1026、1028、1030、1032のグループ又はバッチの数N3を示すデータ値である。
少なくとも一実施例では、PUSCHコンポーネント・バッチ記述子1022などのコンポーネント記述子の1つ又は複数のコンポーネント・パラメータ1026、1028、1030、1032は、図4B及び図7と併せて上述したように、パラメータ更新頻度など、時間的特性又は同質の特性にしたがってソフトウェアPHYライブラリによって編成又はバッチされる。少なくとも一実施例では、ソフトウェアPHYライブラリは、コンポーネント・パラメータ1026、1028、1030、1032を、PUSCHコンポーネント静的パラメータ1034などのコンポーネント静的パラメータに編成する。少なくとも一実施例では、ソフトウェアPHYライブラリは、他のコンポーネント・パラメータ1026、1028、1030、1032を、PUSCHコンポーネント準静的パラメータ1034などのコンポーネント準静的パラメータに編成する。少なくとも一実施例では、ソフトウェアPHYライブラリは、コンポーネント・パラメータ1026、1028、1030、1032を、PUSCHコンポーネント動的パラメータ1038などのコンポーネント動的パラメータに編成する。少なくとも一実施例では、PUSCHコンポーネント静的パラメータ1034などのコンポーネント静的パラメータ、PUSCHコンポーネント準静的パラメータ1036などのコンポーネント準静的パラメータ、及びPUSCHコンポーネント動的パラメータ1038などのコンポーネント動的パラメータは、バッチ済みコンポーネント記述子へのポインタ及び/又は同質構成のためのパラメータを含み、ここで、各カーネル・バッチは、同一構成を有する複数のワークロードを処理する。
図11は、少なくとも一実施例による、上述したように、パイプライン構成及び/又はバッチを実行するために、ソフトウェアPHYライブラリによって実装された物理層(PHY)パイプラインへの実例のアプリケーション・プログラミング・インターフェース(API)1110を示すブロック図である。少なくとも一実施例では、cuPHY、cuBB、又は任意の他のソフトウェア第5世代(5G)新無線(NR)ライブラリなどのソフトウェアPHYライブラリは、図2及び図3と併せて上述したように、記述子に含まれたパラメータによって定義された構成を使用してPHYパイプライン動作を構成及び実行するためにAPI1110を実装する。少なくとも一実施例では、PHYパイプラインAPI1110は、実行された時に、1つ又は複数のPHYパイプライン動作を実行するために呼び出し可能なインターフェースを提供するソフトウェア命令である。少なくとも一実施例では、PHYパイプラインAPIを提供するソフトウェアPHYライブラリは、そのPHYパイプラインAPI1110への1つ又は複数の関数呼出し1102、1104、1106、1108の結果として記述子で受信されたパラメータをバッチする。
少なくとも一実施例では、PHYパイプラインAPI1110は、そのPHYパイプラインAPI1110への1つ又は複数の関数呼出し1102、1104、1106、1108の結果として、図2及び図3と併せて上述したように、1つ又は複数のPHY動作を実行する1つ又は複数のPHY動作及び/又は1つ又は複数のコンポーネントを構成する1つ又は複数のパラメータを含む1つ又は複数の記述子を受信する。少なくとも一実施例では、PHYパイプラインAPI1110への1つ又は複数の関数呼出し1102、1104、1106、1108は、実行された時に、そのPHYパイプラインAPI1110によって提供された1つ又は複数の関数を呼び出すソフトウェア命令である。
少なくとも一実施例では、PHYパイプラインAPI1110への1つ又は複数の関数呼出し1102、1104、1106、1108は、そのPHYパイプラインAPI1110によって提供される、初期化(init)又は初期化解除(deinit)関数1102を呼び出す。少なくとも一実施例では、init1102関数は、実行された時に、cuPHY、cuBB、又は本明細書に記載の任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装されたPHYパイプラインのためのパイプライン構築及び/又は構成時間動作を実行するソフトウェア命令の論理的編成である。たとえば、init1102関数は、実行された時に、本明細書で更に説明されるcompute uniform device architecture(CUDA)又は他の並列コンピューティング・ライブラリなどのPHYライブラリ及び/又は任意の他のソフトウェア・ライブラリのためにオブジェクト・インスタンス化及び/又はメモリ割り当てを実行する。少なくとも一実施例では、deinit関数1102は、実行された時に、パイプライン実行をティアダウン又は他のやり方で停止させ、及び/又はパイプラインによって使用される、メモリなどのリソースを解放するソフトウェア命令の論理的編成である。
少なくとも一実施例では、図4Bと併せて上述したように、初期化関数、又は作成1102関数は、実行された時に、静的パラメータを更新する。少なくとも一実施例では、作成1102関数は、スロット実行に関連して非同期的に1つ又は複数の静的パラメータを更新する。少なくとも一実施例では、作成1102関数は、ソフトウェアPHYライブラリによって使用可能なリソースを初期化するために、中央処理装置(CPU)及び/又はグラフィックス処理ユニット(GPU)などの1つ又は複数の並列処理ユニット(PPU)によって実行される。少なくとも一実施例では、作成1102関数は、PHYパイプラインAPI1110の他の関数と比べて低頻度で呼び出される。少なくとも一実施例では、作成1102関数は、数秒程度のタイム・バジェットを有する。少なくとも一実施例では、作成1102関数は、セクタ-キャリア情報などのセル情報を処理するために、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装されたPHYパイプラインAPI1110への1つ又は複数の呼出しの結果として実行される。
少なくとも一実施例では、PHYパイプラインAPI1110への1つ又は複数の関数呼出し1102、1104、1106、1108は、そのPHYパイプラインAPI1110によって提供された構成(config)又は再構成(reconfig)関数1104を呼び出す。少なくとも一実施例では、config1104関数は、実行された時に、パイプライン構成更新を実行するソフトウェア命令の論理的編成である。少なくとも一実施例では、config1104関数は、実行された時に、図2及び図3Aと併せて上述したように、パラメータを使用してパイプライン構成更新を実行し、更新頻度はスロット・レート未満である、ソフトウェア命令の論理的編成である。たとえば、config1104関数は、実行された時に、cuPHY、cuBB、若しくはcompute uniform device architecture(CUDA)又は任意の他の並列コンピューティング又は本明細書で更に説明される5G-NRライブラリなどの任意の他のソフトウェア・ライブラリなどのPHYライブラリによって実行される1つ又は複数のPHYパイプライン動作の上記のconfig1104関数への呼出しの結果として受信される新しいパラメータを使用して構成を更新する。少なくとも一実施例では、reconfig関数1104は、実行された時に、実行中、又は実行スロット間で、上述したように、1つ又は複数のPHYパイプライン計算動作の構成を調整するソフトウェア命令の論理的編成である。
少なくとも一実施例では、図4Bと併せて上述したように、config及び/又はreconfig1104関数は、実行された時に、静的パラメータを更新する。少なくとも一実施例では、図4Bと併せて上述したように、config及び/又はreconfig1104関数は、実行された時に、準静的パラメータを更新する。少なくとも一実施例では、config及び/又はreconfig1104関数は、非同期的に1つ又は複数の静的パラメータを更新する。少なくとも一実施例では、config及び/又はreconfig1104関数は、スロット境界前に非同期的に1つ又は複数の静的パラメータを更新する。少なくとも一実施例では、config及び/又はreconfig1104関数は、ソフトウェアPHYライブラリによって実装されCPU及び/又は1つ又は複数のPPUによって実行された1つ又は複数のPHY動作を構成するために、CPU及び/又はGPUなどの1つ又は複数のPPUによって実行される。少なくとも一実施例では、config及び/又はreconfig1104関数は、PHYパイプラインAPI1110の他の関数と比べて低頻度で呼び出される。少なくとも一実施例では、config及び/又はreconfig1104関数は、PHYパイプラインAPI1110の他の関数と比べて類似の頻度で呼び出される。少なくとも一実施例では、config及び/又はreconfig1104関数は、数十から数百ミリ秒のタイム・バジェットを有する。少なくとも一実施例では、config及び/又はreconfig1104関数は、数百マイクロ秒のタイム・バジェットを有する。少なくとも一実施例では、config及び/又はreconfig1104関数は、領域更新などのシグナリング情報を処理するために、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装されたPHYパイプラインAPI1110への1つ又は複数の呼出しの結果として実行される。少なくとも一実施例では、config及び/又はreconfig1104関数は、UEが接続されているか、又は非アクティブであるかなどのユーザ機器(UE)情報を処理するために、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装されたPHYパイプラインAPI1110への1つ又は複数の呼出しの結果として実行される。
少なくとも一実施例では、PHYパイプラインAPI1110への1つ又は複数の関数呼出し1102、1104、1106、1108は、そのPHYパイプラインAPI1110によって提供されたセットアップ1106関数を呼び出す。少なくとも一実施例では、セットアップ1106関数は、実行された時に、cuPHY、cuBB、又は本明細書に記載の任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装された1つ又は複数のPHYパイプラインを実行するために必要とされるスロット構造情報を用いてPHY記述子セットアップを実行するソフトウェア命令の論理的編成である。たとえば、セットアップ1106関数は、実行された時に、本明細書で更に説明されるcompute uniform device architecture(CUDA)又は任意の他の並列コンピューティング・ライブラリなどのPHYライブラリ及び/又は他のソフトウェア・ライブラリによって、上述したように、パラメータを含む記述子を使用して構成及びバッチを実行する。
少なくとも一実施例では、図4Bと併せて上述したように、セットアップ1106関数は、実行された時に、動的パラメータを更新する。少なくとも一実施例では、セットアップ1106関数は、スロット実行境界前に同期的に1つ又は複数の動的パラメータを更新する。少なくとも一実施例では、セットアップ1106関数は、ソフトウェアPHYライブラリによって実装された1つ又は複数のPHYパイプライン動作を構成及び/又はバッチするためにCPU及び/又はGPUなどの1つ又は複数のPPUによって実行される。少なくとも一実施例では、セットアップ1106関数は、PHYパイプラインAPI1110の他の関数と比べて高頻度で呼び出される。少なくとも一実施例では、セットアップ1106関数は、125マイクロ秒以下のタイム・バジェットを有する。少なくとも一実施例では、セットアップ1106関数は、ダウンリンク割り当て及びアップリンク・グラントなどのスロット割り当て情報を処理するために、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装されたPHYパイプラインAPI1110への1つ又は複数の呼出しの結果として実行される。
少なくとも一実施例では、PHYパイプラインAPI1110への1つ又は複数の関数呼出し1102、1104、1106、1108は、そのPHYパイプラインAPI1110によって提供された実行1108関数を呼び出す。少なくとも一実施例では、実行1108関数は、実行された時に、cuPHY、cuBB、又は本明細書に記載の任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装された1つ又は複数のPHYパイプラインのためのパイプライン起動を実行するソフトウェア命令の論理的編成である。たとえば、実行1108関数は、実行された時に、CPU及び/又はGPUなどの1つ又は複数のPPUによって実行される、本明細書で更に説明されるcompute uniform device architecture(CUDA)又は任意の他の並列コンピューティング・ライブラリなどのPHYライブラリ及び/又は任意の他のソフトウェア・ライブラリによって実装された1つ又は複数のパイプラインをトリガに開始させる。
少なくとも一実施例では、実行1108関数は、実行された時に、図4Bと併せて上述したいずれのパラメータも更新しない。少なくとも一実施例では、実行1108関数は、スロット実行及び/又はシンボル受信時に同期的に実行される。少なくとも一実施例では、実行1108関数は、ソフトウェアPHYライブラリによって実装された1つ又は複数のPHYパイプラインの実行を開始するために、CPU及び/又はGPUなどの1つ又は複数のPPUによって実行される。少なくとも一実施例では、実行1108関数は、PHYパイプラインAPI1110の他の関数と比べて高頻度で呼び出される。少なくとも一実施例では、実行1108関数は、スロット実行を開始するトリガであるため、即値タイム・バジェットを有する。少なくとも一実施例では、実行1108関数は、1つ又は複数のPPUカーネルの起動及び/又は1つ又は複数の計算グラフの起動を発生させるスロット処理トリガとして動作するために、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装されたPHYパイプラインAPI1110への1つ又は複数の呼出しの結果として実行される。
図12は、少なくとも一実施例による、cuPHY、cuBB、又は本明細書で更に説明される任意の他のソフトウェア5G-NRライブラリなどのPHYライブラリによって実装された第5世代(5G)新無線(NR)物理層(PHY)パイプラインにおいてPHY動作を実行するプロセス1200を示す図である。少なくとも一実施例では、プロセス1200は、PHY動作を実行するために1つ又は複数のPHYパイプラインを構築する104ことによって開始する1202。パイプライン構築1204中、一実施例では、1つ又は複数のデータ構造は、図11と併せて上述したように、中央処理装置(CPU)及び/又はグラフィックス処理ユニット(GPU)などの1つ又は複数の並列処理ユニット(PPU)に対応するメモリで割り当てられ、初期化される。
少なくとも一実施例では、ソフトウェアPHYライブラリが1つ又は複数のパイプラインを構築1204すると、そのソフトウェアPHYライブラリが、図2及び図3Aと併せて上述したように、1つ又は複数の関数呼出しの結果として受信された構成パラメータにしたがって上記の1つ又は複数のパイプラインを構成する1206。構成1206後、一実施例では、cuPHY、cuBB、又は任意の他のソフトウェア5G-NRライブラリなどのソフトウェアPHYライブラリは、図3A及び図5と併せて上述したように、1つ又は複数の記述子によって提供された構成情報にしたがってスロット実行のためにPHYパイプライン動作をセットアップするセットアップ1208動作を実行する。少なくとも一実施例では、セットアップ1208は、図7から図9と併せて上述したように、1つ又は複数のPHY記述子によって提供されたパラメータに基づく1つ又は複数のPHY動作のバッチを含む。
少なくとも一実施例では、ソフトウェアPHYライブラリが、図1、図2、及び図11と併せて上述したように、ソフトウェアPHYライブラリ・インターフェースへの1つ又は複数の関数呼出しの結果として受信された1つ又は複数の記述子に含まれた1つ又は複数のパラメータにしたがって1つ又は複数のPHYパイプラインをセットアップ1208すると、そのソフトウェアPHYライブラリが上記の1つ又は複数のPHYパイプラインを起動する1210。一実施例では、ソフトウェアPHYライブラリは、GPUなどの1つ又は複数のPPUによって1つ又は複数のスロットにおいて実行される1つ又は複数のPHYパイプラインを起動する1210。他の実施例では、ソフトウェアPHYライブラリは、図11と併せて上述したように、CPUによって1つ又は複数のスロットにおいて実行される1つ又は複数のPHYパイプラインを起動する1210。
少なくとも一実施例では、1つ又は複数のPHYパイプラインを起動1210すると、ソフトウェアPHYライブラリが実行中にそのソフトウェア・ライブラリは、上記の1つ又は複数のPHYパイプラインの一部又は全部を再構成1212する必要があり得る。少なくとも一実施例では、上記の1つ又は複数のPHYパイプラインを実行する1つ又は複数のPHYパイプライン又は動作が、更新済みのパラメータ及び/又は記述子を含むPHYライブラリ・インターフェースへの1つ又は複数の関数呼出しの結果として再構成1212される場合、一実施例では、PHYライブラリが、上記の1つ又は複数のPHYパイプラインを実行する上記の1つ又は複数のPHYパイプライン及び/又は動作を再構成1206する。
少なくとも一実施例では、PHYライブラリは、上記の1つ又は複数のPHYパイプラインのスロット実行が完了しているか1212を決定する。一実施例では、1つ又は複数のPHYパイプラインのスロット実行が完了している場合1212、プロセス1200は再構成が必要とされているか1214を決定する。少なくとも一実施例では、再構成が必要とされている場合1214、プロセス1200はパイプラインを再構成1206する。少なくとも一実施例では、再構成1214が必要とされていない場合、プロセス1200は、追加のパイプラインが実行されるか1216を決定する。少なくとも一実施例では、追加のパイプラインが実行される場合1216、プロセス1200は、PHY記述子1208をセットアップすることによって、スロット実行を継続する。少なくとも一実施例では、追加のパイプラインが実行されない場合1216、又は実行が完了していない場合、プロセス1200は終了する1218。
本明細書で説明及び提案された技法は、一実施例において、図1と併せて上述し本明細書で更に説明されたように、PHYパイプラインの物理層(PHY)動作などの第5世代(5G)新無線(NR)動作が、1つ又は複数の並列処理ユニット(PPU)などのコンピューティング・リソースを使用して並列で実行できるようにする。他の実施例では、本明細書で説明及び提案された技法は、5G-NR動作が、1つ又は複数のソフトウェア・カーネルなどの他のコンピューティング・リソースを使用して並列に実行できるようにする。上述したように、一実施例では、5G-NR PHY動作などの1つ又は複数のコンピューティング動作は、1つ又は複数のカーネル及び/又は1つ又は複数のPPUなどのコンピューティング・リソースにしたがってグループに分類される。少なくとも一実施例では、5G-NR PHY動作などの1つ又は複数のコンピューティング動作は、5G-NRセルに接続された5G-NRセル及び/又はユーザ機器(UE)などの他のコンピューティング・リソースを示す属性にしたがってグループに分類される。
少なくとも一実施例では、上述したように、5G-NR PHYライブラリなどのソフトウェア・ライブラリは、そのコンピューティング動作がソフトウェア・カーネル及び/又はPPUなどのコンピューティング・リソースを使用して並列に実行されることができるように、1つ又は複数のコンピューティング動作をグループ化する。少なくとも一実施例では、本明細書で説明及び提案された、5G-NR動作が1つ又は複数のコンピューティング・リソースにしたがって並列に実行できるようにする技法は、その5G-NR動作を、上述した技法にしたがって並列に実行させるために、1つ又は複数の回路を使用して実施される。少なくとも一実施例では、本明細書で説明及び提案された技法は、中央処理装置及び/又はグラフィックス処理ユニットなどのPPUを含むがこれに限定されない1つ又は複数のプロセッサを備える1つ又は複数のシステムにおいて実施される。少なくとも一実施例では、本明細書で説明及び提案された、5G-NR動作を並列に実行する技法は、本明細書で更に説明された1つ又は複数の並列化の方法を実行するためソフトウェア・ライブラリを使用して実施される。少なくとも一実施例では、本明細書で説明及び提案された、5G-NR動作を並列に実行する技法は、機械可読媒体又はコンピュータ可読媒体上で、上述したように、コンピューティング・リソースを示す属性にしたがってその5G-NR動作をグループ化する1つ又は複数の命令として実施される。
データ・センタ
図13は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ1300を示す。少なくとも一実施例では、データ・センタ1300は、データ・センタ・インフラストラクチャ層1310、フレームワーク層1320、ソフトウェア層1330、及びアプリケーション層1340を含む。
少なくとも一実施例では、図13に示すように、データ・センタ・インフラストラクチャ層1310は、リソース・オーケストレータ1312、グループ化済みコンピューティング・リソース1314、及びノード・コンピューティング・リソース(「ノードC.R.」:node computing resource)1316(1)~1316(N)を含んでもよく、ここで「N」は、任意の正の整数を表す。少なくとも一実施例では、ノードC.R.1316(1)~1316(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(たとえば、半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.1316(1)~1316(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
少なくとも一実施例では、グループ化済みコンピューティング・リソース1314は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。少なくとも一実施例では、グループ化済みコンピューティング・リソース1314内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
少なくとも一実施例では、リソース・オーケストレータ1312は、1つ又は複数のノードC.R.1316(1)~1316(N)及び/若しくはグループ化済みコンピューティング・リソース1314を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ1312は、データ・センタ1300用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
図13に示す少なくとも一実施例では、フレームワーク層1320は、ジョブ・スケジューラ1332、構成マネージャ1334、リソース・マネージャ1336、及び分配ファイル・システム1338を含む。少なくとも一実施例では、フレームワーク層1320は、ソフトウェア層1330のソフトウェア1332、及び/又はアプリケーション層1340の1つ若しくは複数のアプリケーション1342をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア1332又はアプリケーション1342はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層1320は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム1338を使用することができるApache Spark(商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ1332は、データ・センタ1300の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ1334は、ソフトウェア層1330、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム1338を含むフレームワーク層1320などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ1336は、分配ファイル・システム1338及びジョブ・スケジューラ1332をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1310にあるグループ化済みコンピューティング・リソース1314を含んでもよい。少なくとも一実施例では、リソース・マネージャ1336は、リソース・オーケストレータ1312と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
少なくとも一実施例では、ソフトウェア層1330に含まれるソフトウェア1332は、ノードC.R.1316(1)~1316(N)、グループ化済みコンピューティング・リソース1314、及び/又はフレームワーク層1320の分配ファイル・システム1338のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。少なくとも一実施例では、1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
少なくとも一実施例では、アプリケーション層1340に含まれるアプリケーション1342は、ノードC.R.1316(1)~1316(N)、グループ化済みコンピューティング・リソース1314、及び/又はフレームワーク層1320の分配ファイル・システム1338のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。少なくとも一実施例では、1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、Tensorflow、Caffeなど)を含む機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
少なくとも一実施例では、構成マネージャ1334、リソース・マネージャ1336、及びリソース・オーケストレータ1312のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ1300のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
少なくとも一実施例では、データ・センタ1300は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ1300に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ1300に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
図14Aは、少なくとも一実施例による自律車両1400の実例を示す。少なくとも一実施例では、自律車両1400(或いは、本明細書において「車両1400」と呼ばれる)は、限定することなく、車、トラック、バス、及び/又は1人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両1400は、貨物運搬用のセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両1400は、航空機、ロボット車両、又は他の種類の車両であってもよい。
自律車両は、米国運輸省の一部門である全米高速道路交通安全局(「NHTSA」:National Highway Traffic Safety Administration)、及び自動車技術者協会(「SAE」:Society of Automotive Engineers)の「自動車用運転自動化システムのレベル分類及び定義(Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles)」(たとえば、2018年6月15日発行の規格No.J3016-201806、2016年9月30日発行の規格No.J3016-201609、及びこの規格の旧版及び新版)により定義される自動化レベルという観点から説明されてもよい。1つ又は複数の実施例では、車両1400は、自律運転レベルのレベル1~レベル5のうちの1つ又は複数による機能性に対応可能であってもよい。たとえば、少なくとも一実施例では、車両1400は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)に対応可能であってもよい。
少なくとも一実施例では、車両1400は、限定することなく、シャシ、車両本体、ホイール(たとえば、2本、4本、6本、8本、18本など)、タイヤ、車軸、及び車両の他の構成要素などの構成要素を含んでもよい。少なくとも一実施例では、車両1400は、限定することなく、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び/又は別のタイプの推進システムなどの推進システム1450を含んでもよい。少なくとも一実施例では、推進システム1450は、車両1400のドライブ・トレインに連結されてもよく、ドライブ・トレインは、限定することなく、車両1400の推進を可能にするためのトランスミッションを含んでもよい。少なくとも一実施例では、推進システム1450は、スロットル/アクセル1452からの信号を受信したことに応答して、制御されてもよい。
少なくとも一実施例では、限定することなくハンドルを含んでもよい操縦システム1454は、推進システム1450が動作しているときに(たとえば、車両が動いているときに)車両1400を(たとえば所望の経路又はルートに沿って)操縦するために使用される。少なくとも一実施例では、操縦システム1454は、操縦アクチュエータ1456から信号を受信してもよい。少なくとも一実施例では、ハンドルは、完全自動化(レベル5)の機能性に関しては任意選択であってもよい。少なくとも一実施例では、ブレーキ・アクチュエータ1448及び/又はブレーキ・センサからの信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム1446が使用されてもよい。
少なくとも一実施例では、1つ又は複数のシステム・オン・チップ(「SoC」:system on chip)(図14Aには示さず)及び/若しくはグラフィックス・プロセッシング・ユニット(「GPU」)を限定することなく含んでもよいコントローラ1436は、車両1400の1つ又は複数の構成要素及び/若しくはシステムに(たとえば、コマンドを表す)信号を提供する。たとえば、少なくとも一実施例では、コントローラ1436は、ブレーキ・アクチュエータ1448を介して車両ブレーキを動作させるための信号、操縦アクチュエータ1456を介して操縦システム1454を動作させるための信号、スロットル/アクセル1452を介して推進システム1450を動作させるための信号を送信してもよい。少なくとも一実施例では、コントローラ1436は、自律運転を可能にし、且つ/又は運転車両1400において人間のドライバを支援するために、センサ信号を処理し、動作コマンド(たとえばコマンドを表す信号)を出力する1つ又は複数の搭載(たとえば一体型の)コンピューティング・デバイス(たとえば、スーパーコンピュータ)を含んでもよい。少なくとも一実施例では、コントローラ1436は、自律運転機能のための第1のコントローラ1436、機能的安全機能のための第2のコントローラ1436、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ1436、インフォテイメント機能のための第4のコントローラ1436、緊急事態における冗長性のための第5のコントローラ1436、及び/又は他のコントローラを含んでもよい。少なくとも一実施例では、単一のコントローラ1436が、上記機能性のうちの2つ以上に対処してもよく、2つ以上のコントローラ1436が、単一の機能性に対処してもよく、且つ/又はこれらの何らかの組合せであってもよい。
少なくとも一実施例では、コントローラ1436は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して、車両1400の1つ又は複数の構成要素及び/若しくはシステムを制御するための信号を提供する。少なくとも一実施例では、センサ・データは、たとえば限定することなく、全地球的航法衛星システム(「GNSS」:global navigation satellite system)センサ1458(たとえば、全地球測位システム・センサ)、RADARセンサ1460、超音波センサ1462、LIDARセンサ1464、慣性計測装置(「IMU」:inertial measurement unit)センサ1466(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1496、ステレオ・カメラ1468、広角カメラ1470(たとえば、魚眼カメラ)、赤外線カメラ1472、周囲カメラ1474(たとえば、360度カメラ)、長距離カメラ(図14Aには示さず)、中距離カメラ(図14Aには示さず)、(たとえば、車両1400のスピードを計測するための)スピード・センサ1444、振動センサ1442、操縦センサ1440、(たとえば、ブレーキ・センサ・システム1446の一部分としての)ブレーキ・センサ、及び/又は他のタイプのセンサから、受信されてもよい。
少なくとも一実施例では、コントローラ1436のうちの1つ又は複数は、車両1400の計器クラスタ1432からの(たとえば入力データによって表される)入力を受信し、ヒューマン・マシン・インターフェース(「HMI」:human-machine interface)ディスプレイ1434、可聴アナンシエータ、拡声器を介して、且つ/又は車両1400の他の構成要素を介して、(たとえば、出力データ、ディスプレイ・データなどによって表される)出力を提供してもよい。少なくとも一実施例では、出力は、車両速度、スピード、時間、地図データ(たとえば、ハイ・デフィニション・マップ(図14Aには示さず)、ロケーション・データ(たとえば、地図上などの車両1400のロケーション)、方向、他車両のロケーション(たとえば、占有グリッド)、コントローラ1436が感知した物体及び物体の状態についての情報などの情報を含んでもよい。たとえば、少なくとも一実施例では、HMIディスプレイ1434は、1つ若しくは複数の物体(たとえば、道路標識、警告標識、信号の変化など)の存在についての情報、及び/又は車両が行った、行っている、又はこれから行う運転操作についての情報(たとえば、現在車線変更中、3.22km(2マイル)先の出口34Bを出る、など)を表示してもよい。
少なくとも一実施例では、車両1400はさらにネットワーク・インターフェース1424を含み、このネットワーク・インターフェースは、1つ又は複数のネットワークを介して通信するためのワイヤレス・アンテナ1426及び/又はモデムを使用してもよい。たとえば、少なくとも一実施例では、ネットワーク・インターフェース1424は、ロング・ターム・エボリューション(「LTE」:Long-Term Evolution)、広帯域符号分割多元接続(「WCDMA」:Wideband Code Division Multiple Access)、ユニバーサル・モバイル・テレコミュニケーション・システム(「UMTS」:Universal Mobile Telecommunications System)、グローバル・システム・フォー・モバイル・コミュニケーションズ(「GSM」:Global System for Mobile communication)、IMT-CDMAマルチ・キャリア(「CDMA2000」)などを介して通信可能であってもよい。また、少なくとも一実施例では、ワイヤレス・アンテナ1426は、Bluetooth、Bluetooth Low Energy (「LE」:Low Energy)、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどの低電力広域ネットワーク(「LPWAN」:low power wide-area network)を使用して、環境内の物体同士間(たとえば車両、モバイル・デバイスなど)での通信を可能にしてもよい。
少なくとも一実施例では、ソフトウェア物理層(PHY)ライブラリ116は、Bluetooth、Bluetooth Low Energy(「LE」)、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク及び/又はLoRaWAN、SigFoxなどの低電力広域ネットワーク(「LPWAN」)を使用して環境における物体(たとえば、車両、モバイル・デバイスなど)間の通信も可能にし得る。
図14Bは、少なくとも一実施例による図14Aの自律車両1400についてカメラのロケーション及び視野の実例を示す。少なくとも一実施例では、カメラ及びそれぞれの視野は、一例の実施例であり、限定するものではない。たとえば、少なくとも一実施例では、追加及び/又は代替のカメラが含まれてもよく、且つ/又はカメラが車両1400の異なるロケーションに位置付けられてもよい。
少なくとも一実施例では、カメラのカメラ・タイプは、車両1400の構成要素及び/又はシステムとともに使用できるように適合されていてもよいデジタル・カメラを含んでもよいが、これに限定されない。少なくとも一実施例では、カメラは、自動車安全性要求レベル(「ASIL」:automotive safety integrity level)B及び/又は別のASILにおいて動作してもよい。少なくとも一実施例では、カメラ・タイプは、実施例に応じて、毎秒60フレーム(fps:frames per second)、1220fps、240fpsなど、任意の画像捕捉率に対応可能であってもよい。少なくとも一実施例では、カメラは、ロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はこれらの組合せを使用することが可能であってもよい。少なくとも一実施例では、カラー・フィルタ・アレイは、赤色、クリア、クリア、クリア(「RCCC」:red clear clear clear)のカラー・フィルタ・アレイ、赤色、クリア、クリア、青色(「RCCB:red clear clear blue」)のカラー・フィルタ・アレイ、赤色、青色、緑色、クリア(「RBGC」:red blue green clear)のカラー・フィルタ・アレイ、Foveon X3のカラー・フィルタ・アレイ、ベイヤー・センサ(RGGB)のカラー・フィルタ・アレイ、モノクロ・センサのカラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイを含んでもよい。少なくとも一実施例では、光感度を上げるために、RCCC、RCCB、及び/又はRBGCのカラー・フィルタ・アレイを有するカメラなど、クリア・ピクセル・カメラが使用されてもよい。
少なくとも一実施例では、カメラのうちの1つ又は複数を使用して、先進ドライバ支援システム(「ADAS」:advanced driver assistance systems)機能が(たとえば、冗長設計又はフェイル・セーフ設計の一部として)実行されてもよい。たとえば、少なくとも一実施例では、多機能モノ・カメラが設置されて、車線逸脱警告、交通標識支援、及びインテリジェント・ヘッドライト制御を含む機能が提供されてもよい。少なくとも一実施例では、カメラのうちの1つ又は複数(たとえばすべてのカメラ)は、画像データ(たとえばビデオ)の記録と提供を同時に行ってもよい。
少なくとも一実施例では、カメラのうちの1つ又は複数は、カメラの画像データ捕捉性能を妨げる恐れのある迷光及び車内部からの反射(たとえば、ダッシュボードからフロントガラスに反射される反射)をなくすために、カスタム設計の(3次元(「3D」:three-dimensional)印刷された)アセンブリなどの取付けアセンブリに取り付けられてもよい。ドアミラー取付けアセンブリを参照すると、少なくとも一実施例では、ドアミラー・アセンブリは、カメラ取付けプレートがドアミラーの形の合うように、カスタムで3D印刷されてもよい。少なくとも一実施例では、カメラは、ドアミラーと一体であってもよい。サイド・ビュー・カメラについて、少なくとも一実施例では、カメラはこの場合も車の各角にある4本のピラーに一体化されてもよい。
少なくとも一実施例では、車両1400前方の環境の一部分を含む視野を有するカメラ(たとえば正面カメラ)は周囲のビューに対して使用されて、正面の経路及び障害物を識別しやすくするとともに、コントローラ1436及び/又は制御SoCのうちの1つ又は複数とともに使用されて、占有グリッドの生成及び/又は好ましい車両経路の判定に不可欠な情報の提供を補助してもよい。少なくとも一実施例では、正面カメラを使用して、緊急ブレーキ、歩行者検出、及び衝突回避を限定することなく含む、LIDARと同じADAS機能のうちの多くが実行されてもよい。少なくとも一実施例では、正面カメラはまた、車線逸脱警告(「LDW」:Lane Departure Warnings)、自律クルーズ・コントロール(「ACC」:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能を限定することなく含むADASの機能及びシステムのために使用されてもよい。
少なくとも一実施例では、たとえばCMOS:complementary metal oxide semiconductor(「相補型金属酸化膜半導体」)カラー撮像装置を含む単眼カメラのプラットフォームを含む様々なカメラが、正面構成で使用されてもよい。少なくとも一実施例では、周囲からビューに入ってくる物体(たとえば歩行者、クロス・トラフィック、又は自転車)を感知するために、広角カメラ1470が使用されてもよい。図14Bには1つの広角カメラ1470しか示していないが、他の実施例では、車両1400には(ゼロを含む)任意の数の広角カメラ1470が存在してもよい。少なくとも一実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、任意の数の長距離カメラ1498(たとえば、長距離ビューのステレオ・カメラの対)が使用されてもよい。少なくとも一実施例では、長距離カメラ1498はまた、物体検出及び分類、並びに基本的な物体追跡に使用されてもよい。
少なくとも一実施例では、任意の数のステレオ・カメラ1468は、正面構成にも含まれてよい。少なくとも一実施例では、1つ又は複数のステレオ・カメラ1468は、拡張可能な処理ユニットを備えた一体型制御ユニットを含んでもよく、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク(「CAN」:Controller Area Network)又はイーサネット(登録商標)・インターフェースを単一チップ上に有するプログラム可能論理(「FPGA」)及びマルチ・コア・マイクロプロセッサを提供してもよい。少なくとも一実施例では、こうしたユニットは、画像内のすべての点に対する距離推定を含め、車両1400の環境の3Dマップを生成するのに使用されてもよい。少なくとも一実施例では、ステレオ・カメラ1468のうちの1つ又は複数は、限定することなくコンパクト・ステレオ・ビジョン・センサを含んでもよく、このセンサは、車両1400からターゲット物体までの距離を測定し、生成された情報(たとえば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警告の機能をアクティブ化することができる2つのカメラ・レンズ(左右に1つずつ)及び画像処理チップを、限定することなく含んでもよい。少なくとも一実施例では、本明細書に記載のものに加えて、又はその代わりに、他のタイプのステレオ・カメラ1468が使用されてもよい。
少なくとも一実施例では、車両1400の側方の環境の一部分を含む視野を有するカメラ(たとえば、サイド・ビュー・カメラ)が、周囲のビューのために使用されて、占有グリッドの作製及び更新、並びに側面衝突警告の生成のために使用される情報を提供してもよい。たとえば、少なくとも一実施例では、周囲カメラ1474(たとえば図14Bに示すように4つの周囲カメラ1474)を、車両1400に配置することができる。少なくとも一実施例では、周囲カメラ1474は、限定することなく、任意の数及び組合せの広角カメラ1470、魚眼カメラ、及び/又は360度カメラなどを含んでもよい。たとえば、少なくとも一実施例では、4つの魚眼カメラが、車両1400の前方、後方、及び側方に配置されてもよい。少なくとも一実施例では、車両1400は、3つの周囲カメラ1474(たとえば、左、右、及び後方)を使用してもよく、第4の周囲カメラとして、1つ又は複数の他のカメラ(たとえば正面カメラ)を活用してもよい。
少なくとも一実施例では、車両1400後方の環境の一部分を含む視野を有するカメラ(たとえば、リア・ビュー・カメラ)が、駐車支援、周囲のビュー、後方衝突警告のために使用されて、占有グリッドの作製及び更新がなされてもよい。少なくとも一実施例では、本明細書に記載の正面カメラとしても好適なカメラ(たとえば、長距離カメラ1498、及び/又は中距離カメラ1476、ステレオ・カメラ1468)、赤外線カメラ1472など)を含むが、これらに限定されない多種多様なカメラが使用されてもよい。
図14Cは、少なくとも一実施例による図14Aの自律車両1400の例示的システム・アーキテクチャを示すブロック図である。少なくとも一実施例では、図14Cの車両1400の構成要素、特徴、及びシステムのそれぞれは、バス1402を介して接続されるものとして示される。少なくとも一実施例では、バス1402は、限定することなく、CANデータ・インターフェース(或いは、本明細書において(CANバス)と呼ばれる)を含んでもよい。少なくとも一実施例では、CANは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなど、車両1400の様々な特徴及び機能の制御を補助するために使用される車両1400内部のネットワークであってもよい。少なくとも一実施例では、バス1402は、それぞれが独自の一意の識別子(たとえばCAN ID)をもつ数十又はさらには数百のノードを有するように構成されてもよい。少なくとも一実施例では、バス1402は、ハンドル角度、対地スピード、エンジンの毎分回転数(「RPM」:revolutions per minute)、ボタン位置、及び/又は他の車両状態インジケータを見いだすように読み取られてもよい。少なくとも一実施例では、バス1402は、ASILのBに準拠したCANバスであってもよい。
少なくとも一実施例では、CANに加えて、又はその代わりに、FlexRay及び/又はEthernet(登録商標)が使用されてもよい。少なくとも一実施例では、任意の数のバス1402が存在してもよく、これには、限定することなく、ゼロ以上のCANバス、ゼロ以上のFlexRayバス、ゼロ以上のEthernet(登録商標)バス、及び/又は他のプロトコルを使用するゼロ以上の他のタイプのバスが含まれてもよい。少なくとも一実施例では、2つ以上のバス1402を使用して異なる機能が実行されてもよく、且つ/又はそれらを使用して冗長性が与えられてもよい。たとえば、第1のバス1402が衝突回避機能のために使用され、第2のバス1402が作動制御のために使用されてもよい。少なくとも一実施例では、各バス1402は、車両1400の構成要素のいずれかと通信してもよく、2つ以上のバス1402が同じ構成要素と通信してもよい。少なくとも一実施例では、任意の数のシステム・オン・チップ(「SoC」)1404のそれぞれ、コントローラ1436のそれぞれ、及び/又は車両内の各コンピュータは、同じ入力データ(たとえば、車両1400のセンサからの入力)にアクセス可能であってもよく、CANバスなどの共通のバスに接続されてもよい。
少なくとも一実施例では、車両1400は、図14Aに関して本明細書に記載するものなど、1つ又は複数のコントローラ1436を含んでもよい。少なくとも一実施例では、コントローラ1436は、様々な機能に使用されてもよい。少なくとも一実施例では、コントローラ1436は、車両1400の様々な他の構成要素及びシステムのうちの任意のものに結合されてもよく、車両1400、車両1400の人工知能、及び/又は車両1400のインフォテイメントなどの制御に使用されてもよい。
少なくとも一実施例では、車両1400は、任意の数のSoC1404を含んでもよい。SoC1404のそれぞれは、限定することなく、中央処理装置(「CPU」)1406、グラフィックス・プロセッシング・ユニット(「GPU」)1408、プロセッサ1410、キャッシュ1412、アクセラレータ1414、データ・ストア1416、及び/又は図示していない他の構成要素及び特徴を含んでもよい。少なくとも一実施例では、車両1400を様々なプラットフォーム及びシステムにおいて制御するために、SoC1404が使用されてもよい。たとえば、少なくとも一実施例では、SoC1404は、1つ又は複数のサーバ(図14Cには示さず)からネットワーク・インターフェース1424を介して地図のリフレッシュ及び/又は更新を得ることができるハイ・デフィニション(「HD」:High Definition)マップ1422を有するシステム(たとえば車両1400のシステム)に組み込まれてもよい。
少なくとも一実施例では、CPU1406は、CPUクラスタ、又はCPUコンプレックス(或いは本明細書において「CCPLEX」と呼ばれる)を含んでもよい。少なくとも一実施例では、CPU1406は、複数のコア及び/又はレベル2(「L2」)キャッシュを含んでもよい。たとえば、少なくとも一実施例では、CPU1406は、コヒーレントなマルチプロセッサ構成において8つのコアを含んでもよい。少なくとも一実施例では、CPU1406は、4つのデュアル・コア・クラスタを含んでもよく、ここで各クラスタは、専用のL2キャッシュ(たとえば、2MBのL2キャッシュ)を有する。少なくとも一実施例では、CPU1406(たとえば、CCPLEX)は、CPU1406のクラスタの任意の組合せを、任意の所与の時間にアクティブ化できるようにする同時のクラスタ動作をサポートするように構成されてもよい。
少なくとも一実施例では、CPU1406のうちの1つ又は複数は、電力管理機能を実装してもよく、この機能は限定することなく、以下の特徴のうちの1つ又は複数を含む:個々のハードウェア・ブロックが、アイドル時に自動的にクロック・ゲート制御されて動的電力を節約することができる;割込み待ち(「WFI」:Wait for Interrupt)/イベント待ち(「WFE」:Wait for Event)命令の実行に起因してコアが能動的に命令を実行していないとき、各コア・クロックをゲート制御することができる;各コアを独立して電力ゲート制御することができる;すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、各コア・クラスタを独立してクロック・ゲート制御することができる;且つ/又はすべてのコアが電力ゲート制御されるとき、各コア・クラスタを独立して電力ゲート制御することができる。少なくとも一実施例では、CPU1406はさらに、電力状態を管理するための拡張アルゴリズムを実装してもよく、ここで、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びCCPLEXが入るべき最良の電力状態を、ハードウェア/マイクロコードが判定する。少なくとも一実施例では、処理コアは、作業がマイクロコードにオフロードされた状態で、電力状態に入る簡単なシーケンスをソフトウェアにおいてサポートしてもよい。
少なくとも一実施例では、GPU1408は、統合されたGPU(或いは、本明細書において「iGPU」と呼ばれる)を含んでもよい。少なくとも一実施例では、GPU1408は、プログラム可能であってもよく、並列なワークロードに対して効率的であってもよい。少なくとも一実施例では、GPU1408は、少なくとも一実施例では、拡張テンソル命令セットを使用してもよい。一実施例では、GPU1408は、1つ又は複数のストリーミング・マイクロプロセッサを含んでもよく、ここで各ストリーミング・マイクロプロセッサは、レベル1(「L1」)キャッシュ(たとえば少なくとも96KBのストレージ容量を有するL1キャッシュ)を含んでもよく、ストリーミング・マイクロプロセッサのうちの2つ以上は、L2キャッシュ(たとえば、512KBのストレージ容量を有するL2キャッシュ)を共有してもよい。少なくとも一実施例では、GPU1408は、少なくとも8つのストリーミング・マイクロプロセッサを含んでもよい。少なくとも一実施例では、GPU1408は、コンピュート・アプリケーション・プログラミング・インターフェース(API:application programming interface)を使用してもよい。少なくとも一実施例では、GPU1408は、1つ又は複数の並列なコンピューティング・プラットフォーム、及び/又はプログラミング・モジュール(たとえば、NVIDIAのCUDA)を使用してもよい。
少なくとも一実施例では、GPU1408のうちの1つ又は複数は、自動車用及び組み込まれたユース・ケースにおいて最良の性能になるように電力最適化されてもよい。たとえば、一実施例では、GPU1408は、フィン電界効果トランジスタ(「FinFET」:Fin field-effect transistor)上で作製することができる。少なくとも一実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされた多数の混合精度の処理コアを組み込んでもよい。たとえば、限定することなく64個のPF32コアと、32個のPF64コアを、4つの処理ブロックに区分けすることができる。少なくとも一実施例では、各処理ブロックに、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習の行列演算用の2つの混合精度のNVIDIA TENSORコア、レベルゼロ(「L0」)命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルを配分することができる。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、整数と浮動小数点の独立した並列のデータ経路を含み、コンピュータ処理とアドレッシング計算を混用することによってワークロードの効率的な実行を実現する。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、独立したスレッド・スケジューリング機能を含み、並列スレッド間でよりきめ細かい同期及び連携を可能にしてもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、性能を向上させると同時にプログラミングを簡単にするために、L1データ・キャッシュと共有メモリ・ユニットの組合せを含んでもよい。
少なくとも一実施例では、GPU1408のうちの1つ又は複数は、高帯域幅メモリ(「HBM」:high bandwidth memory)及び/又は16GBのHBM2メモリ・サブシステムを含み、いくつかの実例では、約900GB/秒のピーク・メモリ帯域幅を提供してもよい。少なくとも一実施例では、HBMメモリに加えて、又はその代わりに、グラフィックス・ダブル・データ・レート・タイプの5つの同期ランダム・アクセス・メモリ(「GDDR5」:graphics double data rate type five)などの同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」:synchronous graphics random-access memory)が使用されてもよい。
少なくとも一実施例では、GPU1408は、統合メモリ技術を含んでもよい。少なくとも一実施例では、アドレス・トランスレーション・サービス(「ATS」:address translation services)サポートを使用して、GPU1408が、CPU1406のページ・テーブルに直接アクセスできるようにしてもよい。少なくとも一実施例では、GPU1408メモリ管理ユニット(「MMU」:memory management unit)がミスに遭遇したときには、アドレス・トランスレーション要求が、CPU1406に送信されてもよい。少なくとも一実施例では、それに応答して、CPU1406は、自らのページ・テーブルで、仮想から物理へのアドレスのマッピングを探し、トランスレーションをGPU1408に送り返してもよい。少なくとも一実施例では、統合メモリ技術は、CPU1406とGPU1408の両方のメモリに対して単一の統合された仮想アドレス空間を与えることを可能にし、それにより、GPU1408のプログラミング、及びGPU1408へのアプリケーションの移植を簡単にする。
少なくとも一実施例では、GPU1408は、他のプロセッサのメモリへのGPU1408のアクセス頻度を記録することができる任意の数のアクセス・カウンタを含んでもよい。少なくとも一実施例では、アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリに、メモリ・ページが確実に移動されるのを補助し、それにより、プロセッサ間で共有されるメモリ範囲の効率を向上させてもよい。
少なくとも一実施例では、SoC1404のうちの1つ又は複数は、本明細書に記載のものを含む任意の数のキャッシュ1412を含んでもよい。たとえば、少なくとも一実施例では、キャッシュ1412は、CPU1406もGPU1408も利用可能な(たとえば、CPU1406とGPU1408の両方に接続された)レベル3(「L3」)キャッシュを含むことができる。少なくとも一実施例では、キャッシュ1412は、キャッシュ・コヒーレンス・プロトコルなど(たとえば、MEI、MESI、MSIなど)を使用することにより、線の状態を記録することができるライト・バック・キャッシュを含んでもよい。少なくとも一実施例では、L3キャッシュは、実施例に応じて4MB以上を含んでもよいが、より小さいキャッシュ・サイズが使用されてもよい。
少なくとも一実施例では、SoC1404のうちの1つ又は複数は、1つ又は複数のアクセラレータ1414(たとえば、ハードウェア・アクセラレータ、ソフトウェアアクセラレータ、又はこれらの組合せ)を含んでもよい。少なくとも一実施例では、SoC1404は、最適化されたハードウェア・アクセラレータ及び/又は大型のオン・チップ・メモリを含むことができるハードウェア加速クラスタを含んでもよい。少なくとも一実施例では、大型のオン・チップ・メモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速できるようにしてもよい。少なくとも一実施例では、ハードウェア加速クラスタを使用して、GPU1408を補完し、GPU1408のタスクのうちのいくつかをオフロードしてもよい(たとえば、他のタスクを実行できるようにGPU1408のサイクルをより多く解放してもよい)。少なくとも一実施例では、加速を受け入れるのに十分なほど安定している目的とするワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(「CNN」:convolutional neural network)、再帰ニューラル・ネットワーク(「RNN」:recurrent neural network)など)のために、アクセラレータ1414を使用することができる。少なくとも一実施例では、CNNは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク(「RCNN」:regional convolutional neural network)、及び(たとえば、物体検出に使用される)高速RCNN、又は他のタイプのCNNを含んでもよい。
少なくとも一実施例では、アクセラレータ1414(たとえば、ハードウェア加速クラスタ)は、深層学習アクセラレータ(「DLA」:deep learning accelerator)を含んでもよい。DLAは、限定することなく、1つ又は複数のTensor処理ユニット(「TPU」:Tensor processing units)を含んでもよく、このユニットは、深層学習アプリケーション及び推論のために、さらに毎秒10兆の演算を提供するように構成されてもよい。少なくとも一実施例では、TPUは、画像処理機能(たとえば、CNN、RCNNなど)を実行するように構成され、そのために最適化されたアクセラレータであってもよい。DLAはさらに、ニューラル・ネットワーク・タイプと浮動小数点演算の特定のセット、並びに推論のために最適化されてもよい。少なくとも一実施例では、DLAの設計により、典型的な汎用GPUよりもミリメートル当たりの性能を向上させることができ、典型的には、CPUの性能を大いに上回る。少なくとも一実施例では、TPUは、たとえば特徴と重みの両方のためのINT8、INT16、及びFP16のデータ型をサポートする単一インスタンスの畳み込み関数、並びに後処理関数を含む、いくつか関数を実行してもよい。少なくとも一実施例では、DLAは、たとえば、限定することなく、カメラ・センサからのデータを使用した物体識別及び検出のためのCNN、カメラ・センサからのデータを使用した距離推定のためのCNN、マイクロフォン1496からのデータを使用した緊急車両検出、及び識別、及び検出のためのCNN、カメラ・センサからのデータを使用した顔認識及び車両所有者識別ためのCNN、並びに/又はセキュリティ及び/若しくは安全に関するイベントのためのCNNを含め、様々な機能のうちのいずれかのための処理済み若しくは未処理のデータに対して、迅速且つ効率的にニューラル・ネットワーク、特にCNNを実行してもよい。
少なくとも一実施例では、DLAは、GPU1408の任意の機能を実行してもよく、たとえば推論アクセラレータを使用することにより、設計者は、任意の機能のためにDLA又はGPU1408のいずれかをターゲットにしてもよい。たとえば、少なくとも一実施例では、設計者は、CNN及び浮動小数点演算の処理をDLAに集中させ、他の機能をGPU1408及び/又は他のアクセラレータ1414に任せてもよい。
少なくとも一実施例では、アクセラレータ1414(たとえば、ハードウェア加速クラスタ)は、プログラマブル・ビジョン・アクセラレータ(「PVA」:programmable vision accelerator)を含んでもよく、このプログラマブル・ビジョン・アクセラレータは、本明細書において代替的にコンピュータ・ビジョン・アクセラレータと呼ばれてもよい。少なくとも一実施例では、PVAは、先進ドライバ支援システム(「ADAS」)1438、自律運転、拡張現実(「AR」:augmented reality)アプリケーション、及び/又は仮想現実(「VR」:virtual reality)アプリケーションのために、コンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成されてもよい。PVAにより、性能と融通性との均衡が保たれてもよい。たとえば、少なくとも一実施例では、各PVAは、たとえば限定することなく、任意の数の縮小命令セット・コンピュータ(「RISC」:reduced instruction set computer)コア、ダイレクト・メモリ・アクセス(「DMA」:direct memory access)、及び/又は任意の数のベクトル・プロセッサを含んでもよい。
少なくとも一実施例では、RISCコアは、画像センサ(たとえば、本明細書に記載のカメラのうちの任意のカメラの画像センサ)、及び/又は画像信号プロセッサなどと相互作用してもよい。少なくとも一実施例では、RISCコアのそれぞれは、任意の量のメモリを含んでもよい。少なくとも一実施例では、RISCコアは、実施例に応じて複数のプロトコルのうちの任意のものを使用してもよい。少なくとも一実施例では、RISCコアは、リアル・タイム・オペレーティング・システム(「RTOS」:real-time operating system)を実行してもよい。少なくとも一実施例では、RISCコアは、1つ又は複数の集積回路デバイス、特定用途向け集積回路(「ASIC」)、及び/又はメモリ・デバイスを使用して実装されてもよい。たとえば、少なくとも一実施例では、RISCコアは、命令キャッシュ及び/又は密結合RAMを含むことができる。
少なくとも一実施例では、DMAは、PVAの構成要素がCPU1406とは無関係にシステム・メモリにアクセスできるようにしてもよい。少なくとも一実施例では、DMAは、多次元アドレッシング、及び/又はサーキュラ・アドレッシングを含むがこれらに限定されない、PVAに最適化を提供するために使用される任意の数の特徴をサポートしてもよい。少なくとも一実施例では、DMAは、6つ以上のアドレッシング次元までをサポートしてもよく、これには、限定することなく、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングが含まれてもよい。
少なくとも一実施例では、ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのためのプログラミングを効率的でフレキシブルに実行するように設計されてもよいプログラム可能なプロセッサとすることができ、信号処理機能を提供する。少なくとも一実施例では、PVAは、PVAコアと、2つのベクトル処理サブシステム・パーティションを含んでもよい。少なくとも一実施例では、PVAコアは、プロセッサ・サブシステム、DMAエンジン(たとえば2つのDMAエンジン)、及び/又は他の周辺装置を含んでもよい。少なくとも一実施例では、ベクトル処理サブシステムは、PVAの一次処理エンジンとして動作してもよく、ベクトル処理ユニット(「VPU」:vector processing unit)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、「VMEM」)を含んでもよい。少なくとも一実施例では、VPUは、たとえば単一命令複数データ(「SIMD」:single instruction, multiple data)、超長命令語(「VLIW」:very long instruction word)のデジタル信号プロセッサなどのデジタル信号プロセッサを含んでもよい。少なくとも一実施例では、SIMDとVLIWの組合せによって、スループット及びスピードが改善されてもよい。
少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、命令キャッシュを含んでもよく、専用のメモリに結合されてもよい。その結果、少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、他のベクトル・プロセッサとは無関係に実行されるように構成されてもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成されてもよい。たとえば、少なくとも一実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、同じコンピュータ・ビジョン・アルゴリズムを画像の異なる領域上で実行してもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを同じ画像上で同時に実行してもよく、又はさらには、異なるアルゴリズムを連続した画像上で、若しくは画像の部分上で実行してもよい。少なくとも一実施例では、とりわけ、任意の数のPVAがハードウェア加速クラスタに含まれてもよく、任意の数のベクトル・プロセッサがPVAのそれぞれに含まれてもよい。少なくとも一実施例では、PVAは、システムの全体的な安全性を強化するために、追加のエラー訂正コード(「ECC」:Error Correction Code)メモリを含んでもよい。
少なくとも一実施例では、アクセラレータ1414(たとえば、ハードウェア加速クラスタ)は、オン・チップのコンピュータ・ビジョン・ネットワーク、及びスタティック・ランダム・アクセス・メモリ(「SRAM」)を含み、アクセラレータ1414のための高帯域幅、低レイテンシのSRAMを提供してもよい。少なくとも一実施例では、オン・チップ・メモリは、たとえば限定することなく、8つのフィールド設定可能なメモリ・ブロックから成る少なくとも4MBのSRAMを含んでもよく、これは、PVAからもDLAからもアクセス可能であってもよい。少なくとも一実施例では、メモリ・ブロックの各対は、アドバンスト・ペリフェラル・バス(「APB」:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含んでもよい。少なくとも一実施例では、任意のタイプのメモリが使用されてもよい。少なくとも一実施例では、PVA及びDLAは、メモリへの高速アクセスをPVA及びDLAに提供するバックボーンを介して、メモリにアクセスしてもよい。少なくとも一実施例では、バックボーンは、PVA及びDLAを(たとえばAPBを使用して)メモリに相互接続するオン・チップのコンピュータ・ビジョン・ネットワークを含んでもよい。
少なくとも一実施例では、オン・チップのコンピュータ・ビジョン・ネットワークは、何らかの制御信号/アドレス/データを送信する前に、PVAとDLAの両方が準備信号及び有効信号を提供することを判定するインターフェースを含んでもよい。少なくとも一実施例では、インターフェースは、制御信号/アドレス/データを送信するための別々の位相及び別々のチャネル、並びに継続的なデータ転送のためのバースト型通信を提供してもよい。少なくとも一実施例では、インターフェースは、国際標準化機構(「ISO」:Organization for Standardization)26262又は国際電気標準会議(「IEC」:International Electrotechnical Commission)61508の規格に準拠してもよいが、他の規格及びプロトコルが使用されてもよい。
少なくとも一実施例では、SoC1404のうちの1つ又は複数は、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを含んでもよい。少なくとも一実施例では、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを使用して、物体の(たとえば世界モデル内での)位置及び範囲が迅速且つ効率的に判定されて、RADAR信号解釈のため、音伝播合成及び/若しくは分析のため、SONARシステムのシミュレーションのため、一般波形の伝播シミュレーションのため、ローカリゼーション及び/若しくは他の機能を目的としたLIDARデータとの比較のため、並びに/又は他の使用法のためのリアル・タイムの可視化シミュレーションが生成されてもよい。
少なくとも一実施例では、アクセラレータ1414(たとえば、ハードウェア・アクセラレータ・クラスタ)は、自律運転のための多様な使用法を有する。少なくとも一実施例では、PVAは、ADAS及び自律車両の主要な処理ステージに使用することができるプログラマブル・ビジョン・アクセラレータであってもよい。少なくとも一実施例では、PVAの性能は、低電力及び低レイテンシの予測可能な処理を必要とするアルゴリズム・ドメインに良好に適合する。言い換えれば、PVAは、低レイテンシ及び低電力の予測可能なラン・タイムを必要とする半稠密(semi-dense)又は稠密な規則的計算に対して、データ・セットが小さくても良好に機能する。少なくとも一実施例では、車両1400などの自律車両では、従来のコンピュータ・ビジョン・アルゴリズムを実行するようにPVAが設計されるが、これは、それらが、物体検出及び整数数値の演算に有効だからである。
たとえば、技術の少なくとも一実施例によれば、PVAを使用して、コンピュータ・ステレオ・ビジョンが実行されてもよい。少なくとも一実施例では、いくつかの実例においてセミ・グローバル・マッチングに基づくアルゴリズムが使用されてもよいが、これは限定するものではない。少なくとも一実施例では、レベル3~5の自律運転のためのアプリケーションは、動き推定/ステレオ・マッチング(たとえば、動きからの構造化、歩行者認識、車線検出など)をオン・ザ・フライで使用する。少なくとも一実施例では、PVAは、2つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実行してもよい。
少なくとも一実施例では、PVAを使用して、高密度オプティカル・フローが実行されてもよい。たとえば、少なくとも一実施例では、PVAは、未加工のRADARデータを(たとえば4Dの高速フーリエ変換を使用して)処理して、処理済みRADARデータを提供することができる。少なくとも一実施例では、PVAは、飛行時間の深度処理に使用され、たとえば未加工の飛行時間データを処理することにより、処理済みの飛行時間データが提供される。
少なくとも一実施例では、たとえば限定することなく、物体検出ごとに信頼性の尺度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を強化するための任意のタイプのネットワークを実行するために、DLAが使用されてもよい。少なくとも一実施例では、信頼性は、他の検出と比較した各検出の確率として、若しくはその相対的な「重み」を提供するものとして表されても、又は解釈されてもよい。少なくとも一実施例では、信頼性によって、どの検出を誤検出ではなく正検出とみなすべきかに関して、システムがさらなる判定を下せるようになる。少なくとも一実施例では、システムは、信頼性に対して閾値を設定し、閾値を超える検出だけを正検出とみなしてもよい。自動緊急ブレーキ(「AEB」:automatic emergency braking)が使用される実施例では、誤検出によって車両は自動的に緊急ブレーキをかけることになり、これは明らかに望ましくない。少なくとも一実施例では、非常に信頼性の高い検出が、AEBのトリガとみなされてもよい。少なくとも一実施例では、DLAは、信頼値を回帰するようにニューラル・ネットワークを実行してもよい。少なくとも一実施例では、ニューラル・ネットワークは、とりわけ境界ボックスの次元、(たとえば別のサブシステムから)取得した地面推定、車両1400の配向と相関しているIMUセンサ1466からの出力、距離、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1464若しくはRADARセンサ1460)から取得した物体の3Dロケーション推定などのパラメータの少なくともいくつかのサブセットを、その入力として取ってもよい。
少なくとも一実施例では、SoC1404のうちの1つ又は複数は、データ・ストア1416(たとえばメモリ)を含んでもよい。少なくとも一実施例では、データ・ストア1416は、SoC1404のオン・チップ・メモリであってもよく、このメモリは、GPU1408及び/又はDLA上で実行されるニューラル・ネットワークを記憶してもよい。少なくとも一実施例では、データ・ストア1416の容量は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくてもよい。少なくとも一実施例では、データ・ストア1412は、L2又はL3のキャッシュを備えてもよい。
少なくとも一実施例では、SoC1404のうちの1つ又は複数は、任意の数のプロセッサ1410(たとえば、組み込みプロセッサ)を含んでもよい。少なくとも一実施例では、プロセッサ1410は、ブート電力並びに管理機能及び関連するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであってもよいブート及び電力管理プロセッサを含んでもよい。少なくとも一実施例では、ブート及び電力管理プロセッサは、SoC1404のブート・シーケンスの一部であってもよく、ランタイム電力管理サービスを提供してもよい。少なくとも一実施例では、ブート電力及び管理プロセッサは、クロックと電圧のプログラミング、システムの低電力状態への移行の支援、SoC1404の熱及び温度センサの管理、並びに/又はSoC1404の電力状態の管理を提供してもよい。少なくとも一実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実装されてもよく、SoC1404は、リング発振器を使用して、CPU1406、GPU1408、及び/又はアクセラレータ1414の温度を検出してもよい。少なくとも一実施例では、温度が閾値を超えると判定された場合には、ブート及び電力管理プロセッサは、温度不良ルーチンに入り、SoC1404を低電力状態にし、且つ/又は車両1400を運転手-安全停止モードにしても(たとえば、車両1400を安全停止させる)よい。
少なくとも一実施例では、プロセッサ1410はさらに、オーディオ処理エンジンとしての役割を果たすことができる組み込みプロセッサのセットを含んでもよい。少なくとも一実施例では、オーディオ処理エンジンは、多重インターフェースを介した多チャネルのオーディオ、及び幅広くフレキシブルな様々なオーディオI/Oインターフェースのための、完全なハードウェア・サポートを可能にするオーディオ・サブシステムであってもよい。少なくとも一実施例では、オーディオ処理エンジンは、専用RAMのあるデジタル信号プロセッサを有する専用プロセッサ・コアである。
少なくとも一実施例では、プロセッサ1410はさらに、低電力センサ管理及び立ち上げのユース・ケースをサポートするのに必要なハードウェア特徴を提供することができる常時オン・プロセッサ・エンジンを含んでもよい。少なくとも一実施例では、常時オン・プロセッサ・エンジンは、限定することなく、プロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含んでもよい。
少なくとも一実施例では、プロセッサ1410はさらに安全クラスタ・エンジンを含んでもよく、このエンジンは限定することなく、自動車用途の安全管理に対処するための専用のプロセッサ・サブシステムを含む。少なくとも一実施例では、安全クラスタ・エンジンは、限定することなく、2つ以上のプロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラなど)、及び/又はルーティング論理を含んでもよい。安全モードでは、少なくとも一実施例においてロックステップ・モードで2つ以上のコアが動作し、これらの動作間で何らかの差を検出するための比較論理を有する単一コアとして機能してもよい。少なくとも一実施例では、プロセッサ1410はさらにリアル・タイム・カメラ・エンジンを含んでもよく、このエンジンは限定することなく、リアル・タイムのカメラ管理に対処するための専用のプロセッサ・サブシステムを含んでもよい。少なくとも一実施例では、プロセッサ1410はさらに、高ダイナミック・レンジの信号プロセッサを含んでもよく、この信号プロセッサは、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを限定することなく含んでもよい。
少なくとも一実施例では、プロセッサ1410は、ビデオ画像合成器を含んでもよく、この合成器は、再生装置のウインドウに最終画像を生成するのにビデオ再生アプリケーションが必要とするビデオ後処理機能を実装する(たとえばマイクロプロセッサに実装された)処理ブロックであってもよい。少なくとも一実施例では、ビデオ画像合成器は、広角カメラ1470、周囲カメラ1474、及び/又はキャビン内監視カメラ・センサに対して、レンズゆがみ補正を実行してもよい。少なくとも一実施例では、キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに適宜応答するように構成された、SoC1404の別のインスタンスで実行されているニューラル・ネットワークによって監視される。少なくとも一実施例では、キャビン内システムは、セルラー・サービスをアクティブ化し、電話をかけたり、電子メールを書いたり、車両の行き先を変更したり、車両のインフォテイメント・システム及び設定をアクティブ化又は変更したり、音声作動式のウェブ・サーフィンを提供したりするために、限定することなく読唇を実行してもよい。少なくとも一実施例では、ある一定の機能は、車両が自律モードで動作しているときにドライバにとって利用可能になり、それ以外のときには使用不可になる。
少なくとも一実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含んでもよい。たとえば、少なくとも一実施例では、ビデオで動きが生じる場合には、ノイズ低減が空間情報に適切に重み付けして、隣接するフレームによって提供される情報の重みを軽くする。少なくとも一実施例では、画像又は画像の一部分が動きを含まない場合には、ビデオ画像合成器により実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像のノイズを低減してもよい。
少なくとも一実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ平行化を実行するように構成されてもよい。少なくとも一実施例では、ビデオ画像合成器はさらに、オペレーティング・システムのデスクトップが使用中のときに、ユーザ・インターフェースを合成するために使用されてもよく、GPU1408は、新規の表面を継続的にレンダリングする必要がなくなる。少なくとも一実施例では、GPU1408の電源が入れられ、アクティブで3Dレンダリングを行っているとき、性能及び応答性を向上させるために、ビデオ画像合成器を使用してGPU1408をオフロードしてもよい。
少なくとも一実施例では、SoC1404のうちの1つ又は複数はさらに、ビデオ及びカメラからの入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」:mobile industry processor interface)のカメラ直列インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセルの入力機能に使用されてもよいビデオ入力ブロックを含んでもよい。少なくとも一実施例では、SoC1404のうちの1つ又は複数はさらに、入力/出力コントローラを含んでもよく、このコントローラはソフトウェアによって制御されてもよく、特定の役割に縛られていないI/O信号を受信するために使用されてもよい。
少なくとも一実施例では、SoC1404のうちの1つ又は複数はさらに、周辺装置、オーディオ・エンコーダ/デコーダ(「コーデック」)、電力管理、及び/又は他の装置との通信を可能にするための幅広い周辺装置インターフェースを含んでもよい。SoC1404は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続されてもよいLIDARセンサ1464、RADARセンサ1460など)からのデータ、バス1402からのデータ(たとえば、車両1400のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ1458からのデータなどを処理するために使用されてもよい。少なくとも一実施例では、SoC1404のうちの1つ又は複数はさらに、専用の高性能大容量ストレージ・コントローラを含んでもよく、このコントローラは独自のDMAエンジンを含んでもよく、ルーチンのデータ管理タスクからCPU1406を解放するために使用されてもよい。
少なくとも一実施例では、SoC1404は、自動化レベル3~5に及ぶフレキシブルなアーキテクチャを有するエンドツーエンドのプラットフォームであってもよく、それにより、多様性及び冗長性を得るためにコンピュータ・ビジョン及びADAS技法を活用し効率的に利用する包括的な機能的安全性アーキテクチャが提供され、フレキシブルで、信頼性の高い運転ソフトウェア・スタックが、深層学習ツールとともに提供される。少なくとも一実施例では、SoC1404は、従来のシステムより高速で、信頼性が高く、さらにはエネルギー効率及び空間効率が高い。たとえば、少なくとも一実施例では、アクセラレータ1414は、CPU1406、GPU1408、及びデータ・ストア1416と組み合わされると、レベル3~5の自律車両のための高速で効率的なプラットフォームを実現することができる。
少なくとも一実施例では、コンピュータ・ビジョン・アルゴリズムはCPU上で実行されてもよく、このアルゴリズムは、Cプログラミング言語などの高レベル・プログラミング言語を使用して構成されて、多様な視覚データにわたって多様な処理アルゴリズムを実行してもよい。しかし、少なくとも一実施例では、CPUは、多くのコンピュータ・ビジョン・アプリケーションの性能要件、たとえば実行時間及び電力消費に関する要件などを満足できないことが多い。少なくとも一実施例では、多くのCPUは、車両内のADASアプリケーション及び現実的なレベル3~5の自律車両において使用される複雑な物体検出アルゴリズムを、リアル・タイムで実行することができない。
本明細書に記載の実施例は、複数のニューラル・ネットワークを同時に且つ/又は順番に実行できるようにし、結果を組み合わせて、レベル3~5の自律運転機能を可能にすることができる。たとえば、少なくとも一実施例では、DLA又は個別GPU(たとえば、GPU1420)上で実行しているCNNは、テキスト及び単語認識を含んでもよく、ニューラル・ネットワークがそれについて特に訓練されてこなかった標識を含む交通標識を、スーパーコンピュータが読み、理解できるようにする。少なくとも一実施例では、DLAはさらに、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、CPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークを含んでもよい。
少なくとも一実施例では、レベル3、4、又は5の運転に関して、複数のニューラル・ネットワークが同時に実行されてもよい。たとえば、少なくとも一実施例では、電光と併せて「注意:点滅時は凍結状態」と示される警告標識は、いくつかのニューラル・ネットワークによって別々に解釈されても、集合的に解釈されてもよい。少なくとも一実施例では、標識自体は、第1の導入済みニューラル・ネットワーク(たとえば、訓練されてきたニューラル・ネットワーク)によって交通標識として識別されてもよく、「点滅時は凍結状態」という文字は、第2の導入済みニューラル・ネットワークによって解釈されてもよく、点滅光が検出された場合には、このニューラル・ネットワークが、凍結状態が存在することを車両の(好ましくはCPUコンプレックス上で実行している)経路計画ソフトウェアに通知する。少なくとも一実施例では、点滅光は、第3の導入済みニューラル・ネットワークを複数のフレームにわたって動作させることによって識別されてもよく、点滅光の存在(又は存在しないこと)が、車両の経路計画ソフトウェアに通知される。少なくとも一実施例では、3つすべてのニューラル・ネットワークが、DLA内及び/又はGPU1408上などで同時に実行されてもよい。
少なくとも一実施例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して、車両1400の承認済みのドライバ及び/又は所有者の存在を識別してもよい。少なくとも一実施例では、常時オンのセンサ処理エンジンを使用して、所有者がドライバ用ドアに近づいてきたときに車両を解錠し、ライトを点灯させ、所有者が車両から離れるときには、セキュリティ・モードで車両を使用不可にしてもよい。こうして、SoC1404は、窃盗及び/又は自動車乗っ取りに対するセキュリティを実現する。
少なくとも一実施例では、緊急車両の検出及び識別のためのCNNは、マイクロフォン1496からのデータを使用して、緊急車両のサイレンを検出及び識別してもよい。少なくとも一実施例では、SoC1404は、環境及び市街地の音を分類するとともに、視覚データを分類するためにCNNを使用する。少なくとも一実施例では、DLA上で実行されるCNNは、緊急車両が近づいてくる相対的なスピードを(たとえばドップラー効果を使用することによって)識別するように訓練される。少なくとも一実施例では、CNNはまた、GNSSセンサ1458によって識別される、車両が稼働している地域に特有の緊急車両を識別するように訓練されてもよい。少なくとも一実施例では、欧州で稼働している場合には、CNNは欧州のサイレンを検出しようとし、米国の場合には、北米のサイレンだけを識別しようとする。少なくとも一実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行するための制御プログラムを使用して、車両の速度を落とし、道路脇に寄せ、車両を停止させ、且つ/又は緊急車両が通過するまで、超音波センサ1462を併用して車両をアイドリングにしてもよい。
少なくとも一実施例では、車両1400はCPU1418(たとえば、個別CPU又はdCPU)を含んでもよく、このCPUは高速相互接続(たとえば、PCIe)を介してSoC1104に結合されてもよい。少なくとも一実施例では、CPU1418は、たとえばX86プロセッサを含んでもよい。CPU1418は、たとえば、ADASセンサとSoC1404の間で潜在的に不整合な結果を調停すること、並びに/又はコントローラ1436及び/若しくはチップ上のインフォテイメント・システム(「インフォテイメントSoC」)1430の状態及び健全性を監視することを含め、様々な機能のうちの任意の機能を実行するために使用されてもよい。
少なくとも一実施例では、車両1400はGPU1420(たとえば、個別GPU又はdGPU)を含んでもよく、このGPUは高速相互接続(たとえば、NVIDIAのNVLINK)を介してSoC1404に結合されてもよい。少なくとも一実施例では、GPU1420は、冗長な及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能を提供してもよく、車両1400のセンサからの入力(たとえば、センサ・データ)に少なくとも部分的に基づき、ニューラル・ネットワークを訓練及び/又は更新するために使用されてもよい。
少なくとも一実施例では、車両1400はさらに、ネットワーク・インターフェース1424を含んでもよく、このインターフェースは限定することなく、ワイヤレス・アンテナ1426(たとえば、セルラー・アンテナ、Bluetoothアンテナなど、異なる通信プロトコル向けの1つ又は複数のワイヤレス・アンテナ1426)を含んでもよい。少なくとも一実施例では、クラウド(たとえば、サーバ及び/又は他のネットワーク・デバイス)、他の車両、及び/又はコンピューティング・デバイス(たとえば、乗員のクライアント・デバイス)とのインターネットを介したワイヤレス接続を可能にするために、ネットワーク・インターフェース1424が使用されてもよい。少なくとも一実施例では、他の車両と通信するために、車両140と他の車両との間に直接リンクが確立されてもよく、且つ/又は(たとえば、ネットワークにわたって、且つインターネットを介して)間接リンクが確立されてもよい。少なくとも一実施例では、直接リンクは、車車間通信リンクを使用して提供されてもよい。少なくとも一実施例では、車車間通信リンクは、車両1400の近傍の車両(たとえば、車両1400の前方、側方、及び/又は後方の車両)についての情報を車両1400に提供してもよい。少なくとも一実施例では、前述した機能は、車両1400の協調型アダプティブ・クルーズ・コントロール機能の一部であってもよい。
少なくとも一実施例では、ネットワーク・インターフェース1424は、変調及び復調の機能を提供し、コントローラ1436がワイヤレス・ネットワークを介して通信できるようにするSoCを含んでもよい。少なくとも一実施例では、ネットワーク・インターフェース1424は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含んでもよい。少なくとも一実施例では、周波数変換は、任意の技術的に実行可能なやり方で実行されてもよい。たとえば、周波数変換は、よく知られたプロセスにより、且つ/又はスーパー・ヘテロダイン・プロセスを使用して実行することができる。少なくとも一実施例では、無線周波数フロント・エンド機能は、別個のチップによって提供されてもよい。少なくとも一実施例では、ネットワーク・インターフェースは、LTE、WCDMA、UMTS、GSM、CDMA2000、Bluetooth、Bluetooth LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含んでもよい。
少なくとも一実施例では、車両1400はさらにデータ・ストア1428を含んでもよく、このデータ・ストアは限定することなく、オフ・チップ(たとえばSoC1404上にない)ストレージを含んでもよい。少なくとも一実施例では、データ・ストア1428は、RAM、SRAM、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)、ビデオ・ランダム・アクセス・メモリ(「VRAM」:video random-access memory)、フラッシュ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶することができる他の構成要素及び/若しくはデバイスを含む1つ若しくは複数のストレージ要素を、限定することなく含んでもよい。
少なくとも一実施例では、車両1400はさらに、マッピング、知覚、占有グリッド生成、及び/又は経路計画の機能を支援するためのGNSSセンサ1458(たとえば、GPS及び/又は補助GPSセンサ)を含んでもよい。少なくとも一実施例では、イーサネット(登録商標)からシリアル(たとえばRS-232)へのブリッジを有するUSBコネクタを使用するGPSをたとえば限定することなく含む任意の数のGNSSセンサ1458が使用されてもよい。
少なくとも一実施例では、車両1400はさらに、RADARセンサ1460を含んでもよい。RADARセンサ1460は、暗闇及び/又は厳しい気象条件の中でも、長距離の車両検出を行うために車両1400によって使用されてもよい。少なくとも一実施例では、RADARの機能的安全性レベルは、ASIL Bであってもよい。RADARセンサ1460は、制御のために(たとえば、RADARセンサ1460によって生成されたデータを送信するために)、また物体追跡データにアクセスするために、CAN及び/又はバス1402を使用してもよく、いくつかの実例では、未加工データにアクセスするためにイーサネット(登録商標)にアクセスできる。少なくとも一実施例では、多様なタイプのRADARセンサが使用されてもよい。たとえば限定することなく、RADARセンサ1460は、前方、後方、及び側方のRADAR使用に好適であってもよい。少なくとも一実施例では、RADARセンサ1460のうちの1つ又は複数は、パルス・ドップラーRADARセンサである。
少なくとも一実施例では、RADARセンサ1460は、狭視野の長距離、広視野の短距離、側面を網羅する短距離など、異なる構成を含んでもよい。少なくとも一実施例では、長距離RADARは、アダプティブ・クルーズ・コントロール機能のために使用されてもよい。少なくとも一実施例では、長距離RADARシステムは、2つ以上の独立した走査によって実現される250mの範囲内などの広視野を提供してもよい。少なくとも一実施例では、RADARセンサ1460は、静的物体と移動している物体とを区別しやすくしてもよく、緊急ブレーキ支援及び前方衝突警告を行うためにADASシステム1438によって使用されてもよい。少なくとも一実施例では、長距離RADARシステムに含まれるセンサ1460は、複数の(たとえば6つ以上の)固定RADARアンテナ、並びに高速CAN及びFlexRayインターフェースを有するモノスタティックのマルチモードRADARを、限定することなく含んでもよい。少なくとも一実施例では、6つのアンテナがある場合、中央の4つのアンテナは、隣接した車線からの干渉が最小の状態で、より高速で車両1400の周囲を記録するように設計された集中したビーム・パターンを生成してもよい。少なくとも一実施例では、他の2つのアンテナは、視野を拡張してもよく、車両1400の車線に入る又はそこから出る車両を迅速に検出するのを可能にする。
少なくとも一実施例では、中距離RADARシステムは、一例として最大160m(前方)、又は80m(後方)の範囲、及び最大42度(前方)、又は150度(後方)の視野を含んでもよい。少なくとも一実施例では、短距離RADARシステムは、限定することなく、後方バンパの両端部に設置されるように設計された任意の数のRADARセンサ1460を含んでもよい。後方バンパの両端部に設置されたとき、少なくとも一実施例では、RADARセンサ・システムは、後方及び車両隣の死角を常に監視する2本のビームを生成してもよい。少なくとも一実施例では、短距離RADARシステムは、死角検出及び/又は車線変更支援を行うために、ADASシステム1438において使用されてもよい。
少なくとも一実施例では、車両1400はさらに、超音波センサ1462を含んでもよい。少なくとも一実施例では、超音波センサ1462は、車両1400の前方、後方、及び/又は側方に配置されてもよく、駐車支援のため、且つ/又は占有グリッドを生成し更新するために使用されてもよい。少なくとも一実施例では、多様な超音波センサ1462が使用されてもよく、異なる検出範囲(たとえば、2.5m、4m)には異なる超音波センサ1462が使用されてもよい。少なくとも一実施例では、超音波センサ1462は、機能的安全性レベルASIL Bで動作してもよい。
少なくとも一実施例では、車両1400は、LIDARセンサ1464を含んでもよい。LIDARセンサ1464は、物体及び歩行者の検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用されてもよい。少なくとも一実施例では、LIDARセンサ1464は、機能的安全性レベルASIL Bであってもよい。少なくとも一実施例では、車両1400は、複数のLIDARセンサ1464(たとえば、2つ、4つ、6つなど)を含んでもよく、これらのセンサは、(たとえばデータをギガビット・イーサネット(登録商標)・スイッチに提供するために)イーサネット(登録商標)を使用してもよい。
少なくとも一実施例では、LIDARセンサ1464は、360度の視野について、物体及びそれらの距離のリストを提供可能であってもよい。少なくとも一実施例では、市販のLIDARセンサ1464は、たとえば宣伝された範囲がおおよそ100mであり、精度が2cm~3cmであり、100Mbpsのイーサネット(登録商標)接続をサポートしてもよい。少なくとも一実施例では、1つ又は複数の非突出型LIDARセンサ1464が使用されてもよい。こうした実施例では、LIDARセンサ1464は、車両1400の前方、後方、側方、及び/又は角に組み込むことができる小さいデバイスとして実装されてもよい。少なくとも一実施例では、こうした実施例のLIDARセンサ1464は、最大120度の水平視野、及び35度の垂直視野を、低反射性の物体に対しても200mの範囲で提供してもよい。少なくとも一実施例では、前方に取り付けられたLIDARセンサ1464は、45度~135度の水平視野をもたらすように構成されてもよい。
少なくとも一実施例では、3DフラッシュLIDARなどのLIDAR技術も使用されてよい。3DフラッシュLIDARは、レーザのフラッシュを送信源として使用して、車両1400の周囲を最大でおおよそ200mまで照射する。少なくとも一実施例では、フラッシュLIDARユニットは、限定することなくレセプタを含み、このレセプタは、レーザ・パルスの通過時間及び各ピクセルにおける反射光を記録し、それらは、車両1400から物体までの範囲に対応する。少なくとも一実施例では、フラッシュLIDARによって、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成できるようになる。少なくとも一実施例では、4つのフラッシュLIDARが、車両1400の各側面に1つ導入されてもよい。少なくとも一実施例では、3DフラッシュLIDARシステムは、ファン以外に可動部品のない半導体3D凝視アレイ(staring array)のLIDARカメラ(たとえば、非走査型LIDARデバイス)を、限定することなく含む。少なくとも一実施例では、フラッシュLIDARデバイスは、フレーム当たり5ナノ秒のクラスI(目に安全な)レーザ・パルスを使用してもよく、3D範囲の点群及び位置同期された(co-registered)強度データの形で反射レーザ光を捕捉してもよい。
少なくとも一実施例では、車両はさらにIMUセンサ1466を含んでもよい。少なくとも一実施例では、IMUセンサ1466は、少なくとも一実施例では、車両1400の後方車軸の中央に位置付けられてもよい。少なくとも一実施例では、IMUセンサ1466は、たとえば限定することなく、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のタイプのセンサを含んでもよい。6軸の用途など少なくとも一実施例では、IMUセンサ1466は限定することなく、加速度計及びジャイロスコープを含んでもよい。9軸の用途など少なくとも一実施例では、IMUセンサ1466は限定することなく、加速度計、ジャイロスコープ、及び磁力計を含んでもよい。
少なくとも一実施例では、IMUセンサ1466は、微小電気機械システム(「MEMS」:micro-electro-mechanical systems)慣性センサ、高感度GPS受信機、及び先進のKalmanフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する小型の高性能GPS補強型慣性航法システム(「GPS/INS」:GPS-Aided Inertial Navigation System)として実装されてもよい。少なくとも一実施例では、IMUセンサ1466により、車両1400は、速度変化を直接観察しそれをGPSからIMUセンサ1466に相関させることによって、磁気センサからの入力を必要とせずに方位を推定できるようになる。少なくとも一実施例では、IMUセンサ1466及びGNSSセンサ1458は、単一の統合ユニットに組み合わされてもよい。
少なくとも一実施例では、車両1400は、車両1400の中及び/又はその周りに設置されたマイクロフォン1496を含んでもよい。少なくとも一実施例では、マイクロフォン1496は、とりわけ緊急車両の検出及び識別のために使用されてもよい。
少なくとも一実施例では、車両1400はさらに、ステレオ・カメラ1468、広角カメラ1470、赤外線カメラ1472、周囲カメラ1474、長距離カメラ1498、中距離カメラ1476、及び/又は他のカメラ・タイプを含む任意の数のカメラ・タイプを含んでもよい。少なくとも一実施例では、カメラは、車両1400の全周囲の周りで画像データを捕捉するために使用されてもよい。少なくとも一実施例では、使用されるカメラのタイプは、車両1400に応じて異なる。少なくとも一実施例では、車両1400の周りで必要な被写域を提供するために、カメラ・タイプの任意の組合せが使用されてもよい。少なくとも一実施例では、カメラの数は、実施例に応じて異なってもよい。たとえば、少なくとも一実施例では、車両1400は6台のカメラ、7台のカメラ、10台のカメラ、12台のカメラ、又は別の数のカメラを含むことができる。少なくとも一実施例では、カメラは、一例として限定することなく、ギガビット・マルチメディア・シリアル・リンク(「GMSL」:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートしてもよい。少なくとも一実施例では、各カメラは、図14A及び図14Bに関して本明細書でさらに詳細に上で説明されている。
少なくとも一実施例では、車両1400はさらに、振動センサ1442を含んでもよい。少なくとも一実施例では、振動センサ1442は、車軸など、車両1400の構成要素の振動を測定してもよい。たとえば、少なくとも一実施例では、振動の変化は、路面の変化を示すことがある。少なくとも一実施例では、2つ以上の振動センサ1442が使用される場合には、路面の摩擦又はすべり量を判定するために振動の差が使用されてもよい(たとえば、動力により駆動される車軸と自由回転する車軸との間に振動差がある場合)。
少なくとも一実施例では、車両1400は、ADASシステム1438を含んでもよい。ADASシステム1438は、限定することなく、いくつかの実例においてSoCを含んでもよい。少なくとも一実施例では、ADASシステム1438は、限定することなく、任意の数及び任意の組合せの、自律/アダプティブ/自動のクルーズ・コントロール(「ACC」:autonomous/adaptive/automatic cruise control)システム、協調型アダプティブ・クルーズ・コントロール(「CACC」:cooperative adaptive cruise control)システム、正面衝突警告(「FCW」:forward crash warning)システム、自動緊急ブレーキ(「AEB」:automatic emergency braking)システム、車線逸脱警告(「LDW」:lane departure warning)システム、車線維持支援(「LKA」:lane keep assist)システム、死角警告(「BSW」:blind spot warning)システム、後方クロス・トラフィック警告(「RCTW」:rear cross-traffic warning)システム、衝突警告(「CW」:collision warning)システム、車線センタリング(「LC」:lane centering)システム、並びに/又は他のシステム、特徴、及び/若しくは機能を含んでもよい。
少なくとも一実施例では、ACCシステムは、RADARセンサ1460、LIDARセンサ1464、及び/又は任意の数のカメラを使用してもよい。少なくとも一実施例では、ACCシステムは、縦方向ACCシステム及び/又は横方向ACCシステムを含んでもよい。少なくとも一実施例では、縦方向ACCシステムは、車両1400の直前の車両までの距離を監視及び制御し、車両1400のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも一実施例では、横方向ACCシステムは、距離の維持を実行し、必要なときに車線変更するよう車両1400に通知する。少なくとも一実施例では、横方向ACCは、LC及びCWなどの他のADAS用途に関係する。
少なくとも一実施例では、CACCシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクにより、又は間接的にネットワーク接続を介して(たとえばインターネットを介して)、他の車両からネットワーク・インターフェース1424及び/又はワイヤレス・アンテナ1426により受信されてもよい。少なくとも一実施例では、車車間(「V2V」:vehicle-to-vehicle)通信リンクによって直接リンクが提供されてもよく、一方インフラストラクチャ車間(「I2V」:infrastructure-to-vehicle)通信リンクによって間接リンクが提供されてもよい。一般に、V2V通信の概念は、すぐ前の先行車両(たとえば、車両1400のすぐ前で同じ車線にいる車両)についての情報を提供し、I2V通信の概念は、さらにその前の交通についての情報を提供する。少なくとも一実施例では、CACCシステムは、I2VとV2Vの情報源のいずれか又は両方を含んでもよい。少なくとも一実施例では、車両1400の前の車両についての情報があれば、CACCシステムは信頼性をさらに高めることができ、交通の流れをより円滑にし、路上での渋滞を低減できる可能性を有する。
少なくとも一実施例では、FCWシステムは、危険物に対してドライバに忠告するように設計され、それによりドライバは修正措置を取ることができる。少なくとも一実施例では、FCWシステムは正面カメラ及び/又はRADARセンサ1460を使用し、これらは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、FCWシステムは、音、視覚的警告、振動、及び/又はクイック・ブレーキ・パルスなどの形で警告を提供してもよい。
少なくとも一実施例では、AEBシステムは、別の車両又は他の物体との差し迫った正面衝突を検出し、指定された時間内又は距離パラメータ内にドライバが修正措置を取らない場合には、自動でブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された正面カメラ及び/又はRADARセンサ1460を使用してもよい。少なくとも一実施例では、AEBシステムが危険物を検出したとき、AEBシステムは通常、修正措置を取って衝突を避けるよう最初にドライバに忠告し、ドライバが修正措置を取らない場合には、AEBシステムは、予測される衝突を防ぐ又は少なくともその衝撃を軽減するために自動的にブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突直前ブレーキなどの技法を含んでもよい。
少なくとも一実施例では、LDWシステムは、車両1400が車線の目印に交差したときにドライバに忠告するために、ハンドル又は座席の振動など、視覚的、聴覚的、及び/又は触覚的な警告を提供する。少なくとも一実施例では、ドライバが方向指示器を作動させることによって意図的な車線逸脱を示す場合には、LDWシステムは作動しない。少なくとも一実施例では、LDWシステムは、正面カメラを使用してもよく、これは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合することができる専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、LKAシステムは、LDWシステムの変形形態である。LKAシステムは、車両1400が車線からはみ出し始めた場合に、車両1400を修正するように操縦入力又はブレーキ制御を提供する。
少なくとも一実施例では、BSWシステムは、自動車の死角にある車両を検出し、ドライバに警告する。少なくとも一実施例では、BSWシステムは、視覚的、聴覚的、及び/又は触覚的なアラートを提供して、合流又は車線変更が安全ではないことを示してもよい。少なくとも一実施例では、BSWシステムは、ドライバが方向指示器を使用したときに追加の警告を提供してもよい。少なくとも一実施例では、BSWシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された背面カメラ及び/又はRADARセンサ1460を使用してもよく、これらの専用のプロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている。
少なくとも一実施例では、RCTWシステムは、車両1400の後退時に、後方カメラの範囲外に物体が検出されたときに、視覚的、聴覚的、及び/又は触覚的な通知を提供してもよい。少なくとも一実施例では、RCTWシステムは、衝突を回避するために確実に車両ブレーキがかけられるように、AEBシステムを含む。少なくとも一実施例では、RCTWシステムは、1つ又は複数の背面RADARセンサ1460を使用してもよく、これはディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合された専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。
少なくとも一実施例では、従来のADASシステムは、誤検出結果を出しがちなことがあり、これはドライバにとっては迷惑で気が散るものであり得るが、通常は大したことにはならない。なぜなら、従来のADASシステムは、ドライバに忠告し、安全を要する状態が本当に存在し、それに適宜対応するかどうかを、ドライバが判断できるようにするからである。少なくとも一実施例では、結果が矛盾する場合、一次コンピュータ(たとえば第1のコントローラ1436)からの結果に従うか、又は二次コンピュータ(たとえば、第2のコントローラ1436)からの結果に従うかどうかを、車両1400自体が判断する。たとえば、少なくとも一実施例では、ADASシステム1438は、バックアップ・コンピュータの合理性モジュールに知覚情報を抵抗するための、バックアップ及び/又は二次コンピュータであってもよい。少なくとも一実施例では、バックアップ・コンピュータの合理性モニタが、ハードウェア構成要素上の冗長性の多様なソフトウェアを実行して、知覚の誤り及び動的な運転タスクを検出してもよい。少なくとも一実施例では、ADASシステム1438からの出力は、監視MCUに提供されてもよい。少なくとも一実施例では、一次コンピュータからの出力と二次コンピュータからの出力が矛盾する場合には、監視MCUが、安全な動作を確保するために矛盾をどのように調和させるかを判定する。
少なくとも一実施例では、一次コンピュータは、一次コンピュータの選択した結果の信頼性を示す信頼性スコアを、監視MCUに提供するように構成されてもよい。少なくとも一実施例では、信頼性スコアが閾値を超える場合には、二次コンピュータが矛盾する又は一貫性のない結果を提供しているかどうかに関わらず、監視MCUは一次コンピュータの指示に従ってもよい。少なくとも一実施例では、信頼性スコアが閾値を満足せず、一次コンピュータと二次コンピュータが異なる結果(たとえば、矛盾)を示す場合には、監視MCUは、コンピュータ同士を調停して、適切な結果を判定してもよい。
少なくとも一実施例では、二次コンピュータが誤アラームを提供する条件を、一次コンピュータと二次コンピュータからの出力に少なくとも部分的に基づき判定するように訓練及び構成されたニューラル・ネットワークを、監視MCUが実行するように構成されてもよい。少なくとも一実施例では、監視MCUのニューラル・ネットワークは、二次コンピュータの出力が信用されてもよいときと、信用できないときとを学習してもよい。たとえば、少なくとも一実施例では、二次コンピュータがRADARベースのFCWシステムである場合、監視MCUのニューラル・ネットワークは、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険物ではない金属物体をFCWシステムが識別するときを学習してもよい。少なくとも一実施例では、二次コンピュータがカメラ・ベースのLDWシステムである場合、自転車や歩行者が存在し、車線逸脱が実際には最も安全な操作であるときに、監視MCUのニューラル・ネットワークはLDWを無効にするように学習してもよい。少なくとも一実施例では、監視MCUは、ニューラル・ネットワークを関連するメモリとともに実行するのに好適なDLA又はGPUのうちの少なくとも1つを含んでもよい。少なくとも一実施例では、監視MCUは、SoC1404の構成要素を備えても、且つ/又はその構成要素として含まれてもよい。
少なくとも一実施例では、ADASシステム1438は、コンピュータ・ビジョンの従来のルールを使用してADAS機能を実行する二次コンピュータを含んでもよい。少なくとも一実施例では、二次コンピュータは、従来のコンピュータ・ビジョン・ルール(if-thenルール)を使用してもよく、ニューラル・ネットワークが監視MCUに存在することによって、信頼性、安全性、及び性能が向上してもよい。たとえば、少なくとも一実施例では、多様な実装及び意図的な非同一性により、特にソフトウェア(又はソフトウェアとハードウェアのインターフェース)の機能によって生じる誤りに対し、システム全体の誤り耐性が高まる。たとえば、少なくとも一実施例では、一次コンピュータ上で実行中のソフトウェアにバグ又はエラーがあり、二次コンピュータ上で実行中の非同一のソフトウェア・コードが、全体的に同じ結果を提供する場合には、監視MCUは、全体的な結果が正しく、一次コンピュータ上のソフトウェア又はハードウェアのバグが重大なエラーを引き起こしていないという、より高い信頼性を有してもよい。
少なくとも一実施例では、ADASシステム1438の出力は、一次コンピュータの知覚ブロック、及び/又は一次コンピュータの動的運転タスクブロックに供給されてもよい。たとえば、少なくとも一実施例では、ADASシステム1438が、直前の物体に起因して正面衝突警告を示している場合には、知覚ブロックは、物体を識別するときにこの情報を使用してもよい。少なくとも一実施例では、二次コンピュータは、本明細書に記載するように、訓練済みの、したがって誤検出のリスクを低減する独自のニューラル・ネットワークを有してもよい。
少なくとも一実施例では、車両1400はさらに、インフォテイメントSoC1430(たとえば、車両内インフォテイメント・システム(IVI):in-vehicle infotainment system)を含んでもよい。インフォテイメント・システム1430はSoCとして図示及び説明されるが、少なくとも一実施例では、SoCではなくてもよく、限定することなく2つ以上の個別の構成要素を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1430は、限定することなく、ハードウェアとソフトウェアの組合せを含んでもよく、この組合せを使用して、オーディオ(たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、車両関連情報、たとえば燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報など)を車両1400に提供してもよい。たとえば、インフォテイメントSoC1430は、ラジオ、ディスク再生装置、ナビゲーション・システム、ビデオ再生装置、USB及びBluetooth接続、カーピュータ、車内エンタテイメント、Wi-Fi、ハンドル・オーディオ制御、ハンズフリー音声制御、ヘッド・アップ・ディスプレイ(「HUD」:heads-up display)、HMIディスプレイ1434、テレマテックス・デバイス、(たとえば、様々な構成要素、特徴、及び/若しくシステムを制御及び/若しくは相互作用するための)制御パネル、並びに/又は他の構成要素を含むことができる。少なくとも一実施例では、さらにインフォテイメントSoC1430を使用して、ADASシステム1438からの情報、車両操作計画、軌道などの自律運転情報、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(たとえば、視覚的及び/又は聴覚的な)情報が、車両のユーザに提供されてもよい。
少なくとも一実施例では、インフォテイメントSoC1430は、任意の量及びタイプのGPU機能を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1430は、バス1402(たとえば、CANバス、イーサネット(登録商標)など)を介して、車両1400の他のデバイス、システム、及び/又は構成要素と通信してもよい。少なくとも一実施例では、インフォテイメントSoC1430は監視MCUに結合されてもよく、それにより、一次コントローラ1436(たとえば、車両1400の一次及び/又はバックアップのコンピュータ)が故障したときに、インフォテイメント・システムのGPUが、一部の自己運転機能を実行してもよい。少なくとも一実施例では、インフォテイメントSoC1430は、本明細書に記載するように、車両1400を運転手-安全停止モードにしてもよい。
少なくとも一実施例では、車両1400はさらに、計器クラスタ1432(たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど)を含んでもよい。計器クラスタ1432は、限定することなく、コントローラ、及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含んでもよい。少なくとも一実施例では、計器クラスタ1432は、限定することなく、スピード・メータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、シフトレバー位置インジケータ、シート・ベルト警告灯、バーキング・ブレーキ警告灯、エンジン故障灯、補助拘束システム(たとえば、エアバッグ)情報、ライト制御、安全システム制御、ナビゲーション情報など、任意の数及び組合せの計器セットを含んでもよい。いくつかの実例では、インフォテイメントSoC1430と計器クラスタ1432との間で、情報が表示及び/又は共有されてもよい。少なくとも一実施例では、計器クラスタ1432は、インフォテイメントSoC1430の一部として含まれてもよく、又はその逆であってもよい。
図14Dは、少なくとも一実施例による、クラウド・ベースのサーバと図14Aの自律車両1400との間で通信するためのシステム1476の図である。少なくとも一実施例では、システム1476は、限定することなく、サーバ1478、ネットワーク1490、並びに車両1400を含む任意の数及びタイプの車両を含んでもよい。サーバ1478は、限定することなく、複数のGPU1484(A)~1484(H)(本明細書ではまとめてGPU1484と呼ぶ)、PCIeスイッチ1482(A)~1482(H)(本明細書ではまとめてPCIeスイッチ1482と呼ぶ)、及び/又はCPU1480(A)~1480(B)(本明細書ではまとめてCPU1480と呼ぶ)を含んでもよい。GPU1484、CPU1480、及びPCIeスイッチ1482は、たとえば限定することなく、NVIDIAにより開発されたNVLinkインターフェース1488、及び/又はPCIe接続1486などの高速相互接続によって、相互接続されてもよい。少なくとも一実施例では、GPU1484同士は、NVLink及び/又はNVSwitch SoCを介して接続され、GPU1484とPCIeスイッチ1482は、PCIe相互接続を介して接続される。少なくとも一実施例では、8個のGPU1484、2個のCPU1480、及び4個のPCIeスイッチ1482が図示してあるが、これは限定するものではない。少なくとも一実施例では、サーバ1478のそれぞれは、限定することなく、任意の数のGPU1484、CPU1480、及び/又はPCIeスイッチ1482を任意の組合せで含んでもよい。たとえば、少なくとも一実施例では、サーバ1478は、それぞれが8個、16個、32個、及び/又はそれ以上のGPU1484を含むことができる。
少なくとも一実施例では、サーバ1478は、最近始まった道路工事などの予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1490を介して車両から受信してもよい。少なくとも一実施例では、サーバ1478は、ニューラル・ネットワーク1492、更新済みニューラル・ネットワーク1492、及び/又は、限定することなく交通状態及び道路状態に関する情報を含む地図情報1494を、ネットワーク1490を介して車両に送信してもよい。少なくとも一実施例では、地図情報1494の更新は、建築現場、穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1422に対する更新を、限定することなく含んでもよい。少なくとも一実施例では、ニューラル・ネットワーク1492、更新済みニューラル・ネットワーク1492、及び/又は地図情報1494は、環境内の任意の数の車両から受信したデータに表された新しい訓練及び/又は経験から得られたものであってもよく、且つ/又は、データ・センタにおいて(たとえば、サーバ1478及び/又は他のサーバを使用して)実行された訓練に少なくとも部分的に基づき、得られたものであってもよい。
少なくとも一実施例では、サーバ1478を使用して、訓練データに少なくとも部分的に基づき、機械学習モデル(たとえば、ニューラル・ネットワーク)が訓練されてもよい。少なくとも一実施例では、訓練データは車両によって生成されてもよく、且つ/又はシミュレーションで(たとえば、ゲーム・エンジンを使用して)生成されてもよい。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習により恩恵を受ける場合には)任意の量の訓練データがタグ付けされ、且つ/又は他の前処理を受ける。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合には)任意の量の訓練データはタグ付け及び/又は前処理されない。少なくとも一実施例では、機械学習モデルが訓練されると、機械学習モデルは車両によって使用されてもよく(たとえば、ネットワーク1490を介して車両に送信されてもよく、且つ/又は機械学習モデルは、車両を遠隔監視するためにサーバ1478によって使用されてもよい。
少なくとも一実施例では、サーバ1478は車両からデータを受信し、リアル・タイムの知的推論ができるように、最新のリアル・タイムのニューラル・ネットワークにデータを適用してもよい。少なくとも一実施例では、サーバ1478は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1484によって動く深層学習スーパーコンピュータ及び/又は専用AIコンピュータを含んでもよい。しかし、少なくとも一実施例では、サーバ1478は、CPUにより動くデータ・センタを使用する深層学習インフラストラクチャを含んでもよい。
少なくとも一実施例では、サーバ1478の深層学習インフラストラクチャは、高速のリアル・タイムの推論が可能であってもよく、その機能を使用して、車両1400のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの健全性を評価及び確認してもよい。たとえば、少なくとも一実施例では、深層学習インフラストラクチャは、一連の画像、及び/又はその一連の画像において(たとえば、コンピュータ・ビジョン及び/又は他の機械学習の物体分類技法により)車両1400が位置特定した物体など、周期的な更新を車両1400から受信してもよい。少なくとも一実施例では、深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それを車両1400によって識別された物体と比較してもよく、結果が一致せず、車両1400のAIが故障していると深層学習インフラストラクチャが結論づけた場合には、サーバ1478は、車両1400のフェイル・セーフ・コンピュータに制御を掌握し、乗員に通知し、安全な停車操作を完了するよう命じる信号を車両1400に送信してもよい。
少なくとも一実施例では、サーバ1478は、GPU1484、及び1つ又は複数のプログラム可能な推論アクセラレータ(たとえば、NVIDIAのTensorRT3)を含んでもよい。少なくとも一実施例では、GPUにより動くサーバと、推論の加速とを組み合わせることによって、リアル・タイムの応答を可能にすることができる。性能がそれほど重要ではない場合など、少なくとも一実施例では、CPU、FPGA、及び他のプロセッサにより動くサーバが、推論に使用されてもよい。少なくとも一実施例では、1つ又は複数の実施例を実行するために、ハードウェア構造体1315が使用される。ハードウェア構造体1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。
コンピュータ・システム
図15は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せ1500を有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム1500は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ1502などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム1500は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム1500は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux)、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの実例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
少なくとも一実施例では、コンピュータ・システム1500は、限定することなくプロセッサ1502を含んでもよく、このプロセッサ1502は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット1508を含んでもよい。少なくとも一実施例では、システム15は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、システム15はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ1502は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ1502は、プロセッサ・バス1510に結合されてもよく、このプロセッサ・バスは、プロセッサ1502とコンピュータ・システム1500内の他の構成要素との間でデジタル信号を送信してもよい。
少なくとも一実施例では、プロセッサ1502は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1504を含んでもよい。少なくとも一実施例では、プロセッサ1502は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ1502の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル1506は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット1508も、プロセッサ1502にある。少なくとも一実施例では、プロセッサ1502は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット1508は、パック命令セット1509に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット1509を、命令を実行する関連回路とともに汎用プロセッサ1502の命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ1502のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
少なくとも一実施例では、実行ユニット1508はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム1500は、限定することなくメモリ1520を含んでもよい。少なくとも一実施例では、メモリ1520は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装されてもよい。少なくとも一実施例では、メモリ1520は、プロセッサ1502によって実行されてもよいデータ信号によって表される命令1519、及び/又はデータ1521を記憶してもよい。
少なくとも一実施例では、システム論理チップが、プロセッサ・バス1510及びメモリ1520に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)1516を含んでもよく、プロセッサ1502は、プロセッサ・バス1510を介してMCH1516と通信してもよい。少なくとも一実施例では、MCH1516は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路1518をメモリ1520に提供してもよい。少なくとも一実施例では、MCH1516は、プロセッサ1502と、メモリ1520と、コンピュータ・システム1500の他の構成要素との間でデータ信号を導き、プロセッサ・バス1510と、メモリ1520と、システムI/O1522との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH1516は、高帯域幅メモリ経路1518を介してメモリ1520に結合されてもよく、グラフィックス/ビデオカード1512は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続1514を介してMCH1516に結合されてもよい。
少なくとも一実施例では、コンピュータ・システム1500は、MCH1516をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)1530に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O1522を使用してもよい。少なくとも一実施例では、ICH1530は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ1520、チップセット、及びプロセッサ1502に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ1529、ファームウェア・ハブ(「フラッシュBIOS」)1528、ワイヤレス・トランシーバ1526、データ・ストレージ1524、ユーザ入力及びキーボードのインターフェースを含むレガシーI/Oコントローラ1523、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート1527、及びネットワーク・コントローラ1534が、限定することなく含まれてもよい。少なくとも一実施例では、データ・ストレージ1524は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
少なくとも一実施例では、図15は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図15は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図ccで示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム1500の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
図16は、少なくとも一実施例による、プロセッサ1610を利用するための電子デバイス1600を示すブロック図である。少なくとも一実施例では、電子デバイス1600は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
少なくとも一実施例では、システム1600は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ1610を、限定することなく含んでもよい。少なくとも一実施例では、I°Cバス、システム・マネージメント・バス(「SMBus」:System Management Bus)、ロー・ピン・カウント(LPC:Low Pin Count)バス、シリアル・ペリフェラル・インターフェース(「SPI」:Serial Peripheral Interface)、ハイ・デフィニション・オーディオ(「HDA」:High Definition Audio)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」:Serial Advance Technology Attachment)バス、ユニバーサル・シリアル・バス(「USB」)(バージョン1、2、3)、又はユニバーサル非同期レシーバ/トランスミッタ(「UART」:Universal Asynchronous Receiver/Transmitter)バスなどのバス若しくはインターフェースを使用して結合されるプロセッサ1610。少なくとも一実施例では、図16は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図16は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図16に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図16の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
少なくとも一実施例では、図16は、ディスプレイ1624、タッチ画面1625、タッチ・パッド1630、近距離無線通信ユニット(「NFC」:Near Field Communications unit)1645、センサ・ハブ1640、熱センサ1646、エクスプレス・チップセット(「EC」:Express Chipset)1635、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1638、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1622、DSP1660、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ(「SSD又はHDD」)1620、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)1650、Bluetoothユニット1652、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)1656、全地球測位システム(GPS:Global Positioning System)1655、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1654、又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1615を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ1610に通信可能に結合されてもよい。少なくとも一実施例では、加速度計1641、周囲光センサ(「ALS」:Ambient Light Sensor)1642、コンパス1643、及びジャイロスコープ1644が、センサ・ハブ1640に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ1639、ファン1637、キーボード1646、及びタッチ・パッド1630が、EC1635に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ1663、ヘッドフォン1664、及びマイクロフォン(「mic」)1665が、オーディオ・ユニット(オーディオ・コーデック及びクラスdアンプ)1664に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP1660に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット1664は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)1657は、WWANユニット1656に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット1650及びBluetoothユニット1652などの構成要素、並びにWWAN1656は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実装されてもよい。
図17は、少なくとも一実施例による、コンピュータ・システム1700を示す。少なくとも一実施例では、コンピュータ・システム1700は、本開示全体を通して説明する様々なプロセス及び方法を実装するように構成される。
少なくとも一実施例では、コンピュータ・システム1700は、限定することなく、少なくとも1つの中央処理装置(「CPU」)1702を含み、この処理装置は、PCI:Peripheral Component Interconnect(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI-Express」:peripheral component interconnect express)、AGP:Accelerated Graphics Port(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイント・ツー・ポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス1710に接続される。少なくとも一実施例では、コンピュータ・システム1700は、メイン・メモリ1704、及び(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実装される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形をとってもよいメイン・メモリ1704に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)1722は、他のシステムからデータを受信し、コンピュータ・システム1700から他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
少なくとも一実施例では、コンピュータ・システム1700は、少なくとも一実施例では、限定することなく、入力デバイス1708、パラレル処理システム1712、及びディスプレイ・デバイス1706を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス1708から受け取る。少なくとも一実施例では、上記モジュールのそれぞれを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
図18は、少なくとも一実施例によるコンピュータ・システム1800を示す。少なくとも一実施例では、コンピュータ・システム1800は、限定することなく、コンピュータ1810及びUSBスティック1820を含んでもよい。少なくとも一実施例では、コンピュータ・システム1810は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリを含んでもよい。少なくとも一実施例では、コンピュータ1810は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
少なくとも一実施例では、USBスティック1820は、限定することなく、処理ユニット1830、USBインターフェース1840、及びUSBインターフェース論理1850を含む。少なくとも一実施例では、処理ユニット1830は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット1830は、限定することなく、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理コア1830は、機械学習に関連する任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理コア1830は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも一実施例では、処理コア1830は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット(「VPU」)である。
少なくとも一実施例では、USBインターフェース1840は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース1840は、データ及び電源用のUSB3.0 Type-Cのソケットである。少なくとも一実施例では、USBインターフェース1840は、USB3.0 Type-Aのコネクタである。少なくとも一実施例では、USBインターフェース論理1850は、処理ユニット1830がUSBコネクタ1840を介してデバイス(たとえばコンピュータ1810)と又はインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
図19Aは、複数のGPU1910~1913が、高速リンク1940~1943(たとえば、バス、ポイント・ツー・ポイント相互接続など)を介して複数のマルチ・コア・プロセッサ1905~1906に通信可能に結合されている例示的なアーキテクチャを示す。一実施例では、高速リンク1940~1943は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。
さらに、一実施例では、GPU1910~1913のうちの2つ以上は高速リンク1929~1930を介して相互接続され、これらは、高速リンク1940~1943に使用されたものと同じ又は異なるプロトコル/リンクを使用して実装されてもよい。同様に、マルチ・コア・プロセッサ1905~1906のうちの2つ以上は、高速リンク1928を介して接続されてもよく、この高速リンク1928は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる。或いは、図19Aに示す様々なシステム構成要素間のすべての通信は、同じプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
一実施例では、各マルチ・コア・プロセッサ1905~1906は、それぞれメモリ相互接続1926~1927を介してプロセッサ・メモリ1901~1902に通信可能に結合され、各GPU1910~1913は、それぞれGPUメモリ・相互接続1950~1953を介してGPUメモリ1920~1923に通信可能に結合される。メモリ相互接続1926~1927及び1950~1953は、同じ又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ1901~1902及びGPUメモリ1920~1923は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。一実施例では、(たとえば、2レベルのメモリ(2LM)階層を使用して)、プロセッサ・メモリ1901~1902のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
本明細書に記載するように、様々なプロセッサ1905~1906及びGPU1910~1913は、それぞれ特定のメモリ1901~1902、1920~1923に物理的に結合されてもよいが、同じ仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが実装されてもよい。たとえば、プロセッサ・メモリ1901~1902はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ1920~1923はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよい(この実例では結果的に、合計256GBのアドレス指定可能メモリが得られる)。
図19Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ1907とグラフィックス加速モジュール1946との相互接続のさらなる詳細事項を示す。グラフィックス加速モジュール1946は、高速リンク1940を介してプロセッサ1907に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。或いは、グラフィックス加速モジュール1946は、プロセッサ1907と同じパッケージ又はチップに集積されてもよい。
少なくとも一実施例では、図示しているプロセッサ1907は、複数のコア1960A~1960Dを含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ1961A~1961Dと、1つ又は複数のキャッシュ1962A~1962Dとを有する。少なくとも一実施例では、コア1960A~1960Dは、命令を実行しデータを処理するための、図示していない様々な他の構成要素を含んでもよい。キャッシュ1962A~1962Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ1956が、キャッシュ1962A~1962Dに含まれ、コア1960A~1960Dのセットによって共有されてもよい。たとえば、プロセッサ1907の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。プロセッサ1907及びグラフィックス加速モジュール1946は、システム・メモリ1914に接続されており、このシステム・メモリは、図19Aのプロセッサ・メモリ1901~1902を含んでもよい。
様々なキャッシュ1962A~1962D、1956、及びシステム・メモリ1914に記憶されたデータ及び命令については、コヒーレンス・バス1964を介したコア間通信によって、コヒーレンスが維持される。たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス1964を介して通信するために、それに関連するキャッシュ・コヒーレンス論理/回路を有してもよい。一実装形態では、キャッシュ・アクセスを監視するために、コヒーレンス・バス1964を介してキャッシュ・スヌーピング・プロトコルが実装される。
一実施例では、プロキシ回路1925が、グラフィックス加速モジュール1946をコヒーレンス・バス1964に通信可能に結合して、グラフィックス加速モジュール1946がコア1960A~1960Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加できるようにする。特に、インターフェース1935は、高速リンク1940(たとえば、PCIeバス、NVLinkなど)を介してプロキシ回路1925への接続を提供し、インターフェース1937は、グラフィックス加速モジュール1946をリンク1940に接続する。
一実装形態では、アクセラレータ統合回路1936は、グラフィックス加速モジュール1946の複数のグラフィックス処理エンジン1931、1932、Nの代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理のサービスを提供する。グラフィックス処理エンジン1931、1932、Nはそれぞれ、別個のグラフィックス・プロセッシング・ユニット(GPU)を備えてもよい。或いは、グラフィックス処理エンジン1931、1932、Nは、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリットエンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール1946は、複数のグラフィックス処理エンジン1931~1932、Nを有するGPUであってもよく、又はグラフィックス処理エンジン1931~1932、Nは、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
一実施例では、アクセラレータ統合回路1936は、仮想から物理のメモリ・トランスレーション(実効から実(effective-to-real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)1939、及びシステム・メモリ1914にアクセスするためのメモリ・アクセス・プロトコルを含む。MMU1939は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含むことができる。一実装形態では、キャッシュ1938は、グラフィックス処理エンジン1931~1932、Nから効率的にアクセスできるように、コマンド及びデータを記憶する。一実施例では、キャッシュ1938及びグラフィックス・メモリ1933~1934、Mに記憶されたデータは、コア・キャッシュ1962A~1962D、1956、及びシステム・メモリ1914とコヒーレントに保たれる。上に述べたように、これは、キャッシュ1938及びメモリ1933~1934、Mの代わりにプロキシ回路1925を介して(たとえば、プロセッサ・キャッシュ1962A~1962D、1956におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ1938に送り、キャッシュ1938からのアップデートを受け取って)実現されてもよい。
レジスタ1945のセットが、グラフィックス処理エンジン1931~1932、Nによって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路1948が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路1948は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路1948は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリの指定領域に記憶してもよい。次いで、コンテキストに戻るときに、コンテキスト管理回路1948がレジスタ値を復元してもよい。一実施例では、割込み管理回路1947は、システム・デバイスから受け取った割込みを受け取り、処理する。
一実装形態では、グラフィックス処理エンジン1931からの仮想/実効アドレスは、MMU1939によってシステム・メモリ1914の実/物理アドレスにトランスレートされる。アクセラレータ統合回路1936の一実施例は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール1946、及び/又は他のアクセラレータ・デバイスをサポートする。グラフィックス・アクセラレータ・モジュール1946は、プロセッサ1907上で実行される単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。一実施例では、グラフィックス処理エンジン1931~1932、Nのリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに割り振られる。
少なくとも一実施例では、アクセラレータ統合回路1936は、グラフィックス加速モジュール1946のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、アクセラレータ統合回路1936は、グラフィックス処理エンジン1931~1932の仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
グラフィックス処理エンジン1931~1932、Nのハードウェア・リソースは、ホスト・プロセッサ1907が見る実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。一実施例では、アクセラレータ統合回路1936の1つの機能は、グラフィックス処理エンジン1931~1932、Nを、システムにとって独立したユニットに見えるように物理的に分離することである。
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ1933~1934、Mはそれぞれ、グラフィックス処理エンジン1931~1932、Nのそれぞれに結合される。グラフィックス・メモリ1933~1934、Mは、それぞれのグラフィックス処理エンジン1931~1932、Nによって処理される命令及びデータを記憶する。グラフィックス・メモリ1933~1934、Mは、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。
一実施例では、リンク1940を介したデータ・トラフィックを低減するために、グラフィックス・メモリ1933~1934、Mに記憶されるデータが、グラフィックス処理エンジン1931~1932、Nによって最も頻繁に使用されることになるデータであるようにし、好ましくはコア1960A~1960Dによっては使用されない(少なくとも頻繁には使用されない)データであるようにするためのバイアス技法が使用される。同様に、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン1931~1932、Nは必要としない)データを、コアのキャッシュ1962A~1962D、1956、及びシステム・メモリ1914の中に保つよう試みる。
図19Cは、アクセラレータ統合回路1936がプロセッサ1907内に一体化されている別の例示的な実施例を示す。少なくともこの実施例では、グラフィックス処理エンジン1931~1932、Nは、インターフェース1937及びインターフェース1935により、高速リンク1940を介して直接アクセラレータ統合回路1936と通信する(この場合も任意の形のバス又はインターフェース・プロトコルを利用することができる)。アクセラレータ統合回路1936は、図19Bに関して説明したのと同じ動作を実行してもよいが、コヒーレンス・バス1964及びキャッシュ1962A~1962D、1956に近接していることを考えると、潜在的には、より高いスループットで動作してもよい。少なくとも一実施例は、(グラフィックス加速モジュールの仮想化のない)専用のプロセス・プログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路1936によって制御されるプログラミング・モデルと、グラフィックス加速モジュール1946によって制御されるプログラミング・モデルとを含んでもよい。
少なくとも一実施例では、グラフィックス処理エンジン1931~1932、Nは、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン1931~1932、Nに集中させて、VM/パーティション内で仮想化を実現することができる。
少なくとも一実施例では、グラフィックス処理エンジン1931~1932、Nは、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルはシステム・ハイパーバイザを使用して、グラフィックス処理エンジン1931~1932、Nを仮想化して、各オペレーティング・システムによるアクセスを可能にしてもよい。ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン1931~1932、Nは、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン1931~1932、Nを仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
少なくとも一実施例では、グラフィックス加速モジュール1946又は個々のグラフィックス処理エンジン1931~1932、Nは、プロセス・ハンドルを使用して、プロセス要素を選択する。少なくとも一実施例では、プロセス要素は、システム・メモリ1914に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス指定可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン1931~1932、Nに登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実装固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
図19Dは、例示的なアクセラレータ統合スライス1990を示す。本明細書で使用するとき、「スライス」は、アクセラレータ統合回路1936の処理リソースの指定部分を備える。システム・メモリ1914内のアプリケーション実効アドレス空間1982は、プロセス要素1983を記憶する。一実施例では、プロセス要素1983は、プロセッサ1907上で実行されているアプリケーション1980からのGPU呼出し1981に応答して、記憶される。プロセス要素1983は、対応するアプリケーション1980のプロセス状態を収容する。プロセス要素1983に収容されたワーク記述子(WD)1984は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを収容してもよい。少なくとも一実施例では、WD1984は、アプリケーションのアドレス空間1982におけるジョブ要求キューに対するポインタである。
グラフィックス加速モジュール1946及び/又は個々のグラフィックス処理エンジン1931~1932、Nは、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD1984をグラフィックス加速モジュール1946に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実装固有である。このモデルでは、単一のプロセスが、グラフィックス加速モジュール1946又は個々のグラフィックス処理エンジン1931を所有する。グラフィックス加速モジュール1946が単一のプロセスによって所有されることから、グラフィックス加速モジュール1946が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路1936を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路1936を初期化する。
動作時、アクセラレータ統合スライス1990内のWDフェッチ・ユニット1991は、グラフィックス加速モジュール1946の1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD1984をフェッチする。図示してあるように、WD1984からのデータは、レジスタ1945に記憶され、MMU1939、割込み管理回路1947、及び/又はコンテキスト管理回路1948によって使用されてもよい。たとえば、MMU1939の一実施例は、OS仮想アドレス空間1985内のセグメント/ページ・テーブル1986にアクセスするためのセグメント/ページ・ウォーク回路を含む。割込み管理回路1947は、グラフィックス加速モジュール1946から受け取った割込みイベント1992を処理してもよい。グラフィックス動作を実行するとき、グラフィックス処理エンジン1931~1932、Nによって生成された実効アドレス1993は、MMU1939によって実アドレスにトランスレートされる。
一実施例では、レジスタ1945の同じセットが、各グラフィックス処理エンジン1931~1932、N、及び/又はグラフィックス加速モジュール1946について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス1990に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
Figure 2023004898000002
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
Figure 2023004898000003
一実施例では、各WD1984は、特定のグラフィックス加速モジュール1946及び/又はグラフィックス処理エンジン1931~1932、Nに固有のものである。WD1984は、グラフィックス処理エンジン1931~1932、Nがワークを行うために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションを指すポインタとすることができる。
図19Eは、共有モデルの例示的な一実施例のさらなる詳細事項を示す。この実施例は、プロセス要素リスト1999が記憶されているハイパーバイザ実アドレス空間1998を含む。ハイパーバイザ実アドレス空間1998は、オペレーティング・システム1995のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ1996を介してアクセス可能である。
少なくとも一実施例では、共有プログラミング・モデルは、システム内のすべて又はサブセットのパーティションからのすべて又はサブセットのプロセスが、グラフィックス加速モジュール1946を使用できるようにする。グラフィックス加速モジュール1946が複数のプロセス及びパーティションによって共有されるプログラミング・モデルが、2つ存在する:時間スライス共有及びグラフィックス指定共有(graphics-directed shared)である。
このモデルでは、システム・ハイパーバイザ1996がグラフィックス加速モジュール1946を所有しており、その機能をすべてのオペレーティング・システム1995にとって利用可能にする。システム・ハイパーバイザ1996による仮想化をグラフィックス加速モジュール1946がサポートするために、グラフィックス加速モジュール1946は、以下のことに準拠してもよい:1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はなく)、又はグラフィックス加速モジュール1946が、コンテキストの保存及び復元の機構を提供しなくてはならない。2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール1946によって保証され、又はグラフィックス加速モジュール1946が、ジョブの処理をプリエンプションする機能を提供する。3)グラフィックス加速モジュール1946は、指定の共有プログラミング・モデルで動作しているとき、プロセス間で公平性が保証されなくてはならない。
少なくとも一実施例では、アプリケーション1980は、グラフィックス加速モジュール1946のタイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP)を伴って、オペレーティング・システム1995のシステム・コールを行う必要がある。少なくとも一実施例では、グラフィックス加速モジュール1946のタイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュール1946のタイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール1946のために特にフォーマット化されており、グラフィックス加速モジュール1946のコマンド、ユーザ定義の構造を指す実効アドレス・ポインタ、コマンドのキューを指す実効アドレス・ポインタ、又はグラフィックス加速モジュール1946によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。一実施例では、AMR値は、現在のプロセスに使用するためのAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。アクセラレータ統合回路1936及びグラフィックス加速モジュール1946の実装形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。ハイパーバイザ1996は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素1983に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール1946がコンテキスト状態を保存及び復元するためのアプリケーションのアドレス空間1982内のエリアの実効アドレスを収容するレジスタ1945のうちの1つである。ジョブ間で、又はジョブがプリエンプションされるときに、いかなる状態も保存する必要のない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
システム・コールを受け取ると、オペレーティング・システム1995は、アプリケーション1980が登録済みであり、グラフィックス加速モジュール1946を使用する権限が与えられていることを検証してもよい。次いで、オペレーティング・システム1995は、表3に示す情報を伴ってハイパーバイザ1996にコールする。
Figure 2023004898000004
ハイパーバイザ・コールを受け取ると、ハイパーバイザ1996は、オペレーティング・システム1995が登録済みであり、グラフィックス加速モジュール1946を使用する権限が与えられていることを検証する。次いでハイパーバイザ1996は、プロセス要素1983を、対応するグラフィックス加速モジュール1946のタイプのプロセス要素リンク・リストに入れる。プロセス要素は、表4に示す情報を含んでもよい。
Figure 2023004898000005
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス1990のレジスタ1945を初期化する。
図19Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ1901~1902及びGPUメモリ1920~1923にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能である統合メモリが使用される。この実装形態では、GPU1910~1913で実行される動作は、プロセッサ・メモリ1901~1902にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラマビリティが簡単になる。一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ1901に割り振られ、第2の部分は第2のプロセッサ・メモリ1902に割り振られ、第3の部分はGPUメモリ1920に割り振られるというように続く。少なくとも一実施例では、仮想/実効メモリ空間全体(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ1901~1902及びGPUメモリ1920~1923のそれぞれにわたって分配されて、仮想アドレスが物理メモリにマッピングされた状態で、いずれかのプロセッサ又はGPUが、いずれかの物理メモリにアクセスできるようになる。
一実施例では、MMU1939A~1939Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路1994A~1994Eは、1つ又は複数のホスト・プロセッサ(たとえば、1905)のキャッシュとGPU1910~1913のキャッシュとの間でキャッシュ・コヒーレンスを確保し、バイアス技法を実装して、ある特定のタイプのデータが記憶されるべき物理メモリを示す。バイアス/コヒーレンス管理回路1994A~1994Eの複数のインスタンスが図19Fに示されるが、バイアス/コヒーレンス回路は、1つ又は複数のホスト・プロセッサ1905のMMU内に実装されてもよく、且つ/又はアクセラレータ統合回路1936内に実装されてもよい。
一実施例は、GPU付きメモリ1920~1923をシステム・メモリの一部としてマッピングできるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連する性能の低下が生じることはない。少なくとも一実施例では、GPU付きメモリ1920~1923が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ1905ソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、単純なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPU付きメモリ1920~1923にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU1910~1913が見る有効な書込み帯域幅を大幅に低減することある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決められる。たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(すなわち、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU1910~1913にある状態又はない状態で、1つ又は複数のGPU付きメモリ1920~1923の奪われたメモリ範囲(stolen memory range)において実装されてもよい。或いは、バイアス・テーブル全体が、GPU内に維持されてもよい。
少なくとも一実施例では、GPU付きメモリ1920~1923への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。第1に、GPUバイアス内での自らのページを見いだすGPU1910~1913からのローカル要求が、対応するGPUメモリ1920~1923に直接転送される。ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ1905に転送される。一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ1905からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU1910~1913に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUを導く。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ1905のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ1905によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。これらのページにアクセスするために、プロセッサ1905は、GPU1910からのアクセスを要求してもよく、GPU1910は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。したがって、プロセッサ1905とGPU1910との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ1905によっては要求されないようにすること、又はその逆にすることが有益である。
1つ又は複数の実施例を実行するために、ハードウェア構造体1315が使用される。ハードウェア構造体(x)1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。
図20は、本明細書に記載の様々な実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図20は、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができる例示的なシステム・オン・チップ集積回路2000を示すブロック図である。少なくとも一実施例では、集積回路2000は、1つ又は複数のアプリケーション・プロセッサ2005(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ2010を含み、さらに、画像プロセッサ2015及び/又はビデオ・プロセッサ2020を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路2000は、USBコントローラ2025、UARTコントローラ2030、SPI/SDIOコントローラ2035、及びI.sup.2S/I.sup.2Cコントローラ2040を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路2000は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI:high-definition multimedia interface(登録商標))コントローラ2050及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース2055のうちの1つ又は複数に結合されるディスプレイ・デバイス2045を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム2060によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ2065を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン2070を含む。少なくとも一実施例では、いくつかの集積回路は更に、物理層(PHY)ライブラリ116の組み込み実装を含む。
図21A~図21Bは、本明細書に記載の様々実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図21A~図21Bは、本明細書に記載の実施例によるSoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図21Aは、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ2110を示す。図21Bは、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ2140を示す。少なくとも一実施例では、図21Aのグラフィックス・プロセッサ2110は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図21Bのグラフィックス・プロセッサ2140は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ2110、2140のそれぞれは、図20のグラフィックス・プロセッサ2010の変形形態とすることができる。
少なくとも一実施例では、グラフィックス・プロセッサ2110は、頂点プロセッサ2105と、1つ又は複数のフラグメント・プロセッサ2115A~2115N(たとえば、2115A、2115B、2115C、2115D~2115N-1、及び2115N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ2110は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ2105は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ2115A~2115Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ2105は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ2115A~2115Nは、頂点プロセッサ2105によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ2115A~2115Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
少なくとも一実施例では、グラフィックス・プロセッサ2110はさらに、1つ又は複数のメモリ管理ユニット(MMU)2120A~2120B、キャッシュ2125A~2125B、及び回路相互接続2130A~2130Bを含む。少なくとも一実施例では、1つ又は複数のMMU2120A~2120Bは、頂点プロセッサ2105及び/又はフラグメント・プロセッサ2115A~2115Nを含め、グラフィックス・プロセッサ2110のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ2125A~2125Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU2120A~2120Bは、図20の1つ若しくは複数のアプリケーション・プロセッサ2005、画像プロセッサ2015、及び/又はビデオ・プロセッサ2020に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ2005~2020は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続2130A~2130Bは、グラフィックス・プロセッサ2110が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
少なくとも一実施例では、グラフィックス・プロセッサ2140は、図21Aのグラフィックス・プロセッサ2110の1つ又は複数のMMU2120A~2120B、キャッシュ2125A~2125B、及び回路相互接続2130A~2130Bを含む。少なくとも一実施例では、グラフィックス・プロセッサ2140は、1つ又は複数のシェーダ・コア2155A~2155N(たとえば、2155A、2155B、2155C、2155D、2155E、2155F~2155N-1、及び2155N)を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを実行することができる統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ2140は、1つ又は複数のシェーダ・コア2155A~2155Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ2145と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット2158とを含む。
図22A~図22Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。図22Aは、グラフィックス・コア2200を示し、このグラフィックス・コア2200は、少なくとも一実施例では図20のグラフィックス・プロセッサ2010に含められてもよく、少なくとも一実施例では図21Bのように、統合されたシェーダ・コア2155A~2155Nであってもよい。図22Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット2230を示す。
少なくとも一実施例では、グラフィックス・コア2200は、共有命令キャッシュ2202、テクスチャ・ユニット2218、及びキャッシュ/共有メモリ2220を含み、これらは、グラフィックス・コア2200内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア2200は、複数のスライス2201A~2201N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア2200の複数のインスタンスを含むことができる。スライス2201A~2201Nは、ローカル命令キャッシュ2204A~2204N、スレッド・スケジューラ2206A~2206N、スレッド・ディスパッチャ2208A~2208N、及びレジスタのセット2210A~2210Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス2201A~2201Nは、追加機能ユニット(AFU2212A~2212N)、浮動小数点ユニット(FPU2214A~2214N)、整数算術論理演算ユニット(ALU2216~2216N)、アドレス計算ユニット(ACU2213A~2213N)、倍精度浮動小数点ユニット(DPFPU2215A~2215N)、及び行列処理ユニット(MPU2217A~2217N)のセットを含むことができる。
少なくとも一実施例では、FPU2214A~2214Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実行することができ、DPFPU2215A~2215Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU2216A~2216Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2217A~2217Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2217A~2217Nは、汎用行列-行列乗算(GEMM)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU2212A~2212Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットにサポートされていない追加の論理演算を実行することができる。
図22Bは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列の計算動作を実行可能にするように構成されることが可能な汎用処理ユニット(GPGPU)2230を示す図である。少なくとも一実施例では、GPGPU2230は、GPGPU2230の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU2230は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース2232を含む。少なくとも一実施例では、ホスト・インターフェース2232は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インターフェース2232は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU2230は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ2234を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ2236A~2236Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ2236A~2236Hは、キャッシュ・メモリ2238を共有する。少なくとも一実施例では、キャッシュ・メモリ2238は、コンピュート・クラスタ2236A~2236H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
少なくとも一実施例では、GPGPU2230は、メモリ・コントローラ2242A~2242Bのセットを介して、コンピュート・クラスタ2236A~2236Hに結合されたメモリ2244A~2244Bを含む。少なくとも一実施例では、メモリ2244A~2244Bは、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
少なくとも一実施例では、コンピュート・クラスタ2236A~2236Hはそれぞれ、図22Aのグラフィックス・コア2200などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ2236A~2236Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
少なくとも一実施例では、GPGPU2230の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ2236A~2236Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU2230の複数のインスタンスは、ホスト・インターフェース2232を介して通信する。少なくとも一実施例では、GPGPU2230は、I/Oハブ2239を含み、このハブは、GPGPU2230の他のインスタンスへの直接接続を可能にするGPUリンク2240に、GPGPU2230を結合する。少なくとも一実施例では、GPUリンク2240は、GPGPU2230の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク2240は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU2230の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース2232を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク2240は、ホスト・インターフェース2232に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
少なくとも一実施例では、GPGPU2230は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU2230は、推論プラットフォーム内で使用することができる。GPGPU2230が推論のために使用される少なくとも一実施例では、GPGPUは、GPGPUがニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ2236A~2236Hを含んでもよい。少なくとも一実施例では、メモリ2244A~2244Bに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU2230の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。少なくとも一実施例では、GPGPU2230の推論構成は、ソフトウェア物理層(PHY)ライブラリ116によって実施されるソフトウェア動作の実行をサポートできる。
図23は、少なくとも一実施例によるコンピューティング・システム2300を示すブロック図である。少なくとも一実施例では、コンピューティング・システム2300は、メモリ・ハブ2305を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ2302とシステム・メモリ2304とを有する処理サブシステム2301を含む。少なくとも一実施例では、メモリ・ハブ2305は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ2302内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ2305は、通信リンク2306を介してI/Oサブシステム2311に結合される。少なくとも一実施例では、I/Oサブシステム2311は、コンピューティング・システム2300が1つ又は複数の入力デバイス2308からの入力を受け取れるようにすることができるI/Oハブ2307を含む。少なくとも一実施例では、I/Oハブ2307は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ2302に含まれて、1つ又は複数のディスプレイ・デバイス2310Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ2307に結合された1つ又は複数のディスプレイ・デバイス2310Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
少なくとも一実施例では、処理サブシステム2301は、バス又は他の通信リンク2313を介してメモリ・ハブ2305に結合された1つ又は複数の並列プロセッサ2312を含む。少なくとも一実施例では、通信リンク2313は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つであってもよく、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ2312は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ2312は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ2307を介して結合された1つ又は複数のディスプレイ・デバイス2310Aのうちの1つに、ピクセルを出力することができる。少なくとも一実施例では、1つ又は複数の並列プロセッサ2312はまた、1つ又は複数のディスプレイ・デバイス2310Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
少なくとも一実施例では、システム・ストレージ・ユニット2314は、I/Oハブ2307に接続されて、コンピューティング・システム2300のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ2316を使用して、I/Oハブ2307と、プラットフォームに一体化されてもよいネットワーク・アダプタ2318及び/又はワイヤレス・ネットワーク・アダプタ2319などの他の構成要素、並びに1つ又は複数のアドイン・デバイス2320を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ2318は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ2319は、Wi-Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
少なくとも一実施例では、コンピューティング・システム2300は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ2307に接続されてもよい。少なくとも一実施例では、図23の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI-エクスプレス)などの任意の好適なプロトコル、又はNV-Link高速相互接続若しくは相互接続プロトコルなどの他のバス若しくはポイント・ツー・ポイント通信インターフェース及び/若しくはプロトコルを使用して、実装されてもよい。
少なくとも一実施例では、1つ又は複数の並列プロセッサ2312は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ2312は、汎用処理に最適化された回路を組み込んでいる。少なくとも実施例では、コンピューティング・システム2300の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、1つ又は複数の並列プロセッサ2312、メモリ・ハブ2305、プロセッサ2302、及びI/Oハブ2307を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム2300の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム2300の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM:multi-chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
プロセッサ
図24Aは、少なくとも一実施例による並列プロセッサ2400を示す。少なくとも一実施例では、並列プロセッサ2400の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2400は、例示的な実施例による図23に示す1つ又は複数の並列プロセッサ2312の変形形態である。
少なくとも一実施例では、並列プロセッサ2400は並列処理ユニット2402を含む。少なくとも一実施例では、並列処理ユニット2402は、並列処理ユニット2402の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット2404を含む。少なくとも一実施例では、I/Oユニット2404は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット2404は、メモリ・ハブ2305などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ2305とI/Oユニット2404との間の接続は、通信リンク2313を形成する。少なくとも一実施例では、I/Oユニット2404は、ホスト・インターフェース2406及びメモリ・クロスバー2416に接続され、ここでホスト・インターフェース2406は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー2416は、メモリ動作の実行を対象とするコマンドを受け取る。
少なくとも一実施例では、ホスト・インターフェース2406が、I/Oユニット2404を介してコマンド・バッファを受け取るとき、ホスト・インターフェース2406は、これらのコマンドを実行するためのワーク動作をフロント・エンド2408に向けることができる。少なくとも一実施例では、フロント・エンド2408はスケジューラ2410に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2412に分配するように構成される。少なくとも一実施例では、スケジューラ2410は、処理クラスタ・アレイ2412の処理クラスタ・アレイ2412にタスクが分配される前に、処理クラスタ・アレイ2412が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ2410は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ2410は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ2412で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理アレイ2412でのスケジューリングのワークロードを、複数のグラフィックス処理のドアベルのうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ2410を含むマイクロコントローラ内のスケジューラ2410論理によって、ワークロードを自動的に処理アレイ2412全体に分配することができる。
少なくとも一実施例では、処理クラスタ・アレイ2412は、最大「N個」の処理クラスタ(たとえば、クラスタ2414A、クラスタ2414B~クラスタ2414N)を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2412の各クラスタ2414A~2414Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ2410は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ2412のクラスタ2414A~2414Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ2410によって動的に対処されてもよく、又は処理クラスタ・アレイ2412によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ2412の異なるクラスタ2414A~2414Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
少なくとも一実施例では、処理クラスタ・アレイ2412は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ2412は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ2412は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
少なくとも一実施例では、処理クラスタ・アレイ2412は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ2412は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2412は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット2402は、処理できるようにデータをシステム・メモリからI/Oユニット2404を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ2422)に記憶し、次いでシステム・メモリに書き戻すことができる。
少なくとも一実施例では、並列処理ユニット2402を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ2412の複数のクラスタ2414A~2414Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ2410を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ2412の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ2414A~2414Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ2414A~2414Nの間で中間データを送信できるようにしてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2412は、実行される処理タスクをスケジューラ2410を介して受け取ることができ、スケジューラ2410は、処理タスクを定義するコマンドをフロント・エンド2408から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ2410は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド2408からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド2408は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ2412が有効な状態に構成されていることを保証するように構成されることが可能である。
少なくとも一実施例では、並列処理ユニット2402の1つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ2422と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ2422には、メモリ・クロスバー2416を介してアクセスすることができ、メモリ・クロスバー2416は、処理クラスタ・アレイ2412並びにI/Oユニット2404からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー2416は、メモリ・インターフェース2418を介して並列プロセッサ・メモリ2422にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース2418は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2420A、パーティション・ユニット2420B~パーティション・ユニット2420N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ2422の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット2420A~2420Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット2420Aは、対応する第1のメモリ・ユニット2424Aを有し、第2のパーティション・ユニット2420Bは、対応するメモリ・ユニット2424Bを有し、N番目のパーティション・ユニット2420Nは、対応するN番目のメモリ・ユニット2424Nを有する。少なくとも一実施例では、パーティション・ユニット2420A~2420Nの数は、メモリ・デバイスの数に等しくなくてもよい。
少なくとも一実施例では、メモリ・ユニット2424A~2424Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット2424A~2424Nはまた、高帯域幅メモリ(HBM)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ2422の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2424A~2424Nにわたって記憶されて、パーティション・ユニット2420A~2420Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ2422のローカル・インスタンスは除外されてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2412のクラスタ2414A~2414Nのうちのいずれか1つは、並列プロセッサ・メモリ2422内のメモリ・ユニット2424A~2424Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー2416は、各クラスタ2414A~2414Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット2420A~2420N、又は別のクラスタ2414A~2414Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ2414A~2414Nは、メモリ・クロスバー2416を通ってメモリ・インターフェース2418と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー2416は、I/Oユニット2404と通信するためのメモリ・インターフェース2418への接続部、並びに並列プロセッサ・メモリ2422のローカル・インスタンスへの接続部を有して、異なる処理クラスタ2414A~2414N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2402のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー2416は、仮想チャネルを使用して、クラスタ2414A~2414Nと、パーティション・ユニット2420A~2420Nとの間でトラフィック・ストリームを分離することができる。
少なくとも一実施例では、並列処理ユニット2402の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット2402の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット2402のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット2402又は並列プロセッサ2400のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実装することができる。
図24Bは、少なくとも一実施例によるパーティション・ユニット2420のブロック図である。少なくとも一実施例では、パーティション・ユニット2420は、図24Aのパーティション・ユニット2420A~2420Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット2420は、L2キャッシュ2421、フレーム・バッファ・インターフェース2425、及びROP:raster operations unit2426(ラスタ演算ユニット)を含む。L2キャッシュ2421は、メモリ・クロスバー2416及びROP2426から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにL2キャッシュ2421によってフレーム・バッファ・インターフェース2425に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース2425を介してフレームに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース2425は、図24の(たとえば並列プロセッサ・メモリ2422内の)メモリ・ユニット2424A~2424Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
少なくとも一実施例では、ROP2426は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP2426は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP2426は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。少なくとも一実施例では、ROP2426によって実行される圧縮のタイプは、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
少なくとも一実施例では、ROP2426は、パーティション・ユニット2420内ではなく、各処理クラスタ内(たとえば、図24のクラスタ2414A~2414N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー2416を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図23の1つ又は複数のディスプレイ・デバイス2310のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ2302によってさらに処理できるようにルーティングされてもよく、又は図24Aの並列プロセッサ2400内の処理エンティティのうちの1つによってさらに処理できるようにルーティングされてもよい。
図24Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ2414のブロック図である。少なくとも一実施例では、処理クラスタは、図24の処理クラスタ2414A~2414Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ2414は、多数のスレッドを並列で実行するように構成されてもよく、ここで用語「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single-instruction, multiple-thread)の技法が使用される。
少なくとも一実施例では、処理クラスタ2414の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ2432を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ2432は、図24のスケジューラ2410から命令を受け取り、グラフィックス・マルチプロセッサ2434及び/又はテクスチャ・ユニット2436を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2434は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ2414内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2434の1つ又は複数のインスタンスは、処理クラスタ2414内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2434はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー2440が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ2432は、データ・クロスバー2440を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
少なくとも一実施例では、処理クラスタ2414内の各グラフィックス・マルチプロセッサ2434は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
少なくとも一実施例では、処理クラスタ2414に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対してプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ2434内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2434内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、処理エンジンのうちの1つ又は複数は、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2434内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2434内の処理エンジンの数より多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ2434上で同時に実行することができる。
少なくとも一実施例では、グラフィックス・マルチプロセッサ2434は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ2434は、内部キャッシュをやめて、処理クラスタ2414内のキャッシュ・メモリ(たとえば、L1キャッシュ2448)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2434は、パーティション・ユニット(たとえば、図24のパーティション・ユニット2420A~2420N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ2414間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2434は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット2402の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ2414は、共通の命令及びデータを共有することができるグラフィックス・マルチプロセッサ2434の複数のインスタンスを含み、これらはL1キャッシュ2448に記憶されてもよい。
少なくとも一実施例では、各処理クラスタ2414は、仮想アドレスを物理アドレスにマッピングするように構成されたMMU2445(メモリ管理ユニット)を含んでもよい。少なくとも一実施例では、MMU2445の1つ又は複数のインスタンスは、図24のメモリ・インターフェース2418内にあってもよい。少なくとも一実施例では、MMU2445は、仮想アドレスを、タイル(タイリングについては詳述する)及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU2445は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ2434若しくはL1キャッシュ、又は処理クラスタ2414内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
少なくとも一実施例では、各グラフィックス・マルチプロセッサ2434がテクスチャ・ユニット2436に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ2414が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ2434内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2434は、処理済みタスクをデータ・クロスバー2440に出力して、さらなる処理ができるように別の処理クラスタ2414に処理済みタスクを提供し、又はメモリ・クロスバー2416を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP2442(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2434からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、図24のパーティション・ユニット2420A~2420N)内に位置付けられてもよい。少なくとも一実施例では、プレROP2442ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
図24Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ2434を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ2434は、処理クラスタ2414のパイプライン・マネージャ2432と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2434は、命令キャッシュ2452、命令ユニット2454、アドレス・マッピング・ユニット2456、レジスタ・ファイル2458、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア2462、及び1つ又は複数のロード/ストア・ユニット2466を含むがこれらに限定されない実行パイプラインを有する。GPGPUコア2462、及びロード/ストア・ユニット2466は、メモリ及びキャッシュ相互接続2468を介して、キャッシュ・メモリ2472及び共有メモリ2470に結合される。
少なくとも一実施例では、命令キャッシュ2452は、実行すべき命令のストリームをパイプライン・マネージャ2432から受け取る。少なくとも一実施例では、命令は、命令キャッシュ2452にキャッシュされ、命令ユニット2454により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット2454は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、アスレッド・グループの各スレッドは、GPGPUコア2462内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット2456を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット2466がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
少なくとも一実施例では、レジスタ・ファイル2458は、グラフィックス・マルチプロセッサ2434の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル2458は、グラフィックス・マルチプロセッサ2434の機能ユニット(たとえばGPGPUコア2462、ロード/ストア・ユニット2466)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル2458は、レジスタ・ファイル2458の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。一実施例では、レジスタ・ファイル2458は、グラフィックス・マルチプロセッサ2434によって実行されている異なるワープ間で分割される。
少なくとも一実施例では、GPGPUコア2462はそれぞれ、グラフィックス・マルチプロセッサ2434の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。GPGPUコア2462同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア2462の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、浮動小数点演算のためにIEEE754-2008規格を実装することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2434はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコアの1つ又は複数は、固定の又は特別な機能論理も含むことができる。
少なくとも一実施例では、GPGPUコア2462は、複数のデータ・セットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア2462は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD:single program multiple data)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
少なくとも一実施例では、メモリ及びキャッシュ相互接続2468は、グラフィックス・マルチプロセッサ2434の各機能ユニットをレジスタ・ファイル2458及び共有メモリ2470に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続2468は、ロード/ストア・ユニット2466が、共有メモリ2470とレジスタ・ファイル2458の間でロード及びストアの動作を実装できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル2458は、GPGPUコア2462と同じ周波数で動作することができ、したがって、GPGPUコア2462とレジスタ・ファイル2458の間のデータ転送は非常に低レイテンシである。少なくとも一実施例では、共有メモリ2470を使用して、グラフィックス・マルチプロセッサ2434内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ2472を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット2436の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ2470は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア2462で実行されているスレッドは、キャッシュ・メモリ2472内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアと同じパッケージ又はチップに一体化されてもよく、内部(すなわち、パッケージ又はチップの内部の)プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。少なくとも一実施例では、GPUは、ソフトウェア物理層(PHY)ライブラリ116によって実装されたソフトウェア関数を効率的に処理するための専用回路/論理を使用する。
図25は、少なくとも一実施例による、マルチGPUコンピューティング・システム2500を示す。少なくとも一実施例では、マルチGPUコンピューティング・システム2500は、ホスト・インターフェース・スイッチ2504を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)2506A~Dに結合されたプロセッサ2502を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ2504は、プロセッサ2502をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ2502は、GPGPU2506A~Dと通信することができる。GPGPU2506A~Dは、高速ポイント・ツー・ポイントGPUツーGPUリンク2516のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク2516は、専用GPUリンクを介して、GPGPU2506A~Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク2516は、プロセッサ2502が接続されているホスト・インターフェース・バス2504を介した通信を必要とせずに、GPGPU2506A~Dのそれぞれの間で直接通信を可能にする。少なくとも一実施例では、P2PのGPUリンク2516に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス2504は、システム・メモリへのアクセスができるように、又はたとえば1つ又は複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム2500の他のインスタンスと通信するために、利用可能な状態に保たれる。少なくとも一実施例では、GPGPU2506A~Dは、ホスト・インターフェース・スイッチ2504を介してプロセッサ2502に接続され、少なくとも一実施例では、プロセッサ2502は、P2PのGPUリンク2516のための直接サポートを含み、GPGPU2506A~Dに直接接続することができる。
図26は、少なくとも一実施例によるグラフィックス・プロセッサ2600のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ2600は、リング相互接続2602、パイプライン・フロント・エンド2604、メディア・エンジン2637、及びグラフィックス・コア2680A~2680Nを含む。少なくとも一実施例では、リング相互接続2602は、グラフィックス・プロセッサ2600を、他のグラフィックス・プロセッサ又は1つ又は複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ2600は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。
少なくとも一実施例では、グラフィックス・プロセッサ2600は、リング相互接続2602を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド2604のコマンド・ストリーマ2603によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ2600は、グラフィックス・コア2680A~2680Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ2603はコマンドをジオメトリ・パイプライン2636に供給する。少なくとも一実施例では、少なくとも一部のメディア処理コマンドについては、コマンド・ストリーマ2603はコマンドをビデオ・フロント・エンド2634に供給し、ビデオ・フロント・エンド2634はメディア・エンジン2637に結合される。少なくとも一実施例では、メディア・エンジン2637は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)2630と、ハードウェア加速されたメディア・データのエンコード及びデコードを提供するマルチ・フォーマット・エンコード/デコード(MFX)2633エンジンとを含む。少なくとも一実施例では、ジオメトリ・パイプライン2636及びメディア・エンジン2637はそれぞれ、少なくとも1つのグラフィックス・コア2680Aによって提供されるスレッド実行リソースのための実行スレッドを生成する。
少なくとも一実施例では、グラフィックス・プロセッサ2600は、モジュール式コア2680A~2680N(コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、それぞれのモジュール式コアは、複数のサブ・コア2650A~550N、2660A~2660N(コア・サブ・スライスと呼ばれることもある)を有する。少なくとも一実施例では、グラフィックス・プロセッサ2600は、任意の数のグラフィックス・コア2680A~2680Nを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ2600は、少なくとも第1のサブ・コア2650A及び第2のサブ・コア2660Aを有するグラフィックス・コア2680Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ2600は、単一のサブ・コア(たとえば、2650A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ2600は、複数のグラフィックス・コア2680A~2680Nを含み、このそれぞれが、第1のサブ・コア2650A~2650Nのセット、及び第2のサブ・コア2660A~2660Nのセットを含む。少なくとも一実施例では、第1のサブ・コア2650A~2650Nの各サブ・コアは、少なくとも、実行ユニット2652A~2652Nとメディア/テクスチャ・サンプラ2654A~2654Nの第1のセットを含む。少なくとも一実施例では、第2のサブ・コア2660A~2660Nの各サブ・コアは、少なくとも、実行ユニット2662A~2662Nとサンプラ2664A~2664Nの第2のセットを含む。少なくとも一実施例では、各サブ・コア2650A~2650N、2660A~2660Nは、共有リソース2670A~2670Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
図27は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ2700のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ2700は、x86命令、AMR命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ2710は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX技術で有効化されたマイクロプロセッサ内の64ビット幅MMX(商標)レジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extensions)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ2710は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
少なくとも一実施例では、プロセッサ2700は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダー・フロント・エンド(「フロント・エンド」)2701を含む。少なくとも一実施例では、フロント・エンド2701は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ2726が、メモリから命令をフェッチし、命令デコーダ2728に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ2728は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ2728は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ2730は、デコードされたuopsを、実行できるようにuopキュー2734においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ2730が複雑な命令に遭遇すると、マイクロコードROM2732が、動作の完了に必要なuopsを提供する。
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが要な場合、命令デコーダ2728は、マイクロコードROM2732にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ2728において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM2732に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ2730は、少なくとも一実施例によるマイクロコードROM2732からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM2732が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド2701は、トレース・キャッシュ2730からマイクロ・オプスのフェッチを再開してもよい。
少なくとも一実施例では、アウト・オブ・オーダー実行エンジン(「アウト・オブ・オーダー・エンジン」)2703は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダー実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。アウト・オブ・オーダー実行エンジン2703は、限定することなく、アロケータ/レジスタ・リネーマ2740、メモリuopキュー2742、整数/浮動小数点uopキュー2744、メモリ・スケジューラ2746、高速スケジューラ2702、低速/汎用浮動小数点スケジューラ(「低速/汎用FP:floating pointスケジューラ」)2704、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)2706を含む。少なくとも一実施例では、高速スケジューラ2702、低速/汎用浮動小数点スケジューラ2704、及び単純浮動小数点スケジューラ2706は、本明細書において集合的に「uopスケジューラ2702、2704、2706」とも呼ばれる。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2740は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2740は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2740はまた、メモリ・スケジューラ2746及びuopスケジューラ2702、2704、2706の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー2742と非メモリ動作のための整数/浮動小数点uopキュー2744のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ2702、2704、2706は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、少なくとも一実施例の高速スケジューラ2702は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ2704及び単純浮動小数点スケジューラ2706は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ2702、2704、2706は、実行できるようにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
少なくとも一実施例では、実行ブロックb11は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク2708、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)2710、アドレス生成ユニット(「AGU」:address generation units)2712及び2714、高速算術論理演算ユニット(ALU)(「高速ALU」)2716及び2718、低速算術論理演算ユニット(「低速ALU」)2720、浮動小数点ALU(「FP」)2722、並びに浮動小数点移動ユニット(「FP移動」)2724を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2708及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク2710は、本明細書において「レジスタ・ファイル2708、2710」とも呼ばれる。少なくとも一実施例では、AGU2712及び2714、高速ALU2716及び2718、低速ALU2720、浮動小数点ALU2722、及び浮動小数点移動ユニット2724は、本明細書において「実行ユニット2712、2714、2716、2718、2720、2722、及び2724」とも呼ばれる。少なくとも一実施例では、実行ブロックb11は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
少なくとも一実施例では、レジスタ・ファイル2708、2710は、uopスケジューラ2702、2704、2706と、実行ユニット2712、2714、2716、2718、2720、2722、及び2724との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2708は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2710は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ファイル2708、2710のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ファイル2708、2710は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2708は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2710は、限定することなく、128ビット幅のエントリを含んでもよい。
少なくとも一実施例では、実行ユニット2712、2714、2716、2718、2720、2722、2724は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ファイル2708、2710は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ2700は、限定することなく、任意の数及び組合せの実行ユニット2712、2714、2716、2718、2720、2722、2724を含んでよい。少なくとも一実施例では、浮動小数点ALU2722及び浮動小数点移動ユニット2724は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU2722は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU2716、2718に渡されてもよい。少なくとも一実施例では、高速ALU2716、2718は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU2720は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALU2720に進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGUS2712、2714によって実行されてもよい。少なくとも一実施例では、高速ALU2716、高速ALU2718、及び低速ALU2720は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU2716、高速ALU2718、及び低速ALU2720は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2722及び浮動小数点移動ユニット2724は、様々なビット幅を有する幅広いオペランドをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2722及び浮動小数点移動ユニット2724は、SIMD及びマルチメディア命令と併せて128ビット幅のパック・データ・オペランドで動作してもよい。
少なくとも一実施例では、uopスケジューラ2702、2704、2706は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ2700において投機的にスケジューリング及び実行されてもよいので、プロセッサ2700は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
少なくとも一実施例では、用語「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実装されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
図28は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム2800は、1つ又は複数のプロセッサ2802、及び1つ又は複数のグラフィックス・プロセッサ2808を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ2802若しくはプロセッサ・コア2807を有するサーバ・システムであってもよい。少なくとも一実施例では、システム2800は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
少なくとも一実施例では、システム2800は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム2800は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム2800はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウエアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム2800は、1つ又は複数のプロセッサ2802と、1つ又は複数のグラフィックス・プロセッサ2808によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
少なくとも一実施例では、1つ又は複数のプロセッサ2802はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア2807を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア2807のそれぞれは、特定の命令セット2809を処理するように構成される。少なくとも一実施例では、命令セット2809は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア2807はそれぞれ、異なる命令セット2809を処理してもよく、この命令セットは、他の命令セットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア2807はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
少なくとも一実施例では、プロセッサ2802はキャッシュ・メモリ2804を含む。少なくとも一実施例では、プロセッサ2802は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ2802の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ2802はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア2807間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル2806がプロセッサ2802に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル2806は、汎用レジスタ又は他のレジスタを含んでもよい。
少なくとも一実施例では、1つ又は複数のプロセッサ2802は、1つ又は複数のインターフェース・バス2810に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ2802とシステム2800内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス2810は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース2810は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ2802は、統合メモリ・コントローラ2816、及びプラットフォーム・コントローラ・ハブ2830を含む。少なくとも一実施例では、メモリ・コントローラ2816は、メモリ・デバイスとシステム2800の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)2830は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
少なくとも一実施例では、メモリ・デバイス2820は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス2820は、システム2800のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ2802がアプリケーション若しくはプロセスを実行するときに使用するためのデータ2822及び命令2821を記憶することができる。少なくとも一実施例では、メモリ・コントローラ2816はまた、任意選択の外部グラフィックス・プロセッサ2812と結合しており、このグラフィックス・プロセッサは、プロセッサ2802内の1つ又は複数のグラフィックス・プロセッサ2808と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス2811は、プロセッサ2802に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス2811は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス2811は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2830は、周辺装置が高速I/Oバスを介してメモリ・デバイス2820及びプロセッサ2802に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ2846、ネットワーク・コントローラ2834、ファームウェア・インターフェース2828、ワイヤレス・トランシーバ2826、タッチ・センサ2825、データ・ストレージ・デバイス2824(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス2824は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ2825は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ2826は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース2828は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ2834は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス2810と結合する。少なくとも一実施例では、オーディオ・コントローラ2846は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム2800は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステムに結合するための任意選択のレガシーI/Oコントローラ2840を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2830は、キーボードとマウス2843の組合せ、カメラ2844、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ2842の接続入力デバイスにも接続することができる。
少なくとも一実施例では、メモリ・コントローラ2816及びプラットフォーム・コントローラ・ハブ2830のインスタンスは、外部グラフィックス・プロセッサ2812などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2830及び/又はメモリ・コントローラ2816は、1つ又は複数のプロセッサ2802の外部にあってもよい。たとえば、少なくとも一実施例では、システム2800は、外部のメモリ・コントローラ2816及びプラットフォーム・コントローラ・ハブ2830を含むことができ、これらは、プロセッサ2802と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
少なくとも一実施例では、外部グラフィックス・プロセッサ2812は、ソフトウェア物理層(PHY)ライブラリ116によって実装された1つ又は複数の関数を実行するために使用されてもよい。
図29は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア2902A~2902N、統合メモリ・コントローラ2914、及び統合グラフィックス・プロセッサ2908を有するプロセッサ2900のブロック図である。少なくとも一実施例では、プロセッサ2900は、破線の四角によって表される追加コア2902Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア2902A~2902Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット2904A~2904Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット2906にアクセスできる。
少なくとも一実施例では、内部キャッシュ・ユニット2904A~2904N、及び共有キャッシュ・ユニット2906は、プロセッサ2900内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット2904A~2904Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット2906及び2904A~2904N間でコヒーレンスを維持する。
少なくとも一実施例では、プロセッサ2900はまた、1つ又は複数のバス・コントローラ・ユニット2916とシステム・エージェント・コア2910のセットを含んでもよい。少なくとも一実施例では、1つ又は複数のバス・コントローラ・ユニット2916は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア2910は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア2910は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ2914を含む。
少なくとも一実施例では、プロセッサ・コア2902A~2902Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア2910は、マルチスレッドの処理中にコア2902A~2902Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア2910はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア2902A~2902N及びグラフィックス・プロセッサ2908の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
少なくとも一実施例では、プロセッサ2900はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ2908を含む。少なくとも一実施例では、グラフィックス・プロセッサ2908は、共有キャッシュ・ユニット2906と、1つ又は複数の統合メモリ・コントローラ2914を含むシステム・エージェント・コア2910とに結合する。少なくとも一実施例では、システム・エージェント・コア2910はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を行わせるためのディスプレイ・コントローラ2911を含む。少なくとも一実施例では、ディスプレイ・コントローラ2911はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ2908に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ2908内に一体化されていてもよい。
少なくとも一実施例では、プロセッサ2900の内部構成要素を結合するために、リング・ベースの相互接続ユニット2912が使用される。少なくとも一実施例では、ポイント・ツー・ポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ2908は、I/Oリンク2913を介してリング相互接続2912と結合する。
少なくとも一実施例では、I/Oリンク2913は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール2918との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア2902A~2902Nのそれぞれ及びグラフィックス・プロセッサ2908は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール2918を使用する。
少なくとも一実施例では、プロセッサ・コア2902A~2902Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア2902A~2902Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア2902A~2902Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア2902A~2902Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア2902A~2902Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ2900は、1つ又は複数のチップ上に、又はSoC集積回路として実装することができる。
少なくとも一実施例では、プロセッサ・コア2902A~2902Nは、物理層(PHY)ライブラリ116によって実装された1つ又は複数のソフトウェア関数を実行するために使用可能である。
図30は、グラフィックス・プロセッサ3000のブロック図であり、これは、個別グラフィックス・プロセッシング・ユニットであってもよく、又は複数の処理コアと一体化されたグラフィックス・プロセッサであってもよい。少なくとも一実施例では、グラフィックス・プロセッサ3000は、メモリにマッピングされたI/Oインターフェースを介して、メモリに入れられたコマンドを用いて、グラフィックス・プロセッサ3000のレジスタと通信する。少なくとも一実施例では、グラフィックス・プロセッサ3000は、メモリにアクセスするためのメモリ・インターフェース3014を含む。少なくとも一実施例では、メモリ・インターフェース3014は、ローカル・メモリ、1つ若しくは複数の内部キャッシュ、1つ若しくは複数の共有外部キャッシュ、及び/又はシステム・メモリへのインターフェースである。
少なくとも一実施例では、グラフィックス・プロセッサ3000はまた、ディスプレイ出力データをディスプレイ・デバイス3020に向けて駆動するためのディスプレイ・コントローラ3002も含む。少なくとも一実施例では、ディスプレイ・コントローラ3002は、ディスプレイ・デバイス3020用の1つ又は複数の重なり平面、及び多層のビデオ若しくはユーザ・インターフェース要素の合成のためのハードウェアを含む。少なくとも一実施例では、ディスプレイ・デバイス3020は、内部又は外部のディスプレイ・デバイスとすることができる。少なくとも一実施例では、ディスプレイ・デバイス3020は、仮想現実(VR)ディスプレイ・デバイス又は拡張現実(AR)ディスプレイ・デバイスなどの頭部装着型ディスプレイ・デバイスである。少なくとも一実施例では、グラフィックス・プロセッサ3000は、MPEG-2などの動画エキスパート・グループ(MPEG)フォーマット、H.264/MPEG-4AVCなどのアドバンスト・ビデオ・コーディング(AVC)フォーマット、並びに映画テレビ技術者協会(SMPTE)421M/VC-1、及びJPEGなどのジョイント・フォトグラフィック・エキスパート・グループ(JPEG)フォーマット、及びモーションJPEG(MJPEG)フォーマットを含むがこれらに限定されない1つ又は複数のメディア符号化フォーマットに、それらのフォーマットから、又はそれらのフォーマット間で、メディアをエンコード、デコード、又はコード変換するためのビデオ・コーデック・エンジン3006を含む。
少なくとも一実施例では、グラフィックス・プロセッサ3000は、たとえばビット境界ブロック転送を含む2次元(2D)ラスタライザ動作を実行するためのブロック画像転送(BLIT)エンジン3004を含む。しかし、少なくとも一実施例では、2Dグラフィックス動作は、グラフィックス処理エンジン(GPE)3010の1つ又は複数の構成要素を使用して実行される。少なくとも一実施例では、GPE3010は、3次元(3D)グラフィックス動作及びメディア動作を含むグラフィックス動作を実行するためのコンピュート・エンジンである。
少なくとも一実施例では、GPE3010は、3Dのプリミティブ形状(たとえば、矩形、三角形など)に作用する処理関数を使用して、3次元画像及びシーンをレンダリングするなど、3D動作を実行するための3Dパイプライン3012を含む。3Dパイプライン3012は、プログラム可能で固定された関数要素を含み、これは、3D/メディア・サブシステム3015に対して様々なタスクを実行し、且つ/又は実行スレッドをスポーンする。3Dパイプライン3012を使用してメディア動作を実行できるが、少なくとも一実施例では、GPE3010は、ビデオの後処理及び画像強調などのメディア動作を実行するために使用されるメディア・パイプライン3016も含む。
少なくとも一実施例では、メディア・パイプライン3016は、ビデオ・コーデック・エンジン3006の代わりに、又はそれを代表して、ビデオ・デコード加速、ビデオ・インターレース解除、及びエンコード加速などの1つ又は複数の特別なメディア動作を実行するための固定機能又はプログラム可能論理ユニットを含む。少なくとも一実施例では、メディア・パイプライン3016は、3D/メディア・サブシステム3015で実行するためのスレッドをスポーンするためのスレッド・スポーニング・ユニットをさらに含む。少なくとも一実施例では、スポーンされたスレッドは、3D/メディア・サブシステム3015に含まれた1つ又は複数のグラフィックス実行ユニット上で、メディア動作のための計算を実行する。
少なくとも一実施例では、3D/メディア・サブシステム3015は、3Dパイプライン3012及びメディア・パイプライン3016によってスポーンされたスレッドを実行するための論理を含む。少なくとも一実施例では、3Dパイプライン3012及びメディア・パイプライン3016は、スレッド実行要求を3D/メディア・サブシステム3015に送信し、この3D/メディア・サブシステム3015は、様々な要求を調停し、利用可能なスレッド実行リソースにディスパッチするためのスレッド・ディスパッチ論理を含む。少なくとも一実施例では、実行リソースは、3D及びメディア・スレッドを処理するためのグラフィックス実行ユニットのアレイを含む。少なくとも一実施例では、3D/メディア・サブシステム3015は、スレッド命令及びデータのための1つ又は複数の内部キャッシュを含む。少なくとも一実施例では、サブシステム3015はまた、スレッド間でデータを共有し、出力データを記憶するための、レジスタ及びアドレス可能メモリを含む共有メモリも含む。
図31は、少なくとも一実施例によるグラフィックス・プロセッサのグラフィックス処理エンジン3110のブロック図である。少なくとも一実施例では、グラフィックス処理エンジン(GPE)3110は、図30に示すGPE3010の1つのバージョンである。少なくとも一実施例では、メディア・パイプライン3116は任意選択であり、GPE3110内に明示的に含まれなくてもよい。少なくとも一実施例では、別個のメディア及び/又は画像のプロセッサが、GPE3110に結合される。
少なくとも一実施例では、GPE3110は、コマンド・ストリーマ3103に結合され、又はそれを含み、このコマンド・ストリーマは、3Dパイプライン3112及び/又はメディア・パイプライン3116にコマンド・ストリームを提供する。少なくとも一実施例では、コマンド・ストリーマ3103はメモリに結合され、このメモリは、システム・メモリであってもよく、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの1つ若しくは複数であってもよい。少なくとも一実施例では、コマンド・ストリーマ3103は、メモリからコマンドを受信し、3Dパイプライン3112及び/又はメディア・パイプライン3116にコマンドを送信する。少なくとも一実施例では、コマンドは、リング・バッファからフェッチされる命令、プリミティブ、又はマイクロ・オペレーションであり、このリング・バッファは、3Dパイプライン3112及びメディア・パイプライン3116のためのコマンドを記憶する。少なくとも一実施例では、リング・バッファはさらに、複数のコマンドのバッチを記憶するバッチ・コマンド・バッファを含むことができる。少なくとも一実施例では、3Dパイプライン3112用のコマンドはまた、3Dパイプライン3112用の頂点及び形状のデータ、並びに/又はメディア・パイプライン3116用の画像データ及びメモリ・オブジェクトなどであるがこれらに限定されないメモリに記憶されたデータへの参照も含むことができる。少なくとも一実施例では、3Dパイプライン3112及びメディア・パイプライン3116は、演算を実行することにより、又は1つ若しくは複数の実行スレッドをグラフィックス・コア・アレイ3114にディスパッチすることにより、コマンド及びデータを処理する。少なくとも一実施例では、グラフィックス・コア・アレイ3114は、グラフィックス・コア(たとえば、グラフィックス・コア3115A、グラフィックス・コア3115B)の1つ又は複数のブロックを含み、各ブロックは、1つ又は複数のグラフィックス・コアを含む。少なくとも一実施例では、各グラフィックス・コアは、グラフィックス及びコンピュートの動作を実行するための汎用及びグラフィックス専用の実行論理、並びに、固定機能のテクスチャ処理及び/又は機械学習、及び人工知能の加速論理を含むグラフィックス実行リソースのセットを含む。
少なくとも一実施例では、3Dパイプライン3112は、命令を処理し、実行スレッドをグラフィックス・コア・アレイ3114にディスパッチすることにより、頂点シェーダ、ジオメトリ・シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、コンピュート・シェーダ、又は他のシェーダ・プログラムなどの1つ又は複数のシェーダ・プログラムを処理するための固定機能及びプログラム可能論理を含む。少なくとも一実施例では、グラフィックス・コア・アレイ3114は、シェーダ・プログラムを処理する際に使用するための実行リソースの統合ブロックを提供する。少なくとも一実施例では、グラフィック・コア・アレイ3114のグラフィックス・コア3115A~3115B内の多目的の実行論理(たとえば、実行ユニット)は、様々な3DのAPIシェーダ言語のサポートを含み、複数のシェーダに関連付けられた複数の同時実行スレッドを実行することができる。
少なくとも一実施例では、グラフィックス・コア・アレイ3114はまた、ビデオ及び/又は画像の処理など、メディア機能を実行するための実行論理も含む。少なくとも一実施例では、実行ユニットはさらに、グラフィックス処理動作に加えて並列の汎用計算動作を実行するようにプログラム可能な汎用論理を含む。
少なくとも一実施例では、グラフィックス・コア・アレイ3114上で実行しているスレッドにより生成される出力データは、統合リターン・バッファ(URB)3118のメモリにデータを出力することができる。URB3118は、複数のスレッド用のデータを記憶することができる。少なくとも一実施例では、グラフィックス・コア・アレイ3114上で実行している異なるスレッド間でデータを送信するために、URB3118を使用してもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3114上のスレッドと、共有機能論理3120内の固定機能論理との間の同期のために、URB3118がさらに使用されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3114はスケーラブルであり、それにより、グラフィックス・コア・アレイ3114は、可変数のグラフィックス・コアを含み、それぞれのグラフィックス・コアが、GPE3110の目的とする電力及び性能のレベルに基づき可変数の実行ユニットを有する。少なくとも一実施例では、実行リソースは動的にスケーラブルであり、それにより実行リソースは、必要に応じて有効化又は無効化されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3114は、グラフィックス・コア・アレイ3114のグラフィックス・コア間で共有される複数のリソースを含む共有機能論理3120に結合される。少なくとも一実施例では、共有機能論理3120によって実行される共有機能は、専用の補足機能をグラフィックス・コア・アレイ3114に提供するハードウェア論理ユニットに具体化される。少なくとも一実施例では、共有機能論理3120は、サンプラ3121、数理3122、及びスレッド間通信(ITC)3123の論理を含むが、これらに限定されない。少なくとも一実施例では、1つ又は複数のキャッシュ3125が、共有機能論理3120にイン含まれ、又はそれに結合される。
少なくとも一実施例では、専用機能の需要が不十分でグラフィックス・コア・アレイ3114内に含められない場合に、共有機能が使用される。少なくとも一実施例では、専用機能を1つにインスタンス化したものが、共有機能論理3120において使用され、グラフィックス・コア・アレイ3114内の他の実行リソース間で共有される。少なくとも一実施例では、共有機能論理3120内の、グラフィックス・コア・アレイ3114によってのみ使用される特定の共有機能は、グラフィックス・コア・アレイ3114内の共有機能論理3116内に含まれてもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3114内の共有機能論理3116は、共有機能論理3120内の一部又はすべての論理を含むことができる。少なくとも一実施例では、共有機能論理3120内のすべての論理要素は、グラフィックス・コア・アレイ3114の共有機能論理3116内で複製されてもよい。少なくとも一実施例では、共有機能論理3120は、グラフィックス・コア・アレイ3114内の共有機能論理3116に有利なように除外される。
少なくとも一実施例では、共有機能論理3120は、物理層(PHY)ライブラリ116によって実装された1つ又は複数のソフトウェア関数を実行するために使用され得る。
図32は、本明細書に記載の少なくとも一実施例によるグラフィックス・プロセッサ・コア3200のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア3200は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア3200は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア3200は、1つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア3200は、汎用及び固定の機能論理のモジュール式ブロックを含むサブ・スライスとも呼ばれる複数のサブ・コア3201A~3201Fに結合された固定機能ブロック3230を含むことができる。
少なくとも一実施例では、固定機能ブロック3230は、たとえば低性能及び/又は低電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ3200内のすべてのサブ・コアが共有できるジオメトリ/固定機能パイプライン3236を含む。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3236は、3D固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
少なくとも一実施例では、固定機能ブロック3230はまた、グラフィックスSoCインターフェース3237、グラフィックス・マイクロコントローラ3238、及びメディア・パイプライン3239を含む。グラフィックスSoCインターフェース3237は、グラフィックス・コア3200と、システム・オン・チップ集積回路内の他のプロセッサ・コアとのインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ3238は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ3200の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン3239は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び/又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン3239は、サブ・コア3201~3201F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
少なくとも一実施例では、SoCインターフェース3237は、汎用アプリケーション・プロセッサ・コア(たとえば、CPU)、及び/又はSoC内の他の構成要素と、グラフィックス・コア3200が通信できるようにし、SoC内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/又は組み込みオン・チップ若しくはオン・パッケージのDRAMなどのメモリ階層要素が含まれる。少なくとも一実施例では、SoCインターフェース3237はまた、カメラ・イメージング・パイプラインなど、SoC内の固定機能デバイスとの通信を可能にし、グラフィックス・コア3200とSoC内のCPUとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ/又はそれを実装する。少なくとも一実施例では、SoCインターフェース3237はまた、グラフィックス・コア3200の電力管理制御を実装することができ、グラフィックス・コア3200のクロック・ドメインと、SoC内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、SoCインターフェース3237は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン3239にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン3236、ジオメトリ及び固定機能パイプライン3214)にディスパッチされることが可能である。
少なくとも一実施例では、グラフィックス・マイクロコントローラ3238は、グラフィックス・コア3200のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ3238は、サブ・コア3201A~3201F内の実行ユニット(EU:execution unit)アレイ3202A~3202F、3204A~3204F内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ/又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア3200を含むSoCのCPUコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ・ドアベルのうちの1つにワークロードを送出することができ、このドアベルが、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を管理すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ3238はまた、グラフィックス・コア3200の低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア3200内のレジスタを保存及び復元する機能をグラフィックス・コア3200に提供することができる。
少なくとも一実施例では、グラフィックス・コア3200は、図示してあるサブ・コア3201A~3201Fより多くの、又はそれより少ない、N個までのモジュール式サブ・コアを有してもよい。N個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア3200はまた、共有機能論理3210、共有及び/又はキャッシュ・メモリ3212、ジオメトリ/固定機能パイプライン3214、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理3216を含むことができる。少なくとも一実施例では、共有機能論理3210は、グラフィックス・コア3200内の各N個のサブ・コアが共有できる論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信の論理)を含むことができる。共有の、及び/又はキャッシュのメモリ3212は、グラフィックス・コア3200内のN個のサブ・コア3201A~3201Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3214は、固定機能ブロック3230内のジオメトリ/固定機能パイプライン3236の代わりに含まれてもよく、同じ又は同様の論理ユニットを含むことができる。
少なくとも一実施例では、グラフィックス・コア3200は、グラフィックス・コア3200が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理3216を含む。少なくとも一実施例では、追加の固定機能論理3216は、位置限定シェーディング(position only shading)に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在しているが、ジオメトリ/固定機能パイプライン3216、3236内の完全ジオメトリ・パイプラインと選別パイプライン(cull pipeline)においてであり、この選別パイプラインは、追加の固定機能論理3216内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理3216内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果(critical result)を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれてもよい)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
少なくとも一実施例では、追加の固定機能論理3216はまた、機械学習の訓練又は推論の最適化を含む実装形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
少なくとも一実施例では、各グラフィックス・サブ・コア3201A~3201F内において、実行リソースのセットを含み、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア3201A~3201Fは、複数のEUアレイ3202A~3202F、3204A~3204F、スレッド・ディスパッチ及びスレッド間通信(TD/IC:thread dispatch and inter-thread communication)論理3203A~3203F、3D(たとえば、テクスチャ)サンプラ3205A~3205F、メディア・サンプラ3206A~3206F、シェーダ・プロセッサ3207A~3207F、及び共有ローカル・メモリ(SLM:shared local memory)3208A~3208Fを含む。EUアレイ3202A~3202F、3204A~3204Fはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、TD/IC論理3203A~3203Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、3Dサンプラ3205A~3205Fは、テクスチャ又は他の3Dグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、3Dサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ3206A~3206Fは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア3201A~3201Fは、代替的に3Dとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア3201A~3201F内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ3208A~3208Fを利用することができる。
少なくとも一実施例では、サブ・コア3201A~3201Fのそれぞれの内部の実行ユニット上で実行されるスレッドは、物理層(PHY)ライブラリ116によって実装された1つ又は複数のソフトウェア関数を実行するために、各サブ・コア内の共有ローカル・メモリ3208A~3208Fを利用できる。
図33A~図33Bは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3300を示す。図33Aは、スレッド実行論理3300が使用される少なくとも一実施例を示す。図33Bは、少なくとも一実施例による、実行ユニットの例示的な内部詳細事項を示す図である。
図33Aに示すように、少なくとも一実施例では、スレッド実行論理3300は、シェーダ・プロセッサ3302、スレッド・ディスパッチャ3304、命令キャッシュ3306、複数の実行ユニット3308A~3308Nを含むスケーラブル実行ユニット・アレイ、サンプラ3310、データ・キャッシュ3312、及びデータ・ポート3314を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット3308A、3308B、3308C、3308D~3308N-1、及び3308Nのうちのいずれか)を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、実行ユニットのそれぞれにリンクされる相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理3300は、命令キャッシュ3306、データ・ポート3314、サンプラ3310、及び実行ユニット3308A~3308Nのうちの1つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット(たとえば、3308A)は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンドアロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット3308A~3308Nのアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
少なくとも一実施例では、実行ユニット3308A~3308Nは、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ3302は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ3304を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3304は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット3308A~3308Nの1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理できるようにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3304はまた、実行しているシェーダ・プログラムからのランタイム・スレッド・スポーニング要求(spawning request)を処理することができる。
少なくとも一実施例では、実行ユニット3308A~3308Nは、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理(たとえば、頂点プログラム、ジオメトリ・プログラム、頂点シェーダ)、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)、及び汎用処理(たとえば、コンピュート及びメディアのシェーダ)をサポートする。少なくとも一実施例では、1つ又は複数の算術論理演算ユニット(ALU)を含む各実行ユニット3308A~3308Nのそれぞれは、単一命令複数データ(SIMD)の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連する独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの1つからのデータを待機している間に、実行ユニット3308A~3308N内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実行することができる。
少なくとも一実施例では、実行ユニット3308A~3308Nの各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット3308A~3308Nは、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
少なくとも一実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、256ビット幅ベクトルで動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4個の別々の64ビット・パック・データ要素(クワッド・ワード(QW:Quad-Word)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W:Word)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B:byte)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
少なくとも一実施例では、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通したスレッド制御論理(3307A~3307N)を有する融合実行ユニット(fused execution unit)3309A~3309Nにすることができる。少なくとも一実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも一実施例では、融合EUグループの各EUは、別々のSIMDハードウェア・スレッドを実行するように構成されることが可能である。融合EUグループのEUの数は、様々な実施例に応じて異なってもよい。少なくとも一実施例では、SIMD8、SIMD16、及びSIMD32を含むがこれに限定されない様々なSIMD幅を、EUごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット3309A~3309Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット3309Aは、第1のEU3308A、第2のEU3308B、及び第1のEU3308Aと第2のEU3308Bに共通のスレッド制御論理3307Aを含む。少なくとも一実施例では、スレッド制御論理3307Aは、融合グラフィックス実行ユニット3309Aで実行されているスレッドを制御して、融合実行ユニット3309A~3309N内の各EUを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
少なくとも一実施例では、1つ又は複数の内部命令キャッシュ(たとえば、3306)は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理3300に含まれる。少なくとも一実施例では、1つ又は複数のデータ・キャッシュ(たとえば、3312)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ3310は、3D動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ3310は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理3300に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ3302内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出されて、出力情報をさらにコンピュートし、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ3302内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ3302は、スレッド・ディスパッチャ3304を介してスレッドを実行ユニット(たとえば、3308A)にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ3302は、サンプラ3310のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらに処理されないように1つ又は複数のピクセルが切り捨てられる。
少なくとも一実施例では、データ・ポート3314は、スレッド実行論理3300のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理できるようにメモリに出力する。少なくとも一実施例では、データ・ポート3314は、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ3312)を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
図33Bに示してあるように、少なくとも一実施例では、グラフィック実行ユニット3308は、命令フェッチ・ユニット3337、汎用レジスタ・ファイル・アレイ(GRF:general register file array)3324、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)3326、スレッド調停装置(arbiter)3322、送信ユニット3330、ブランチ・ユニット3332、SIMD浮動小数点ユニット(FPU)3334のセット、及び少なくとも一実施例では、専用整数SIMD ALU3335のセットを含むことができる。少なくとも一実施例では、GRF3324及びARF3326は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット3308においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF3326において維持され、スレッド実行中に使用されるデータが、GRF3324に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF3326のスレッド専用レジスタに保持することが可能である。
少なくとも一実施例では、グラフィックス実行ユニット3308は、同時マルチスレッディング(SMT:Simultaneous Multi-Threading)と微細化インターリーブ・マルチスレッディング(IMT:Interleaved Multi-Threading)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
少なくとも一実施例では、グラフィックス実行ユニット3308は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド3308のスレッド調停装置3322は、送信ユニット3330、ブランチ・ユニット3342、又はSIMD FPU3334のうちの1つに命令をディスパッチして実行できるようにすることができる。少なくとも一実施例では、各実行スレッドは、GRF3324内の128個の汎用レジスタにアクセスすることができ、ここで各レジスタは、32ビットのデータ要素のSIMD8要素のベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、GRF3324内の4Kバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大7個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。7個のスレッドが4Kバイトにアクセスできる少なくとも一実施例では、GRF3324は、合計28Kバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、メッセージ引渡し送信ユニット3330によって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、SIMDの発散及び最終的な収束を容易にするために、専用のブランチ・ユニット3332にディスパッチされる。
少なくとも一実施例では、グラフィックス実行ユニット3308は、浮動小数点演算を実行するための1つ又は複数のSIMD浮動小数点ユニット(FPU)3334を含む。少なくとも一実施例では、FPU3334は、整数計算もサポートする。少なくとも一実施例ではFPU3334は、最大M個の32ビット浮動小数点(若しくは整数)演算をSIMDで実行し、又は最大で2M個の16ビット整数演算、若しくは16ビット浮動小数点演算をSIMDで実行することができる。少なくとも一実施例では、FPUのうちの少なくとも1つは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の64ビット浮動小数点をサポートする。少なくとも一実施例では、8ビットの整数SIMD ALU3335のセットも存在し、機械学習計算に関連する動作を実行するように特に最適化されてもよい。
少なくとも一実施例では、グラフィックス実行ユニット3308の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ(たとえば、サブ・スライス)においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット3308は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット3308で実行される各スレッドは、異なるチャネルで実行される。
少なくとも一実施例では、グラフィックス実行ユニット3308の複数のインスタンスのアレイは、物理層(PHY)ライブラリ116によって実装された1つ又は複数のソフトウェア関数を実行するために、グラフィックス・サブ・コアグループ化(たとえば、サブスライス)においてインスタンス化されることができる。
図34は、少なくとも一実施例による並列処理ユニット(「PPU」)3400を示す。少なくとも一実施例では、PPU3400は、PPU3400によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU3400に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU3400はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実装され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU3400によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU3400は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示できるように2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU3400を利用して、線形代数演算及び機械学習演算などの計算が実行される。図34は、単に例示を目的とした例示的な並列プロセッサを示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な実例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
少なくとも一実施例では、1つ又は複数のPPU3400は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU3400は、以下の非限定的な実例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
少なくとも一実施例では、PPU3400は、限定することなく、入力/出力(「I/O」)ユニット3406、フロント・エンド・ユニット3410、スケジューラ・ユニット3412、ワーク分配ユニット3414、ハブ3416、クロスバー(「Xbar」:crossbar)3420、1つ又は複数の汎用処理クラスタ(「GPC」:general processing cluster)3418、及び1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)3422を含む。少なくとも一実施例では、PPU3400は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)3408を介してホスト・プロセッサ又は他のPPU3400に接続される。少なくとも一実施例では、PPU3400は、相互接続3402を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、PPU3400は、1つ又は複数のメモリ・デバイス(「メモリ」)3404を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス3404は、限定することなく、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも一実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成されても、且つ/又は構成可能であってもよい。
少なくとも一実施例では、高速GPU相互接続3408は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、拡張縮小するためにシステムによって使用され、1つ又は複数の中央処理装置(「CPU」)と組み合わされた1つ又は複数のPPU3400を含み、PPU3400とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも一実施例では、データ及び/又はコマンドは、高速GPU相互接続3408により、ハブ3416を介して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び図34に明示されていないこともある他の構成要素などのPPU3400の別のユニットに/から送信される。
少なくとも一実施例では、I/Oユニット3406は、システム・バス3402を介してホスト・プロセッサ(図34には示さず)から通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも一実施例では、I/Oユニット3406は、システム・バス3402を介して直接、又は1つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、I/Oユニット3406は、システム・バス3402を介してPPU3400のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、I/Oユニット3406は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)インターフェースを実装して、PCIeバスを介して通信できるようにする。少なくとも一実施例では、I/Oユニット3406は、外部デバイスと通信するためのインターフェースを実装する。
少なくとも一実施例では、I/Oユニット3406は、システム・バス3402を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、PPU3400に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、I/Oユニット3406は、デコードされたコマンドを、コマンドによって指定されるPPU3400の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット3410に送信され、且つ/又はハブ3416、若しくは(図34には明示していない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのPPU3400の他のユニットに送信される。少なくとも一実施例では、I/Oユニット3406はPPU3400の様々な論理ユニット間で、通信をルーティングするように構成される。
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをPPU3400に提供して処理できるようにするバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとPPU3400の両方がアクセス(たとえば、書込み/読取り)可能なメモリ内の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット3406によってシステム・バス3402を介して送信されるメモリ要求を介して、システム・バス3402に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点を指すポインタをPPU3400に送信し、それによりフロント・エンド・ユニット3410は、1つ又は複数のコマンド・ストリームを指すポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU3400の様々なユニットに転送する。
少なくとも一実施例では、フロント・エンド・ユニット3410は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC3418を構成するスケジューラ・ユニット3412に結合される。少なくとも一実施例では、スケジューラ・ユニット3412は、スケジューラ・ユニット3412によって管理される様々タスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのGPC3418にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット3412は、GPC3418のうちの1つ又は複数において、複数のタスクの実行を管理する。
少なくとも一実施例では、スケジューラ・ユニット3412は、GPC3418で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット3414に結合される。少なくとも一実施例では、ワーク分配ユニット3414は、スケジューラ・ユニット3412から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット3414は、GPC3418のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のGPC3418によって処理されるように割り当てられたタスクを含むいくつかのスロット(たとえば、32スロット)を備え、アクティブ・タスク・プールは、GPC3418によりアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4スロット)を備え、それにより、GPC3418のうちの1つがタスクの実行を完了すると、GPC3418のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクのうちの1つが選択され、GPC3418で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがGPC3418上でアイドルである場合には、アクティブ・タスクがGPC3418から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、GPC3418で実行されるようにスケジューリングされる。
少なくとも一実施例では、ワーク分配ユニット3414は、Xバー3420を介して1つ又は複数のGPC3418と通信する。少なくとも一実施例では、Xバー3420は、PPU3400のユニットのうちの多くを、PPU3400の別のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット3414を特定のGPC3418に結合するように構成されることが可能である。少なくとも一実施例では、PPU3400の1つ又は複数の他のユニットも、ハブ3416を介してXバー3420に接続されてもよい。
少なくとも一実施例では、タスクはスケジューラ・ユニット3412によって管理され、ワーク分配ユニット3414によってGPC3418のうちの1つにディスパッチされる。GPC3418は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、GPC3418内の他のタスクによって消費されてもよく、Xバー3420を介して異なるGPC3418にルーティングされてもよく、又はメモリ3404に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット3422を介してメモリ3404に書き込むことができ、パーティション・ユニット3422は、メモリ3404への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも一実施例では、結果を、高速GPU相互接続3408を介して別のPPU3404又はCPUに送信することができる。少なくとも一実施例では、PPU3400は、PPU3400に結合された別々の個別メモリ・デバイス3404の数に等しいU個のパーティション・ユニット3422を、限定することなく含む。少なくとも一実施例では、パーティション・ユニット3422は、図36と併せて本明細書でさらに詳細に説明される。
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU3400で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(API)を実装している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU3400によって同時に実行され、PPU3400は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU3400によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU3400によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図36と併せて少なくとも一実施例によりさらに詳細に説明される。
少なくとも一実施例では、物理層(PHY)ライブラリ116によって実装された1つ又は複数のソフトウェア関数を実行するために、スレッド及び連動スレッドが使用可能である。
図35は、少なくとも一実施例による汎用処理クラスタ(「GPC」)3500を示す。少なくとも一実施例では、GPC3500は、図34のGPC3418である。少なくとも一実施例では、各GPC3500は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC3500は、限定することなく、パイプライン・マネージャ3502、プレ・ラスタ演算ユニット(「PROP」:pre-raster operations unit)3504、ラスタ・エンジン3508、ワーク分配クロスバー(「WDX」:work distribution crossbar)3516、メモリ管理ユニット(「MMU」)3518、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Clusters)3506、及びパーツの任意の好適な組合せを含む。
少なくとも一実施例では、GPC3500の動作は、パイプライン・マネージャ3502によって制御される。少なくとも一実施例では、パイプライン・マネージャ3502は、GPC3500に配分されたタスクを処理するために1つ又は複数のDPC3506の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ3502は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、1つ又は複数のDPC3506のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC3506は、プログラム可能なストリーミング・マルチプロセッサ(「SM」:streaming multi-processor)3514で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ3502は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、GPC3500内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、PROP3504の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン3508にルーティングされてもよく、他のパケットは、プリミティブ・エンジン3512又はSM3514によって処理されるようにDPC3506にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ3502は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、DPC3506のうちの少なくとも1つを構成する。
少なくとも一実施例では、PROPユニット3504は、少なくとも一実施例では、ラスタ・エンジン3508及びDPC3506によって生成されたデータを、図34と併せて上でより詳細に説明したパーティション・ユニット3422のラスタ動作(ROP)ユニットにルーティングするように構成される。少なくとも一実施例では、PROPユニット3504は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン3508は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン3508は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報(たとえば、タイルのx、yカバレッジ・マスク)が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでzテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を通過したフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン3508の出力は、DPC3506内に実装されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
少なくとも一実施例では、GPC3500に含まれる各DPC3506は、限定することなく、Mパイプ・コントローラ(「MPC」:M-Pipe Controller)3510、プリミティブ・エンジン3512、1つ又は複数のSM3514、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、MPC3510は、DPC3506の動作を制御して、パイプライン・マネージャ3502から受信したパケットを、DPC3506内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン3512にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM3514に送信されてもよい。
少なくとも一実施例では、SM3514は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、SM3514はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(SIMD)アーキテクチャを実装し、ここでスレッドのグループ(ワープ)内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが同じ命令を実行する。少なくとも一実施例では、SM3514は、単一命令複数スレッド(SIMT)アーキテクチャを実装し、ここで、スレッド・グループの各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、同じ命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。SM3514の少なくとも一実施例は、本明細書でさらに詳細に説明される。
少なくとも一実施例では、MMU3518は、GPC3500とメモリ・パーティション・ユニット(たとえば、図34のパーティション・ユニット3422)との間でインターフェースを提供し、MMU3518は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、MMU3518は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
図36は、少なくとも一実施例による並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット3600を示す。少なくとも一実施例では、パーティション・ユニット3600は、限定することなく、ラスタ演算(「ROP」)ユニット3602、レベル2(「L2」)キャッシュ3604、メモリ・インターフェース3606、及びそれらの任意の好適な組合せを含む。少なくとも一実施例では、メモリ・インターフェース3606はメモリに結合される。少なくとも一実施例では、メモリ・インターフェース3606は、高速データ転送のために、32、64、128、1024ビットのデータ・バスなどを実装してもよい。少なくとも一実施例では、PPUは、パーティション・ユニット3600の対当たりにメモリ・インターフェース3606を1つの、U個のメモリ・インターフェース3606を組み込んでおり、ここでパーティション・ユニット3600の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
少なくとも一実施例では、メモリ・インターフェース3606は、高帯域幅メモリの第2世代(「HBM2」:high bandwidth memory second generation)メモリ・インターフェースを実装し、YはUの半分に等しい。少なくとも一実施例では、HBM2メモリ・スタックは、PPUと同じ物理パッケージに位置付けられて、従来のGDDR5 SDRAMシステムに比べて実質的な電力と面積の節約を実現する。少なくとも一実施例では、各HBM2スタックは、限定することなく4個のメモリ・ダイを含み、Yは4に等しく、各HBM2スタックは、1つのダイ当たりに2つの128ビット・チャネルの合計8チャネル、及び1024ビットのデータ・バス幅を含む。少なくとも一実施例では、メモリは、1ビット・エラー訂正2ビット・エラー検出(「SECDED」:Single-Error Correcting Double-Error Detecting)エラー訂正コード(「ECC」)をサポートしてデータを保護する。ECCは、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供する。
少なくとも一実施例では、PPUは、マルチ・レベルのメモリ階層を実装する。少なくとも一実施例では、メモリ・パーティション・ユニット3600は、統合されたメモリをサポートして、中央処理装置(「CPU」)及びPPUメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにPPUがアクセスする頻度を追跡して、より頻繁にページにアクセスしているPPUの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速GPU相互接続3408は、アドレス・トランスレーション・サービスをサポートして、PPUが直接CPUのページ・テーブルにアクセスできるようにし、PPUによるCPUメモリへのフル・アクセスを実現する。
少なくとも一実施例では、コピー・エンジンは、複数のPPU間、又はPPUとCPUの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット3600がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて(たとえば、ページ移動不可能にされて)、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
少なくとも一実施例によれば、図34のメモリ3404又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット3600によってフェッチされ、L2キャッシュ3604に記憶され、このL2キャッシュは、オン・チップに位置付けられ、様々GPC間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット3600は、対応するメモリ・デバイスに関連付けられたL2キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実装される。少なくとも一実施例では、SM3514のそれぞれは、レベル1(「L1」)キャッシュを実装してもよく、ここでL1キャッシュは、特定のSM3514専用のプライベート・メモリであり、L2キャッシュ3604からのデータは、SM3514の機能ユニットで処理するために、L1キャッシュのそれぞれにフェッチされ記憶される。少なくとも一実施例では、L2キャッシュ3604は、メモリ・インターフェース3606及びXバー3420に結合される。
少なくとも一実施例では、ROPユニット3602は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ROPユニット3602は、少なくとも一実施例では、ラスタ・エンジン3508と併せて深度テストを実装して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン3508の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度と比べてテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ROPユニット3602は、深度バッファを更新し、深度テストの結果をラスタ・エンジン3508に送信する。パーティション・ユニット3600の数はGPCの数とは異なってもよく、したがって、各ROPユニット3602は、少なくとも一実施例では、GPCのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ROPユニット3602は、異なるGPCから受信したパケットを追跡し、ROPユニット3602によって生成された結果を、Xバー3420を通してどれにルーティングするかを判定する。
図37は、少なくとも一実施例による、ストリーミング・マルチプロセッサ(「SM」)3700を示す。少なくとも一実施例では、SM3700は、図35のSMである。少なくとも一実施例では、SM3700は、限定することなく、命令キャッシュ3702、1つ又は複数のスケジューラ・ユニット3704、レジスタ・ファイル3708、1つ又は複数の処理コア(「コア」)3710、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)3712、1つ又は複数のロード/ストア・ユニット(「LSU」load/store unit)3714、相互接続ネットワーク3716、共有メモリ/レベル1(「L1」)キャッシュ3718、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)で実行するためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に配分され、タスクがシェーダ・プログラムに関連する場合には、タスクはSM3700のうちの1つに配分される。少なくとも一実施例では、スケジューラ・ユニット3704は、ワーク分配ユニットからタスクを受信し、SM3700に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット3704は、並列スレッドのワープとして実行できるようにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも1つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット3704は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア3710、SFU3712、及びLSU3714)にディスパッチする。
少なくとも一実施例では、連動グループとは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動APIは、並列アルゴリズムを実行できるようにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック(すなわち、単一スレッドと同じ大きさ)の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。少なくとも一実施例では、プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ-コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
少なくとも一実施例では、ディスパッチ・ユニット3706は、機能ユニットの1つ又は複数に命令を送信するように構成され、スケジューラ・ユニット3704は、同じワープからの2つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする2つのディスパッチ・ユニット3706を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット3704は、単一のディスパッチ・ユニット3706又は追加のディスパッチ・ユニット3706を含む。
少なくとも一実施例では、各SM3700は、少なくとも一実施例では、SM3700の機能ユニットにレジスタのセットを提供するレジスタ・ファイル3708を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル3708は、各機能ユニットがレジスタ・ファイル3708の専用部分に配分されるように、それぞれの機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル3708は、SM3700によって実行されている異なるワープ間で分割され、レジスタ・ファイル3708は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各SM3700は、限定することなく、複数のL処理コア3710を含む。少なくとも一実施例では、各SM3700は、限定することなく、多数の(たとえば、128個以上の)個別の処理コア3710を含む。少なくとも一実施例では、各処理コア3710は、少なくとも一実施例では、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのIEEE754-2008規格を実装する。少なくとも一実施例では、処理コア3710は、限定することなく、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、1つ又は複数のテンソル・コアは、処理コア3710に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、4×4の行列で動作し、行列の積和演算(matrix multiply and accumulate operation)D=A×B+Cを実行し、ここでA、B、C、及びDは4×4の行列である。
少なくとも一実施例では、行列乗算の入力A及びBは、16ビットの浮動小数点行列であり、和の行列C及びDは、16ビットの浮動小数点又は32ビットの浮動小数点行列である。少なくとも一実施例では、テンソル・コアは、32ビットの浮動小数点の和を有する16ビットの浮動小数点入力データで動作する。少なくとも一実施例では、16ビットの浮動小数点乗算は、64個の演算を使用し、結果的に完全精度の積をもたらし、次いでその積が、4×4×4の行列乗算の他の中間積との32ビット浮動小数点加算を使用して加算される。テンソル・コアを使用して、少なくとも一実施例では、これらの小さい要素から構築される、はるかに大きい2次元又はさらに高次元の行列演算が実行される。少なくとも一実施例では、CUDA9C++APIなどのAPIは、CUDA-C++プログラムからテンソル・コアを効率的に使用するために、特殊な行列ロード演算、行列積和演算、及び行列ストア演算を公開している。少なくとも一実施例では、CUDAレベルにおいて、ワープ・レベル・インターフェースは、ワープの32スレッドすべてにわたる16×16のサイズの行列を仮定している。
少なくとも一実施例では、各SM3700は、特殊関数(たとえば、属性評価、逆数平方根など)を実行するM個のSFU3712を、限定することなく含む。少なくとも一実施例では、SFU3712は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、SFU3712は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM3700により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ/レベル1キャッシュ3718に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ(たとえば、詳細さのレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも一実施例では、各SM3700は、限定することなく、2つのテクスチャ・ユニットを含む。
各SM3700は、少なくとも一実施例では、共有メモリ/L1キャッシュ3718とレジスタ・ファイル3708の間でロード及びストア動作を実装するN個のLSU3714を、限定することなく含む。各SM3700は、少なくとも一実施例では、機能ユニットのそれぞれをレジスタ・ファイル3708に接続し、LSU3714をレジスタ・ファイル3708に接続する相互接続ネットワーク3716と、共有メモリ/L1キャッシュ3718を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク3716はクロスバーであり、このクロスバーは、いずれかの機能ユニットをレジスタ・ファイル3708のいずれかのレジスタに接続し、LSU3714をレジスタ・ファイル3708と共有メモリ/L1キャッシュ3718のメモリ・ロケーションとに接続するように構成されてもよい。
少なくとも一実施例では、共有メモリ/L1キャッシュ3718は、少なくとも一実施例では、SM3700とプリミティブ・エンジンの間、及びSM3700のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ/L1キャッシュ3718は、限定することなく、128KBのストレージ容量を備え、SM3700からパーティション・ユニットに向かう経路にある。少なくとも一実施例では、共有メモリ/L1キャッシュ3718は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ/L1キャッシュ3718、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストレージである。
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ/L1キャッシュ3718内に統合することによって、共有メモリ/L1キャッシュ3718が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接DPCに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドIDを使用して同じプログラムを実行し、SM3700を使用して、プログラムを実行し計算を行い、共有メモリ/L1キャッシュ3718を使用してスレッド間で通信し、LSU3714を使用して、共有メモリ/L1キャッシュ3718及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、SM3700は、DPC上で新規のワークを起動するためにスケジューラ・ユニット3704が使用できるコマンドを書き込む。
少なくとも一実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイスなどに含まれ、又はこれらに結合される。少なくとも一実施例では、PPUは、単一の半導体基板に具体化される。少なくとも一実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」)CPU、メモリ管理ユニット(「MMU」)、デジタル-アナログ変換器(「DAC」:digital-to-analog converter)などの1つ又は複数の他のデバイスとともにシステム・オン・チップ(「SoC」)に含まれる。
少なくとも一実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィックス・カードに含まれてもよい。少なくとも一実施例では、グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースをとるように構成されてもよい。少なくとも一実施例では、PPUは、マザーボードのチップセットに含まれる統合グラフィックス・プロセッシング・ユニット(「iGPU」:integrated graphics processing unit)であってもよい。
少なくとも一実施例では、物理層(PHY)ライブラリ116によって実装された1つ又は複数のソフトウェア関数を実行するために、PPUが使用可能である。
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実装形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
少なくとも一実施例では、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ1704及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム1700が実行できるようにする。少なくとも一実施例では、メモリ1704、ストレージ、及び/又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU1702、並列処理システム1712、CPU1702と並列処理システム1712の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び集積回路の任意の好適な組合せの文脈において実装される。
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実装される。少なくとも一実施例では、コンピュータ・システム1700は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。
少なくとも一実施例では、並列処理システム1712は、限定することなく、複数の並列処理ユニット(「PPU」)1714、及び関連メモリ1716を含む。少なくとも一実施例では、PPU1714は、相互接続1718及びスイッチ1720又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム1712は、計算タスクをPPU1714にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU1714の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU1714に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU1714の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU1714にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
ネットワーク
図38は、少なくとも一実施例による、5Gワイヤレス通信ネットワーク内でデータを伝送するためのネットワーク3800を示す図である。少なくとも一実施例では、ネットワーク3800は、カバレッジ・エリア3804を有する基地局3806と、複数のモバイル・デバイス3808と、バックホール・ネットワーク3802とを含む。少なくとも一実施例では、図示するように、基地局3806は、モバイル・デバイス3808とのアップリンク及び/又はダウンリンク接続を確立し、その接続は、モバイル・デバイス3808から基地局3806へ、又はその逆でデータを運ぶ役割を果たす。少なくとも一実施例では、アップリンク/ダウンリンク接続上で運ばれるデータは、モバイル・デバイス3808間で伝送されるデータとともに、バックホール・ネットワーク3802を使用してリモート・エンド(図示せず)と通信されるデータを含み得る。少なくとも一実施例では、「基地局」という用語は、拡張基地局(eNB)、マクロ・セル、フェムト・セル、Wi-Fiアクセス・ポイント(AP)、又は他のワイヤレス対応デバイスなど、ネットワークにワイヤレス・アクセスを提供するように構成された任意のコンポーネント(又はコンポーネント群)を指す。少なくとも一実施例では、基地局は、たとえば、ロング・ターム・エボリューション(LTE)、LTE-advanced(LTE-A)、高速パケット・アクセス(HSPA:High Speed packet Access)、Wi-Fi802.11a/b/g/n/acなどの1つ又は複数のワイヤレス通信プロトコルにしたがってワイヤレス・アクセスを提供し得る。少なくとも一実施例では、「モバイル・デバイス」という用語は、ユーザ機器(UE:user equipment)、移動局(STA:mobile station)、及び他のワイヤレス対応デバイスなど、基地局とのワイヤレス接続を確立できる任意のコンポーネント(又はコンポーネント群)を指す。いくつかの実施例において、ネットワーク3800は、中継器、低電力ノードなどの様々な他のワイヤレス・デバイスを備え得る。
少なくとも一実施例では、「モバイル・デバイス」は、第5世代(5G)新無線(NR)ネットワークにおけるユーザ機器(UE)である。少なくとも一実施例では、物理層(PHY)ライブラリ116は、1つ又は複数の「モバイル・デバイス」から受信された情報を処理する動作を実施する。
図39は、少なくとも一実施例による、5Gワイヤレス・ネットワークのためのネットワーク・アーキテクチャ3900を示す図である。少なくとも一実施例では、図示のように、ネットワーク・アーキテクチャ3900は、無線アクセス・ネットワーク(RAN:radio acceess network)3904、コア・ネットワークとも呼ばれ得る進化型パケット・コア(EPC:evolved packet core)3902、及びRAN3904へのアクセスを試みるUE3908のホーム・ネットワーク3916を含む。少なくとも一実施例では、RAN3904及びEPC3902は、サービング・ワイヤレス・ネットワークを形成する。少なくとも一実施例では、RAN3904は基地局3906を含み、EPC3902はモビリティ管理エンティティ(MME:mobility management entity)3912、サービング・ゲートウェイ(SGW)3910、及びパケット・データ・ネットワーク(PDN)ゲートウェイ(PGW)3914を含む。少なくとも一実施例では、ホーム・ネットワーク3916は、アプリケーション・サーバ3918と、ホーム加入者サーバ(HSS:home subscriber server)3920とを含む。少なくとも一実施例では、HSS3920は、ホーム・ネットワーク3916、EPC3902、及び/又はそれらの変形の一部でもあり得る。
少なくとも一実施例では、MME3912がNASシグナリングのための暗号化/完全性保護のためのネットワークにおける終端点であり、セキュリティ鍵管理を扱う。少なくとも一実施例では、「MME」という用語は4G LTEネットワークで使用され、5G LTEネットワークが、同様の機能を実行するセキュリティ・アンカー・ノード(SEAN)又はセキュリティ・アクセス機能(SEAF:Security Access Function)を含んでもよいことを理解されたい。少なくとも一実施例では、「MME」、「SEAN」及び「SEAF」という用語は、交換可能に使用され得る。少なくとも一実施例では、MME3912は、LTEと2G/3Gアクセス・ネットワークとの間のモビリティのための制御プレーン機能とともに、ローミングUEのホーム・ネットワークへのインターフェースを更に提供する。少なくとも一実施例では、SGW3910は、ハンドオーバ中のユーザ・プレーンのためのモビリティ・アンカーとして動作しつつ、ユーザ・データ・パケットをルーティング及び転送する。PGW3914は、UEのためのトラフィックの出口点及び入口点となることにより、UEから外部パケット・データ・ネットワークへの接続を提供する。少なくとも一実施例では、HSS3920は、ユーザ関連情報及び加入関連情報を含む中央データベースである。少なくとも一実施例では、アプリケーション・サーバ3918は、ネットワーク・アーキテクチャ3900によって利用及び通信し得る様々なアプリケーションに関するユーザ関連情報を含む中央データベースである。
図40は、少なくとも一実施例による、LTE及び5Gの原理にしたがって動作するモバイル電気通信ネットワーク/システムの何らかの基本的な機能性を示す図である。少なくとも一実施例では、モバイル電気通信システムは、コア・ネットワーク4002に接続された基地局4014を備えるインフラストラクチャ機器を備え、インフラストラクチャ機器は、通信技術の知識のある当業者にとって理解され得る従来の構成にしたがって動作する。少なくとも一実施例では、インフラストラクチャ機器4014は、たとえば、基地局、ネットワーク要素、拡張NodeB(eNodeB)、又は調整エンティティとも呼ばれる場合があり、ワイヤレス・アクセス・インターフェースを、点線4004で表されたカバレッジ・エリア又はセル内の1つ又は複数の通信デバイスに提供し、これは無線アクセス・ネットワークと呼ばれる場合がある。少なくとも一実施例では、1つ又は複数のモバイル通信デバイス4006は、ワイヤレス・アクセス・インターフェースを使用したデータを表す信号の送信及び受信によってデータを伝送し得る。少なくとも一実施例では、コア・ネットワーク4002は、ネットワーク・エンティティによってサービス提供される通信デバイスのための認証、モビリティ管理、課金などを含む機能性も提供し得る。
少なくとも一実施例では、図40のモバイル通信デバイスは、通信端末、ユーザ機器(UE)、端末装置などとも呼ばれる場合があり、ネットワーク・エンティティによって同一又は異なるカバレッジ・エリアによりサービス提供される1つ又は複数の他の通信デバイスと通信するように構成される。少なくとも一実施例では、これらの通信は、双方向通信リンクを介してワイヤレス・アクセス・インターフェースを使用してデータを表す信号を送信及び受信することによって実行され得る。
少なくとも一実施例では、図40に示すように、ワイヤレス・アクセス・インターフェースを介して1つ又は複数の通信デバイス又はUE4006へ信号を送信するための送信機4012と、カバレッジ・エリア4004内の1つ又は複数のUEから信号を受信する受信機4010とを備えるeNodeB4014aのうちの1つがより詳細に示される。少なくとも一実施例では、コントローラ4008は、ワイヤレス・アクセス・インターフェースを介して信号を送信及び受信するように送信機4012及び受信機4010を制御する。少なくとも一実施例では、コントローラ4008は、ワイヤレス・アクセス・インターフェースの通信リソース要素の配分を制御する機能を実行することができ、いくつかの実例で、アップリンク及びダウンリンクの両方のためにワイヤレス・アクセス・インターフェースを介する送信をスケジューリングするスケジューラを備え得る。
少なくとも一実施例では、ワイヤレス・アクセス・インターフェースのアップリンク上でeNodeB4014へ信号を送信するための送信機4020と、ワイヤレス・アクセス・インターフェースを介してダウンリンク上でeNodeB4014によって送信された信号を受信するための受信機4018とを備える実例のUE4006aがより詳細に示される。少なくとも一実施例では、送信機4020及び受信機4018は、コントローラ4016によって制御される。
少なくとも一実施例では、物理層(PHY)ライブラリ116は、1つ又は複数のUE4006aから受信された情報を処理する1つ又は複数の関数を実装する。
図41は、少なくとも一実施例による、5Gネットワーク・アーキテクチャの一部であり得る無線アクセス・ネットワーク4100を示す図である。少なくとも一実施例では、無線アクセス・ネットワーク4100は、1つのアクセス・ポイント又は基地局から地理的エリアにわたってブロードキャストされた識別情報に基づいてユーザ機器(UE)によって一意に識別され得る多数のセルラー領域(セル)に分割される地理的領域をカバーする。少なくとも一実施例では、マクロ・セル4140、4128、及び4116、並びにスモール・セル4130は、1つ又は複数のセクタを含み得る。少なくとも一実施例では、セクタはセルのサブエリアであり、1つのセル内の全セクタは、同一の基地局によってサービス提供される。少なくとも一実施例では、そのセクタに属する単一の論理的識別情報は、セクタ内の無線リンクを特定できる。少なくとも一実施例では、セル内の複数のセクタは、セルの一部においてUEとの通信を担う各アンテナとともにアンテナのグループによって形成され得る。
少なくとも一実施例では、各セルは基地局(BS)によってサービス提供される。少なくとも一実施例では、基地局は、UEと1つ又は複数のセルにおける無線送受信を担う無線アクセス・ネットワークのネットワーク要素である。少なくとも一実施例では、基地局は、ベース・トランシーバ基地局(BTS:base transceiver station)、無線基地局、無線トランシーバ、トランシーバ機能、基本サービス・セット(BSS:basic service set)、拡張サービス・セット(ESS:extended service set)、アクセス・ポイント(AP)、NodeB(NB)、eNodeB(eNB)、gNodeB(gNB)、又はいくつかの他の好適な用語でも呼ばれ得る。少なくとも一実施例では、基地局は、ネットワークのバックホール部分との通信のためにバックホール・インターフェースを備え得る。少なくとも一実施例では、基地局は、集積アンテナを有し、又はフィーダ・ケーブルによってアンテナ又はリモート・ラジオ・ヘッド(RRH)に接続される。
少なくとも一実施例では、バックホールは、基地局とコア・ネットワークとの間のリンクを提供することができ、いくつかの実例で、バックホールは、それぞれの基地局間の相互接続を提供できる。少なくとも一実施例では、コア・ネットワークは、無線アクセス・ネットワークで使用される無線アクセス技術から一般的に独立したワイヤレス通信システムの一部である。少なくとも一実施例では、任意の好適な転送ネットワークを使用する直接物理接続、仮想ネットワークなどの様々な種類のバックホール・インターフェースが用いられ得る。少なくとも一実施例では、いくつかの基地局は、統合されたアクセスとバックホール(IAB:integrated access and backhaul)ノードとして構成されることが可能であり、ここで、ワイヤレス周波数帯が、アクセス・リンク(すなわち、UEとのワイヤレス・リンク)のため、及びワイヤレス自己バックホールと呼ばれる場合もあるバックホール・リンクのための両方で使用され得る。少なくとも一実施例では、ワイヤレス自己バックホールによって、基地局とUEとの間の通信のために利用されるワイヤレス周波数帯はバックホール通信のために活用され得、それぞれの新規基地局の導入には、それ自体のハード・ワイヤードなバックホール接続が準備される必要があることと比較して、高密度スモール・セル・ネットワークの高速で容易な導入を可能とする。
少なくとも一実施例では、高電力基地局4136及び4120が、セル4140及び4128に示され、セル4116においてリモート・ラジオ・ヘッド(RRH)4112を制御する高電力基地局4110が示される。少なくとも一実施例では、セル4140、4128、及び4116は、大規模セル又はマクロ・セルと呼ばれ得る。少なくとも一実施例では、低電力基地局4134は、1つ又は複数のマクロ・セルと重なり得る小セル4130(たとえばマイクロ・セル、ピコ・セル、フェムト・セル、ホーム基地局、ホームNodeB、ホームeNodeBなど)に示され、小セル又は小規模セルと呼ばれ得る。少なくとも一実施例では、セルの規模設定は、システム設計とともに構成要素の制約にしたがって行われることが可能である。少なくとも一実施例では、中継ノードが、所与のセルの規模又はカバレッジ・エリアを拡大するために導入され得る。少なくとも一実施例では、無線アクセス・ネットワーク4100は、任意の数のワイヤレス基地局及びセルを含み得る。少なくとも一実施例では、基地局4136、4120、4110、4134は、任意の数のモバイル装置のためのコア・ネットワークに対してワイヤレス・アクセス・ポイントを提供する。
少なくとも一実施例では、クアッドコプタ又はドローン4142が基地局として機能するように構成され得る。少なくとも一実施例では、セルは必ずしも固定であるとは限らず、セルの地理的エリアは、クアッドコプタ4142などのモバイル基地局のロケーションにしたがって移動し得る。
少なくとも一実施例では、無線アクセス・ネットワーク4100は、複数のモバイル装置のためのワイヤレス通信をサポートする。少なくとも一実施例では、モバイル装置は、一般的にユーザ機器(UE)と呼ばれるが、移動局(MS)、加入者局、モバイル・ユニット、加入者ユニット、ワイヤレス・ユニット、リモート・ユニット、モバイル・デバイス、ワイヤレス・デバイス、ワイヤレス通信デバイス、リモート・デバイス、加入者移動局、アクセス端末(AT:access terminal)、モバイル端末、ワイヤレス端末、リモート端末、ハンドセット、端末、ユーザ・エージェント、モバイル・クライアント、クライアント、又は何らかの他の好適な用語でも呼ばれ得る。少なくとも一実施例では、UEは、ユーザにネットワーク・サービスへのアクセスを提供する装置でもよい。
少なくとも一実施例では、「モバイル」装置は、必ずしも動く機能を有する必要はなく、静止していてもよい。少なくとも一実施例では、モバイル装置又はモバイル・デバイスは、広義で、多種多様なデバイス及び技術を指す。少なくとも一実施例では、モバイル装置は、たとえば「モノのインターネット」(IoT:Internet of Things)、自動車又は他の運搬用車両、リモートのセンサ又はアクチュエータ、ロボット又はロボット工学デバイス、衛星ラジオ、全地球測位システム(GPS:global positioning system)デバイス、物体追跡デバイス、ドローン、マルチコプタ、クアッドコプタ、遠隔制御デバイス、眼鏡、ウエアラブル・カメラ、仮想現実デバイス、スマート・ウォッチ、健康又はフィットネスのトラッカなどの消費者装置及び/又はウエアラブル・デバイス、デジタル・オーディオ・プレーヤー(たとえばMP3プレーヤー)、カメラ、ゲーム機器、家庭用オーディオ、ビデオ、及び/又はマルチメディア・デバイスなどのデジタル・ホーム・デバイス又はスマート・ホーム・デバイス、電気器具、自動販売機、インテリジェント照明、ホーム・セキュリティ・システム、スマート・メーター、セキュリティ・デバイス、ソーラー・パネル又はソーラー・アレイ、電力(たとえばスマート・グリッド)、照明、水などを制御する自治体インフラストラクチャのデバイス、産業オートメーション及び企業のデバイス、物流コントローラ、農機具、軍事防衛機器、車両、航空機、船舶、及び兵器類などに対応する携帯電話、セルラー(セル)フォン、スマート・フォン、セッション初期化プロトコル(SIP:session initiation protocol)フォン、ラップトップ、パーソナル・コンピュータ(PC)、ノートブック、ネットブック、スマートブック、タブレット、パーソナル・デジタル・アシスタント(PDA)、幅広い種類の組込型システムでもよい。少なくとも一実施例では、モバイル装置は、接続された医学的支援又は遠隔医療支援、すなわち遠隔地におけるヘルスケアへの接続を実現し得る。少なくとも一実施例では、遠隔医療デバイスは、遠隔医療監視デバイス及び遠隔医療管理デバイスを含むことができ、その通信は、たとえば重要サービス・データの転送のための優先化されたアクセス、及び/又は重要サービス・データの転送に対する適切なQoSに関して、他の種類の情報よりも優先的な治療又は優先化されたアクセスが与えられ得る。
少なくとも一実施例では、無線アクセス・ネットワーク4100のセルは、各セルの1つ又は複数のセクタと通信可能状態であり得るUEを含み得る。少なくとも一実施例では、UE4114及び4108は、RRH4112によって基地局4110と通信可能状態でもよく、UE4122及び4126は基地局4120と通信可能状態でもよく、UE4132は低電力基地局4134と通信可能状態でもよく、UE4138及び4118は基地局4136と通信可能状態でもよく、UE4144はモバイル基地局4142と通信可能状態でもよい。少なくとも一実施例では、それぞれの基地局4110、4120、4134、4136、及び4142は、それぞれのセルの全UEのコア・ネットワーク(図示せず)に対してアクセス・ポイントを提供するように構成されてもよく、基地局(たとえば基地局4136)から1つ又は複数のUE(たとえばUE4138及び4118)への送信はダウンリンク(DL)送信と呼ばれる場合がある一方、UE(たとえばUE4138)から基地局への送信はアップリンク(UL)送信と呼ばれる場合がある。少なくとも一実施例では、ダウンリンクは、ブロードキャスト・チャネル多重化と呼ばれ得るポイント・ツー・マルチポイント送信を指し得る。少なくとも一実施例では、アップリンクは、ポイント・ツー・ポイント送信を指し得る。
少なくとも一実施例では、モバイル・ネットワーク・ノードと呼ばれ得るクアッドコプタ4142は、基地局4136と通信することによって、セル4140内でUEとして機能するように構成され得る。少なくとも一実施例では、複数のUE(たとえばUE4122及び4126)は、ピア・ツー・ピア(P2P)又はサイドリンク信号4124を使用して互いに通信でき、これは基地局4120などの基地局をバイパスし得る。
少なくとも一実施例では、そのロケーションとは関係なく、UEが移動中に通信する機能は、モビリティと呼ばれる。少なくとも一実施例では、モビリティ管理エンティティ(MME:mobility management entity)は、UEと無線アクセス・ネットワークとの間の様々な物理チャネルを設定、維持及び解放する。少なくとも一実施例では、DLベースのモビリティ又はULベースのモビリティが、モビリティ及びハンドオーバ(すなわち、ある無線チャネルから別の無線チャネルへのUEの接続の転送)を可能にするために無線アクセス・ネットワーク4100によって利用され得る。少なくとも一実施例では、DLベースのモビリティのために構成されたネットワークにおけるUEは、サービング・セルからの信号の様々なパラメータとともに、近傍セル(neighboring cell)の様々なパラメータを監視することが可能で、それらのパラメータの品質に応じて、UEは、1つ又は複数の近傍セルとの通信を維持し得る。少なくとも一実施例では、近傍セルからの信号品質が所定の時間サービング・セルからの信号品質を上回った場合、又はUEがあるセルから別のセルへ移動した場合、UEは、サービング・セルから近傍(対象)セルへのハンドオフ又はハンドオーバを実行し得る。少なくとも一実施例では、UE4118(車両として図示されているが、任意の好適な形態のUEも使用可能である)は、サービング・セル4140などのセルに対応する地理的エリアから、近傍セル4116などの近傍セルに対応する地理的エリアに移動し得る。少なくとも一実施例では、UE4118は、近傍セル4116からの信号の強度又は品質が所定時間だけそのサービング・セル4140からの信号の強度又は品質を上回った時にその条件を示す報告メッセージをサービング基地局4136に送信し得る。少なくとも一実施例では、UE4118は、ハンドオーバ・コマンドを受信してもよく、セル4116へのハンドオーバが行われてもよい。
少なくとも一実施例では、各UEからのUL基準信号が、ULベースのモビリティがUE毎にサービング・セルを選択するように構成されたネットワークによって利用され得る。少なくとも一実施例では、基地局4136、4120、及び4110/4112は、統合同期信号(たとえば統合一次同期信号(PSS:Primary Synchronization signal)、統合二次同期信号(SSS:Secondary Synchronization Signal)及び統合物理ブロードキャスト・チャネル(PBCH:Physical Broadcast Channel))をブロードキャストし得る。少なくとも一実施例では、UE4138、4118、4122、4126、4114、及び4108は、統合同期信号を受信し、同期信号から搬送周波数及びスロット・タイミングを導出し、タイミングの導出に応答して、アップリンクのパイロット又は基準信号を送信し得る。少なくとも一実施例では、無線アクセス・ネットワーク4100内の2つ以上のセル(たとえば基地局4136及び4110/4112)は、UE(たとえばUE4118)によって送信されたアップリンク・パイロット信号を同時に受信し得る。少なくとも一実施例では、セルは、パイロット信号の強度を測定でき、無線アクセス・ネットワーク(たとえば基地局4136及び4110/4112のうちの1つ又は複数、並びに/若しくはコア・ネットワーク内の中央ノード)は、UE4118のためのサービング・セルを決定し得る。少なくとも一実施例では、UE4118が無線アクセス・ネットワーク4100を通って移動する時に、ネットワークは、UE4118によって送信されたアップリンク・パイロット信号の監視を継続し得る。少なくとも一実施例では、近傍セルによって測定されたパイロット信号の信号強度又は品質がサービング・セルによって測定された信号強度又は品質を上回った場合に、UE4118に通知して、又は通知せずに、ネットワーク4100は、UE4118をサービング・セルから近傍のセルへハンドオーバしてもよい。
少なくとも一実施例では、基地局4136、4120、及び4110/4112によって送信された同期信号は統合されてもよいが、特定のセルを特定しなくてもよく、むしろ、同一の周波数及び/又は同一のタイミングで動作している複数のセルのゾーンを特定してもよい。少なくとも一実施例では、5Gネットワーク又は他の次世代通信ネットワークにおけるゾーンは、アップリンク・ベースのモビリティのフレームワークを可能とし、UEとネットワークとの間で交換される必要があるモビリティ・メッセージの量が削減され得るため、UE及びネットワークの両方の効率を改善する。
少なくとも一実施例では、無線アクセス・ネットワーク4100におけるエア・インターフェースは、無許可周波数帯、許可周波数帯、又は共有周波数帯を利用し得る。少なくとも一実施例では、無許可周波数帯は、政府が付与したライセンスが不要な周波数帯の一部の共有使用を提供するが、無許可周波数帯にアクセスするためにいくつかの技術的規則の順守が、一般的に依然として必要である一方、一般的に、あらゆるオペレータ又はデバイスがアクセスし得る。少なくとも一実施例では、許可周波数帯は、一般的に政府規制機関からのライセンスを購入したモバイル・ネットワークのオペレータによって周波数帯の一部の排他的使用を提供する。少なくとも一実施例では、共有周波数帯は、許可周波数帯と無許可周波数帯との間に存在し、周波数帯にアクセスするために技術的規則又は制限が必要な場合があるが、周波数帯は、複数のオペレータ及び/又は複数のRATによって依然として共有され得る。少なくとも一実施例では、たとえば、許可周波数帯の一部に対するライセンスの保持者は、たとえばアクセスのための好適なライセンス保持者決定条件を用いて、他者とその周波数帯を共有するためにライセンス共有アクセス(LSA:licensed shared access)を提供し得る。
図42は、少なくとも一実施例による、複数の異なる種類のデバイスが使用される5Gモバイル通信システムの実例の図である。少なくとも一実施例では、図42に示すように、第1の基地局4218は、信号の送信が数キロメートルにわたる大規模セル又はマクロ・セルに対して提供され得る。しかしながら、少なくとも一実施例では、システムは、数百メートルの距離にわたって信号を送受信することによって、いわゆる「ピコ」セルを形成する第2のインフラストラクチャ機器4216による送信など、非常に小さいセルによる送信もサポートし得る。少なくとも一実施例では、第3のタイプのインフラストラクチャ機器4212は、数十メートルの距離にわたって信号を送受信することが可能であり、したがって、いわゆる「フェムト」セルを形成するために使用可能である。
少なくとも一実施例では、図42に更に示すように、異なるタイプの通信デバイスは、異なるタイプのインフラストラクチャ機器4212、4216、4218によって信号を送受信するために使用されることが可能であり、データの通信は、異なる通信パラメータを使用して異なるタイプのインフラストラクチャ機器にしたがって適応され得る。少なくとも一実施例では、従来通り、モバイル通信デバイスは、使用可能なネットワーク通信リソースによってモバイル通信ネットワークとデータの通信をするように構成され得る。少なくとも一実施例では、ワイヤレス・アクセス・システムは、スマート・フォン4206などのデバイスに対して最も高いデータ転送速度を提供するように構成される。少なくとも一実施例では、低電力機種の通信デバイスが非常に低電力、低帯域幅でデータを送受信し、低い複雑性を有し得る「モノのインターネット」が提供され得る。少なくとも一実施例では、そのような機種の通信デバイス4214の実例は、ピコ・セル4216によって通信し得る。少なくとも一実施例では、非常に高いデータ転送速度及び低モビリティは、たとえばピコ・セルによって通信している場合があるテレビジョン4204を用いた通信の特性であり得る。少なくとも一実施例では、非常に高いデータ転送速度及び低レイテンシは、仮想現実ヘッドセット4208によって必要とされる場合がある。少なくとも一実施例では、中継デバイス4210は、所与のセル又はネットワークのサイズ又はカバレッジ・エリアを拡大するために導入され得る。
少なくとも一実施例では、物理層(PHY)ライブラリ116は、図42によって図示されるネットワークにおいて情報を処理する1つ又は複数のソフトウェア関数を実装する。
図43は、少なくとも一実施例が使用され得る実例の上位システム4300を示す図である。少なくとも一実施例では、上位システム4300は、アプリケーション4302と、システム・ソフトウェア+ライブラリ4304と、フレームワーク・ソフトウェア4306と、データ・センタ・インフラストラクチャ+リソース・オーケストレータ4308とを含む。少なくとも一実施例では、上位システム4300は、クラウド・サービス、物理サービス、仮想サービス、ネットワーク・サービス、及び/又はそれらの変形として実装され得る。
少なくとも一実施例では、図43示すように、データ・センタ・インフラストラクチャ+リソース・オーケストレータ4308は、5G無線リソース・オーケストレータ4310と、GPUパケット処理及びI/O4312と、ノード・コンピューティング・リソース(「ノードC.R.」)4316(1)~4316(N)とを含んでもよく、ここで「N」は任意の正の整数を表す。少なくとも一実施例では、ノードC.R.4316(1)~4316(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサ(「GPU」)などを含む)他のプロセッサ、メモリ・デバイス(たとえばダイナミック読取り専用メモリ)、ストレージ・デバイス(たとえばソリッド・ステート又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールなどを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.4316(1)~4316(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
少なくとも一実施例では、5G無線リソース・オーケストレータ4310は、1つ又は複数のノードC.R.4316(1)~4316(N)及び/又は5Gネットワーク・アーキテクチャが含み得る他の様々な構成要素及びリソースを構成又は他のやり方で制御してもよい。少なくとも一実施例では、5G無線リソース・オーケストレータ4310は、上位システム4300用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、5G無線リソース・オーケストレータ4310は、ハードウェア、ソフトウェア、又はこれらの何らかの組み合わせを含んでもよい。少なくとも一実施例では、5G無線リソース・オーケストレータ4310は、5Gネットワーク・アーキテクチャの一部でもあり得る、様々な媒体アクセス制御副層、無線アクセス・ネットワーク、物理層又は副層、及び/又はそれらの変形を構成又は他のやり方で制御するために利用され得る。少なくとも一実施例では、5G無線リソース・オーケストレータ4310は、5Gネットワーク・アーキテクチャの一部として実行され得る、1つ又は複数のワークロードをサポートするグループ化済みコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを構成又は配分してもよい。
少なくとも一実施例では、GPUパケット処理及びI/O4312は、様々な入力及び出力とともに、上位システム4300によって実装され得る5Gネットワーク・アーキテクチャの一部として送信/受信され得るデータ・パケットなどのパケットを構成又は他のやり方で処理してもよい。少なくとも一実施例では、パケットは、ネットワークによって提供されるようにフォーマット化されたデータでもよく、通常、制御情報及びペイロード(すなわち、ユーザ・データ)に分割され得る。少なくとも一実施例では、パケットのタイプは、インターネット・プロトコル・バージョン4(IPv4)パケット、インターネット・プロトコル・バージョン6(IPv6)パケット、及びEthernet(登録商標)IIフレーム・パケットを含み得る。少なくとも一実施例では、データ・パケットの制御データは、データ完全性フィールドとセマンティック・フィールドとに分類され得る。少なくとも一実施例では、データ・パケットが受信され得るネットワーク接続は、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、仮想プライベート・ネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、ワイヤレス・ネットワーク、衛星ネットワーク、及びそれらの任意の組み合わせを含む。
少なくとも一実施例では、フレームワーク・ソフトウェア4306は、AIモデル・アーキテクチャ+訓練+ユース・ケース4322を含む。少なくとも一実施例では、AIモデル・アーキテクチャ+訓練+ユース・ケース4322は、1つ又は複数の実施例により、1つ又は複数の機械学習モデルを訓練し、又は1つ又は複数の機械学習モデルを使用して情報を予測又は推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、上位システム4300に関して上述されたソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャにしたがって重みパラメータを計算することによって訓練され得る。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、1つ又は複数の訓練技法によって計算された重みパラメータを使用することによって、上位システム4300に関して上述されたリソースを使用して情報を推論又は予測するために使用され得る。少なくとも一実施例では、フレームワーク・ソフトウェア4306は、システム・ソフトウェア+ライブラリ4304及びアプリケーション4302をサポートするためのフレームワークを含み得る。
少なくとも一実施例では、システム・ソフトウェア+ライブラリ4304又はアプリケーション4302はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク・ソフトウェア4306は、Apache Spark(商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種を含んでもよいが、これに限定されない。少なくとも一実施例では、システム・ソフトウェア+ライブラリ4304は、ノードC.R.4316(1)~4316(N)の少なくとも一部によって使用されるソフトウェアを含み得る。少なくとも一実施例では、1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
少なくとも一実施例では、PHY4318は、5G新無線(NR)物理層などの物理層であり得る、ワイヤレス技術の物理層とのインターフェースを提供するように構成されたシステム・ソフトウェア及びライブラリのセットである。少なくとも一実施例では、NR物理層は、柔軟でスケーラブルな設計を利用し、変調方式、波形構造、フレーム構造、基準信号、マルチアンテナ伝送及びチャネル符号化などの様々な構成要素及び技術を含み得る。
少なくとも一実施例では、NR物理層は、4位相偏移変調(QPSK:quadrature phase shift keying)、16直角位相振幅変調(QAM:quadrature amplitude modulation)、64QAM、及び256QAM変調フォーマットをサポートする。少なくとも一実施例では、異なるユーザ・エンティティ(UE)分類に対する異なる変調方式は、NR物理層にも含まれ得る。少なくとも一実施例では、NR物理層は、少なくとも52.6GHzまでのアップリンク(UL)及びダウンリンク(DL)の両方における、スケーラブルなヌメロロジー(サブキャリア間隔、サイクリック・プレフィックス)によるサイクリック・プレフィックス直交周波数分割多重方式(CP-OFDM:cyclic prefix orthogonal frequency division multiplexing)を利用し得る。少なくとも一実施例では、NR物理層は、単一の流れ転送を行う(すなわち、空間多重化を行わない)、カバレッジが限定されたシナリオのために、ULにおける離散フーリエ変換拡散直交周波数分割多重(DFT-SOFDM:discrete Fourier transform spread orthogonal frequency division multiplexing)をサポートし得る。
少なくとも一実施例では、NRフレームは、非常に低いレイテンシ、高速ハイブリッド自動再送要求(HARQ:fast hybrid automatic repeat request)受信通知、動的な時分割二重(TDD:time division duplex)、LTEとの共存、及び可変長の伝送(たとえば、超信頼性低レイテンシ通信(URLLC:ultra-reliable low-latency communication)を短時間、超高速モバイル通信(eMBB:enhanced mobile broadband)を長時間)を可能にする、時分割二重(TDD)伝送及び周波数分割二重(FDD:frequency division duplex)伝送、並びに許可及び無許可周波数帯の両方での動作をサポートする。少なくとも一実施例では、NRフレーム構造は、前方互換性を高め、異なる特徴間の相互作用を減らす3つの主要設計原理に従う。
少なくとも一実施例では、第1の原理は、伝送が自己完結型であり、スロットにおけるデータ及びビームにおけるデータが他のスロット及びビームへの依存なく、それ自体で復号可能な方式を指すことがある。少なくとも一実施例では、これは、データの復調のために必要な基準信号が所与のスロット及び所与のビームに含まれることを意味する。少なくとも一実施例では、第2の原理は、伝送が時間と周波数とにおいてよく限定され、その結果としてレガシーの伝送と並列な新規のタイプの伝送が組み込まれ得る方式となることである。少なくとも一実施例では、第3の原理は、スロット及び異なる伝送方向にわたる静的及び/又は厳しいタイミング関係を回避することである。少なくとも一実施例では、第3の原理の使用は、事前に定義された再送時刻の代わりに、非同期高速ハイブリッド自動再送要求(HARQ)の利用を必要とする。
少なくとも一実施例では、NRフレーム構造は、更に、DLデータの受信中に復号が実行される高速HARQ受信通知を可能とし、HARQ受信通知は、DL受信からUL送信への切り換え時の保護期間中にUEによって準備される。少なくとも一実施例では、低レイテンシを得るために、スロット(又は、スロット集約の場合はスロットのセット)がスロット(又はスロットのセット)の先頭部分において制御信号及び基準信号を用いてフロント・ローディングされる(front-loaded)。
少なくとも一実施例では、NRは、ネットワークのエネルギー効率を高め、順互換性を確実にするために常時伝送を最小限とするウルトラリーン設計を有する。少なくとも一実施例では、NRにおける基準信号は、必要な場合のみ送信される。少なくとも一実施例では、4つの主要基準信号が、復調基準信号(DMRS:demodulation reference signal)、位相追跡基準信号(PTRS:phase-tracking reference signal)、サウンディング基準信号(SRS:sounding reference signal)、及びチャネル状態情報基準信号(CSI-RS:channel-state information reference signal)である。
少なくとも一実施例では、DMRSは、復調のための無線チャネルを推定するために使用される。少なくとも一実施例では、DMRSは、UE特化型であり、DLとULとの両方において、ビームフォーミングされ、スケジューリング済みリソースに限定され、必要な時にのみ送信されることが可能である。少なくとも一実施例では、多層の多入力多出力(MIMO:multiple-input、multiple-output)伝送をサポートするために、各層に1つのポートとなるように、複数の直交DMRSポートがスケジューリングされることが可能である。少なくとも一実施例では、DMRS設計は、低レイテンシのアプリケーションをサポートするために早期復号要件を考慮に入れるため、基本的なDMRSパターンは、フロント・ローディングである。少なくとも一実施例では、低速シナリオの場合、DMRSは、時間領域において低密度を使用する。ただし、少なくとも一実施例では、高速シナリオの場合、無線チャネルにおける高速変化を追跡するように、DMRSの時間密度が高められる。
少なくとも一実施例では、発振器位相雑音の補償を可能とするために、PTRSがNRに組み込まれる。少なくとも一実施例では、通常、位相雑音は、発振器搬送周波数に応じて増加する。したがって、少なくとも一実施例では、位相雑音を軽減するために、PTRSが高搬送周波数(mmWaveなど)で利用され得る。少なくとも一実施例では、PTRSは、UE特化型であり、スケジューリング済リソース限定であり、ビームフォーミングされることが可能である。少なくとも一実施例では、PTRSは、発振器、搬送周波数、OFDMサブキャリア間隔、及び伝送のために使用される変調方式及び符号化方式の品質に応じて構成可能である。
少なくとも一実施例では、SRSは、主にスケジューリング及びリンク適応のためにチャネル状態情報(CSI:channel state information)測定を実行するため、ULにおいて送信される。少なくとも一実施例では、NRに対して、SRSは、マッシブMIMO及びULビーム管理のために、レシプロシティ(reciprocity)をベースとしたプリコーダ設計が更に利用される。少なくとも一実施例では、SRSは、異なる手順及びUE機能をサポートするためにモジュール式の柔軟な設計を有する。少なくとも一実施例では、チャネル状態情報基準信号(CSI-RS)に対するアプローチは、同様である。
少なくとも一実施例では、NRは、周波数帯のどの部分がその動作のために使用されるかに応じて、異なるアンテナのソリューション及び技法を用いる。少なくとも一実施例では、低周波数の場合、少数から中程度の数のアクティブなアンテナ(およそ32個の送信機チェーンまで)が想定され、FDD動作が一般的である。少なくとも一実施例では、CSIの取得には、DLにおけるCSI-RSの送信及びULにおけるCSI報告が必要である。少なくとも一実施例では、この周波数領域で限定された帯域幅を使用可能とするためには、マルチユーザMIMO(MU-MIMO)によって高い周波数帯効率が可能となる必要があり、LTEと比較して高い分解能のCSI報告によって実現される高次の空間多重化が必要である。
少なくとも一実施例では、高周波数のために、多数のアンテナが所与のアパーチャにおいて用いられることが可能であり、ビームフォーミング及びマルチユーザMIMO(MU-MIMO)のための能力を高める。少なくとも一実施例では、この場合、周波数帯配分は、TDDタイプのものであり、レシプロシティをベースとした動作が想定される。少なくとも一実施例では、明示的チャネル推定の形態を有する高分解能のCSIは、ULチャネル・サウンディングによって得られる。少なくとも一実施例では、そのような高分解能のCSIによって、高度なプリコーディング・アルゴリズムが基地局(BS)で用いられることが可能となる。少なくとも一実施例では、更に高い周波数(mmWave範囲)のために、アナログ・ビームフォーミングの実装が、現在、一般的に求められ、時間単位及び無線チェーン毎の単一のビーム方向への送信を限定する。少なくとも一実施例では、短キャリア波長に起因して、等方性アンテナ素子がこの周波数領域で非常に小さいため、カバレッジを維持するために多数のアンテナ素子が必要である。少なくとも一実施例では、制御チャネル伝送のためにも、ビームフォーミングは、経路損失の増加の対策として送信端及び受信端の両方で適用される必要がある。
少なくとも一実施例では、それらの多様なユース・ケースをサポートするため、NRは、高い柔軟性を有するが統合されたCSIフレームワークを特徴としており、LTEと比較して、NRにおけるCSI測定、CSI報告、及び実際のDL伝送間での結合が低減される。少なくとも一実施例では、NRは、マルチ・ポイント伝送及び調整などのより高度な方式もサポートする。少なくとも一実施例では、制御及びデータ伝送は、自己完結した原理に従っており、この場合、(DMRSを伴うなどの)伝送を復号するために必要な全情報は、それ自体の伝送内に含まれる。少なくとも一実施例では、その結果、UEがネットワーク内を移動する際に、ネットワークは伝送ポイント又はビームをシームレスに変化し得る。
少なくとも一実施例では、MAC4320は、5Gネットワーク・アーキテクチャの一部であり得る媒体アクセス制御(MAC:medium access control)層とのインターフェースを提供するように構成されたシステム・ソフトウェア及びライブラリのセットである。少なくとも一実施例では、MAC層は、有線、光学、又はワイヤレス伝送媒体との相互作用を担うハードウェアを制御する。少なくとも一実施例では、MACは、伝送媒体のためのフロー制御及び多重化を提供する。
少なくとも一実施例では、MAC副層は、物理リンク制御の複雑性が論理リンク制御(LLC:logical link control)層及びネットワーク・スタックの上位層にとって不可視であるように物理層の抽象概念を提供する。少なくとも一実施例では、任意のLLC副層(及びそれより上位の層)は、任意のMACとともに使用され得る。少なくとも一実施例では、任意のMACは、伝送媒体にかかわらず、任意の物理層とともに使用され得る。少なくとも一実施例では、MAC副層は、ネットワーク上で別のデバイスにデータを送信するときに、上位のフレームを伝送媒体に適したフレームにカプセル化し、伝送エラーを特定するためにフレーム・チェック・シーケンスを付加し、その後、適切なチャネル・アクセス方法が許可し次第、データを物理層に転送する。少なくとも一実施例では、MACは、ジャム信号が検出された場合に衝突の補償も担い、MACは再送を開始し得る。
少なくとも一実施例では、アプリケーション4302は、ノードC.R.4316(1)~4316(N)及び/又はフレームワーク・ソフトウェア4306の少なくとも一部によって使用される1つ又は複数のタイプのアプリケーションを含み得る。少なくとも一実施例では、1つ又は複数のタイプのアプリケーションは、1つ又は複数の実施例と併せて使用される訓練又は推論ソフトウェア、機械学習フレームワーク・ソフトウェア(たとえばPyTorch、TensorFlow、Caffeなど)、又は他の機械学習アプリケーションを含む、任意の数のゲノミクス・アプリケーション、認識コンピュート、機械学習アプリケーションを含み得るが、これに限定されない。
少なくとも一実施例では、RAN API4314は、5Gネットワーク・アーキテクチャの一部であり得る、無線アクセス・ネットワーク(RAN)の構成要素との通信の方法を提供する、サブルーチン定義、通信プロトコル、及び/又はソフトウェア・ツールのセットであり得る。少なくとも一実施例では、無線アクセス・ネットワークは、ネットワーク通信システムの一部であり、無線アクセス技術を実施し得る。少なくとも一実施例では、無線アクセス・ネットワークの機能性は、通常、コア・ネットワークとユーザ機器との両方に存在するシリコン・チップによって提供される。無線アクセス・ネットワークに関する更なる情報は、図41の説明に見出され得る。
少なくとも一実施例では、上位システム4300は、上述したリソースを使用した訓練、推論、及び/又は他の様々なプロセスを実行するCPU、特定用途向け集積回路(ASIC:application-specific integrated circuit)、GPU、FPGA、又は他のハードウェアを使用し得る。少なくとも一実施例では、更に、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスとともに、ユーザが5Gネットワーク・アーキテクチャの様々な態様を構成及び実施できるようにするサービスなどの他のサービスなど、訓練又は情報の推論の実行をユーザができるようにするサービスとして構成され得る。
少なくとも一実施例では、上位システム4300は、物理層(PHY)ライブラリ116によって実装された1つ又は複数のソフトウェア関数を実行するために使用され得る。
図44は、少なくとも一実施例による、ネットワークのシステム4400のアーキテクチャを示す図である。少なくとも一実施例では、システム4400は、ユーザ機器(UE:user equipment)4402と、UE4404とを含むように示される。少なくとも一実施例では、UE4402及び4404は、スマート・フォン(たとえば、1つ又は複数のセルラー・ネットワークに接続可能なハンドヘルド型タッチスクリーン・モバイル・コンピューティング・デバイス)として図示されているが、パーソナル・データ・アシスタント(PDA)、ページャ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、ワイヤレス・ハンドセット、又はワイヤレス通信インターフェースを備える任意のコンピューティング・デバイスなどの任意のモバイル又は非モバイル・コンピューティング・デバイスも備え得る。
少なくとも一実施例では、UE4402及び4404のいずれかは、短時間のUE接続を利用した低電力のモノのインターネット(IoT)アプリケーション用に設計されたネットワーク・アクセス層を備え得る、IoT UEを備え得る。少なくとも一実施例では、IoT UEは、公衆移動体通信網(PLMN:public land mobile network)、近接情報サービス(ProSe:Proximity-Based Service)又はデバイス・ツー・デバイス(D2D)通信、センサ・ネットワーク、又はIoTネットワークを介してマシン・タイプ・コミュニケーション(MTC)サーバ又はデバイスとデータを交換するための、マシン・ツー・マシン(M2M)又はMTCなどの技術を利用し得る。少なくとも一実施例では、M2M又はMTCデータ交換は、機械起動のデータ交換であり得る。少なくとも一実施例では、IoTネットワークは、短時間の接続により、(インターネット・インフラストラクチャ内の)一意に特定可能な組込型コンピューティング・デバイスを含み得るIoT UEを相互接続することを示す。少なくとも一実施例では、IoTネットワークの接続を容易にするために、IoT UEは、バックグラウンド・アプリケーション(たとえばキープ・アライブ・メッセージ、ステータス・アップデートなど)を実行し得る。
少なくとも一実施例では、UE4402及び4404は、無線アクセス・ネットワーク(RAN:radio access network)4416と接続する、たとえば通信可能に結合するように構成され得る。少なくとも一実施例では、RAN4416は、たとえば、進化型ユニバーサル・モバイル電気通信システム(UMTS:Evolved Universal Mobile Telecommunication System)地上無線アクセス・ネットワーク(E-UTRAN:Evolved Universal Mobile Telecommunication System Terrestrial Radio Access Network)、次世代RAN(NG RAN)、又は何らかの他のタイプのRANでもよい。少なくとも一実施例では、UE4402及び4404は、それぞれ接続4412及び4414を利用し、そのそれぞれは、物理通信インターフェース又は層を備える。少なくとも一実施例では、接続4412及び4414は、通信可能結合を可能とするエア・インターフェースとして図示され、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM)プロトコル、符号分割多重アクセス(CDMA:code-division multiple access)ネットワーク・プロトコル、プッシュ・ツー・トーク(PTT)プロトコル、PTTオーバー・セルラー(POC)プロトコル、ユニバーサル・モバイル電気通信システム(UMTS)プロトコル、3GPPロング・ターム・エボリューション(LTE)プロトコル、第5世代(5G)プロトコル、New Radio(NR)プロトコル、及びそれらの変形など、セルラー通信プロトコルに準拠し得る。
少なくとも一実施例では、UE4402及び4404は、ProSeインターフェース4406を介して通信データを更に直接交換し得る。少なくとも一実施例では、代替として、ProSeインターフェース4406は、物理サイドリンク制御チャネル(PSCCH:Physical Sidelink Control Channel)、物理サイドリンク共有チャネル(PSSCH:Physical Sidelink Shared Channel)、物理サイドリンク・ディスカバリ・チャネル(PSDCH:Physical Sidelink Discovery Channel)、及び物理サイドリンク・ブロードキャスト・チャネル(PSBCH:Physical Sidelink Broadcast Channel)を含むがこれに限定されない1つ又は複数の論理チャネルを備えるサイドリンク・インターフェースと呼ばれる場合がある。
少なくとも一実施例では、UE4404は、接続4408によってアクセス・ポイント(AP)4410にアクセスするように構成されるとして示される。少なくとも一実施例では、接続4408は、IEEE802.11プロトコルと整合した接続など、ローカル・ワイヤレス接続を含むことが可能であり、AP4410は、ワイヤレス・フィディリティ(WiFi(登録商標))ルータを備え得る。少なくとも一実施例では、AP4410は、ワイヤレスシステムのコア・ネットワークに接続せずに、インターネットに接続されるとして示される。
少なくとも一実施例では、RAN4416は、接続4412及び4414を可能にする1つ又は複数のアクセス・ノードを含み得る。少なくとも一実施例では、これらのアクセス・ノード(AN)は、基地局(BS)、NodeB、進化型NodeB(eNB)、次世代NodeB(gNB)、RANノードなどと呼ばれることが可能であり、地理的エリア(たとえばセル)内にカバレッジを提供する、地上局(たとえば地上アクセス・ポイント)又はサテライト局を含み得る。少なくとも一実施例では、RAN4416は、マクロ・セル、たとえばマクロRANノード4418を提供するための1つ又は複数のRANノードと、フェムト・セル又はピコ・セル(たとえばマクロ・セルと比較して小さいカバレッジ・エリア、小さいユーザ容量、又は広い帯域幅を有するセル)を提供するための1つ又は複数のRANノード、たとえば低電力(LP:low power)RANノード4420を含み得る。
少なくとも一実施例では、RANノード4418及び4420のいずれかは、エア・インターフェース・プロトコルを終端することができ、UE4402及び4404の第1の接触点となることが可能である。少なくとも一実施例では、RANノード4418及び4420のいずれかは、無線ベアラ管理、アップリンク及びダウンリンクの動的無線リソース管理、及びデータ・パケット・スケジューリング及びモビリティ管理などの無線ネットワーク・コントローラ(RNC:radio network controller)機能を含むが、これに限定されないRAN4416のための様々な論理機能を満たし得る。
少なくとも一実施例では、UE4402及び4404は、直交周波数分割多元接続(OFDMA:Orthogonal Frequency Division Multiple Access)通信技法(たとえばダウンリンク通信用)又は単一キャリア周波数分割多元接続(SC-FDMA:Single Carrier Frequency Division Multiple Access)通信技法(たとえばアップリンク及びProSe又はサイドリンク通信用)、及び/又はそれらの変形などであるがそれに限定されない様々な通信技法にしたがって、マルチキャリア通信チャネルを介して、互いに、又はRANノード4418及び4420のいずれかと、直交周波数分割多重(OFDM:Orthogonal Frequency-Division Multiplexing)通信信号を使用して通信するように構成され得る。少なくとも一実施例では、OFDM信号は、複数の直交サブキャリアを含み得る。
少なくとも一実施例では、ダウンリンク・リソース・グリッドは、RANノード4418及び4420のいずれかからUE4402及び4404へのダウンリンク伝送のために使用されることが可能である一方、アップリンク伝送は、同様の技法を利用し得る。少なくとも一実施例では、グリッドは、各スロットにおけるダウンリンクの物理リソースである、リソース・グリッド又は時間周波数リソース・グリッドと呼ばれる時間周波数グリッドであり得る。少なくとも一実施例では、そのような時間周波数プレーン表現は、OFDMシステムのための一般的な方法であり、無線リソース配分に対して直感的にする。少なくとも一実施例では、リソース・グリッドの各列及び各行は、それぞれ、1つのOFDMシンボル及び1つのOFDMサブキャリアに対応する。少なくとも一実施例では、時間領域におけるリソース・グリッドの持続時間は、無線フレームにおける1つのスロットに対応する。少なくとも一実施例では、リソース・グリッドにおける最小時間周波数単位は、リソース要素として表される。少なくとも一実施例では、各リソース・グリッドは、リソース要素への特定の物理チャネルのマッピングを説明する多数のリソース・ブロックを含む。少なくとも一実施例では、各リソース・ブロックは、一群のリソース要素を含む。少なくとも一実施例では、周波数領域において、これは、現在配分されることが可能な最小量のリソースを表し得る。少なくとも一実施例では、そのようなリソース・ブロックを使用して運ばれるいくつかの異なる物理ダウンリンク・チャネルが存在する。
少なくとも一実施例では、物理ダウンリンク共有チャネル(PDSCH)は、ユーザ・データ及び上位層シグナリングをUE4402及び4404へ運び得る。少なくとも一実施例では、物理ダウンリンク制御チャネル(PDCCH)は、特に、PDSCHチャネルに関係するトランスポート・フォーマット及びリソース配分に関する情報を運び得る。少なくとも一実施例では、UE4402及び4404に、アップリンク共有チャネルに関係するトランスポート・フォーマット、リソース配分、及びHARQ(Hybrid Automatic Repeat Request)情報も通知し得る。少なくとも一実施例では、一般的に、ダウンリンク・スケジューリング(制御及び共有チャネル・リソース・ブロックをセル内のUE4402に割り当てる)は、UE4402及び4404のいずれかからフィードバックされたチャネル品質情報に基づいてRANノード4418及び4420のいずれかで実行され得る。少なくとも一実施例では、ダウンリンク・リソース割り当て情報は、UE4402及び4404のそれぞれのために使用される(たとえば割り当てられる)PDCCH上で送信され得る。
少なくとも一実施例では、PDCCHは、制御情報を運ぶために制御チャネル要素(CCE:control channel element)を使用し得る。少なくとも一実施例では、リソース要素にマッピングされる前に、PDCCH複素数シンボル(complex valued symbol)は最初に4つ組(quadruplets)に編成されてもよく、その後、レート・マッチングのためにサブブロック・インターリーバを使用して順序が変えられ得る。少なくとも一実施例では、各PDCCHは、それらのCCEのうちの1つ又は複数を使用して送信されてもよく、その場合、各CCEは、リソース要素グループ(REG:resource element group)として知られる4つの物理リソース要素の9つのセットに対応し得る。少なくとも一実施例では、4つの横軸位相偏移変調(QPSK:quadrature phase shift keying)シンボルが各REGにマッピングされ得る。少なくとも一実施例では、PDCCHは、ダウンリンク制御情報(DCI)のサイズ及びチャネル状態に応じて、1つ又は複数のCCEを使用して送信され得る。少なくとも一実施例では、異なる数のCCE(たとえば、集約レベルであるL=1,2,4,又は8)を用いてLTEで定義される4つ以上の異なるPDCCHフォーマットが存在し得る。
少なくとも一実施例では、PDSCHリソースを使用する拡張物理ダウンリンク制御チャネル(EPDCCH:enhanced physical downlink control channel)は制御情報送信のために利用され得る。少なくとも一実施例では、EPDCCHは、1つ又は複数の拡張制御チャネル要素(ECCE:enhanced control channel element)を使用して送信され得る。少なくとも一実施例では、各ECCEは、拡張リソース要素グループ(EREG:enhanced resource element group)として知られる4つの物理リソース要素の9つのセットに対応し得る。少なくとも一実施例では、ECCEは、状況によっては、他の数のEREGを有してもよい。
少なくとも一実施例では、RAN4416は、S1インターフェース4422を介してコア・ネットワーク(CN)4438に通信可能に結合されるように示される。少なくとも一実施例では、CN4438は、進化型パケット・コア(EPC:evolved packet core)ネットワーク、NextGenパケット・コア(NPC)ネットワーク、又は何らかの他のタイプのCNでもよい。少なくとも一実施例では、S1インターフェース4422は、RANノード4418及び4420とサービング・ゲートウェイ(S-GW:serving gateway)4430との間で、トラフィック・データを運ぶS1-Uインターフェース4426と、RANノード4418及び4420とMME4428との間のシグナリング・インターフェースであるS1-モビリティ管理エンティティ(MME)インターフェース4424との2つの部分に分割される。
少なくとも一実施例では、CN4438は、MME4428と、S-GW4430と、パケット・データ・ネットワーク(PDN)ゲートウェイ(P-GW)4434と、ホーム加入者サーバ(HSS)4432とを含む。少なくとも一実施例では、MME4428は、レガシーのサービング汎用パケット無線サービス(GPRS:Serving General Packet Radio Service)サポート・ノード(SGSN)の制御プレーンと機能において類似してもよい。少なくとも一実施例では、MME4428は、ゲートウェイ選択及びトラッキング・エリア・リスト管理など、アクセスにおけるモビリティ態様を管理し得る。少なくとも一実施例では、HSS4432は、通信セッションのネットワーク・エンティティの処理をサポートするための加入関連情報を含む、ネットワーク・ユーザのためのデータベースを備え得る。少なくとも一実施例では、CN4438は、モバイル加入者の数、機器の容量、ネットワークの編成などに応じて、1つ又はいくつかのHSS4432を備え得る。少なくとも一実施例では、HSS4432は、ルーティング/ローミング、認証、許可、名前/アドレスの解決(naming/addressing resolution)、ロケーション依存性などのためのサポートを提供し得る。
少なくとも一実施例では、S-GW4430は、RAN4416に向かうS1インターフェース4422を終端することができ、データ・パケットをRAN4416とCN4438との間でルーティングする。少なくとも一実施例では、S-GW4430は、RANノード間ハンドオーバのためのローカル・モビリティ・アンカー・ポイントでもよく、3GPP間のモビリティのためのアンカーも提供し得る。少なくとも一実施例では、他の役割は、合法的傍受、課金、及び何らかのポリシー施行を含み得る。
少なくとも一実施例では、P-GW4434は、PDNに向かうSGiインターフェースを終端し得る。少なくとも一実施例では、P-GW4434は、データ・パケットを、EPCネットワーク4438と、アプリケーション・サーバ4440(或いはアプリケーション機能(AF)と呼ばれる)を含むネットワークなどの外部ネットワークとの間でインターネット・プロトコル(IP)インターフェース4442を介してルーティングし得る。少なくとも一実施例では、アプリケーション・サーバ4440は、コア・ネットワーク(たとえばUMTSパケット・サービス(PS)領域、LTE PSデータ・サービスなど)とともにIPベアラ・リソースを使用する要素提供アプリケーション(element offering application)でもよい。少なくとも一実施例では、P-GW4434が、IP通信インターフェース4442を介してアプリケーション・サーバ4440に通信可能に結合されるように示される。少なくとも一実施例では、アプリケーション・サーバ4440は、CN4438を介してUE4402及び4404のための1つ又は複数の通信サービス(たとえばボイス・オーバー・インターネット・プロトコル(VoIP)セッション、PTTセッション、グループ通信セッション、ソーシャル・ネットワーキング・サービスなど)をサポートするように更に構成され得る。
少なくとも一実施例では、P-GW4434は、更に、ポリシー施行及び課金のデータ収集のためのノードでもよい。少なくとも一実施例では、ポリシー及び課金施行機能(PCRF:Policy and Charging Enforcement Function)4436は、CN4438のポリシー及び課金制御要素である。少なくとも一実施例では、ローミングが無い場合、UEのインターネット・プロトコル接続アクセス・ネットワーク(IP-CAN:Internet Protocol Connectivity Access Network)セッションと関連するホーム公衆移動通信網(HPLMN:Home Public Land Mobile Network)に単一のPCRFが存在し得る。少なくとも一実施例では、トラフィックのローカル・ブレークアウトを用いたローミングのシナリオで、HPLMN内のホームPCRF(H-PCRF)と、訪問先の公衆移動通信網(VPLMN:Visited Public Land Mobile Network)内の訪問先PCRF(V-PCRF:Visited PCRF)というUEのIP-CANセッションと関連する2つのPCRFが存在し得る。少なくとも一実施例では、PCRF4436は、P-GW4434を介してアプリケーション・サーバ4440と通信可能に結合され得る。少なくとも一実施例では、アプリケーション・サーバ4440は、新規サービス・フローを示すためにPCRF4436に信号を発信して、適切なサービス品質(QoS)及び課金パラメータを選択してもよい。少なくとも一実施例では、PCRF4436は、適切なトラフィック・フロー・テンプレート(TFT)及びQoSクラス識別子(QCI:QoS class of identifier)を用いて、この規則をポリシー及び課金施行機能(PCEF:Policy and Charging Enforcement Function)(図示せず)に与えることができ、これによってアプリケーション・サーバ4440に指定されるようにQoS及び課金を開始する。
図45は、少なくとも一実施例による、デバイス4500の実例の構成要素を示す図である。少なくとも一実施例では、デバイス4500は、少なくとも図示されている通りに互いに結合された、アプリケーション回路4504と、ベースバンド回路4508と、無線周波数(RF:Radio Frequency)回路4510と、フロント・エンド・モジュール(FEM)回路4502と、1つ又は複数のアンテナ4512と、電力管理回路(PMC:power management circuitry)4506とを備え得る。少なくとも一実施例では、図示されたデバイス4500の構成要素は、UE又はRANノードに含まれ得る。少なくとも一実施例では、デバイス4500は、少ない要素を含み得る(たとえばRANノードは、アプリケーション回路4504を利用しなくてもよく、代わりに、EPCから受信したIPデータを処理するためにプロセッサ/コントローラを含んでもよい)。少なくとも一実施例では、デバイス4500は、たとえば、メモリ/ストレージ、ディスプレイ、カメラ、センサ、又は入力/出力(I/O)インターフェースなどの追加要素を備え得る。少なくとも一実施例では、以下に記載の構成要素は、複数のデバイスに備えられ得る(たとえば上記の回路は、クラウド-RAN(C-RAN)実装のための複数のデバイスに個別に含まれ得る)。
少なくとも一実施例では、アプリケーション回路4504は、1つ又は複数のアプリケーション・プロセッサを含み得る。少なくとも一実施例では、アプリケーション回路4504は、1つ又は複数のシングル・コア又はマルチ・コアのプロセッサなどであるがこれに限定しない回路を含み得る。少なくとも一実施例では、プロセッサは、汎用プロセッサと専用のプロセッサ(たとえばグラフィックス・プロセッサ、アプリケーション・プロセッサなど)の任意の組み合わせを含み得る。少なくとも一実施例では、プロセッサは、メモリ/ストレージと結合され得る、又は含むことが可能であり、メモリ/ストレージに格納されて様々なアプリケーション又はオペレーティング・システムがデバイス4500上で実行されることを可能とする命令を実行するように構成され得る。少なくとも一実施例では、アプリケーション回路4504のプロセッサは、EPCから受信したIPデータ・パケットを処理し得る。
少なくとも一実施例では、ベースバンド回路4508は、1つ又は複数のシングル・コア又はマルチ・コアのプロセッサなどであるがこれに限定されない回路を含み得る。少なくとも一実施例では、ベースバンド回路4508は、RF回路4510の受信信号経路から受信したベースバンド信号を処理しRF回路4510の送信信号経路のためにベースバンド信号を生成する1つ又は複数のベースバンド・プロセッサ又は制御論理を含み得る。少なくとも一実施例では、ベースバンド処理回路4508は、ベースバンド信号の生成及び処理のため、更にRF回路4510の動作を制御するためのアプリケーション回路4504とインターフェース接続し得る。少なくとも一実施例では、ベースバンド回路4508は、第3世代(3G)ベースバンド・プロセッサ4508A、第4世代(4G)ベースバンド・プロセッサ4508B、第5世代(5G)ベースバンド・プロセッサ4508C、又は他の既存の世代、開発中又は開発される世代(たとえば第2世代(2G)、第6世代(6G)など)のための他のベースバンド・プロセッサ4508Dを含み得る。少なくとも一実施例では、ベースバンド回路4508(たとえばベースバンド・プロセッサ4508A~Dのうちの1つ又は複数)は、RF回路4510を介した1つ又は複数の無線ネットワークとの通信を可能にする様々な無線制御機能を扱い得る。少なくとも一実施例では、ベースバンド・プロセッサ4508A~Dの機能の一部又は全部は、メモリ4508Gに格納されるモジュールに含まれ中央処理装置(CPU)4508Eによって実行されることが可能である。少なくとも一実施例では、無線制御機能は、信号変調/復調、符号化/復号、無線周波数偏移などを含み得るが、これに限定されない。少なくとも一実施例では、ベースバンド回路4508の変調/復調回路は、高速フーリエ変換(FFT:Fast-Fourier Transform)、プリコーディング、又はコンステレーション・マッピング/デマッピング機能を含み得る。少なくとも一実施例では、ベースバンド回路4508の符号化/復号回路は、畳み込み、テイルバイティング畳み込み、ターボ、ビタビ、又は低密度パリティ検査(LDPC)エンコーダ/デコーダ機能を含み得る。
少なくとも一実施例では、ベースバンド回路4508は、1つ又は複数のオーディオ・デジタル信号プロセッサ(DSP:digital signal processor)4508Fを含み得る。少なくとも一実施例では、オーディオDSP4508Fは、圧縮/復元及びエコー消去のための要素を含むことが可能であり、他の実施例では他の適切な処理要素を含み得る。少なくとも一実施例では、ベースバンド回路の構成要素は、単一のチップ、単一のチップセットに組みこまれるか、又はいくつかの実施例では同じ回路基板上に配置され得ることが適切である。少なくとも一実施例では、ベースバンド回路4508及びアプリケーション回路4504の構成要素の一部又は全部は、たとえばシステム・オン・チップ(SOC)などに一緒に実装され得る。
少なくとも一実施例では、ベースバンド回路4508は、1つ又は複数の無線技術と互換性のある通信を提供し得る。少なくとも一実施例では、ベースバンド回路4508は、進化型ユニバーサル地上無線アクセス・ネットワーク(EUTRAN)又は他のワイヤレス・メトロポリタン・エリア・ネットワーク(WMAN)、ワイヤレス・ローカル・エリア・ネットワーク(WLAN)、ワイヤレス・パーソナル・エリア・ネットワーク(WPAN)との通信をサポートし得る。少なくとも一実施例では、ベースバンド回路4508は、複数のワイヤレス・プロトコルの無線通信をサポートするように構成され、マルチモード・ベースバンド回路と呼ばれる場合がある。
少なくとも一実施例では、RF回路4510は、非固体媒体(non-solid medium)を介して変調された電磁放射線(electromagnetic radiation)を使用したワイヤレス・ネットワークと通信することを可能にすることができる。少なくとも一実施例では、RF回路4510は、スイッチ、フィルタ、増幅器などを含み、ワイヤレス・ネットワークとの通信を容易にすることができる。少なくとも一実施例では、RF回路4510は、FEM回路4502から受信されたRF信号をダウンコンバートし、ベースバンド回路4508にベースバンド信号を提供する回路を含み得る受信信号経路を含むことができる。少なくとも一実施例では、RF回路4510は、更に、ベースバンド回路4508により提供されるベースバンド信号をアップコンバートし、送信のためにFEM回路4502にRF出力信号を提供する回路を含み得る送信信号経路を含むことができる。
少なくとも一実施例では、RF回路4510の受信信号経路は、ミキサ回路4510a、増幅回路4510b、及びフィルタ回路4510cを含み得る。少なくとも一実施例では、RF回路4510の送信信号経路は、フィルタ回路4510c及びミキサ回路4510aを含み得る。少なくとも一実施例では、RF回路4510は、更に、受信信号経路及び送信信号経路のミキサ回路4510aによって使用される周波数を合成するシンセサイザ回路4510dを含み得る。少なくとも一実施例では、受信信号経路のミキサ回路4510aは、シンセサイザ回路4510dにより提供された合成周波数に基づいて、FEM回路4502から受信されたRF信号をダウンコンバートするように構成され得る。少なくとも一実施例では、増幅回路4510bは、ダウンコンバートされた信号を増幅するように構成され得るとともに、フィルタ回路4510cは、ダウンコンバートされた信号から不要な信号を除去して出力ベースバンド信号を生成するように構成されたロー・パス・フィルタ(LPF)又はバンド・パス・フィルタ(BPF)であり得る。少なくとも一実施例では、出力ベースバンド信号は、更なる処理のためにベースバンド回路4508に供給されてもよい。少なくとも一実施例では、出力ベースバンド信号は、ゼロ周波数のベースバンド信号であってもよいが、これは必要条件ではない。少なくとも一実施例では、受信信号経路のミキサ回路4510aは、パッシブ・ミキサを含み得る。
少なくとも一実施例では、送信信号経路のミキサ回路4510aは、シンセサイザ回路4510dにより提供された合成周波数に基づいて、入力ベースバンド信号をアップコンバートして、FEM回路4502のためのRF出力信号を生成するように構成され得る。少なくとも一実施例では、ベースバンド信号は、ベースバンド回路4508により提供されてもよく、フィルタ回路4510cによりフィルタリングされてもよい。
少なくとも一実施例では、受信信号経路のミキサ回路4510a及び送信信号経路のミキサ回路4510aは、2つ以上のミキサを含むことができるとともに、それぞれ、直交ダウン・コンバージョン及び直交アップ・コンバージョンのために配置されることができる。少なくとも一実施例では、受信信号経路のミキサ回路4510a及び送信信号経路のミキサ回路4510aは、2つ以上のミキサを含むことができるとともに、イメージ除去(たとえば、ハートレー・イメージ除去)のために配置されることができる。少なくとも一実施例では、受信信号経路のミキサ回路4510a及びミキサ回路4510aは、それぞれ、直接ダウン・コンバージョン及び直接アップ・コンバージョンのために配置されることができる。少なくとも一実施例では、受信信号経路のミキサ回路4510a及び送信信号経路のミキサ回路4510aは、スーパーヘテロダイン動作用に構成されることができる。
少なくとも一実施例では、出力ベースバンド信号及び入力ベースバンド信号は、アナログ・ベースバンド信号であってもよい。少なくとも一実施例では、出力ベースバンド信号及び入力ベースバンド信号は、デジタル・ベースバンド信号であってもよい。少なくとも一実施例では、RF回路4510は、アナログ-デジタル変換器(ADC)及びデジタル-アナログ変換器(DAC)回路を含むことができ、ベースバンド回路4508は、RF回路4510と通信するためのデジタル・ベースバンド・インターフェースを含むことができる。
少なくとも一実施例では、別個の無線IC回路が各周波数帯の信号を処理するために設けられてもよい。少なくとも一実施例では、シンセサイザ回路4510dは、フラクショナルNシンセサイザ又はフラクショナルN/N+1シンセサイザであってもよい。少なくとも一実施例では、シンセサイザ回路4510dは、デルタ-シグマ・シンセサイザ、周波数逓倍器、又は、分周器を備えた位相同期ループを含むシンセサイザであってもよい。
少なくとも一実施例では、シンセサイザ回路4510dは、周波数入力及び分周器制御入力に基づいて、RF回路4510のミキサ回路4510aにより使用される出力周波数を合成するように構成されてもよい。少なくとも一実施例では、シンセサイザ回路4510dは、フラクショナルN/N+1シンセサイザであってもよい。
少なくとも一実施例では、周波数入力は電圧制御発振器(VCO)により提供されてもよい。少なくとも一実施例では、分周器制御入力は、所望の出力周波数に応じて、ベースバンド回路4508又はアプリケーション・プロセッサ4504のいずれかによって提供されてもよい。少なくとも一実施例では、分周器制御入力(たとえば、N)は、アプリケーション・プロセッサ4504により示されるチャネルに基づいて、ルックアップ・テーブルから決定されてもよい。
少なくとも一実施例では、RF回路4510のシンセサイザ回路4510dは、分周器、遅延同期ループ(DLL)、マルチプレクサ、及び位相アキュムレータを含むことができる。少なくとも一実施例では、分周器は、二重係数分周器(DMD:dual modulus divider)であり得るとともに、位相アキュムレータは、デジタル位相アキュムレータ(DPA:digital phase accumulator)であり得る。少なくとも一実施例では、DMDは、分数分周比を提供するために、入力信号をN又はN+1のいずれかによって(たとえば、実行に基づいて)分周するように構成されてもよい。少なくとも一実施例では、DLLは、カスケード接続された、調整可能な、遅延素子、位相検出器、チャージ・ポンプ、及びD型フリップフロップのセットを含むことができる。少なくとも一実施例では、遅延素子は、VCO期間をNd個の等しい位相パケットに分割するように構成されることができ、ここで、Ndは遅延線における遅延素子の数である。このように、少なくとも一実施例では、DLLは、負帰還を提供し、遅延線を通る合計遅延が1VCOサイクルであることを保証するのを助ける。
少なくとも一実施例では、シンセサイザ回路4510dは、出力周波数として搬送周波数を生成するように構成されてもよく、一方、他の実施例では、出力周波数は、搬送波周波数の倍数(たとえば、搬送波周波数の2倍、搬送波周波数の4倍)であってもよく、互いに異なる複数の位相を有する、搬送波周波数における複数の信号を生成するために、直交ジェネレータ及び分周器回路と併せて使用される。少なくとも一実施例では、出力周波数は、LO周波数(fLO)であってもよい。少なくとも一実施例では、RF回路4510は、IQ/極性コンバータを含むことができる。
少なくとも一実施例では、FEM回路4502は、受信信号経路を含むことができ、受信信号経路は、1つ又は複数のアンテナ4512から受信されたRF信号に対して動作し、受信信号を増幅し、更なる処理のために、受信信号の増幅されたバージョンをRF回路4510に供給するように構成された回路を含み得る。少なくとも一実施例では、FEM回路4502は、更に、送信信号経路を含むことができ、送信信号経路は、1つ又は複数のアンテナ4512のうちの1つ又は複数による送信のために、RF回路4510により提供される送信用の信号を増幅するように構成された回路を含み得る。少なくとも一実施例では、送信信号経路又は受信信号経路を介する増幅は、RF回路4510においてのみ、FEM4502においてのみ、又はRF回路4510及びFEM4502の両方において行われ得る。
少なくとも一実施例では、FEM回路4502は、送信モード動作と受信モード動作との間を切り替えるためのTX/RXスイッチを含むことができる。少なくとも一実施例では、FEM回路は、受信信号経路及び送信信号経路を含むことができる。少なくとも一実施例では、FEM回路の受信信号経路は、受信されたRF信号を増幅して、増幅された受信RF信号を出力として(たとえば、RF回路4510に)供給する、LNAを含むことができる。少なくとも一実施例では、FEM回路4502の送信信号経路は、(たとえばRF回路4510により提供される)入力RF信号を増幅する電力増幅器(PA)と、(たとえば1つ又は複数のアンテナ4512のうちの1つ又は複数による)その後の送信のためのRF信号を生成する1つ又は複数のフィルタとを含むことができる。
少なくとも一実施例では、PMC4506は、ベースバンド回路4508に供給された電力を管理することができる。少なくとも一実施例では、PMC4506は、電源選択、電圧スケーリング、バッテリ充電、又はDC-DC変換を制御できる。少なくとも一実施例では、デバイス4500がバッテリによって給電可能であるとき、たとえば、デバイスがUEに含まれているときに、多くの場合、PMC4506が含まれてもよい。少なくとも一実施例では、PMC4506は、望ましい実装サイズ及び熱放射性を付与しながら、電力変換効率を高めることができる。
少なくとも一実施例では、PMC4506は、加えて、又は代替として、アプリケーション回路4504、RF回路4510、又はFEM4502などであるがこれに限定されない他の構成要素と結合され同様の電力管理動作を実行してもよい。
少なくとも一実施例では、PMC4506は、デバイス4500の様々な省電力機構を制御してもよく、又は他のやり方でその一部でもよい。少なくとも一実施例では、デバイス4500がRRC接続(RRC Connected)状態であり、間もなくトラフィックを受信すると予想する時に依然としてRANノードに接続されている場合、デバイス4500は、無活動期間の後に間欠受信モード(DRX:Discontinuous Reception Mode)として知られる状態に入り得る。少なくとも一実施例では、この状態の間、デバイス4500は、短い時間間隔で電源がオフとなるため、省電力となり得る。
少なくとも一実施例では、延長期間でのデータ・トラフィック活動がない場合、デバイス4500はオフに遷移してRRCアイドル状態となり、ネットワークからの接続を解除し、チャネル品質フィードバック、ハンドオーバなどの動作を行わない。少なくとも一実施例では、デバイス4500は、超低電力状態となり、ページングを行って、定期的にウェイクアップして、ネットワークをリッスンした後、再度電源がオフになる。少なくとも一実施例では、デバイス4500は、この状態でデータを受信しない場合があり、データを受信するために、RRC接続状態に再度遷移する。
少なくとも一実施例では、更なる省電力モードによって、デバイスがページング間隔(2秒から数時間の範囲)よりも長い期間、ネットワークが使用できない状態となることが可能となる。少なくとも一実施例では、この期間、デバイスは、全体的にネットワークに到達できず、完全に電源オフ状態となり得る。少なくとも一実施例では、この期間に送信されたデータは、大きい遅延を発生させ、遅延が許容可能であると想定される。
少なくとも一実施例では、アプリケーション回路4504のプロセッサ及びベースバンド回路4508のプロセッサは、プロトコル・スタックの1つ又は複数のインスタンスの要素を実行するために使用され得る。少なくとも一実施例では、ベースバンド回路4508のプロセッサは、単独で、又は組み合わせて、第3層、第2層、又は第1層の機能を実行するために使用され得る一方、アプリケーション回路4508のプロセッサは、これらの層から受信されたデータ(たとえばパケット・データ)を利用して、第4層の機能(たとえば伝送通信プロトコル(TCP)層及びユーザ・データグラム・プロトコル(UDP)層)を更に実行し得る。少なくとも一実施例では、第3層は、無線リソース制御(RRC:radio resource control)層を含んでもよい。少なくとも一実施例では、第2層は、媒体アクセス制御(MAC)層、無線リンク制御(RLC:radio link control)層、及びパケット・データ収束プロトコル(PDCP:packet data convergence protocol)層を含んでもよい。少なくとも一実施例では、第1層は、UE/RANノードの物理(PHY)層を含んでもよい。
少なくとも一実施例では、アプリケーション回路4504のプロセッサ及びベースバンド回路4508のプロセッサは、物理層(PHY)ライブラリ116によって実装された1つ又は複数の関数を実行するために使用され得る。
図46は、少なくとも一実施例による、ベースバンド回路の実例のインターフェースを示す図である。少なくとも一実施例では、上述したように、図45のベースバンド回路4508は、プロセッサ4508A~4508Eと、それらのプロセッサによって利用されるメモリ4508Gを備え得る。少なくとも一実施例では、プロセッサ4508A~4508Eのそれぞれは、データをメモリ4508Gと送受信するための、それぞれメモリ・インターフェース4602A~4602Eを含み得る。
少なくとも一実施例では、ベースバンド回路4508は、メモリ・インターフェース4604(たとえば、ベースバンド回路4508の外部のメモリとデータを送信/受信するためのインターフェース)、アプリケーション回路インターフェース4606(たとえば、図45のアプリケーション回路4504とデータを送信/受信するためのインターフェース)、RF回路インターフェース4608(たとえば、図45のRF回路4510とデータを送信/受信するためのインターフェース)、ワイヤレス・ハードウェア接続インターフェース4610(たとえば、近距離通信(NFC:Near Field Communication)コンポーネント、Bluetooth(登録商標)コンポーネント(たとえばBluetooth(登録商標)Low Energy)、Wi-Fi(登録商標)コンポーネント、及び他の通信コンポーネントとデータを送受信するためのインターフェース)、及び電力管理インターフェース4612(たとえば、PMC4506との電力又は制御信号の送信/受信のためのインターフェース)など、他の回路/デバイスに通信可能に結合する1つ又は複数のインターフェースを更に含み得る。
少なくとも一実施例では、ベースバンド回路4508は、物理層(PHY)ライブラリ116によって実装された1つ又は複数の関数を実行するために使用可能であり得る。
図47は、少なくとも一実施例による、アップリンク・チャネルの実例を示す図である。少なくとも一実施例では、図47は、モバイル・デバイス・ネットワークの物理層の一部であり得る5G NRにおける物理アップリンク共有チャネル(PUSCH:physical uplink shared channel)内でのデータの送信及び受信を示す。
少なくとも一実施例では、5G NRにおける物理アップリンク共有チャネル(PUSCH)は、多重化された制御情報及びユーザ・アプリケーション・データを運ぶように指定される。少なくとも一実施例では、5G NRは、いくつかの実例において4G LTEと呼ばれる場合がある前技術と比較して非常に高い柔軟性及び信頼性を提供し、サイクリック・プレフィックス(CP)-OFDM波形及び離散フーリエ変換拡散(DFT)-OFDM波形の両方に対するより柔軟なパイロット配置及びサポートを含む。少なくとも一実施例では、規格が組み込まれた、フィルタ処理されたOFDM(f-OFDM:filtered OFDM)技法は、帯域外発射を減らしてより高い変調次数における性能を改善するために追加フィルタリングを追加するために利用される。少なくとも一実施例では、4G LTEで使用されたターボ符号を、より良好な伝送速度を達成し、より効率的なハードウェア実装の機会を提供することが証明された準巡回低密度パリティ検査(QC-LDPC:Quasi-Cyclic Low Density Parity Check)符号によって置き換えるために、順方向エラー訂正(FEC:Forward Error Correction)における修正が課される。
少なくとも一実施例では、5G NRのダウンリンク及びアップリンクのデータの伝送は、持続時間10msのフレームに編成され、それぞれのフレームは、それぞれ1msの10個のサブフレームに分割される。少なくとも一実施例では、サブフレームは、5G NRでパラメータ化された選択サブキャリア間隔に応じて、可変数のスロットで構成される。少なくとも一実施例では、スロットは、14個のOFDMAシンボルから構築され、それぞれの先頭にサイクリック・プレフィックスが付加される。少なくとも一実施例では、通過域内に配置され送信のために指定されたサブキャリアは、リソース要素(RE)と呼ばれる。少なくとも一実施例では、同一シンボルの12個の近傍REのグループは、物理リソース・ブロック(PRB:Physical Resource block)を形成する。
少なくとも一実施例では、5G NR規格は、PUSCHチャネル内の伝送に関連する2種類の基準信号を定義した。少なくとも一実施例では、復調基準信号(DMRS)は、高周波数密度を有するユーザに特化した基準信号である。少なくとも一実施例では、DMRSは、専用の直交周波数分割多元接続(OFDMA)シンボル内でのみ伝送され、周波数選択チャネル推定のために指定される。少なくとも一実施例では、スロット内のDMRSシンボルの数は、構成に応じて1と4との間で変化する場合があり、チャネルのコヒーレンス時間内により正確な推定結果を得るために、時間においてより高密度のDMRSシンボル間隔が、高速時変チャネルに対して指定される。少なくとも一実施例では、周波数領域において、DMRS PRBは、全伝送配分内でマッピングされる。少なくとも一実施例では、同一のアンテナ・ポート(AP:Antenna Port)に対して割り当てられたDMRSリソース要素(RE)の間隔は、2と3との間で選択され得る。少なくとも一実施例では、2-2多入力多出力(MIMO)の場合、規格は、AP間のREの直交的割り当てを可能とする。少なくとも一実施例では、受信機は、MIMO等化の前に、空間相関を無視して、DMRS REに基づいて部分的な単入力多出力(SIMO:single input, multiple output)チャネル推定を実行し得る。
少なくとも一実施例では、第2の種類の基準信号は、位相追跡基準信号(PTRS)である。少なくとも一実施例では、PTRSサブキャリアは、時間領域において高密度を有する櫛形構造に配置される。少なくとも一実施例では、それは、性能損失の大きな原因である位相雑音を追跡して訂正するためにmmWave周波数帯域において主に使用される。少なくとも一実施例では、PTRSの使用は、位相雑音の影響が無視してもよい程度の時の伝送の合計の周波数利用効率を低くし得るため、任意である。
少なくとも一実施例では、データの送信のために、トランスポート・ブロックがMAC層から生成されて、物理層に与えられ得る。少なくとも一実施例では、トランスポート・ブロックは、送信が意図されたデータでもよい。少なくとも一実施例では、物理層における送信は、トランスポート・ブロックと呼ばれる場合があるグループ化済みリソース・データで開始する。少なくとも一実施例では、トランスポート・ブロックは、周期的冗長検査(CRC:cyclic redundancy check)4702によって受信される。少なくとも一実施例では、エラー検出のために、周期的冗長検査が各トランスポート・ブロックの末尾に付加される。少なくとも一実施例では、周期的冗長検査は、トランスポート・ブロックにおけるエラー検出のために使用される。少なくとも一実施例では、トランスポート・ブロック全体は、CRCパリティ・ビットを計算するために使用され、これらのパリティ・ビットは、その後、トランスポート・ブロックの末尾に付加される。少なくとも一実施例では、最小及び最大の符号ブロック・サイズが指定され、それによってブロック・サイズは、更なるプロセスに適合する。少なくとも一実施例では、入力ブロックは、入力ブロックが最大符号ブロック・サイズよりも大きい時にセグメント化される。
少なくとも一実施例では、トランスポート・ブロックは、低密度パリティ検査(LDPC)符号化4704によって受信及び符号化される。少なくとも一実施例では、NRは、データ・チャネルに対して低密度パリティ検査(LDPC)符号を用い、制御チャネルに対してポーラ符号を用いる。少なくとも一実施例では、LDPC符号は、それらのパリティ検査行列によって定義され、各列は符号化ビットを表し、各行はパリティ検査方程式を表す。少なくとも一実施例では、LDPC符号は、反復的に変数とパリティ検査との間でメッセージを交換することによって復号される。少なくとも一実施例では、NRのために提案されたLDPC符号は準巡回構造を使用し、この場合、パリティ検査行列はより小さい基底行列によって定義される。少なくとも一実施例では、基底行列の各エントリは、Z×Zゼロ行列又はシフトZ×Z単位行列のいずれかを表す。
少なくとも一実施例では、符号化されたトランスポート・ブロックは、レート・マッチング4706によって受信される。少なくとも一実施例では、符号化されたブロックは、所望の符号レートを有する出力ビット・ストリームを生成するために使用される。少なくとも一実施例では、レート・マッチング4706は、所望の符号レートで送信される出力ビット・ストリームを生成するために利用される。少なくとも一実施例では、所望の符号レートを有する出力ビット・ストリームを生成するために、ビットがバッファから選択されて、取り除かれる。少なくとも一実施例では、ハイブリッド自動再送要求(HARQ)エラー訂正方式が取り入れられる。
少なくとも一実施例では、出力ビットは、スクランブル4708でスクランブルがかけられ、秘密通信を支援し得る。少なくとも一実施例では、符号語は、直交シーケンス及びUEに特化したスクランブリング・シーケンスとビット単位で乗算される。少なくとも一実施例では、スクランブル4708の出力は、変調/マッピング/プリコーディング、及び他のプロセス4710に入力され得る。少なくとも一実施例では、様々な変調、マッピング、及びプリコーディングのプロセスが実行される。
少なくとも一実施例では、スクランブル4708から出力されたビットは、変調方式で変調され、その結果として変調シンボルのブロックが得られる。少なくとも一実施例では、スクランブルがかけられた符号語は、変調方式であるQPSK、16QAM、64QAMのうちの1つを使用して変調され、その結果として変調シンボルのブロックが得られる。少なくとも一実施例では、送信波形に対する変調シンボルの最初のマッピングを実施しつつ、HARQ情報が両方のスロットに存在することを確実にするチャネル・インターリーバ・プロセスが利用され得る。少なくとも一実施例では、変調シンボルは、送信アンテナに基づいて様々な層にマッピングされる。少なくとも一実施例では、シンボルは、プリコーディングされることが可能で、シンボルはセットに分割され、逆高速フーリエ変換が実行され得る。少なくとも一実施例では、HARQ受信通知(ACK)情報が両方のスロットに存在して復調基準信号の周りのリソースにマッピングされるように、トランスポート・データ及び制御多重化が実行され得る。少なくとも一実施例では、様々なプリコーディング・プロセスが実行される。
少なくとも一実施例では、リソース要素マッピング4712において、シンボルが配分済みの物理リソース要素に対してマッピングされる。少なくとも一実施例では、配分サイズは、素因子が2、3及び5である値に限定され得る。少なくとも一実施例では、シンボルは、サブキャリアから始まる昇順でマッピングされる。少なくとも一実施例では、OFDMA変調4714において、サブキャリアがマッピングされた変調シンボルのデータは、IFFT演算によって変調される直交周波数分割多元接続(OFDMA)である。少なくとも一実施例では、各シンボルの時間領域表現は、連結され、送信FIRフィルタを使用してフィルタリングされ、不要な帯域外発射を、位相不連続及び異なるヌメロロジーの利用によって引き起こされた隣接する周波数帯へ減衰させる。少なくとも一実施例では、OFDMA変調4714の出力は、別のシステムによる受信及び処理のために送信され得る。
少なくとも一実施例では、送信はOFDMA復調4716によって受信され得る。少なくとも一実施例では、送信は、ユーザ・モバイル・デバイスからセルラー・ネットワークを介して発生し得るが、他のコンテキストが存在し得る。少なくとも一実施例では、送信は、IFFT処理により復調され得る。少なくとも一実施例では、IFFT処理によるOFDMA復調が実現されたら、残留サンプル・タイム・オフセット(STO)及び搬送周波数オフセット(CFO:Carrier Frequency Offset)の推定及び訂正が実行され得る。少なくとも一実施例では、受信信号が、周波数で多重化された複数のUEから来る送信の重ね合わせである場合があり、それぞれが特定の残留同期エラーを受けるため、両方のCFO及びSTOの訂正は、周波数領域で実行される必要がある。少なくとも一実施例では、残留CFOは、異なるOFDMシンボルに属するパイロット・サブキャリア間で相回転として推定され、周波数領域において巡回畳み込み演算によって訂正される。
少なくとも一実施例では、OFDMA復調4716の出力は、リソース要素デマッピング4718によって受信され得る。少なくとも一実施例では、リソース要素デマッピング4718は、シンボルを決定して、配分済み物理リソース要素からシンボルをデマッピングする。少なくとも一実施例では、マルチパス伝搬の影響を補償するために、チャネル推定4720でチャネル推定及び等化が実行される。少なくとも一実施例では、チャネル推定4720は、様々な伝送層及びアンテナから生じるノイズの影響を最小限にするために利用され得る。少なくとも一実施例では、チャネル推定4720は、リソース要素デマッピング4718の出力から等化済みシンボルを生成し得る。少なくとも一実施例では、復調/デマッピング4722は、チャネル推定4720から等化済みシンボルを受信し得る。少なくとも一実施例では、等化済みシンボルは、層デマッピング動作によってデマッピングされ、順序が変えられる。少なくとも一実施例では、帰納的最大確率(MAP:Maximum A Posteriori Probability)復調のアプローチは、受信されたビットが対数尤度比(LLR:Log-Likelihood Ratio)の形態で表される0か1かに関する信念を表す値を生成するために利用され得る。
少なくとも一実施例では、ソフト復調されたビットは、LDPC復号前に循環バッファを使用したLLRソフト・コンバインを用いたスクランブル解析、デインターリービング、及びレート・アンマッチング(rate unmatching)を含む様々な演算を使用して処理される。少なくとも一実施例では、スクランブル解析4724は、スクランブル4708の1つ又は複数のプロセスを逆進するプロセスを含み得る。少なくとも一実施例では、レート・アンマッチング4726は、レート・マッチング4706の1つ又は複数のプロセスを逆進するプロセスを含み得る。少なくとも一実施例では、スクランブル解析4724は、復調/デマッピング4722からの出力を受信し、受信したビットをスクランブル解析し得る。少なくとも一実施例では、レート・アンマッチング4726は、スクランブル解析済みビットを受信して、LDPC復号4728の前に循環バッファを利用してLLRソフト・コンバインを利用し得る。
少なくとも一実施例では、実践上のアプリケーションにおけるLDPC符号の復号は、反復信念伝播アルゴリズムに基づいて行われる。少なくとも一実施例では、LDPC符号は、グラフ・ノード間の接続を定義する二部隣接行列であるM×Nのサイズのパリティ検査行列Hを有する二部グラフの形態で表現されることができる。少なくとも一実施例では、行列HのM個の行はパリティ検査ノードに対応し、N個の列は、変数ノード、すなわち受信済み符号語ビットに対応する。少なくとも一実施例では、信念伝播アルゴリズムの原理は、反復的なメッセージ交換に基づいており、変数ノードと検査ノードとの間の事後確率は、有効な符号語が得られるまで更新される。少なくとも一実施例では、LDPC復号4728は、データを含むトランスポート・ブロックを出力し得る。
少なくとも一実施例では、CRC検査4730は、エラーを決定して、受信済みトランスポート・ブロックに添付されたパリティ・ビットに基づいて1つ又は複数の動作を実行し得る。少なくとも一実施例では、CRC検査4730は、受信済みトランスポート・ブロックに添付されたパリティ・ビット又は他のやり方でCRCに関連した情報を解析及び処理し得る。少なくとも一実施例では、CRC検査4730は、更なる処理のために、処理済みトランスポート・ブロックをMAC層に送信し得る。
なお、様々な実施例で、トランスポート・ブロック又は他のその変形でもあり得るデータの送信及び受信は、図47に図示されない様々なプロセスを含み得ることに留意されたい。少なくとも一実施例では、図47に図示されるプロセスは、網羅的であることは意図されておらず、追加の変調、マッピング、多重化、プリコーディング、コンステレーション・マッピング/デマッピング、MIMO検出、検出、復号、及びそれらの変形などの更なるプロセスが、ネットワークの一部としてデータを送信及び受信する際に利用され得る。
少なくとも一実施例では、図47に図示されたプロセスは、物理層(PHY)ライブラリ116によって少なくとも部分的に実装され得る。
図48は、いくつかの実施例によるネットワークのシステム4800のアーキテクチャを示す図である。少なくとも一実施例では、システム4800は、たとえば、オペレータ・サービス、インターネット・アクセス又はサード・パーティ・サービス、並びに5Gコア・ネットワーク(5GC)(CN4810として図示)であり得るUE4802、5Gアクセス・ノード又はRANノード((R)ANノード4808として図示)、ユーザ・プレーン機能(UPF4804として図示)、データ・ネットワーク(DN4806)を含むとして図示される。
少なくとも一実施例では、CN4810は、認証サーバ機能(AUSF:Authentication Server Function 4814)、コア・アクセス及びモビリティ管理機能(AMF:Access and Mobility Management Function 4812)、セッション管理機能(SMF:Session Management Function 4818)、ネットワーク公開機能(NEF:Network Exposure Function 4816)、ポリシー制御機能(PCF:Policy Control Function 4822)、ネットワーク機能(NF:Network Function)リポジトリ機能(NRF:Network Repository Function 4820)、統合データ管理(UDM:Unified Data Management 4824)、及びアプリケーション機能(AF:Application Function 4826)を含む。少なくとも一実施例では、CN4810は、構造化データ・ストレージ・ネットワーク機能(SDSF:Structured Data Storage Function)、非構造化データ・ストレージ・ネットワーク機能(UDSF:Unstructured Data Storage Network Function)、及びそれらの変形などの、図示されていない他の要素も更に含み得る。
少なくとも一実施例では、UPF4804は、RAT内及びRAT間のモビリティのためのアンカー・ポイント、DN4806への相互接続の外部PDUセッション・ポイント、及びマルチホームPDUセッションをサポートする分岐ポイントとして動作し得る。少なくとも一実施例では、UPF4804は、パケットのルーティング及び転送、パケット・インスペクション、ポリシー規則のユーザ・プレーン部分の施行、パケットの合法的傍受(UP収集)、トラフィック使用報告、ユーザ・プレーンに対するQoS処理の実行(たとえば、パケット・フィルタリング、ゲーティング、UL/DLレート施行)、アップリンク・トラフィック検証(たとえばSDF対QoSのフロー・マッピング)、アップリンク及びダウンリンクにおけるトランスポート・レベルのパケットのマーキング、ダウンリンク・パケットのバッファリング及びダウンリンク・データの通知トリガを更に実行し得る。少なくとも一実施例では、UPF4804は、データ・ネットワークへのトラフィック・フローのルーティングをサポートするアップリンク分類器を含み得る。少なくとも一実施例では、DN4806は、様々なネットワーク・オペレータ・サービス、インターネット・アクセス、又はサード・パーティ・サービスを表し得る。
少なくとも一実施例では、AUSF4814は、UE4802の認証のためのデータを格納し、認証関連機能を扱うことができる。少なくとも一実施例では、AUSF4814は、様々なアクセスタイプに対する共通の認証フレームワークを推進し得る。
少なくとも一実施例では、AMF4812は、登録管理(たとえばUE4802の登録など)、接続管理、到達可能性管理、モビリティ管理、AMF関連イベントの合法的傍受、並びにアクセス認証及び認可を担い得る。少なくとも一実施例では、AMF4812は、SMF4818のためのSMメッセージの伝送を実現可能であり、SMメッセージをルーティングするための透過的プロキシとして動作し得る。少なくとも一実施例では、AMF4812は、さらにUE4802とSMS機能(SMSF:SMS function)(図48には図示せず)との間のショート・メッセージ・サービス(SMS)のメッセージ伝送を更に実現可能である。少なくとも一実施例では、AMF4812は、セキュリティ・アンカー機能(SEA:Security Anchor Function)として動作可能であり、セキュリティ・アンカー機能は、AUSF4814及びUE4802との相互作用と、UE4802の認証プロセスの結果として確立された中間鍵の受信とを含み得る。少なくとも一実施例では、USIMベースの認証が使用される場合、AMF4812は、AUSF4814からセキュリティ・マテリアルを取り出し得る。少なくとも一実施例では、AMF4812は、セキュリティ・コンテキスト管理(SCM:Security Context Management)機能を更に含むことが可能であり、セキュリティ・コンテキスト管理機能は、アクセス・ネットワーク専用鍵を導出するために使用する鍵をSEAから受け取る。少なくとも一実施例では、更に、AMF4812は、RAN CPインターフェース(N2リファレンス・ポイント)の終端点、NAS(NI)シグナリングの終端点でもよく、NAS暗号化及び完全性保護を実行し得る。
少なくとも一実施例では、AMF4812は、N3インターワーキング機能(IWF:interworking function)インターフェースを介したUE4802とのNASシグナリングを更にサポートし得る。少なくとも一実施例では、N3IWFは、信用できないエンティティへのアクセスを提供するために使用され得る。少なくとも一実施例では、N3IWFは、制御プレーン及びユーザ・プレーン、それぞれのためのN2及びN3インターフェースの終端点でもあることが可能であり、したがって、PDUセッション及びQoSのためのSMF及びAMFからのN2シグナリングを処理し、IPSec及びN3トンネリングのためのパケットをカプセル化/カプセル化解除し、アップリンクにおけるN3ユーザ・プレーン・パケットをマーキングし、N2を介して受信されたそのようなマーキングに関連したQoS要件を考慮したN3パケット・マーキングに対応するQoSを施行することが可能である。少なくとも一実施例では、N3IWFは、更に、UE4802とAMF4812との間でアップリンク及びダウンリンクの制御プレーンのNAS(NI)シグナリングを中継し、UE4802とUPF4804との間でアップリンク及びダウンリンクのユーザ・プレーンのパケットを中継することができる。少なくとも一実施例では、N3IWFは、更に、UE4802とのIPsecトンネル確立のための機構を提供する。
少なくとも一実施例では、SMF4818は、セッション管理(たとえばUPFとANノードとの間のトンネル維持を含む、セッション確立、修正及び解放)、UE IPアドレス配分及び管理(任意の認可を含む)、UP機能の選択及び制御、正しい宛先へトラフィックをルーティングするように、UPFにおいてトラフィック・ステアリングを構成、ポリシー制御機能に向かうインターフェースの終端、ポリシー適用及びQoSの一部の制御、合法的傍受(SMイベント及びLIシステムへのインターフェースのため)、NASメッセージのSM部分の終端、ダウンリンク・データ通知、AMFを介してN2上でANへ送信されたAN専用のSM情報のイニシエータ、セッションのSSCモードの決定を担い得る。少なくとも一実施例では、SMF4818は、QoS SLAB(VPLMN)を適用するためのローカルの施行の処理、課金データ収集及び課金インターフェース(VPLMN)、合法的傍受(VPLMNにおいて、SMイベント及びLIシステムへのインターフェースのため)、外部DNによるPDUセッション認可/認証のためのシグナリングの伝送のための外部DNとの相互作用のサポートなどのローミング機能を含み得る。
少なくとも一実施例では、NEF4816は、サード・パーティのための3GPPネットワーク機能、内部公開(exposure)/再公開、アプリケーション機能(たとえばAF4826)、エッジ・コンピューティング・システム又はフォグ・コンピューティング・システムなどによって提供されるサービス及び機能を安全に公開するための手段を提供し得る。少なくとも一実施例では、NEF4816は、AFを認証、認可、及び/又は抑制(throttle)できる。少なくとも一実施例では、NEF4816は、AF4826と交換された情報と、内部ネットワーク機能と交換された情報とを更に変換し得る。少なくとも一実施例では、NEF4816は、AFサービス識別子と内部5GC情報との間の変換を行い得る。少なくとも一実施例では、NEF4816は、他のネットワーク機能(NF:network function)の公開済み機能に基づいて他のネットワーク機能から情報を更に受信し得る。少なくとも一実施例では、この情報は、構造化データとしてNEF4816に、又は標準化インターフェースを使用してデータ・ストレージNFに格納され得る。少なくとも一実施例では、格納された情報は、その後、NEF4816によって他のNF及びAFに再公開されることが可能であり、並びに/若しくは解析などの他の目的のために使用されることが可能である。
少なくとも一実施例では、NRF4820は、サービス・ディスカバリ機能をサポートし、NFインスタンスからNFディスカバリ要求を受信し、検出されたNFインスタンスの情報をNFインスタンスに提供し得る。少なくとも一実施例では、NRF4820は、更に、使用可能なNFインスタンス及びそれらのサポートされているサービスの情報を維持する。
少なくとも一実施例では、PCF4822は、ポリシー規則を施行するために、ポリシー規則を制御プレーン機能に提供することができ、更に、ネットワーク振る舞いを管理するために統合ポリシー・フレームワークをサポートし得る。少なくとも一実施例では、PCF4822は、UDM4824のUDRにおけるポリシー決定に関連するアクセス加入情報へのフロント・エンド(FE:front end)を更に実装し得る。
少なくとも一実施例では、UDM4824は、通信セッションのネットワーク・エンティティによる処理をサポートするために加入関連情報を処理することができ、UE4802の加入データを格納できる。少なくとも一実施例では、UDM4824は、アプリケーションFEとユーザ・データ・リポジトリ(UDR:User Data Repository)との2つの部分を含み得る。少なくとも一実施例では、UDMは、証明書の処理、ロケーション管理、加入管理などを管理するUDM FEを含み得る。少なくとも一実施例では、いくつかの異なるフロント・エンドが、異なるトランザクションにおいて同一のユーザにサービス提供し得る。少なくとも一実施例では、UDM-FEは、UDRに格納された加入情報にアクセスし、認証資格処理、ユーザ識別ハンドリング、アクセス許可、登録/モビリティ管理、及び加入管理を実行する。少なくとも一実施例では、UDRは、PCF4822と相互作用し得る。少なくとも一実施例では、UDM4824は、SMS管理を更にサポートでき、SMS-FEは、前述したような同様のアプリケーション論理を実装する。
少なくとも一実施例では、AF4826は、トラフィック・ルーティングにアプリケーションの影響を提供し、ネットワーク機能公開(NCE:Network Capability Exposure)へアクセスし、ポリシー制御のためのポリシー・フレームワークと相互作用することができる。少なくとも一実施例では、NCEは、5GC及びAF4826がNEF4816によって互いに情報を提供できるようにする機構でもよく、その機構はエッジ・コンピューティングの実装のために使用され得る。少なくとも一実施例では、ネットワーク・オペレータ及びサード・パーティ・サービスは、エンドツーエンドのレイテンシ及び転送ネットワークへの負荷を低減して効率的なサービス分配を実現するために、UE4802の接続のアクセス・ポイントの近くでホストされ得る。少なくとも一実施例では、エッジ・コンピューティングの実装のために、5GCは、UE4802の近いUPF4804を選択し、UPF4804からN6インターフェースを介してDN4806へのトラフィック・ステアリングを実行し得る。少なくとも一実施例では、これは、UE加入データ、UEロケーション、及びAF4826によって提供された情報に基づき得る。少なくとも一実施例では、AF4826は、UPFの(再)選択及びトラフィック・ルーティングに影響する場合がある。少なくとも一実施例では、オペレータの導入に基づいて、AF4826が信用できるエンティティと考えられる場合、ネットワーク・オペレータは、AF4826が関連NFと直接相互作用することを許可する場合がある。
少なくとも一実施例では、CN4810はSMSFを含んでもよく、SMSFは、SMS加入チェック及び検証を担うことができ、UE4802とSMS-GMSC/IWMSC/SMSルータなどの他のエンティティとの間のSMメッセージを中継できる。少なくとも一実施例では、SMSは、更に、UE4802がSMS転送のために利用可能である通知手順のために、AMF4812及びUDM4824と相互作用し得る(たとえばUE到達不可能フラグを設定し、UE4802がSMSに利用可能である場合をUDM4824に通知する)。
少なくとも一実施例では、システム4800は、Namf:AMFによって公開された(exhibited)サービス・ベースのインターフェース、Nsmf:SMFによって公開されたサービス・ベースのインターフェース、Nnef:NEFによって公開されたサービス・ベースのインターフェース、Npcf:PCFによって公開されたサービス・ベースのインターフェース、Nudm:UDMによって公開されたサービス・ベースのインターフェース、Naf:AFによって公開されたサービス・ベースのインターフェース、Nnrf:NRFによって公開されたサービス・ベースのインターフェース、及びNausf:AUSFによって公開されたサービス・ベースのインターフェース、というサービス・ベースのインターフェースを含み得る。
少なくとも一実施例では、システム4800は、N1:UEとAMFとの間のリファレンス・ポイント、N2:(R)ANとAMFとの間のリファレンス・ポイント、N3:(R)ANとUPFとの間のリファレンス・ポイント、N4:SMFとUPFとの間のリファレンス・ポイント、及びN6:UPFとデータ・ネットワークとの間のリファレンス・ポイント、というリファレンス・ポイントを含み得る。少なくとも一実施例では、NFのNFサービス間にはより多くのリファレンス・ポイント及び/又はサービス・ベースのインターフェースが存在し得るが、それらのインターフェース及びリファレンス・ポイントは明確にするために省略されている。少なくとも一実施例では、NSリファレンス・ポイントはPCFとAFとの間に存在してもよく、N7リファレンス・ポイントはPCFとSMFとの間に存在してもよく、N11リファレンス・ポイントは、AMFとSMFとの間に存在してもよい、等である。少なくとも一実施例では、CN4810は、CN4810とCN7248との間のインターワーキングを可能とするために、MMEとAMF4812との間のCN間インターフェースであるNxインターフェースを含み得る。
少なくとも一実施例では、システム4800は、複数のRANノード((R)ANノード4808など)を含んでもよく、Xnインターフェースは、5GC410に接続する2つ以上の(R)ANノード4808(たとえばgNB)間、CN4810に接続している(R)ANノード4808(たとえばgNB)とeNB(たとえばマクロRANノード)との間、及び/又はCN4810に接続している2つのeNB間で定義される。
少なくとも一実施例では、Xnインターフェースは、Xnユーザ・プレーン(Xn-U)インターフェース及びXn制御プレーン(Xn-C)インターフェースを含み得る。少なくとも一実施例では、Xn-Uは、ユーザ・プレーンPDUの保証されていない配信を提供し、データ転送及びフロー制御機能をサポート/提供することができる。少なくとも一実施例では、Xn-Cは、管理及びエラー処理機能、Xn-Cインターフェースを管理する機能、1つ又は複数の(R)ANノード4808間の接続モードのためのUEモビリティを管理する機能を含む、接続モード(たとえばCM-CONNECTED)のUE4802のためのモビリティ・サポートを提供し得る。少なくとも一実施例では、モビリティ・サポートは、古い(ソース)サービング(R)ANノード4808から新しい(ターゲット)サービング(R)ANノード4808へのコンテキスト転送と、古い(ソース)サービング(R)ANノード4808と新しい(ターゲット)サービング(R)ANノード4808との間のユーザ・プレーン・トンネルの制御とを含み得る。
少なくとも一実施例では、Xn-Uのプロトコル・スタックは、インターネット・プロトコル(IP)トランスポート層上に構築されたトランスポート・ネットワーク層と、ユーザ・プレーンPDUを搬送するためにUDP及び/又はIP層の上のGTP-U層とを含み得る。少なくとも一実施例では、Xn-Cプロトコル・スタックは、アプリケーション層シグナリング・プロトコル(Xnアプリケーション・プロトコル(Xn-AP)と呼ばれる)と、SCTP層に構築されたトランスポート・ネットワーク層とを含み得る。少なくとも一実施例では、SCTP層は、IP層の上にあってもよい。少なくとも一実施例では、SCTP層は、アプリケーション層メッセージの保証された配信を提供する。少なくとも一実施例では、トランスポートIP層において、シグナリングPDUを配信するために、ポイント・ツー・ポイントの送信が使用される。少なくとも一実施例ではXn-Uプロトコル・スタック及び/又はXn-Cプロトコル・スタックは、本明細書に示し説明したユーザ・プレーン及び/又は制御プレーンのプロトコル・スタックと同じ又は類似していてもよい。
図49は、いくつかの実施例による制御プレーンのプロトコル・スタックの図である。少なくとも一実施例では、制御プレーン4900は、UE4402(代替として、UE4404)、RAN4416、及びMME4428の間の通信プロトコル・スタックとして示される。
少なくとも一実施例では、PHY層4902は、1つ又は複数のエア・インターフェースを介してMAC層4904によって使用された情報を送信又は受信することができる。少なくとも一実施例では、PHY層4902は、リンク適応又は適応変調及び符号化(AMC:adaptive modulation and coding)、電力制御、(たとえば初期同期及びハンドオーバ目的のための)セル探索、並びにRRC層4910などの上位層によって使用される他の測定を更に実行してもよい。少なくとも一実施例では、PHY層4902は、トランスポート・チャネル上のエラー検出、トランスポート・チャネルの前方エラー訂正(FEC:forward error correction)符号化/復号、物理チャネルの変調/復調、インターリーブ、レート・マッチング、物理チャネルへのマッピング、及び多入力多出力(MIMO)アンテナ処理を更に実行してもよい。
少なくとも一実施例では、MAC層4904は、論理チャネルとトランスポート・チャネルとの間のマッピング、トランスポート・チャネルを介してPHYに配信されるトランスポート・ブロック(TB)への1つ又は複数の論理チャネルからのMACサービス・データ・ユニット(SDU)の多重化、トランスポート・チャネルを介してPHYから配信されるトランスポート・ブロック(TB)からの1つ又は複数の論理チャネルへのMAC SDUの逆多重化、TB上へのMAC SDUの多重化、スケジューリング情報報告、ハイブリッド自動再送要求(HARD)によるエラー訂正、論理チャネル優先順位付けを実行し得る。
少なくとも一実施例では、RLC層4906は、透過モード(TM:Transparent Mode)、非確認モード(UM:Unacknowledged Mode)、及び確認モード(AM:Acknowledged Mode)を含む、複数の動作モードで動作することができる。少なくとも一実施例では、RLC層4906は、上位層プロトコル・データ・ユニット(PDU)の転送、AMデータ転送のための自動再送要求(ARQ:automatic repeat request)によるエラー訂正、並びに、UM及びAMデータ転送のためのRLC SDUの連結、分割、及び再組み立てを実行することができる。少なくとも一実施例では、RLC層4906は、更に、AMデータ転送のためのRLCデータPDUの再分割を実行し、UM及びAMデータ転送のためのRLCデータPDUを並べ替え、UM及びAMデータ転送のための複製データを検出し、UM及びAMデータ転送のためのRLC SDUを破棄し、AMデータ転送のためのプロトコル・エラーを検出し、RLC再確立を実行してもよい。
少なくとも一実施例では、PDCP層4908は、IPデータのヘッダ圧縮及び復元を実行し、PDCPシーケンス番号(SN)を維持し、下位層の再確立における上位層PDUのインシーケンス配信を実行し、RLC AM上にマッピングされた無線ベアラのための下位層の再確立における下位層SDUの複製を除去し、制御プレーン・データを暗号化及び解読し、制御プレーン・データの完全性保護及び完全性検証を実行し、データのタイマ・ベースの破棄を制御し、セキュリティ動作(たとえば、暗号化、解読、完全性保護、完全性検証など)を実行することができる。
少なくとも一実施例では、RRC層4910の主なサービス及び機能としては、システム情報(たとえば非アクセス層(NAS:non-access stratum)に関するマスタ情報ブロック(MIB:Master Information Block)又はシステム情報ブロック(SIB:System Information Block)に含まれる)のブロードキャスト、アクセス層(AS:access stratum)に関するシステム情報のブロードキャスト、UEとE-UTRANとの間のRRC接続のページング、確立、維持、及び解放(たとえばRRC接続ページング、RRC接続確立、RRC接続変更、及びRRC接続解放)、ポイント・ツー・ポイント無線ベアラの確立、構成、維持、及び解放、鍵管理を含むセキュリティ機能、無線アクセス技術(RAT)間モビリティ、並びにUE測定報告のための測定構成を挙げることができる。少なくとも一実施例では、上記のMIB及びSIBは、それぞれ個々のデータフィールド又はデータ構造を含むことができる1つ又は複数の情報要素(IE:information element)を含んでもよい。
少なくとも一実施例では、UE4402及びRAN4416は、PHY層4902、MAC層4904、RLC層4906、PDCP層4908、及びRRC層4910を含むプロトコル・スタックを介して制御プレーン・データを交換するために、Uuインターフェース(たとえばLTE-Uuインターフェース)を利用し得る。
少なくとも一実施例では、非アクセス層(NAS)プロトコル(NASプロトコル4912)は、UE4402とMME4428との間の制御プレーンの最上位層を形成する。少なくとも一実施例では、NASプロトコル4912は、UE4402とP-GW4434との間のIP接続を確立及び維持するために、UE4402のモビリティ及びセッション管理手順をサポートする。
少なくとも一実施例では、Siアプリケーション・プロトコル(S1-AP)層(Si-AP層4922)は、Siインターフェースの機能をサポートしてもよく、エレメンタリー・プロシージャ(EP:Elementary Procedure)を含んでもよい。少なくとも一実施例では、EPは、RAN4416とCN4428との間の相互作用の単位である。少なくとも一実施例では、S1-AP層サービスは、UE関連サービスと非UE関連サービスとの2つのグループを含み得る。少なくとも一実施例では、これらのサービスは、E-UTRAN無線アクセス・ベアラ(E-RAB:E-UTRAN Radio Access Bearer)管理、UE機能表示、モビリティ、NASシグナリング・トランスポート、RAN情報管理(RIM:RAN Information Management)、及び構成転送を含むがこれらに限定されない機能を実行する。
少なくとも一実施例では、ストリーム制御伝送プロトコル(SCTP:Stream Control Transmission protocol)層(或いはストリーム制御伝送プロトコル/インターネット・プロトコル(SCTP/IP)層と呼ばれる)(SCTP層4920)は、IP層4918によってサポートされるIPプロトコルに部分的に基づいて、RAN4416とMME4428との間のシグナリング・メッセージの信頼できる配信を確実にすることができる。少なくとも一実施例では、L2層4916及びL1層4914は、情報を交換するためにRANノード及びMMEによって使用される通信リンク(たとえば有線又はワイヤレス)を指し得る。
少なくとも一実施例では、RAN4416及びMME4428は、L1層4914、L2層4916、IP層4918、SCTP層4920、及びSi-AP層4922を含むプロトコル・スタックを介して制御プレーン・データを交換するためにS1-MMEインターフェースを利用し得る。
図50は、少なくとも一実施例による、ユーザ・プレーンのプロトコル・スタックの図である。少なくとも一実施例では、ユーザ・プレーン5000は、UE4402、RAN4416、S-GW4430、及びP-GW4434の間の通信プロトコル・スタックとして示される。少なくとも一実施例では、ユーザ・プレーン5000は、制御プレーン4900と同一のプロトコル層を利用し得る。少なくとも一実施例では、たとえば、UE4402及びRAN4416は、PHY層4902、MAC層4904、RLC層4906、PDCP層4908を含むプロトコル・スタックを介してユーザ・プレーン・データを交換するためにUuインターフェース(たとえばLTE-Uuインターフェース)を利用し得る。
少なくとも一実施例では、ユーザ・プレーン層のための汎用パケット無線サービス(GPRS:General Packet Radio Service)トンネリング・プロトコル(GTP-U)(GTP-U層5004)は、GPRSコア・ネットワーク内及び無線アクセス・ネットワークとコア・ネットワークとの間でユーザ・データを運ぶために使用され得る。少なくとも一実施例では、伝送されるユーザ・データは、たとえばIPv4、IPv6、又はPPPフォーマットのうちのいずれかのパケットであってもよい。少なくとも一実施例では、UDP及びIPセキュリティ(UDP/IP)層(UDP/IP層5002)は、データ完全性のチェックサム、ソース及び宛先で異なる機能に対処するためのポート番号、並びに選択されたデータ・フロー上の暗号化及び認証を提供することができる。少なくとも一実施例では、RAN4416及びS-GW4430は、L1層4914、L2層4916、UDP/IP層5002、及びGTP-U層5004を含むプロトコル・スタックを介してユーザ・プレーン・データを交換するためにS1-Uインターフェースを利用し得る。少なくとも一実施例では、S-GW4430及びP-GW4434は、L1層4914、L2層4916、UDP/IP層5002、及びGTP-U層5004を含むプロトコル・スタックを介してユーザ・プレーン・データを交換するためにS5/S8aインターフェースを利用し得る。少なくとも一実施例では、図49に関して上述したように、NASプロトコルは、UE4402とP-GW4434との間でIP接続を確立及び維持するためにUE4402のモビリティ及びセッション管理手順をサポートする。
図51は、少なくとも一実施例による、コア・ネットワークの構成要素5100を示す図である。少なくとも一実施例では、CN4438の構成要素は、機械可読媒体又はコンピュータ可読媒体(たとえば非一時的な機械読取り可能ストレージ媒体)から命令を読み出して実行するための構成要素を含む、単一の物理ノード又は別個の物理ノードに実装されてもよい。少なくとも一実施例では、ネットワーク機能仮想化(NFV:Network Function Virtualization)は、1つ又は複数のコンピュータ読取り可能ストレージ媒体(以下で更に詳細に説明する)に格納された実行可能命令を介して、上述のネットワーク・ノード機能のいずれか又は全てを仮想化するために利用される。少なくとも一実施例では、CN4438の論理インスタンス化は、ネットワーク・スライス5102と呼ばれることがある(たとえばネットワーク・スライス5102は、HSS4432、MME4428、及びS-GW4430を含むように示されている)。少なくとも一実施例では、CN4438の一部の論理インスタンス化は、ネットワーク・サブスライス5104と呼ばれることがある(たとえばネットワーク・サブスライス5104は、P-GW4434及びPCRF4436を含むように示されている)。
少なくとも一実施例では、NFVアーキテクチャ及びインフラストラクチャは、1つ又は複数のネットワーク機能を仮想化するために使用されてもよく、代替的に専有ハードウェアによって実行されて、業界標準のサーバ・ハードウェア、ストレージ・ハードウェア、又はスイッチの組み合わせを含む物理リソース上に仮想化するために使用されてもよい。少なくとも一実施例では、NFVシステムを使用して、1つ又は複数のEPC構成要素/機能の仮想実装又は再構成可能な実装を実行することができる。
図52は、ネットワーク機能仮想化(NFV)をサポートするシステム5200の、少なくとも一実施例による構成要素を示すブロック図である。少なくとも一実施例では、システム5200は、仮想化インフラストラクチャ・マネージャ(VIM:virtualized infrastructure manager 5202として示される)、ネットワーク機能仮想化インフラストラクチャ(NFVI:network function virtualization infrastructure 5204として示される)、VNFマネージャ(VNFM:VNF manager 5206として示される)、仮想化ネットワーク機能(VNF:virtualized network function 5208として示される)、要素マネージャ(EM:element manager 5210として示される)、NFVオーケストレータ(NFVO:NFV Orchestrator 5212として示される)、及びネットワーク・マネージャ(NM5214として示される)を含むとして図示されている。
少なくとも一実施例では、VIM5202は、NFVI5204のリソースを管理する。少なくとも一実施例では、NFVI5204は、システム5200を実行するために使用される物理又は仮想リソース及びアプリケーション(ハイパーバイザを含む)を含むことができる。少なくとも一実施例では、VIM5202は、NFVI5204による仮想リソースのライフサイクル(たとえば、1つ又は複数の物理リソースに関連付けられた仮想機械(VM)の生成、維持、及び解体)を管理し、VMインスタンスを追跡し、VMインスタンス及び関連物理リソースの性能、障害、及びセキュリティを追跡し、VMインスタンス及び関連物理リソースを他の管理システムに公開することができる。
少なくとも一実施例では、VNFM5206は、VNF5208を管理することができる。少なくとも一実施例では、VNF5208を使用して、EPC構成要素/機能を実行するために使用されることができる。少なくとも一実施例では、VNFM5206は、VNF5208のライフサイクルを管理し、VNF5208の仮想態様の性能、障害及びセキュリティを追跡してもよい。少なくとも一実施例では、EM5210は、VNF5208の機能的態様の性能、障害、及びセキュリティを追跡してもよい。少なくとも一実施例では、VNFM5206及びEM5210からの追跡データは、たとえば、VIM5202又はNFVI5204によって使用される性能測定(PM:performance measurement)データを含んでもよい。少なくとも一実施例では、VNFM5206及びEM5210の両方は、システム5200のVNFの量をスケール・アップ/ダウンすることができる。
少なくとも一実施例では、NFVO5212は、要求されたサービスを提供するために(たとえば、EPC機能、構成要素、又はスライスを実行するために)、NFVI5204のリソースを調整、認可、解放、及び予約してもよい。少なくとも一実施例では、NM5214は、ネットワークの管理を担うエンド・ユーザ機能のパッケージを提供することができ、これは、VNF、非仮想化ネットワーク機能、又はその両方を有するネットワーク要素を含んでもよい(VNFの管理は、EM5210を介して行われてもよい)。
少なくとも一実施例では、NM5214は、物理層(PHY)ライブラリ116の一部として実装された関数のパッケージを提供し得る。
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。「接続される」という用語は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。少なくとも一実施例では、「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
「A、B、及びCのうちの少なくとも1つ」又は「A、B、及びCのうちの少なくとも1つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、AかBかCである、又はAとBとCのセットのいずれかの空でないサブセットであることを提示するために一般に使用される文脈で理解される。たとえば、3つの部材を有するセットの説明的な実例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B、及びCのうちの少なくとも1つ」という結合句は、次のセットのうちのいずれかを指す:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。したがって、こうした結合語は、ある一定の実施例が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。少なくとも一実施例では、複数である項目の数は、少なくとも2つであるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、少なくとも一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の実例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な実例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な実例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
上の議論は、記載した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
さらに、主題は、構造的特徴及び/又は方法論的行為に特有の言葉で説明されてきたが、添付の特許請求の範囲で請求される主題は、必ずしも説明された特有の特徴又は行為に限定されないことが理解されるべきである。むしろ、特有の特徴及び行為は、特許請求の範囲を実装する例示的な形として開示されている。

Claims (32)

  1. 1つ又は複数の第5世代新無線(5G-NR)動作が実行される1つ又は複数のコンピューティング・リソースに少なくとも部分的に基づいて、前記1つ又は複数の動作を並列に実行させる1つ又は複数の回路を備えるプロセッサ。
  2. 5G-NR動作を並列に実行させることは、各グループの動作を前記1つ又は複数のコンピューティング・リソースを使用して実行させる1つ又は複数の属性に少なくとも部分的に基づいて、前記1つ又は複数の動作をグループ化することを含む、請求項1に記載のプロセッサ。
  3. 前記1つ又は複数の属性は、1つ又は複数の5G-NRセルを示す、請求項2に記載のプロセッサ。
  4. 5G-NR動作を並列に実行させることは、前記1つ又は複数の動作が実行される前記1つ又は複数のコンピューティング・リソースを示す1つ又は複数のパラメータを受信することを含む、請求項1に記載のプロセッサ。
  5. 5G-NR動作を並列に実行させることは、前記1つ又は複数のコンピューティング・リソースを示す1つ又は複数のパラメータに少なくとも基づいて、前記1つ又は複数の動作を並列に実行されるように構成することを含む、請求項1に記載のプロセッサ。
  6. 前記1つ又は複数のコンピューティング・リソースは、前記1つ又は複数の動作を実行する1つ又は複数のカーネルを含み、前記1つ又は複数のカーネルの各カーネルは、前記1つ又は複数のコンピューティング動作の1つ又は複数の属性を示すパラメータに少なくとも部分的に基づいて、前記1つ又は複数のコンピューティング動作の1つ又は複数のグループを実行する、請求項1に記載のプロセッサ。
  7. 前記1つ又は複数の回路は、ソフトウェア・ライブラリに、前記1つ又は複数の動作が実行される前記1つ又は複数のコンピューティング・リソースを示す1つ又は複数のパラメータを受信させ、前記1つ又は複数のコンピューティング・リソースを使用して並列に実行されるように前記1つ又は複数の動作をグループ化させる、請求項1に記載のプロセッサ。
  8. 前記1つ又は複数の動作は、5G-NRネットワークの1つ又は複数のセルと関連付けられた1つ又は複数のデバイスからの1つ又は複数の物理層(PHY)動作を含む、請求項1に記載のプロセッサ。
  9. 前記1つ又は複数の回路は、更に、前記5G-NR動作を1つ又は複数の並列処理ユニットによって並列に実行させる、請求項1に記載のプロセッサ。
  10. 1つ又は複数の第5世代新無線(5G-NR)動作が実行される1つ又は複数のコンピューティング・リソースに少なくとも部分的に基づいて、前記1つ又は複数の動作を並列に実行することを有する方法。
  11. 5G-NR物理層(PHY)ライブラリによって前記1つ又は複数の動作をグループ化することを更に有し、前記5G-NR PHYライブラリは、前記1つ又は複数のコンピューティング・リソースを使用して各グループの動作が実行されるように、1つ又は複数の属性に少なくとも部分的に基づいて前記1つ又は複数の動作をグループ化し、ここで、前記5G-NR PHYライブラリは、アプリケーション・プログラミング・インターフェースへの1つ又は複数の関数呼出しの結果として前記1つ又は複数の属性を受信する、請求項10に記載の方法。
  12. 前記1つ又は複数のコンピューティング・リソースは、1つ又は複数の並列処理ユニットを使用して前記1つ又は複数の動作を実行する1つ又は複数のソフトウェア・カーネルを含む、請求項10に記載の方法。
  13. 5G-NR物理層(PHY)ライブラリは、前記5G-NR PHYライブラリへの1つ又は複数の関数呼出しの結果として前記1つ又は複数の動作のそれぞれを構成する1つ又は複数のパラメータを受信し、前記1つ又は複数の動作が実行される時に、前記1つ又は複数のパラメータのそれぞれのパラメータが更新されるかに少なくとも部分的に基づいて、前記1つ又は複数のパラメータのそれぞれを格納する、請求項10に記載の方法。
  14. 5G-NR物理層(PHY)ライブラリは、前記1つ又は複数の動作の1つ又は複数の属性に少なくとも部分的に基づいて、前記1つ又は複数のコンピューティング・リソースのいずれが前記1つ又は複数の動作を並列に実行するために使用されるかを決定し、前記1つ又は複数の属性は少なくとも5G-NRセルを示す、請求項10に記載の方法。
  15. 前記1つ又は複数の動作は1つ又は複数の5G-NRセルに対応し、5G-NR物理層(PHY)ライブラリは、前記1つ又は複数の5G-NRセルに少なくとも部分的に基づいて、前記1つ又は複数の動作が実行される前記1つ又は複数のコンピューティング・リソースを選択する、請求項10に記載の方法。
  16. 5G-NR物理層(PHY)ライブラリに、前記1つ又は複数のコンピューティング・リソースを少なくとも示す1つ又は複数のパラメータを受信させ、前記1つ又は複数のパラメータに少なくとも部分的に基づいて前記1つ又は複数のコンピューティング・リソースによって実行されるように前記1つ又は複数の動作を構成させることを更に有する、請求項10に記載の方法。
  17. 前記1つ又は複数のコンピューティング・リソースは、前記1つ又は複数のコンピューティング動作を実行する5G-NRベースバンド装置の並列処理ユニットを少なくとも備える、請求項10に記載の方法。
  18. 1つ又は複数の第5世代新無線(5G-NR)動作が実行される1つ又は複数のコンピューティング・リソースに少なくとも部分的に基づいて、前記1つ又は複数の動作を並列に実行されるようにする1つ又は複数のプロセッサを備える、システム。
  19. 前記1つ又は複数のコンピューティング・リソースは、少なくとも1つの並列処理ユニットを備え、前記1つ又は複数の動作は、前記少なくとも1つの並列処理ユニットによって実行された1つ又は複数のカーネルによって並列に実行され、前記1つ又は複数のカーネルは、ソフトウェア・ライブラリによって受信された1つ又は複数のパラメータに少なくとも部分的に基づいて前記ソフトウェア・ライブラリによって選択される、請求項18に記載のシステム。
  20. 前記1つ又は複数のパラメータは、前記1つ又は複数の動作のそれぞれに対する少なくとも1つの属性を示し、前記少なくとも1つの属性は、前記1つ又は複数の動作によって処理される情報を生成する1つ又は複数の5G-NRセルを示す、請求項19に記載のシステム。
  21. 前記1つ又は複数のプロセッサによって実行された時に、ソフトウェア・ライブラリへの1つ又は複数の関数呼出しの結果として受信された1つ又は複数のパラメータにしたがって前記1つ又は複数の動作をグループにバッチする前記ソフトウェア・ライブラリを実施する命令を備え、各グループの動作は、前記1つ又は複数のコンピューティング・リソースを使用して並列に実行される、請求項18に記載のシステム。
  22. 前記1つ又は複数のプロセッサは、前記1つ又は複数の動作を、1つ又は複数の実行スロット中に並列に実行させ、前記1つ又は複数の実行スロットは、前記1つ又は複数の動作を実行するために前記1つ又は複数のコンピューティング・リソースが利用可能な期間を含む、請求項18に記載のシステム。
  23. ソフトウェア・ライブラリを更に備え、前記ソフトウェア・ライブラリは、実行された時に、前記ソフトウェア・ライブラリに、前記1つ又は複数の動作の1つ又は複数の構成を示す1つ又は複数のパラメータを受信させる命令を備え、前記1つ又は複数のコンピューティング・リソースを使用して並列に実行されるように、前記1つ又は複数の動作をグループ化し、前記ソフトウェア・ライブラリは、前記1つ又は複数の構成に少なくとも部分的に基づいて前記1つ又は複数の動作をグループ化し、前記1つ又は複数の構成は、前記1つ又は複数の動作を実行するために使用可能な前記1つ又は複数のコンピューティング・リソースを示す、請求項18に記載のシステム。
  24. 前記1つ又は複数のコンピューティング・リソースは、前記1つ又は複数の動作の第1のグループと、前記1つ又は複数の動作の第2のグループとを並列に実行する1つ又は複数の並列処理ユニットを備える、請求項18に記載のシステム。
  25. 1つ又は複数のプロセッサによって実行された場合に、前記1つ又は複数のプロセッサに、少なくとも、
    1つ又は複数の第5世代新無線(5G-NR)動作が実行される1つ又は複数のコンピューティング・リソースに少なくとも部分的に基づいて、前記1つ又は複数の動作を並列に実行させる、命令のセットを格納した機械可読媒体。
  26. 前記1つ又は複数のプロセッサによって実行された時に、前記1つ又は複数のプロセッサに、前記1つ又は複数の動作を1つ又は複数のグループにグループ化させ、前記1つ又は複数のグループの各グループは、前記1つ又は複数のコンピューティング・リソースに少なくとも部分的に基づいて前記ソフトウェア・ライブラリによって決定された1つ又は複数のソフトウェア・カーネルによって実行される、5G-NR物理層(PHY)ライブラリを実装する命令を更に備える、請求項25に記載の機械可読媒体。
  27. 前記1つ又は複数のプロセッサによって実行された時に、前記1つ又は複数のプロセッサに、前記1つ又は複数の動作が並列に実行されるように構成する1つ又は複数のパラメータを受信させる5G-NR物理層(PHY)ライブラリを実装する命令を更に備え、前記1つ又は複数のパラメータは、前記1つ又は複数の動作が実行される前記1つ又は複数のコンピューティング・リソースを示す情報を含む、請求項25に記載の機械可読媒体。
  28. 前記1つ又は複数のプロセッサによって実行された時に、前記1つ又は複数のプロセッサに、5G-NR PHYライブラリに提供された1つ又は複数のパラメータによって示された前記1つ又は複数の動作の1つ又は複数の属性に少なくとも部分的に基づいて前記1つ又は複数の動作をグループ化させる前記5G-NR物理層(PHY)ライブラリを実装する命令を更に備え、前記1つ又は複数の属性は、前記1つ又は複数の動作が実行される前記1つ又は複数のコンピューティング・リソースを選択するために前記5G-NR PHYライブラリによって使用可能である、請求項25に記載の機械可読媒体。
  29. 前記1つ又は複数のコンピューティング・リソースは、少なくとも1つの並列処理ユニットを備え、前記少なくとも1つの並列処理ユニットは、前記1つ又は複数の動作の1つ又は複数のグループを並列に実行する1つ又は複数の実行ユニットを備える、請求項25に記載の機械可読媒体。
  30. 前記1つ又は複数のプロセッサによって実行された時に、前記1つ又は複数のプロセッサに、ソフトウェア・ライブラリによって提供されたインターフェースへの1つ又は複数の関数呼出しの結果として受信された1つ又は複数のパラメータにしたがって前記1つ又は複数の動作をグループ化させ、各グループに対して1つ又は複数のカーネルを使用して前記1つ又は複数の動作を実行させ、前記1つ又は複数のカーネルは、前記1つ又は複数のコンピューティング・リソースを使用して並列に実行される前記ソフトウェア・ライブラリを実装する命令を更に備える、請求項25に記載の機械可読媒体。
  31. 前記1つ又は複数のプロセッサによって実行された時に、前記1つ又は複数のプロセッサに、前記1つ又は複数の動作の少なくとも1つの属性にしたがって前記1つ又は複数の動作をグループ化させ、前記1つ又は複数のコンピューティング・リソースを使用して前記1つ又は複数の動作の各グループを並列に実行させ、前記少なくとも1つの属性は、5G-NRセルを示す、命令を更に備える、請求項25に記載の機械可読媒体。
  32. 前記1つ又は複数のコンピューティング・リソースは、少なくとも1つの並列処理ユニットを備え、前記少なくとも1つの並列処理ユニットは、前記1つ又は複数の動作を並列に実行するために使用可能な、請求項25に記載の機械可読媒体。
JP2022087329A 2021-06-25 2022-05-30 5g-nrマルチ・セル・ソフトウェア・フレームワーク Pending JP2023004898A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/359,061 2021-06-25
US17/359,061 US20220413928A1 (en) 2021-06-25 2021-06-25 5g-nr multi-cell software framework

Publications (1)

Publication Number Publication Date
JP2023004898A true JP2023004898A (ja) 2023-01-17

Family

ID=82705692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022087329A Pending JP2023004898A (ja) 2021-06-25 2022-05-30 5g-nrマルチ・セル・ソフトウェア・フレームワーク

Country Status (7)

Country Link
US (1) US20220413928A1 (ja)
JP (1) JP2023004898A (ja)
KR (1) KR20230000970A (ja)
CN (1) CN115529669A (ja)
AU (1) AU2022204378A1 (ja)
DE (1) DE102022114650A1 (ja)
GB (1) GB2612162A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210107531A (ko) * 2018-12-24 2021-09-01 인텔 코포레이션 멀티-프로세스 웹 브라우저 환경에서 머신 러닝 모델을 프로세싱하기 위한 방법들 및 장치
US20240168915A1 (en) * 2022-05-25 2024-05-23 SambaNova Systems, Inc. Graph Spatial Split
US20240121315A1 (en) * 2022-10-05 2024-04-11 Nvidia Corporation Application programming interface to indicate a device in a transport network to share information with a device in a core network

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099918B2 (en) * 2015-05-11 2021-08-24 Xilinx, Inc. Accelerating algorithms and applications on FPGAs
US11625277B2 (en) * 2019-05-20 2023-04-11 Intel Corporation Dynamically augmenting edge resources
EP4029321A4 (en) * 2019-10-15 2022-08-31 Apple Inc. DISCONTINUOUS CONNECTED RECEPTION FOR CARRIER AGGREGATION
US20210184795A1 (en) * 2019-12-16 2021-06-17 Nvidia Corporation Accelerated parallel processing of 5g nr signal information
US11800347B2 (en) * 2020-04-10 2023-10-24 Qualcomm Incorporated User equipment (UE) capability and assistance information exchange over sidelinks
US20210390004A1 (en) * 2020-06-16 2021-12-16 Nvidia Corporation Accelerated fifth generation (5g) new radio operations
US20220132381A1 (en) * 2020-10-23 2022-04-28 At&T Intellectual Property I, L.P. User plane adaptation for mobile integrated access and backhaul

Also Published As

Publication number Publication date
GB2612162A (en) 2023-04-26
US20220413928A1 (en) 2022-12-29
DE102022114650A1 (de) 2022-12-29
GB202208886D0 (en) 2022-08-10
AU2022204378A1 (en) 2023-01-19
CN115529669A (zh) 2022-12-27
KR20230000970A (ko) 2023-01-03

Similar Documents

Publication Publication Date Title
US20210279055A1 (en) Technique for performing bit-linear transformations
US20210119848A1 (en) Parallel de-rate-matching and layer demapping for physical uplink shared channel
JP2023505633A (ja) 5g nr信号情報の加速化並列処理
US20210099251A1 (en) Parity check decoding
US20210135733A1 (en) 5g resource assignment technique
US20220276914A1 (en) Interface for multiple processors
US20220159637A1 (en) Control data bandwidth allocation for fifth generation (5g) new radio communications
JP2023501928A (ja) Ldpc復号のためのスケジューリング方法
US20240297810A1 (en) Technique to perform demodulation of wireless communications signal data
US20220413928A1 (en) 5g-nr multi-cell software framework
US20220231701A1 (en) Technique to perform decoding of wireless communications signal data
US20220151022A1 (en) Intra-layer adapter for fifth generation new radio (5g-nr) communications
US20240223307A1 (en) Parallel selection of fifth generation (5g) new radio information
US20240097774A1 (en) Wireless beam selection
US20240063962A1 (en) Reference signal generation
CN115335809A (zh) 用于多个处理器的接口
US11838126B2 (en) Parallel selection of fifth generation (5G) new radio information
US20240214931A1 (en) Discontinuous transmission detection
US20230070361A1 (en) 5g-nr software interface
US20240195871A1 (en) Application programming interface to store information in fifth generation new radio (5g-nr) statically-sized linked storage
US20240193020A1 (en) Application programming interface to invalidate information in fifth generation new radio (5g-nr) statically-sized linked storage
US20240097843A1 (en) Reference signal configuration information transmission
US20240193019A1 (en) Application programming interface to allocate fifth generation new radio (5g-nr) storage
US20240196183A1 (en) Application programming interface to deallocate fifth generation new radio (5g-nr) statically-sized linked storage
US20240056856A1 (en) Wireless signal information transmission

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240614

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240913