コンピュータを一から作る過程を大雑把に知りたい [転載禁止]©2ch.net
>>8 富士通はFACOM100の前に、統計局の計数機とか、東京証券取引所の
計算機(納入されず)とかを作ってる。 いまなら、歯車でコンピューター作る方が自慢出来ると思う。
64step位のプログラム組めるようにして。 >現代に普及しているPCを完成させるに至るまでの行動の様子を
ネジを締めてコネクタをつける程度のことだ(苦笑 >>16
それは「現代に普及している、PCを完成させるまでの様子」だな
1が聞きたかったのはおそらく「現代に普及しているPCを、完成させるまでの様子」だってのは分かってて言ってると思うけどw 部品を取り付けてはんだ付けしている程度のことだ(苦笑 インテルで最初のCPU作ったのは、日本人だったというな
あの頃は、メモリのインテルだったりして Cで機械語のインタプリタ書いて、ちょっとハード向けに手直しして
動作合成ツールにかければCPUの出来上がりさ。 無理だろ。
つかmallocとか使わない、再帰も制限した「独特のC」である必要がある。
C級出版の本で妙なことを信じちゃったりする前にSICPの4章以降でも読んどけ。 >>22
そこは動作合成ツールに依存する部分だけどね。
例えばソフトウェアなCだとクロックサイクルという
概念を持たないからその部分がどうなっているかとか、
入出力信号はどう記述するとかね。
でも、インタプリタ本体の基本的な処理はだいたいそのまま
いけちゃうから楽。
>>23
まぁ、文法の多くをCと整合をとったハードウェア記述言語っていう感じだけどね。
Cを知っていれば結構スムースに入り込めるよ。
CPUの基本は、要するにプログラム領域から
命令コードを読み取って、読んだ命令コードに従って
次のアクションをどうするかっていうことを決めてるだけだから、
たとえば、ごく単純に1バイト目がオペコードで、必要に応じて
2バイト目以降がオペランドというCPUなら、本体の処理部分は
while(1) {
opcode = *reg_pc++;
switch(opcode) {
(以下caseによって処理を書く)
}}
てな具合になる程度だし。 >>24
その素晴らしい実装は、一命令700クロック位で動くんですか?画期的ですね。 マイクロプログラム方式ってまさにそうよ
ttp://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E6%96%B9%E5%BC%8F マイクロプログラム方法を「基本」って考えてるって、
1980年の常識ですかねw >>25
動作合成ツールに依存するけど、必要に応じて
クロックサイクルの切れ目の指定を入れるくらい。
先の例なら、whileループ一周ごとにサイクルの切れ目を入れる
とかね。
>>26
いや、画期的じゃないよ。動作合成ってそんなもん。
ループをどれだけで回すかだけど、何もやらなければ、
メモリアクセスを伴わない部分は1クロックで動くように合成されるだろうね。
動作クロック周波数を上げるために処理を複数クロックに分離したいなら、
それなりの切れ目のところで、サイクルの切れ目を伝えればいい。
関数呼び出しなんかも普通に使えるし、Cを使いなれているならあまり
違和感なくいけちゃったりする(関数コールは合成結果としては
関数処理回路との間のメッセージパッシングになるのかな?)
>>28
マイクロプログラム方式とは用意された
マイクロプログラムのインタプリタのハードウェア化だから。
いわば、”インタプリタで書いたインタプリタ”みたいなもの。
この場合は機械語のインタプリタがそのままハードウェア化されているので
マイクロプログラム方式じゃない、古典的なCPUだよ。 連投すまん。
Cに限りなく近いから誤解されやすいけど、動作合成といっても要するにHDL
(ハードウェア記述言語)だからね。そんなに特殊なものと思わなくてもいいよ。
ストアードプログラム方式のCPUの基本は機械語をメモリから読み出して、
その内容に従ってメモリやレジスタ、演算機(ALU)との間でのデータ転送
を行うっていうもの。
これをソフトウェア風に捉えれば、やってることはインタプリタそのもの。
だから、インタプリタを書いて(クロックサイクルの切れ目とかの
ハードウェア依存な部分を入れ込んだ上で)動作合成にかければ、
書かれた処理、つまり機械語を解釈して動くハードウェアロジック化
される。つまり、CPUが生成されるわけ。
ただし、そのままだとパタヘネ本の最初に出てくるCPUみたいなもんで
クロック周波数を上げにくかったりするから、適宜クロックサイクルを
分割したり、パイプライン化したほうが良いだろうけどね。 資源がほいほい増えたり減ったりする(スタックポインタが行ったり来たりして)
コンピュータプログラムと、基本的にリソースが増減しないハードウェアの設計は、
基本的に別物。
言うだけじゃなくてちゃんと自分で設計してFPGAをコンフィグして、動かすまでやったのかおまい? >>33
そんなにしかめっ面して難しく考えなくても大丈夫だよ。
仮想記憶も無い古典的なCPUでのスタックポインタなんて、
単なるメモリへのポインタだし。 >>33
あぁ、すまん。
動作合成自体が理解できなかったわけね。
もう随分昔からやられていることだし、実際にFPGAにインプリメントして
動かしたりしてるよ。
もちろん、Verilog/VHDLとかにくらべたら圧倒的にマイナーだけど、
処理系はあちこちで出しているね。
DesignWave誌(廃刊になっちゃったね)でも確か動作合成でブロック崩しを
作ってFPGAにインプリメントしてたな。 ほう。
「動作合成」なるものを使うとあたかもC言語のごとく、
手続き呼び出しをスタックを積んだり外したりして実行する
ハードウェアを作ってくれるのかw
SFLあたりの見た目に騙されただけじゃねw
(一応SFLのステージには呼び出しと戻りの機能がある「セグメント」って奴が
あるけどね) >>37
>手続き呼び出しをスタックを積んだり外したりして実行する
>ハードウェアを作ってくれるのかw
あくまでもHDLだからそういう変換はしないだろうけど、
(だから再帰はサポートしないものが大半)
「あたかもC言語のごとく」っていうのはそのとおり。
手続き呼び出しは、それぞれの手続きが個別のスタティックな
回路になって、引数は信号線渡しで、互いに同期とるための信号が
生成されるだろうね(具体的には処理系依存だろうけど)
ソフト的に言えば手続きがそれぞれが別スレッドだったり、独立したCPUに
割り付けられて、互いにメッセージパッシングしているようなもん。
ループやif文、switchなんかも何も考えずに書いてやっても論理合成
されてFPGA化されるよ。 だから「C級出版の本に書いてあった」じゃなくて、具体的に自分で何か設計して書いて
合成してFPGAをコンフィグして動かしてみたわけ?
ifとかswitchとかソフトウェアみたいに書けて合成できるんですよー、ってのは、そうやって
簡単だと思わせて騙して本を売るためのテクニックに過ぎないから。 >>39
俺?スレ立てなんてやったことない。(てか、やり方知らないし(笑))
>>40
そんなに噛み付かなくても良いんじゃないかなぁ(笑)
もちろん動かして、FPGAで動かしてみた事はあるよ。
そのときの経験で言ってるだけだけど?
一応使えるようになったときに「これで機械語インタプリタ書いたら
CPUになるよな?」といって、ロードとデクリメントとジャンプ程度の
ものを書いてみたら本当に動いてしまった。
もう10年以上前のことだから、今はもっと凄いんじゃない?
確かにこの手のアルゴリズム物を落とし込むなら便利なことは確かだな。
ただ、Verilog/VHDLだと、既にCに近いレベルの言語だからわざわざ
移行しようっていう気にはなりにくいだろうし、ソフト屋さんが
FPGA作るの?って言われるとちょっと疑問符だしで、立ち位置が難しいよね。 「C言語で書ける」とか言うと、
int fact(int x) {
return x==0 ? 1 : x*fact(x-1);
}
とか出来そうに思えるわけだけど、
そういうことができるわけ? >>42
あくまでもCの文法を流用したHDLだから、再帰は今でも無理なんじゃないかな?
ループに展開するとかしてあげないとね。
「ほらみろ!使えない!」となるのか、「それならこうやって使えるね」となるのかは
その人次第。どっちが正しいってもんでもないと思うから、判断は各自で
好きなようにすればいいんじゃない?
ただ、一番最初に書いたような、「Cで機械語インタプリタ書いて
動作合成向きにちょっと手直しするとCPUが生成される」
いうこと自体は嘘じゃないってこと。
(わざわざそんなことするくらいなら、そのCPUで実行させたい
理そのものをFPGA化すればいいだろ!って感じだけどね(笑)) ああなるほど、「機械語」インタプリタね。
その程度のものを書くのにわざわざ「Verilogと違うから、動作合成だから」とか
言ったわけか。インタプリタらしいインタプリタって普通は再帰があるから。 >>44
あぁ、汎用的なインタプリタ言語処理系を・・って思われてたのか。
それじゃ、かみ合うわけがないね。
このスレで話題にしているのはCPU作りたいってところだからそれしか
頭に浮かんでなかった。ごめんなさい。 マシン語という階層でCPUは、分類されて
汎用に入るか別かは、別で 先づはインテルと契約します
契約の度合いによって黄色やオレンジや緑色の参考書が送られてきます。
それには参考回路やCPU周りの参考基板図や注意事項が書いてたりパスコンで使える
コンデンサの銘柄などの資料や様々な情報が入ってます。
その通りに作れば電子関連の設計部署でパソコン設計未経験でも作る事が出来るでしょう。 宇宙を作りたいとか言うやつは、現宇宙の外へ出てから言え。 AC100VをDC100V以下にしたいんだけど
トランスでの変圧が先かブリッジダイオードの整流が先か。発熱しそうだからトランス先かな? ttp://ameblo.jp/m5-1/entry-10125811828.html
電流による。LED,マイコン位ならこういうので 見落としてたらすまんがプロセッサー手作りする時、面倒なのは演算回路よりシーケンサーだよな。
それとデコーダー。命令をいかにエレガントに作るかでデコード速度がまるで違う
あと安く作る時困るのがROM
意外に面倒 ゼロからトースターを作ってみた
って本これおすすめ
材料の鉱石を採取する所から始まって
あまりのスケールのでかさにワロタ 家で不労所得的に稼げる方法など
参考までに、
⇒ 『武藤のムロイエウレ』 というHPで見ることができるらしいです。
グーグル検索⇒『武藤のムロイエウレ』"
S3TI4GE2M1 ユニークで個性的な確実稼げるガイダンス
暇な人は見てみるといいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
8GEXS 関係ないけど、このスレが一番近いんで教えて
プログラマブルロジックデバイスのPALって、何回も書き換えられるの?
一回失敗したら終わり?
(具体的にはPAL16R4AM) PALはワンタイムじゃなかったかな?
チタンタングステンヒューズを使ってる、って書いてあるからプログラマが
焼き切ったらそれっきりだと思う。
GALが出てきて嬉しかった記憶がある。 やっぱり焼き切ってお終いなのか…
レスありがとう
大事に取ってあったけど捨てるw 昔、劇画=巨人の星 に出てくる人物で、伴忠太がいた。これとは無関係だが
コンピュータは、紺飛太が作った TA2K(谷啓)というマイコンを作る企画を何かの雑誌で読んだ気がする Primitive Technology のおっさんが、PC作り出すのに何年かかるか むかし車を一から作るとかいってスコップもって鉄鉱山に行った奴いたな SF「三体」の劉慈欣が「円」という短編で
円周率を人体デジタル計算システムで求める方法を書いていてWEBで公開されている
結局さいごは死滅するけど一読してアホクサというぐらいの価値はある デジモン(デジタルモンスター)シリーズのアニメの最新作を放送してね
デジモン(デジタルモンスター)シリーズのアニメの完全新作を放送してね
デジモン(デジタルモンスター)シリーズのアニメの新作を放送してね
デジモン(デジタルモンスター)シリーズのアニメの次期作を放送してね
デジモン(デジタルモンスター)シリーズのアニメの次回作を放送してね
デジモン(デジタルモンスター)シリーズのアニメの続編を放送してね
デジモン(デジタルモンスター)シリーズのアニメの続きを放送してね
デジモンチャンピオンシップは傑作だよ
デジモンチャンピオンシップは秀作だよ
デジモンチャンピオンシップは名作だよ
デジモンチャンピオンシップは良作だよ
デジモンチャンピオンシップは佳作だよ
デジモンチャンピオンシップは上作だよ
デジモンチャンピオンシップは意欲作だよ
デジモンチャンピオンシップは話題作だよ
デジモンチャンピオンシップは超大作だよ
デジモンチャンピオンシップはネ申アニメだよ
デジモンチャンピオンシップは神アニメだよ
カレンダモンの必勝
カレンダモンの完勝
カレンダモンの全勝
カレンダモンの奇勝
カレンダモンの連勝
カレンダモンの戦勝
カレンダモンの制勝
カレンダモンの優勝
カレンダモンの楽勝
カレンダモンの圧勝
カレンダモンの完全勝利
カレンダモンの大勝利
カレンダモンの勝利
カレンダモンの勝ち 真空管かトランジスタ(シリコンでもゲルマニウムでも)かリレーかパラメトロンが造れないと無理 >>70
一読しなくてもアレクサの一言で起動するamazonECHOは偉大だな >>40
CQ出版に悪質な印象は無かったがそう書かれるとA級とかS級の出版社がどこか知りたいなwww LEDとフォトトランジスタで4-bit CPU作った高校生がいる。
ORは簡単だけど、NOTが作れなくてそこだけインバータを使ってた。 >>20
> インテルで最初のCPU作ったのは、日本人だった
それは事実だが、時間がちょっと歪めば最初のCPUを作ったのはシャープだったかもしれん。そして今のインテルの地位はシャープだったかもしれんw
シャープがuPD700の論理設計をし、三洋電機に製造を委託した。が、三洋電機は失敗、NECに委託し直した。
この間にインテルに抜かれた(泣)
NECはuPD700の版権を買取りリリース、何番目かの地位に甘んじた…
可哀想と思うのはシャープでuPD700の論理設計した人。i4004に比べたらとても美しい設計。
なのに結果として彼は名も無きエンジニアになってしまった orz 最近、こんな記事を見掛けた。
【やじうまPC Watch】「世界トップクラスの低性能」1bit CPU、新発売
https://pc.watch.impress.co.jp/docs/news/yajiuma/1554799.html
TTL 4個で1bit CPU!! 面白い!!
それで作りたくなったw
ROMやRAMはSPI EEPROMやSPI SRAMがあるし、I2Cに比べ制御が簡単。
シリアルだからデータバスは当然1bit。かつデータ転送に時間掛かるから1bitづつ演算しても楽々間に合うw
アキュムレータは8bit、だってSPIのデータ単位が8bitだから。
アドレスは16bit、だってSPIのアドレスが16bitだから。
SPI EEPROM/SRAMは最大20MHzで動作するから、1byte演算するのに2.5MHz。
2.5MHz動作で64kBのメモリ空間だったら、古(いにしえ)のCPUと同じ性能を1bit CPUでも叩き出せるんとちゃう? (夢想)(夢想) TTLのALUって最小4bitだっけ
ラズパイpicoで500円より安く造れるんかな なんか回路図のピンとが合ってなくてモヤモヤだが
NAND4個(IC1個)でXOR
7474(IC1個)でD-FF2個
マルチプレクサでIC1個
シュミットのNOT6個(IC1個)でクロック生成とかリセットとか
こんな感じか >>88>>89
さすがに20MHz駆動をTTLでは辛いからCPLDで。intel MAX Vの安い奴が200円位だから入る規模でw
> TTLのALUって最小4bitだっけ
> ラズパイpicoで500円より安く
ALUの中でも加減算は桁上がりがあるよね。
ここで、1クロック毎にLSBから計算し、桁上がりはラッチして次クロックで加算。というシーケンシャル処理にすると1bit ALUでも何ビットでも加算処理出来てしまうの。
実際いにしえのCPUでは、1bit ALUが普通だった時代があったらしい。
これ↓i4004の元になったビジコン社電卓のブロック図。
レジスタは64bit!!なのに加算器は1bitとかw
https://i.imgur.com/WlwDYBT.jpg
この先人の知恵の復活で、8bit並の1bit CPU出来ないかなぁ~と夢想中 80系がリトルエンディアンなのはご先祖様が1bit ALUで、LSBから演算処理した名残だと思うんだよね。
一方、SPIは68系のモトローラが作った規格。アドレスもデータもビッグエンディアン(泣)
データは解釈を代えればいいけど、アドレスはバースト転送したいからそうも行かない。
シーケンシャル処理でビット順の入れ換えかぁ~メンドイ >>93
あっちはトランジスタで作るっつうか、キットの売込みスレだったからね。
> アドレスバスを1bitにすれば解決
そんなCPU、面白くなぁ~いw エンディアン変換はこんな↓感じかな。
8bit変換するだけでDFFが7個必要そう。ちょっと勿体ないなぁ~
https://i.imgur.com/J0qpyLr.png >>76
これすごいな
GWに集中してみるわ
それまでは我慢 >>96
今CPUの説明をチラ観したが、ALUで加算器とXOR回路が別とか。ムダな事をしてんね。
一方、この4bit CPUをTr 900個?で作るとか。凄いね。
ちな、i4004は2237個とか >>98
TTL 4個で1bit CPUの話かな?
ROM(DIP SW)からALUへのデータ線は1bitだから1bit CPUだと思うな。 64マクロセルCPLDに作るCPUやて
https://qiita.com/okuoku/items/3dd2da20f46c2e63286f
元のデザインは50マクロセルとか。32マクロセルでは無理なのかなぁ? >>100
32マクロセルな設計、あった(^^;
MCPU - A Minimal 8Bit CPU in a 32 Macrocell CPLD
https://github.com/cpldcpu/MCPU
VHDLのソース見たら短けぇ~w
だけど確かにCPUだわ 中身をみてないけど、アーキテクチャの絞り込みがすべてな気がする 「自作エミュレータで学ぶx86アーキテクチャ」っていう本が欲しいんだけど、
紙媒体の本はどうして絶版になったんだろう
ヤフオクにもブックオフにもなかなか出てこなかったり、
プレミア価格がついてたりして困る