이신플러스의 달콤쌉싸름한 낙원

반응형



RISCの命令セットの登場と、パイプライン化がうまく半導体の進歩と組み合わさり、 1980年代からCPUの性能は飛躍的に高まりました。 まずは、パイプラインのステージを細かく刻むことで周波数を上げる試みが行われま した。この方法は周波数は上がりますが、データハザードの影響でパイプラインス トールが増え、性能が上がりません。このため、実行できない命令を追い越して、実 行できる命令から実行する動的スケジュールの技術が発達しました。次に複数の命 令を同時に発行する命令レベル並列処理の技術が発達しました。 

RISC 명령 세트의 등장과 파이프 라인 화가  반도체 진보와 결합,
1980년대부터 CPU 성능은 비약적으로 높아졌습니다.
우선은 파이프 라인의 스테이지를 기로 주파수를 올리는 시도가 이뤄지
했다. 이 방법은 주파수는 오르지만 데이터 해이 영향으로 파이프 라인 소스
토르가 늘면서 성능이 올라가지 않습니다. 이 때문에, 실행할 수 없는 명령을 제치고사실
갈 수 있는 명령에서 실행하는 동적 스케줄 기술이 발달했습니다. 다음 복수목숨
영을 동시에 발행하는 명령 수준 병렬 처리 기술이 발달했습니다.


RISCの命令セットの登場と、パイプライン化がうまく半導体の進歩と組み合わさり、 1980年代からCPUの性能は飛躍的に高まりました。 まずは、パイプラインのステージを細かく刻むことで周波数を上げる試みが行われま した。この方法は周波数は上がりますが、データハザードの影響でパイプラインス トールが増え、性能が上がりません。このため、実行できない命令を追い越して、実 行できる命令から実行する動的スケジュールの技術が発達しました。次に複数の命 令を同時に発行する命令レベル並列処理の技術が発達しました。

 


ここでは、1980年代、90年代に急速に発達した技術を簡単に紹介します。 

여기에서는 1980년대 90년대 급속히 발달한 기술을 간단하게 소개합니다.


まずはパイプラインのステージ数を増やして周波数を上げることで高速化する技術 が発達しました。この図はMIPS R4000というプロセッサで使われた8ステージのパ イプラインです。周波数を上げるために、さらに段数は増え、最盛期には15段くらい になりました。最近はやや減る傾向にありますが、多くの高速CPUは10段程度のス テージを持っています。

우선은 파이프 라인 스테이지 수를 늘리고 주파수를 올리기로 고속화하는 기술
이 발달했습니다. 이 그림은 MIPS R4000이라는 프로세서로 사용된 8스테이지의 
이프 라인입니다. 주파수를 올리기 위해서  단수는 늘어 최성기에는 15단 가량
됐습니다. 요즘은 다소 줄어드는 경향이 있지만 많은 고속 CPU 10단 정도 쿠스
티지 가지고 있습니다.


パイプラインのステージが増えて長くなる問題点は命令間の依存性によるデータハ ザードの影響が大きくなることです。POCOは4段パイプラインなので、フォワーディ ングで解決できましたが、長いパイプラインほど、間隔を置かないと、先行する命令 の結果を利用することができなくなります

파이프 라인 무대가 늘고 길어지는 문제점은 명령 사이 의존성에 의한 데이 타하
저드 영향이 커지는 것입니다. POCO 4단 파이프 라인이라 포와ー디
송으로 해결할 수 있었는데  파이프 라인 정도 간격을 지 않으면 선행하는 명령
결과를 이용할 수 없습니다.


遅延分岐を行う場合も遅延スロット数が増えてしまいます。パイプラインは全体とし てあちことでストールするようになり、周波数が上がった割には性能が上がらないこ とになります。

지연 분기를 행하는 경우 지연 슬롯 수가 늘어 버립니다. 파이프 라인은 전체
하고 여기저기서 스톨 하게 되고 주파수가 오른 것 치고는 성능이 안 올라
 됩니다.


この問題点を解決するには、ソフトウェアによる方法とハードウェアによる方法が考え られます。 

 문제점을 해결하려면 소프트웨어에 의한 방법 하드웨어에 의한 방법이 생각
됩니다.


ソフトウェアによる解決法で最も普及しているループアンローリングを紹介しましょう。 この例のプログラムを実行するときに、Aをロードし、これをBと加算し、Cにストアする 必要がありますが、これはそれぞれの命令で処理した結果を使うため、依存性があり ます。それぞれの命令間で3か所ストールしないとうまく実行できません。 

소프트웨어에 의한 해결법으로 가장 보급하고 있는 그룹  롤링을 소개합니다.
 사례 프로그램을 실행할 때, A을 로드하고 이를 B와 가산하고 C 매장한다
필요가 있지만, 이것은 각각의 명령으로 처리한 결과를 사용하기 때문에 의존성이 있다
니다.각각의 명령 사이에서 3군데 스톨 하지 않으면 잘 실행할 수 없습니다.


ループアンローリングは、ループの反復数回分を1回にまとめて行う方法です。この

例では4回分を1回で実行(アンロール)しています。このようにすると①―④のそれ

ぞれの命令は独立に実行できるので、命令の順番を工夫することによりストールをな

くすことができます

루프  롤링은 루프 반복 몇 포 1회에 몰아서 하는 방법입니다.

예에서는 4차분 1회에서 실행(언롤) 하고 있습니다. 이렇게 하    그것

 명령은 독립 실행할 수 있기 때문에 명령 순서를 연구함으로써 스톨을 어루만져

쿠스놀 수 있습니다.


この様子を示した例です。それぞれ別のレジスタを使うことで、それぞれの命令の実 行結果を使う命令を3命令離して配置することが可能になります。これならばパイプラ インが長くてもストールを生じません。アンローリングはストールを防ぐだけでなく、ポ インタの制御や分岐命令の実行数も減るのでこの点でも高速化されます。この手法 はGPUやマルチコアなどの並列処理でもよく用いられます。

이 모습을 나타낸 예입니다. 각각 다른 레지스터를 사용하면서 각각의 명령 사실
 결과를 사용 명령을 3명령 따로 배치할 수 있습니다. 라면 파이 프라
인이 길어도 스톨 일어나지 않습니다.  롤링 스톨 막을 뿐 아니라 포인트
인터넷의 제어 및 분기 명령 실행  줄어드니까 이 점에서도 고속화됩니다. 이 수법

 GPU, 멀티 코어  병렬 처리로도  사용합니다.


ループアンローリングなどコンパイラによる最適化は強力な方法ですが、ソースコード をコンパイルしなおす必要があります。また、コンパイラが解析可能なレベルの比較 的単純なループに限られます。現在のビジネスモデルは機械語のコードを配布する 方法なので、できることなら、これに手を加えずに高速化する必要があります。命令 の動的スケジュールは、この要求を満足させる技術です。簡単に言うと、現在実行中 の命令により、後続の命令の実行が妨げられている場合、これを追い越して依存性 のない命令を先に実行してしまう方法です。このように与えられた順番通りに命令が 実行されない場合を、アウトオブオーダ実行と呼びます。逆に与えられた順番を守る 方法をインオーダ実行と呼びます。アウトオブオーダ実行を実現するためには、かな り複雑なハードウェアが必要です。代表的な方法をTomasloのアルゴリズムと呼びま す。この方法はリザベーションステーションというところに命令を登録し、可能な状態 になったかどうかを自己判断して実行する方法です。 

루프  롤링  컴파일러에 의한 최적화는 강력한 방법이지만, 소스 코드
를 컴파일하는 필요가 있습니다. 또한, 컴파일러가 해석 가능한 수준의 비교
적 단순한 루프에 한정됩니다. 현재의 비즈니스 모델은 기계어 코드를 배포한다
방법이라 가능하다면 이것에 손을 행사하지 않고 고속화할 필요가 있습니다. 명령
동적 스케줄  요구를 만족시키는 기술입니다. 간단히 말하면 현재 실행 중
명령에 따른 후속 명령 실행이 방해 받는 경우 이를 추월하 의존성
없는 명령을 먼저 실행하는 방법입니다. 이렇게 주어진 순서대로 명령이
실행되지 않는 경우 아웃 오브 오더 실행이라고 부릅니다. 오히려 주어진 순서를지킨다
방법을  오더 실행이라고 부릅니다. 아웃 오브 오더 실행을 실현하려면?
혼자 복잡한 하드웨어가 필요합니다. 대표적인 방법을 Tomaslo 알고리즘이라고 부르
. 이 방법은 베이션 스테이션이라는 곳 명령을 등록하고 가능한 상태

여부 자기 판단하고 실행하는 방법입니다.


この図がTomusloのアルゴリズムの図です。命令キューに入った命令は、リザベー

ションステーションに登録されます。実行された結果はCDB(共通データバス)に出

力され、これを全てのリザベーションステーションがチェックします。この出力により自

分が実行可能になったら、演算の元のデータと共に演算装置に入力されて実行され

ます。この方法はレジスタの名前が重なって実行できない場合も対処可能です。



이 그림 Tomuslo 알고리즘의 그림입니다. 명령 큐에 들어간 명령은 리자 베타
 스테이션 등록됩니다. 실행된 결과는 CDB(공통 데이터 버스)에 나온다
 받고 이를 모든 베이션 스테이션이 체크합니다.  출력에 따른 
이 실행 가능하게 되면 연산의 원래 데이터와 함께 연산 장치에 입력되어 실행된다

니다.이 방법은 레지스터 이름이 겹치 실행하지 못하는 경우도 대처 가능합니다. 


アウトオブオーダ実行を効率良く実行するには、多数の実行可能な命令がバッファ に入っていなければならないです。しかし、分岐命令があると次に実行する命令が 決まらず、命令の供給不足になってしまいます。そこで、分岐するかどうかを予測し、 この予測が当たると考えて実行してしまう方法が用いられます。これを投機的実行 (Speculative Execution)と呼びます。分岐予測が当たるとは限らないので、計算結 果はリオーダーバッファに取っておき、予測が当たったことが分かったら実際のレジ スタファイルに書き込みます。予測が外れた場合は、結果を捨ててしまって、そこま での処理は無駄となります。この方法はアウトオブオーダ実行を加速され、割り込み 等の例外処理にも使えます。このため、最近の高性能CPUの多くはこの方法を使っ ています。 

아웃 오브 오더 실행을 효율적으로 실행하려면 다수 실행 가능한 명령이 버퍼
들어 있어야 할 거에요. 하지만, 분기 명령이 있다고 다음에 실행할 명령이
정해지지 않고, 명령 공급 부족이 되어 버립니다. 거기에서 분기되는지 여부를 예측하고
 예측이 맞다고 생각하고 실행하는 방법이 사용됩니다. 이를 투기적 실행
(Speculative Execution)라고 부릅니다. 분기 예측이 맞다고 할 수는 없으므로 계산유이
결과 리오더 버퍼 놓고 예측 맞은 것을 알면 실제 계산대
수타 파일 기입합니다. 예측이 빗나가는 경우 결과 버리기, 거기 
처리 낭비가 됩니다. 이 방법은 아웃 오브 오더 실행을 가속화되고, 인터럽트
 예외 처리 사용 가능합니다. 이 때문에, 최근의 고성능 CPU의 대부분은 이 방법을 사용하는
고 있습니다.


この図は、先のTomasloの方法に投機的実行を組み合わせたものです。レジスタ ファイルの手前にリオーダーバッファが備えられており、まずこれに書き込み、分岐 予測が当たったことが確定したら(コミットと呼びます)レジスタファイルに書き込みま す。 

이 그림은 지난 Tomaslo 방법에 투기적 실행을 조합한 것입니다. 레지스터
파일 앞에 리오더 버퍼가 구비되어 있어서 우선 이것에 새기며 분기
예측이 맞았던 적이 확정되(약속이라고 부릅니다)레지스터 파일에 입력한다 
다.



分岐予測がはずれると、投機的実行を行っているとダメージが大きいです。このため、 なるべく当たる分岐予測の技術が発達しました。まず最も簡単な予測は全ての分岐 が「飛ぶ」とするもので、これで6,7割当たります。しかしこれでは全然不足するので、 もっと高度な方法を使わなければならないです。これには静的なものと動的なものが あります。 

분기 예측 빗나가면 투기적 실행을 하고 있으면 타격이 큽니다. 이 때문에,
되도록 해당하는 분기 예측 기술이 발달했습니다. 우선 가장 간단한 예측은 모든 분기
" "으로 하며 이로써 6,7할 맞는데. 그러나 이래서는 전혀 부족하므로
더 고도의 방법을 사용해야 합니다. 여기에는 정적인  동적인 
있습니다.


静的なものはコンパイラによるものです。コンパイラは仮に実行するプロファイリングと いう方法でそれなりの効果を得ることができますが、限界はあります。この結果は動 的予測の初期値として使います。 


정적인 것은 컴파일러에 의한 것입니다. 컴파일러는 만일 실행하는 프로파일링
는 방식으로 나름대로 효과를 얻을 수 있지만 한계는 있습니다.  결과는 
 예측의 초기치로서 사용합니다.


動的予測法は、その分岐の過去の履歴に基づいて分岐するかどうかを決める方法 です。最も簡単なのはその前に飛んだ分岐は次も飛ぶと予測する方法です。これを 1ビット予測法といいます。この方法は、ループの中の分岐に適用すると、一回はず れると、次にまたループに入って来た時に連続してはずれる傾向にあります。そこで、 2回連続してはずれると予測を変えるという方法が良く用いられます。これを2ビット予 測法と呼びます。

동적 예측 법은  분기 과거 이력에 기초하여 분기되는지 여부를 결정하는 방법
입니다. 가장 간단한 것은 그 전에 날았다 분기 다음에도 날고자 예측하는 방법입니다. 이를
1비트 예측 이라고 합니다. 이 방법은 루프  분기에 적용하면 한번 
되면 다음에 또 루프에 들어왔을 때 연속 빗나가는 경향이 있습니다. 거기에서
2회 연속 빗나가 예측 바꾸는 방법이 자주 언급됩니다. 이를 2비트
측법이라고 부릅니다.


この方法を実現するためには、過去の分岐の履歴を取る必要があります。とはいえ、 全ての分岐の履歴を取るのは現実的ではないので、分岐のキャッシュを作ります。こ れを分岐予測バッファと呼び、分岐命令のアドレスと比較します。これはフルアソシア ティブ方式で、全内容とPCを比較しています。折角分岐予測結果を入れておきます ので、ついでに、一度計算した飛び先アドレスを入れておきます。もちろん、これは 飛ぶ、と予測した場合に限られます。 

 방법을 실현하려면 과거 분기 이력을 취할 필요가 있습니다. 하지만
모든 분기 이력을 취하는 것은 현실적이지 않기 때문에, 분기 현금 만들겠습니다.
를 분기 예측 버퍼라고 부르는 분기 명령 주소와 비교합니다. 이는 훌아소시아
  방식으로  내용과 PC 비교하고 있습니다. 모처럼 분기 예측 결과를 넣어 두겠습니다
때문에 김에 한번 계산 비비선 주소를 넣어 두겠습니다. 물론 이는
다고 예측 경우 한정됩니다.



この方式は、エントリ数が不足して十分に分岐命令が登録できなかったり、バッファの

容量が少なくて分岐命令同士が被ってしまうと性能が落ちます。これはその程度に

ついての評価結果です。エントリ数をいくら増やしてもミス率が減らないプログラムも

あるということが分かります。

이 방식은 엔트리 수가 부족하고 충분히 분기 명령이 등록할 수 없거나 버퍼
용량이  분기 명령들이 보게 되 성능이 떨어집니다. 는 그 정도로
대한 평가 결과입니다. 엔트리 수를 아무리 늘려도 실수율이 줄어들지 않은 프로그램
있다는 것을 알 수 있습니다.


これはなぜか、というと分岐するかどうかが、その前の違った分岐命令の結果によっ て違う場合があるからです。これを解決する方法が相関分岐予測です。これは、その 前に起きた違う分岐を反映させるため、その結果に応じて予測を保存する方法です。

이는  하면 분기되는지 여부가 그 전 다른 분기 명령 결과
하고 다른 경우가 있기 때문입니다. 이를 해결하는 방법 상관 분기 예측입니다. 이것은 그
전에 일어난 다른 분기를 반영시키기에 그 결과에 따라 예측 보존하는 방법입니다.



この方法を使うと、2ビット分岐法で防げなかった場合もある程度回避することができ

ます。

 방법을 쓰면 2비트 분기 법으로 막지 못한 경우 어느 정도 방지할 수 있다
니다.


自分の過去の履歴に基づくローカルな方法が良いのか、相関分岐を利用するのが 良いのかは、分岐によって決まっている場合が多いです。これを判断してどちらを使 うのかを決めるのがトーナメント予測と言います。この方法が現在の高性能CPUでは 標準的に使われます。 


자신의 과거 이력에 기초한 지역적인 방법이 좋은지 상관 분기를 이용하는 것이
좋은지 분기에 의한 정해진 경우가 많습니다. 이를 판단하고 어느 쪽을 쓴다
이냐를 결정하는 것이 토너먼트 예측이라고 합니다. 이 방법이 현재 고성능CPU에서는
표준적으로 쓰입니다.


分岐予測をまとめましょう。現在の高速プロセッサではトーナメント方式が使われます。 これ以上高い予測精度を目指す研究をしている人もいるのですが、ほぼ満足すべき 結果が得られていると言ってもいいと思います。 

분기 예측 정리합시다. 현재 고속 프로세서에서는 토너먼트 방식이 쓰입니다.
더 이상 높은 예측 정밀도 목표로 연구를 하는 사람도 있지만 거의 만족할 만한
결과가 나오고 있다고 해도 좋다고 생각합니다.


さて、動的に命令を入れ替える方法でストールを減らしても、性能向上には限度があ ります。さらに性能を上げるため、複数の命令を同時に取って来て実行する方法の 開発が進みました。これにはハードウェアの制御によって複数の命令を同時に実行 するスーパースカラ方式と、命令の依存関係の制御をコンパイラに任せてしまう VLIW(Very Long Instruction Word)方式の2種類があります。 

 동적으로 명령을 교체 방법으로 스톨 줄여도 성능 향상에는 한도가 있습니다.  성능을 올리기 때문에 복수 명령을 동시에 가지고 와서 실행하는 방법
개발이 진행되었습니다. 여기에는 하드웨어 제어에 의해서 복수 명령을 동시에 실행
하는 슈퍼 스칼라 방식과 명령 의존 관계 제어를 컴파일러에 맡기는
VLIW(Very Long Instruction Word)방식 2종류가 있습니다.



スーパースカラ方式は複数の命令を一度に命令振メモリからフェッチし、同時に複数

のパイプラインに流してやる方法です。この図では2つの命令を同時に実行できる構

成になっています。もちろん、同時に実行する2つの命令間にも依存関係はあるので、

フォワーディングとストールを制御してやる必要があります。


슈퍼 스칼라 방식은 복수 명령을 한꺼번에 명령 메모리로부터 페치 하는 동시에복수
파이프 라인 흘리고 방법입니다. 이 그림에서는 2개 명령을 동시에 실행할 수 있는 구성
이 되고 있습니다. 물론 동시에 실행하는 2개 명령 사이에도 의존 관계는 있어
포워딩 스톨 제어하고 할 필요가 있습니다.


スーパースカラ方式は、命令の動的スケジュール、投機実行と組み合わせることがで きます。命令間の依存関係の解決はTomasuloのアルゴリズムが行ってくれますので、 スーパースカラにするためには複数の命令を同時に投入できるように命令フェッチ部 を強化すれば良いのです。とはいえ、命令数が増えると共通データバスが混雑して 性能が上がらなくなるため、これを複数持たせる必要が生じ、アウトオブオーダで投 機的実行可能なスーパースカラ方式は非常にハードウェアが複雑になります。しかし、 現在PCで動作している高性能CPUの多くはこの方式で4命令程度を同時に実行し ます。これは、今までの機械語がそのままの形で速くなるため、コンピュータのビジネ スモデルに良く適しているためです。このため、IntelのCPUは非常に複雑になり、 AMDを除く他社がほとんどはこれに付いて行くことができなくなりました。 

슈퍼 스칼라 방식은 명령 동적 스케줄, 투기 움직임과 조합하는 것
오겠습니다. 명령 사이 의존 관계 해결은 Tomasulo 알고리즘이 가서 
슈퍼 스칼라를 위해선 복수 명령을 동시에 투입할 수 있도록 명령 페치부
 강화하면 됩니다. 그렇다고 명령 수가 늘어나 공통 데이터 버스가 붐비지
성능이 오르지 않게 되어 이를 복수 가질 필요가 발생, 아웃 오브 오더에서 투수
계기적 실행 가능한 슈퍼 스칼라 방식은 매우 하드웨어가 복잡하게 됩니다. 그러나
현재 PC에서 동작하는 고성능 CPU의 대부분은 이 방식으로 4명령 정도를 동시에 한다
니다. 이는 그동안 기계어 그대로 빨리 되므로 컴퓨터 사업 차
소스 모델에 좋은 적합하기 때문입니다. 이 때문에, Intel CPU는 매우 복잡해진다,
AMD를 제외한 타사가 대부분은 이것을 따라갈 수 없게 되었습니다.



命令間の依存性はコンパイラで解決することができます。VLIW(Very Long Instruction Word)方式は、従来の命令の数個分を一つにまとめて長い命令として考 えて、実行する方法です。通常の命令に当たる部分をスロットと呼びます。各スロット の命令間の依存性はコンパイラが解析し、必要に応じて必要な場所にNOP命令を 入れることで命令のタイミングを調整します。VLIW方式は、命令の依存性を検出して 待ち合わせをするハードウェアが必要なくなるため、スーパースカラ方式よりも簡単 に多くの命令を一つにまとめて実行することができます。しかし、この方法はコンパイ ラでコンパイルしなおす必要があるため、「今動いているプログラムをそのまま速くす る」という要求には合わないです。このため、この方法は汎用のコンピュータではあま り使われず、DSP(信号処理用プロセッサ)などで使われるようになりました。 

명령 사이 의존성은 컴파일러로 해결할 수 있습니다. VLIW(Very Long
Instruction Word)방식은 기존의 명령 몇개를 묶어  명령으로 생각
, 실행하는 방법입니다. 통상 명령에 해당하는 부분을 슬롯 부릅니다. 각 슬롯
명령 사이 의존성은 컴파일러가 해석하고 필요에 따라 필요한 장소 NOP명령을
넣기로 명령 타이밍을 조정합니다. VLIW방식은 명령 의존성을 검출하고
약속 하는 하드웨어가 필요 없게 되 슈퍼 스칼라 방식보다 쉽다
많은 명령을 묶어 실행할 수 있습니다. 그러나 이 방법은  파이
에서 컴파일하는 필요가 있어"지금 움직이고 있는 프로그램을 그대로 빠르
"라는 요구에는 맞지 않습니다. 이 때문에 이 방법은 범용 컴퓨터에서는 상년
 사용되지 않고, DSP(신호 처리용 프로세서)등으로 쓰이게 되었습니다.


スーパースカラ方式は動的スケジュールや投機実行を使っても、多数持っているパ イプラインの資源を十分利用できなくなることが多いです。他の命令の結果を待った り、キャッシュがミスヒットしたりする間、多数のALUやメモリユニットが遊んでいること になります。(左の図)これはもったいないので、全く別のプログラム(スレッドと呼びま す)を走らせることで、有効活用をするのがマルチスレッドという方法です。それぞれ のスレッドは別々のPCで、基本的に無関係に動きます。マルチスレッドのうち簡単な 方法は、スレッドの動く順番を決めておき、順番に回しておく方法です。(真ん中の 図)これは、無駄は減るのですが、単独のスレッドの動く速度が遅くなってしまいます。 そこで、空いている時間ならばどのスレッドがどこでも走れるようにしたのがSMT (Simultaneous Multi-Threading:同時マルチスレッディング)です。Intelはこれをハ イパースレッディングと呼んでいます。流石に多数のスレッドを走らせるのは大変な ので、現在多くのCPUで採用されているのは2スレッドの同時実行です。しかし、これ は先に紹介したスーパースカラ+動的スケジュール+投機実行のCPUの上で行うた め、ハードウェアは益々複雑になるのです。 

슈퍼 스칼라 방식은 동적 스케줄이나 투기 실행을 사용해도 다수 갖고 있는 
이프 라인 자원을 충분히 이용하지 못하는 것 많습니다. 다른 명령 결과를 기다렸다
총리, 현금 실수 히트하는 동안 다수 ALU나 메모리 유닛이 놀고 있을 것
됩니다.(왼쪽 그림)는 아까워 전혀 다른 프로그램(스레드라고 부르
음식)를 달리게 함으로써 유효 활용을 하는 것이 멀티 쓰레드는 방법입니다. 각각
스레드 다른 PC에 기본적으로 무관하게 움직입니다. 멀티 스레드  간단한
방법은 스레드의 움직이는 순서를 정하 차례로 돌리 방법입니다.(가운데
그림)이는 낭비는 줄어드는데 단독 스레드의 움직이는 속도가 어 버립니다.
거기에서 빈 시간이라면 어느 쓰레드가 어디든지 뛸 수 있게 한 것 SMT
(Simultaneous Multi-Threading:동시 멀티 스레딩)입니다. Intel은 이를 
이파ー스렛디은그라고 부르고 있습니다. 과연 다수 쓰레드를 실행하는 데 힘든
때문에 현재 많은 CPU에서 채용되고 있는 것 2스레드를 동시 실행입니다. 그러나 이
 먼저 소개한 슈퍼 스칼라+동적 스케줄+투기 실행 CPU에서 가진
다, 하드웨어는 점점 복잡하게 됩니다.


2003年までのプロセッサの歴史は、「今動いているプログラムがそのまま速くなる」こ とを目標に、パイプライン段数を増やし、同時実行命令数を増やし、動的スケジュー ルをして投機的実行をし、ほとんど当たる分岐予測を使い、マルチスレッディングも 取り入れました。このような努力の結果、コンピュータの性能は18か月で倍になるとい う驚異的な発達を遂げました。一方で、CPUは多分人類が作り上げたもののなかで 最も複雑なレベルに達しました。限界が近づいていたのです。 

2003년까지의 프로세서의 역사는 "지금 움직이고 있는 프로그램 그대로 빨라져"
 목표로 파이프 라인 단수를 늘리고 동시 실행 명령 수를 늘리고 동적 스케줄 
를 하고 투기적 실행을 하고 거의 다 맞는 분기 예측 사용, 멀티 스레딩
도입했습니다. 이러한 노력 결과 컴퓨터 18개월에 배로 된다는 생각이
 경이적인 발달을 이루었습니다. 한편, CPU는 아마 인류가 만든 것 중
가장 복잡한 수준에 이르렀습니다.한계가 다가오고 있었습니다.


2003年についに限界が訪れました。この原因は大きく3つ挙げられます。まず一つ は、クロック周波数を上げることによって増え続ける消費電力とこれによる発熱が限界 に達したことです。Pentium 4は、動作周波数3.4GHzに達しましたが、これにより 100Wを越える電力を消費し、放熱板で目玉焼きが作れました。次に問題なのは、 スーパースカラ方式で実行する命令数が4程度に限界に達したためです。多くのプ ログラムではこれ以上多くの命令を実行しても効果がないことがわかってきました。こ の数字は予想されたものよりもかなり少なかったのです。また、メモリの壁(メモリ ウォール)問題、すなわちCPUの動作周波数にL1キャッシュがついてこれない問題 が出てきました。このため、周波数を上げてもさほど性能が上がらなくなってしまった のです。このため、Intelはこれ以上周波数を上げて単体プロセッサの性能を上げる よりも、1チップに複数のコア(CPUとキャッシュ)を入れるマルチコア方式に舵を切り ました。マルチコアという用語は厳密なものではなく、1チップの中に複数のCPU+ キャッシュが入っていることを指します。メニーコアはたくさんのCPUが一つのチップ に入っていることを指し、これも正確に定義された用語d 

2003년 드디어 한계가 찾아왔다. 이 원인은 크게 3개 들 수 있습니다. 첫째
 클록 주파수 올리는 것에 의해서 계속 증가하는 소비 전력과 이에 따른 발열한계
에 이른 것입니다. Pentium 4는 동작 주파수 3.4GHz에 달했으며, 이들에 의한
100W 넘는 전력을 소비하며 방열판에서 계란 프라이가 만들었죠. 다음에 문제것은
슈퍼 스칼라 방식으로 실행하는 명령 수가 4정도로 한계에 이르렀기 때문입니다. 많은(
로그 에서는 더 이상 많은 명령을 실행해도 효과가 없음을 알고 왔습니다. 아이
숫자는 예상된 것보다 훨씬 적어요.  메모리 (메모리
)문제, 즉 CPU동작 주파수에 L1캐시 따라올 수 없는 문제
가 나왔습니다. 이 때문에 주파수를 올려도 그다지 성능이 올라가게 되고 말았다
것입니다. 이 때문에, Intel 더 이상 주파수를 올리고 단일 프로세서의 성능을 올린다
보다 1에 여러개의 코어(CPU 캐시) 고 멀티 코어 방식으로 방향을 정해
습니다. 멀티 코어라는 용어는 엄격한 이 아니라 1  복수 CPU+
현금이 들어 있음을 말합니다. 메니ー코아 많은 CPU 하나의 칩
들어 있음을 가리키며, 이것도 정확히 정의된 용어 d



このため、コンピュータの性能爆発時代は、2003年で終わり、これからはマルチコア

の時代になったのです。現在、みなさんのお使いのノートPCには4-6個のコアが内

蔵されています。また、コンピュータの利用はスマートフォン、タブレットと、大規模な

データセンターによるクラウドコンピューティングが主体となり、80年代以来、コン

ピュータの中心であったPCが衰退しています。またGPUなど新しいタイプのコン

ピュータも現れ、コンピュータはますます分化し、拡散して居ます


이 때문에 컴퓨터 폭발 시대 2003년에서 끝나고 앞으로는 멀티 코어
시대가 된 것입니다. 현재 여러분 사용의 노트 PC에는 4-6개 코어가 우치
장사고 있습니다. 또 컴퓨터 이용은 스마트 폰, 태블릿 대규모
데이터 센터 의한 클라우드 컴퓨팅이 주체가 되어, 80년대 이후 
퓨ー타의 중심인 PC 쇠퇴하고 있습니다. 또한 GPU등 새로운 타입 
 타카도 나타나고 컴퓨터는 점점 더 분화하고 확산되고 있습니다


このため、高速プロセッサのクロック周波数はほぼ3.5GHz程度で一定になりました。 

이 때문에 고속 프로세서의 클럭 주파수는 거의 3.5GHz정도로 일정하게 되었습니다.


マルチコア、メニーコアは様々な領域で使われています。デスクトップ、ラップトップ、 タブレット、スマートフォンでは集中した共有メモリを持つMIMD、UMA型が用いられ ます。これがいわゆるマルチコアと呼ばれます。一方、サーバーやスーパーコン ピュータの一部では、分散共有メモリを持ったMIMD、NUMA型が多く使われます。 クラウドコンピューティングの主役となるデータセンターで用いられるクラスタと呼ばれ るコンピュータはMIMD型のNORAが使われます。特定の処理に焦点を絞って高速 化するアクセラレータと呼ばれる計算装置としては元々はグラフィックス専用だった GPU(Graphics Processing Unit)を汎用数値計算目的に使います。これはSIMD型 に基づいています。 

멀티 코어, 메니ー코아 다양한 영역에서 사용되고 있습니다. 데스크 톱, 노트북,
태블릿, 스마트 폰에서는 집중한 공유 메모리를 가진 MIMD, UMA형이 쓰인다
니다. 이것이 이른바 멀티 코어로 불립니다. 한편, 서버나 슈퍼 콘서트
퓨ー타 일부에서는 분산 공유 메모리를 가진 MIMD, NUMA형이 많이 쓰입니다.
클라우드 컴퓨팅의 주역이 되는 데이터 센터에서 이용되는 클러스터로 불린다
 컴퓨터는 MIMD형 NORA가 사용됩니다. 특정 처리 초점을 두고 고속
변해엑셀러레이터로 불리는 계산 장치로는 원래는 그래픽 전용이었다
GPU(Graphics Processing Unit) 범용 수치 계산 목적에 사용합니다. 이는 SIMD형
에 근거하고 있습니다.

MIMDやSIMDなどの言葉はStanford大学のM.Flynn教授が70年代の論文で使っ

て広がりました。この分類は、命令流の数とデータ流の数でコンピュータを分類する

シンプルな方法で、実際的に使われるのはSIMDとMIMDです。

MIMD SIMD 말은 Stanford대학 M.Flynn교수가 70년대 논문에서 사용
 퍼졌습니다.  분류는 명령식 수와 데이터 흐름 에서 컴퓨터를 분류한다
심플한 방법으로 실제적으로 사용되는 것은 SIMD MIMD입니다.


MIMD方式は命令流の数もデータ流の数も複数で様々な方式が使われます。このた め、さらに細かく分類する必要があり、共有メモリによって分類する方法が使われま す。共有メモリとは、複数のコアで共有されるメモリのことで、どのプロセッサからも同 じようにアクセスできるのをUMA(Uniform Memory Access Model)と呼びます。これ は集中メモリ方式のことで、実装は容易ですが、小規模に限られます。一方、共有メ モリは持つが、分散して個々のプロセッサ(あるいはそのグループ)が分散して持っ ていて、自分のメモリは簡単に読み書きできるが、他人のものへのアクセスには時間 が掛かる方式をNUMA(Non-Uniform Memory Access Model)と呼びます。この方 式は大規模なサーバーや、スーパーコンピュータで用いられます。一方、クラウドコ ンピューティングの主役であるデータセンターは同時到着するそれぞれ独立の要求 を処理します。このため、共有メモリがあっても無駄なので、これを持たないNORAま たはNORMA(No Remoto Memory Access Model)が用いられます。これをクラスタ と呼ぶ場合があります。

MIMD방식은 명령식 수도 데이터 흐름  복수로 다양한 방식이 쓰입니다. 
다, 더욱 세세하게 분류할 필요가 있어, 공유 메모리에 의해서 분류하는 방법이 사용되
. 공유 메모리는 복수의 핵심에서 공유하는 메모리의 것으로 어떤 프로세서에서도 이
 액세스 할 수 있는 것을 UMA(Uniform Memory Access Model)라고 부릅니다.
 집중 메모리 방식으로, 실장은 지만 소규모로 한정됩니다. 한편, 공유자
모리 지만 분산해서 각각의 프로세서(혹은  그룹) 분산해서 가진다
다가 자신의 메모리는 쉽게 읽고 쓰지만 남의 에의 액세스에는 시간
 걸리는 방식을 NUMA(Non-Uniform Memory Access Model)라고 부릅니다. 이 분
식은 대규모 서버나 슈퍼 컴퓨터에서 사용됩니다. 한편 클라우드 
은퓨ー팅 주역인 데이터 센터는 동시 도착하고 각자 독립 요구
 처리합니다. 이 때문에, 공유 메모리가 있어서 낭비이므로 이를 없는 NORA
NORMA(No Remoto Memory Access Model)이 사용됩니다. 이를 클러스터
라고 부르는 경우가 있습니다.


集中メモリを持つ場合は、これをアクセス競合を減らしてどのように共有するかが問 題になります。独立したL1キャッシュを持たせるためスヌープキャッシュという方法を 用いてデータの一致を取る方法が使われます。この図ではL1キャッシュはスヌープ キャッシュになっていて、L2に対してスイッチで接続されています。 


집중 메모리를 가진 경우는 를 접속 경합을 줄이 어떻게 공유하는가 
제목이 됩니다. 독립된 L1캐시를 갖기 위해스누프 캐시라는 방법을
이용하여 데이터를 일치할 방법이 쓰입니다. 이 그림에서는 L1캐시 스누프
현금으로 되어 있고, L2에 대해서 스위치로 연결됩니다.


IntelマルチコアレイアウトですキャッシュCPUよりも面積こと
です。

ntel 멀티 코어 레이아웃입니다. 캐시 CPU보다 면적이 많은 이 특별히
상징적입니다.


一方NUMAでは、それぞれのプロセッサ、あるいはそのグループがメモリを持ち、こ れらが単一のアドレス空間で読み書きできるようになっています。しかし、アドレスに よって、アクセス遅延が異なります。 

한편 NUMA에서는 각각의 프로세서 또는 그 그룹이 메모리를 갖고 아이
레들이 단일 주소 공간에서 읽고 쓰게 되어 있습니다. 그러나 주소로
의해서, 접속 지연이 다릅니다.


典型的なNUMAの構成を示します。それぞれのメモリが単一空間にまとめられており、 アドレスによって自分のものにアクセスするか、他人のものにアクセスするかが決まり ます。自分のメモリは高速に読み書きできますが、他人のメモリを読み書きするには ネットワークを介する必要があり、遅くなります。 

전형적인 NUMA 구성을 나타냅니다. 각각의 메모리가 단일 공간에 정리되어 있어
주소에 의해서 자신 에 접속하거나 남의 것에 접근하느냐가 정해진다
니다. 나의 메모리는 고속으로 읽고 쓰지만 남의 메모리를 읽고 쓰기에
네트워크를 통해야 한다 늦게 됩니다.


最近の典型的なサーバーの構成を示します。それぞれの○印は単純なプロ セッサではなく、これ自体がマルチコアになっています。

최근 전형적인 서버 구성을 나타냅니다. 각각의 ○인 단순한 프로
셋사이 아니라 이 자체가 멀티 코어로 되어 있습니다.


日本のスーパーコンピュータKもNUMAです。それぞれのノードが持っているメモリを ネットワークを介して読み書きできる構造になっています。 

일본 슈퍼 컴퓨터 K NUMA입니다. 각각의 노드가 가진 메모리를
네트워크를 통해 는 구조로 되어 있습니다.



それぞれのプロセッサがラックに入っている様子です。Kは一時期世界一になりまし たが今は7位にランクダウンしています。 

각각의 프로세서가 락에 들어가고 있는 모양입니다. K는 한때 세계 제일입니다
지만 지금은 7위로 추락하고 있습니다.


データセンターで使われるコンピュータはそれぞれ個別に到着する膨大な数を処理 することが要求されます。このため、これらのコンピュータは、共有メモリを持たず、そ れぞれが独立のジョブを実行します。強力なネットワークで接続されており、メッセー ジのやり取りや、一定のプログラムの枠組み(MapReduceなど)を使って大量の検索 を実行します。これらはクラスタと呼ばれます

데이터 센터에서 사용되는 컴퓨터는 각각 개별적으로 도착하는 방대한 수를 처리
하는 것이 요구됩니다. 이 때문에 이들의 컴퓨터는 공유 메모리를 가지지 않고 
 가 독립적인 작업을 수행합니다. 강력한 네트워크로 접속되고 있으며 메시지
지의 교환이나 일정한 프로그램 (MapReduce) 사용하고 대량 검색
를 실행합니다.이들은 클러스터라고 부릅니다


この図は一時期評判になったGoogle社のデータセンターです。膨大な数のコン ピュータを低コストでまとめるために輸送用コンテナを使って評判になりましたが、現 在はコンテナを使うのは止めているようです。

이 그림은 한때 화제가 되었던 Google사의 데이터 센터입니다. 많은 숫자 
퓨ー타을 저비용으로 수렴하려고 수송용 컨테이너를 사용하고 평판을 했지만 
시골이 컨테이너를 사용하는 것은 그만두고 있는 것 같아요.


SIMDは単一の命令で多数のデータ流に対して処理を行います。この方式は、膨大 なデータに対して同じ処理をする場合に、安価に高い性能が得られることからアクセ ラレータ(計算加速装置)に用いられます。 

SIMD 단일 명령으로 다수 데이터 흐름에 대해서 처리합니다. 이 방식은 엄청나다
데이터에 대해서 같은 처리를 할 경우, 저렴하게 높은 성능을 얻을 수 있는 것에서액세스
라레ー타(계산 가속 장치) 이용됩니다.


近年、CPUとGPUやCELLといったマルチコアアクセラレータを組み合わせ て使うハイブリッドの計算環境が普及しています。 例えばTOP500を見ると、TSUBAMEのNVIDIA GPUはもちろんですが、↑こ ういったATIのGPUを使ったスパコンも存在します。 またCell B.E.を搭載したアクセラレータもあります。

최근 CPU GPU CELL과 같은 멀티 코어 액셀러레이터를 조합
 쓰는 하이브리드의 계산 환경 보급되어 있습니다.
예를 들면 TOP500 보면 TSUBAME NVIDIA GPU 물론이지만  아이
 하는 ATI GPU 사용한 슈퍼 컴퓨터도 존재합니다.
 Cell BE 탑재한 엑셀러레이터도 있습니다.


この図はGPUの構造を示したものです。小さなコアが数多く存在し、さまざまなレベ ルでメモリを共有しています。これらのコアは浮動小数点演算を行うことができますが、 基本的にSIMD方式で動作します。最近のGPUはSIMDだけではなくマルチスレッド、 MIMDなど様々な方式の組み合わせになっています。 

이 그림은 GPU 구조를 나타낸 것입니다. 작은 코어가 많이 존재하면서 다양한 레베
장에서 메모리를 공유하고 있습니다. 이들의 핵심은 부동 소수  연산을 할 수 있지만
기본적으로 SIMD방식으로 동작합니다. 최근 GPU SIMD뿐 아니라 다중 스레드,
MIMD 다양한 방식의 조합으로 되어 있습니다.


NVIDAのGPUのチップ写真です。小さなコアが多数見えると思います。先のIntelの マルチコアと比較するとコアの大きさは明らかに違います。

NVIDA GPU 사진입니다. 작은 코어가 다수 보인다고 생각합니다. 이전 Intel
멀티 코어와 비교하면 코어 크기는 분명히 다릅니다.


マルチコア、メニーコアなどの並列計算機はAmdahlの法則によってその性能が制 限されます。Amdahlの法則は、高速化の効果はそれが適用可能な部分の割合に よって制限されるというもので、ここに示した式で表されます。 

멀티 코어, 메니ー코아  병렬 계산기는 Amdahl 법칙에 의해서  성능이제
한정됩니다. Amdahl 법칙은 고속화 효과는 그것이 적용 가능한 부분 비율
의해서 제한된다는 것으로 여기에 나타낸 식으로 나타납니다.


例えば、並列処理が可能な部分が99%あったとしても残りの1%が全く並列化できな いばあい、その性能はAmdahlの法則によって0.01+0.99/p (pはプロセッサ数)にな ります。この場合、いくらプロセッサを増やしても性能は決して100倍を超えることがで きません。このように並列処理には限界があり、これを考えて使う必要があります。

예를 들어 병렬 처리가 가능한 부분이 99% 있더라도 나머지 1%가 전혀 병렬화할 수 없다
 경우,  성능은 Amdahl 법칙에 의해서 0.01+0.99/p(p 프로세서 )말이야~
있습니다. 이 경우 아무리 프로세서를 늘려도 성능은 결코 100배를 넘는 것

안 왔어요.이렇게 병렬 처리에는 한계가 있어 이를 생각하고 쓸 필요가 있습니다. 


ではまとめましょう。今我々は、性能が単純に18か月に倍になる世界ではなく、様々 な応用分野に様々なマルチコア、メニーコアなどの並列計算機が使われる時代に居 ます。それぞれが違った特徴を持ち、違った利点と欠点を持ちます。用語は乱れて おり、全体を理解するのは難しいですが、非常に面白い世界になってきています。 今後のコンピュータはどのように変わっていくか、また我々がどう変えられるか、本当 に楽しみです。 

에서 마련합시다. 지금 우리는 성능이 단순히 18개월 배로 되는 세계가 아니라, 다양한다
응용 분야에 다양한 멀티 코어, 메니ー코아  병렬 계산기가 사용되는 시대에 있다
니다. 각각 다른 특징을 갖고 다른 이점과 결점을 가집니다. 용어는 흐트러지고
있어 전체를 이해하기는 어렵지만 매우 재미 있는 세계가 되고 있습니다.
향후의 컴퓨터는 어떻게 바뀔 것인가, 또 우리가 어떻게 바꿀 수 있을지 정말
이나 기다려집니다.



반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading