1. 思ったら即アウトプットするプログラマー
  2. テトリスでパソコンを作る①"導..
2023-02-28 06:57

テトリスでパソコンを作る①"導入編"

● 画面付きの動画はこちら https://youtu.be/OMNxG6NUPPg

● このシリーズで解説するサイト「Tetris is Capable of Universal Computation」 https://meatfighter.com/tetromino-computer/index.html

●【Twitter @mossan_hoshi】 https://twitter.com/mossan_hoshi

●【Youtube @mossanhoshi7158】 https://www.youtube.com/@mossanhoshi7158

●【Zenn @mossan_hoshi】 https://zenn.dev/mossan_hoshi

●【Qiita @mossan_hoshi】 https://qiita.com/mossan_hoshi

テトリス, ゲーム, コンピューターアーキテクチャ, 半導体, トランジスタ, 電子回路

00:00
モッサンです。これから何回かにわたってテトリスを使って汎用的なコンピューティングを実現しようという大胆な試みを紹介したいと思います。
ただ、いきなり中身に入ってもわけがわからないと思いますので、まず背景となる普遍的な計算、汎用コンピューティングについて紹介して、今回テトリスがそれのどこになるのかというところを紹介したいと思います。
今回テトリスで汎用的なコンピューティングを行うという話をしましたが、汎用的なコンピューティングとはすなわち我々が普段使っているパソコンのことです。
とはいえパソコンとは複雑なものです。もう少し要素を分解してみましょう。パソコンとはすなわちパーソナルコンピューターのことです。
このコンピューターとは日本語で書くと計算機ということになります。計算というとすぐに思いつくのが電卓になりますが、電卓ももちろん計算機です。
ですのでパソコンと電卓はほぼほぼ同じと考えていただいてOKです。厳密には色々な機能が違いますが、計算を行うという点では一緒です。
ではこの計算機がどういった要素で構成されているのかを見ていきましょう。計算機の主な要素としては入力、
入力されたデータを処理、そして処理した結果を出力という主にこの3つの要素からなります。
これをパソコンと電卓で考えてみたときに、入力の部分は電卓であれば
鍵盤で数値や計算の種類を入力するというところからはまりますし、パソコンであればキーボードやマウスなどそれ以外USBとか色々ありますが、そういったデバイスからの入力が相当します。
それを内部で処理してその結果を出力されるのが電卓であれば液晶部分に相当しますし、パソコンであれば画面であったり
音声出力であったりします。では肝心の真ん中の処理する部分、こちらがどうなっているのかを見ていきましょう。
こちらの処理する部分ですが、一般的にはパソコンであれ電卓であれ半導体のチップ、こちらの故障としてはICだとかLSIだとか
マイソーCだとか色々ありますが、とりあえずざっくり半導体と思えていただければいいかと思います。
何らかの半導体のチップがあってその中で処理をするということになっているという形になっています。
ではこのチップの中身を見ていきましょう。チップですが、最近は特にパソコンなどにおいては一つのチップに色々な機能を持たせて作るというようなことがあるので、色々な機能が盛り込まれていたりしますが、
主要な機能としましてはまず計算を行う計算のユニット、ALUなどと言ったりしますが、もしくは一番馴染みの深いところで言うとCPUなどが相当します。
ただCPUと故障した場合ここで書いてある他の要素も色々含んでしまったりするので、そこの辺はちょっとフワッとしますがご了承ください。
あと前置きするの忘れましたが、こちらコンピューターアーキテクチャーを今紹介しているんですが、
03:04
あくまでも今回そのテトリスでのコンピューティングを紹介するためにざっくりと紹介しているだけであって、厳密なコンピューターアーキテクチャーの解析に比べると色々と疎後があります。
なので紙砕いて荒くなっていますので、細かいところにはちょっと目をつぶっていただければいいかと思います。
改めてコンピューターアーキテクチャーを学び始めた時にそれぞれの要素をチェックしていただければいいかと思います。
ともかくこのチップの中に計算を行うALUやデータを確保するためのキャッシュやメモリー、
あとはリッチなチップであればグラフィカルな処理、もしくは並列事項を行うような処理用にGPUを備えていただいたとか、
あとはそれぞれ様々な外部デバイスを通信するためのIO関連などですね。
そういった感じの色々な機能がチップの中には入っています。
今回注目するのは先ほど言った通りこのALU部分になるわけです。
このALUで何をやっているかという話ですが、
電卓においてはこの計算の部分に当たるのが足し算、引き算、掛け算、割り算、ルートの計算であったりだとか、
色々な計算が電卓によって実装されていますが、そういったものがまさにここのALUで実行する内容になります。
そういったこのALUで実行できるそれぞれの計算の種類、それのことを命令という風に呼んだりします。
ですのでALUの中には足し算を行う加算命令の回路があって、
また掛け算を行う乗算回路の命令の回路があって、
また割り算を行う乗算命令の回路があったりと、
そういった感じで各命令ごとにそれぞれの回路が存在していて、
プログラムの内容に従って入力されたデータをこの回路で実行してその結果を出力するという作業を行っています。
ちなみに電卓であれパソコンであれ、ここに入っている命令の種類は結構似てまして、
至速演算だとかそういった計算ですね、そういったものはだいたい共通しています。
ただ当然パソコンの方がよりリッチであったりだとか、
まとめてたくさんのデータを処理できたりだとか、
そういったですね、より豊富な計算ができるようになっている、
そういったイメージを持っていただければいいかと思います。
続いて各命令の回路、こちらの方が中身どういう風になっているかというと、
こちらプログラミングをやっている方であればなんとなく観察がわかるかと思いますが、
ANDだとかORだとかNOTだとかNANDだとかそういったいわゆる論理演算ですね、
そういったものの組み合わせでですね、この計算というものを成り立たせています。
一般的にこのようなですね、論理演算のことをですね、ロジックゲートと呼んだりします。
実際にはこの計算結果を保持したりするというところがまたあったりするんですけれどもですね、
ここではちょっとそこら辺は省略させていただきます。
さらにですね、このゲートを詳しく見ていくと、
06:00
この中身というものは半導体においてはトランジスターと呼ばれる素子の組み合わせによって構成をされています。
このゲートの回路が例えばこの右側とこのようなトランジスター4個ぐらいで作られているというようなそういったイメージです。
あともあれ半導体のですね、特にいわゆるこういう計算を行うロジック半導体において最小構成要素層群はこのトランジスターが基礎となります。
ここでようやく最初の方に言っていたテトリスの話が出てきます。
今回紹介するテトリスで汎用的なコンビニューリングをするという内容ですが、
基本的にはこのトランジスターの部分をテトリスで置き換えていようと、
このトランジスターと同じ動作をするようなテトリスを作り上げようというふうに言ってもいいかなというふうに思います。
ちょっとここらへんまだ今聞いてもわけがわかんないかと思いますが、こちら次回以降順々に紹介していきたいと思います。
06:57

コメント

スクロール