68020と68040の違い、80386と80486の違いを私は認識しておらず、今回の記事で最も勉強になったところだ。このとき命令パイプラインが複数個になり(スーパースカラーと呼ぶ)、そこで1クロック1命令の壁を超えることができた。
モトローラの8bit cpuである6800と6809は1クロック1命令だったが、これはアーキテクチャがシンプルだからできたことであり、6800系はRISC的なcpuだったと言える。私がいちばんアセンブラでコードを書いていたcpuはZ80/680x/TMS320C3x/TMS320C5xで、Z80を除けば1クロック1命令のRISC的なcpu(TMSはDSPと呼ばれていたが)だった。命令パイプラインが複数になるくらいはアセンブラで対応できたが、アウトオブオーダーが採用されたcpuではアセンブラで最適コードを書くのがとても面倒だ。これらのcpu向けのコンパイラを作れるプログラマを尊敬していたものだ。
記事の後半で言及されていたヘテロジニアスコンピューティングを私は1990年代から行っていたが、それが一般的になったのは21世紀になってnvidiaのCUDAが作られてからだ。ところが2024年の今になってもヘテロジニアス最適なコードを書けるプログラマなんて世界に数千人しかおらず、ここはハードウェアをわかっている人でないと未だに難しいエリアなのだと思う。cpuがブラックボックスのままコンピューターをいじっている人には到達できないエリアだ。初期の家庭用ゲーム機のプログラマはヘテロジニアスコンピューティングのプロフェッショナルが多かった。
0 件のコメント:
コメントを投稿