1. ごりゅごcast
  2. 584.M1アーキテクチャのMacは..
00:00
こんにちは、ゴリゴキャストです。今日は、M1 Macがなんで速いかっていうのを勉強したので、そのことについて話します。
Appleの発表とかを見ても、M1って何倍速いとか、描画が何倍すごいみたいな数字では知れるんだけど、
何がどういう仕組みで速いのかとか、今までのとどう違うのかみたいなことはあんまり知らないなぁって。
俺も思って、数時間、10時間はいかないぐらい色々と勉強してみて、何もかも全て詳細に正確に理解できたとは言えないんだけど、
調べてみたら、コンピューターというか CPU の歴史っていうのかな、そういうようなことも結構わかって、色々と面白いことがいっぱいあったんだよね。
それを、たぶん1回ではさすがにまとまりきらないので、2回ぐらいに分けてまとめてみたいと思います。
そもそもの話で言うと、たぶん春名も聞いていると思うんだけど、Mac は ARM CPU になったと言われているじゃん。
これまではIntel の CPU を使っていた。この2つの何が違うかっていうのと、ここまでどういう経緯があって、それぞれがそういうものを選んできたかみたいな話からになるんだけど、
3個ぐらい用語が出てきます。 RISC, CISC, ISA
すごい大雑把なことを言うと、Intel は CISC っていう命令の仕組みを使っていて、
ARM とかの、Apple とかのものは RISC っていう命令の仕組みを使っている。
そもそものところでさ、ARM って何の略なの?
ARM は ARM っていう会社が作っている、その ISA っていう命令セットの一つで、そこを話そうとすると、やっぱりコンピューターの超基礎的な話っていうところに、やっぱりなってしまって。
インテルは会社の名前で、ARM も要は会社の名前で、それぞれ使っている命令系統のシステムが違うってこと?
そう、そこに大雑把に2種類の命令系統というものが存在している。それがその RISC と CISC
Reduced Instruction Set Computer っていうのと Complex Instruction Set Computer で、そこに至るまでに、やっぱね、そもそもコンピューターって、コンピューターというか CPU なのかな?
03:04
で、当たり前なんだけど、0 と 1 しか受け取れないみたいなことを言うじゃん。で、コンピューター CPU って、なんて言うんだろう?
1 回にできることっていうのは、すんごい原始的なことしかできないんだよね。なんか、この場所にこの数字を覚えておくっていうことだったり、
この場所の数字を取り出して、1 を足すっていうことだったり、1 回にできることって、すごい大雑把に言うと、場所を覚えることと、そこに数字を入れる、
足し算をするっていうのが、1 回でできる限界なんだ。でも、プログラムとかってさ、大体見たことがあるんだけどさ、
プログラムとかって言うんだけどさ、なんか、 IF i が 10 以下の場合、1 を足して、それをずっと繰り返すみたいなさ、
なんていうの?コンピューターからしたら、とてつもなく難しいことをやっているんだよね。
1 を足して、10 回繰り返して、その後こういうことをやって、みたいなことも、全部ここに数字を覚えておいて、この数字に 1 を足して、次はこの場所を覚えておいて、っていう原始的なことに全部置き換えてやらないと、コンピューターはそれを処理ができない。
例えば、プログラムを作って書いた文章を、コンピューターが理解できるような、その 0 と 1 レベルのすごい簡単なものに、すごい簡単なものしかコンピューターは理解できないんだ。
で、そのすごい簡単なものっていうのが、いろいろと流派がある。その ISA、命令セットアーキテクチャっていうものが違う。で、そのインテルの命令のセットっていうのと、AMDの、間違えた、AMDとインテルは基本的に一緒。
アームの命令のセットっていう、そのできることっていうのが違う。ここが前提条件というか、そのコンピューター用語として最初のところで、そこからリスクとシスクっていう話になるんだけど、一言で言うと、インテルさんがやっている、できる命令というのは複雑で数が多くて高度なことができる。
で、アームがやっていることというのは、基本的にできることというのはめちゃめちゃ少ない。で、それだけ聞くとさ、やっぱりインテルの方がなんか早そうな気がするじゃん。
ちょまど 賢そうな感じはする。
大平 実際、昔はインテルの方がやっぱりにかなっていたというか、アームでできるようなことを、結果的に今現在リスクと呼ばれるシステムの方が早いっぽいぞっていうM1の登場によって流れになっているんだけど、なんかね、元々はまずメモリが超高かった。パソコンのメモリ。
06:15
で、メモリが超高くて、できるだけメモリを節約してあげないと、コンピューターというものが高くなりすぎてしまう。
で、じゃあどうしたらその安くてコンピューターをいい感じに使えるだろうって考えた場合に、コンピューターが、CPUができるだけ複雑なことをCPUでできてしまって、
メモリの使う量を少なく計算ができるようにしてあげようっていうので、そのインテル系のシスクという仕組みというのは、いろんなことをできるようにしようとしてあげた。
大平 じゃあそのCPUがすごい複雑なこともできるから、パソコンのそのメモリ自体はそんなに多くなくてもちゃんと動くように設計されたってこと?
寺田 そうそうそう。言ったら最初期はやっぱりそれで良かったんだ。ただ、実はもう結構早い段階でそのメモリはだんだん安くなってきて、ARMのそのリスクという仕組みの方が賢く早く使えるぞっていうふうに分かってはなりつつはあったんだけど、
インテルはインテルでARMの良いところみたいなのを真似して、リスクの良いところを取り入れたりだとか、こういう技を使えばもうちょっと早くできるかもしれないとかって言って延命させ続けてきたっていう言い方が正しいのかなっていうので今まで来てしまっていて、
コンピューターの広報互換とかさ、昔のプログラムが動くとかってすごい大事だからさ、その流れのままずっと今まで来て、インテルはもうずっとそれでうまくいってきたからずっとそういうふうにやってはきたんだけど、
あと、そもそものちょっと話してなかったんだけど、リスクとシスクの何が違うっていう一番大きなところなんだけど、インテルのシスクの仕組みというのは複雑なことができるから、その1回の命令というものがどのぐらいの長さの命令なのかよくわかんないのよ。
その10ビットの長さの命令もあるし、その4ビットで済むようなものもあるし、18ビットみたいなものもあるしっていうので、命令の長さがいろいろ違うので、一個一個の命令がそのどのぐらい時間がかかるかわかんないんだよね。
リスクっていうのは逆に命令できることというのはものすごい少なくって、さらに1回の命令っていうのは長さがこれだけって絶対決まっているから、この時間帯に絶対これを終わらせるっていう感じになっているんだ。
09:00
リビルドFMでそれに関する例え話が出てきていて、勉強したら改めてめっちゃわかりやすいなって思っていたんだけど、寿司職人と回転寿司っていう言い方をしていて、シスクというのは寿司職人が寿司を握るので、
ネタによってシャリによってネタの量、シャリの量をちょっと変えたりだとか、シャリを柔らかく握ったりだとか、ネタを切るところから準備して飯を握って出すっていうのを全部手作業で行っているので、常にたくさんお客さんがいても待ち時間というものがどうしてもラグが発生してしまう。
対してそのリスクの仕組みというのは、回転寿司なので、1工程1工程が完全に分業化されていて、ネタを切る係がいて、シャリを握る係がいて、乗せる係がいて、はい、できましたって渡す係がいてっていうので、常に均一のタイミングでお客さんに寿司を提供し続けることができる。
お客さんは待ち時間なく絶え間なく寿司を食えるのが回転寿司で、場合によっては次のまだかなーって待たされたり、速攻で出てきてまだ食えねーよっていうタイミングで出てきたりしてしまうのが、シスクという命令だった。
でもその話で言うと寿司職人の方がその複雑なお寿司が作れるんやな。その工程とかも別に短くすぐに握れるネタとシャリだけのやつもあれば、そこにさらにオプションでこうなんかをつけたりとか、こう切る工程を普通のやつとはこう変えたりっていうような、そういう高度な処理ができる。
その代わり出てくる時間がなんかまちまち早く出てくるものもあれば遅いものもあるって感じかな。
で高度なことができるっていうのは、そのね高度なことをやればあんまりメモリを使わなくていいから高度なことができるっていう言い方にもなるのかな。
あともう一個例え話で言うと、自動車のライン作業みたいなこととも似ているなというのは思って、かつてフォード、車の会社フォードがこう車をラインで作るようにして一人、Aさんはネジを止めるだけ、Bさんはなんかをやるだけって、必ず絶対にラインが止まらないように常に流すようにすることによって、
車を作るスピードというのはとんでもなく早くなって安くできるようになった。これが感覚としてはリスクみたいな感覚。
かつての車作りというのは職人が一個一個パーツを持ってきて組み付けて、次のパーツを持ってきて組み付けてっていうことをやっていたので、
一個一個の作業にかかる時間がまちまちだったんだよね。だから、みんなで分担して一個一個の工程を順々に進んでいけば一気にたくさんのものを結果的にできるじゃんっていうのではなかった。
12:05
その仕組みっていうのがかつてのインテル、かつてじゃないね今でもあるんやけど、インテルのシスクの仕組みだったっていう話になるのかな。
これでだいたい通じたのかな。
インテルのCPUとARMのCPUの2種類がどう違うのかみたいなのはなんとなく分かった。
単純な話なんだけど、コンピューターがやっていることってとんでもなく計算の量が多い。3.何ギガとか3ギガって言うじゃん。
それって1秒間にギガって100万の千倍?10億回?1秒間に10億回大雑把に計算をしているということなので、それだけの量の計算をしないといけなくなると、どっちが効率がいいかっていう話で、今のところM1の方が効率が良くなろうとしている感じになってきた。
そもそもの話なんだけど、M1って言ってるのはAppleが勝手に自分のチップに名前を付けているだけってこと?
そう。M1はAppleが付けているチップの名前で、ISA、命令セットというものはARMの命令セットを使っている。
M1っていう言葉が出てくる前に、ARM Macがみたいな話がニュースだったりだとか、そもそもAppleが発表会でそういう話をしたのにあったのは、ARMっていう会社が作っている命令系統を使ったチップで動くMacっていう話。
インテルもAMDもARMという命令セットを使っているのではなく、X86って呼ばれるSyskの命令セットを作っていた。なので大雑把に言えばISAっていう命令セットっていうのとSyskみたいな言葉が分かれば、一段階理解は進むのかなっていう感じなのかな。
じゃあ次はついに、なぜM1 Macは早いのか。ちょっと今の話、RiskとSyskの話で処理の仕方が違うっていうのを頭に入れればなんとなくはイメージできるんだけど、もうちょっと具体的にどこがどうしてなんで早いのかみたいなのが聞けたら。
もう一回頑張って勉強して話せるようにしてきます。
じゃあこの、なぜM1 Macが早いのかは後編に続くってことで。
はい。
14:57

コメント

スクロール