2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。
最終的にはFPGAに自作のCPUを書き込んでいくのだが、筆者はFPGAを使った経験がほとんどない。
CPUの回路設計はまだ手もつけていないが、不確実性を下げるために、先にFPGAを購入して普段遣いのmacOSからFPGA開発ができるように整えておく。
最終的には、macOSから papilio-prog
コマンドでBitstreamファイル (.bit
) を Papilio Pro LX9 評価ボードに書き込むことに成功したので、その記録を備忘として残しておく。
自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。
続きを読む
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。
今回は、自作CPUのパフォーマンスベンチマークとして利用するつもりの riscv-tests の挙動を追ってみる。
関心があるのは、命令セットやOSの機能をどこまで用意してあげればベンチマークが実行できるのかという点。とりわけ、以下の観点をチェックしていく。
- ISA (命令セット)
- RV64F (単精度浮動小数点演算), RV64D (倍精度浮動小数点演算) を利用しているベンチマークはあるか。あるとしたらどれか。
- RV64V (ベクトル演算) を利用しているベンチマークはあるか。あるとしたらどれか。
- RV64A (アトミック命令) を利用しているベンチマークはあるか。あるとしたらどれか。
- OS機能
- ヒープ領域は必要か(スタック領域のみで十分か)。
- スレッドをCPUコアに割り当てるスケジューラは必要か。
自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。
続きを読む
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。
今回は、64ビットRISC-V (RV64I) の “Hello World” をRustで作ったので、そのリポジトリの紹介。
自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。
続きを読む
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。
第一回のこの記事では、目指してることとか、作りたい成果物とか、ロードマップとか、進捗とかを記録していく。インプットが増えたり手を動かしていくと色々と軌道修正があるだろうから、この記事は随時更新されていく。ChangeLogをご参考。
進捗報告は 自作CPU & 自作OS タグで追えるようにしておく。
続きを読む
“パタヘネ本” でおなじみの『コンピュータの構成と設計 第5版』の解答集です。読者は書籍を保有していることを前提として解答・解説を記載します。
訂正案などありましたら本ブログ記事のリポジトリ へPull-Requestくだされば幸いです😊
この記事4章の内容は、プロセッサを実現するハードウェアユニット・パイプライン処理・命令レベル並列化など、CPUに関する中核です。
各章の解答集
- 『コンピュータの構成と設計 第5版』演習問題解答集 第1章 (執筆中)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第2章
- 『コンピュータの構成と設計 第5版』演習問題解答集 第3章
- 『コンピュータの構成と設計 第5版』演習問題解答集 第4章 (この記事)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第5章 (執筆中)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第6章 (執筆中)
続きを読む
“パタヘネ本” でおなじみの『コンピュータの構成と設計 第5版』の解答集です。読者は書籍を保有していることを前提として解答・解説を記載します。
訂正案などありましたら本ブログ記事のリポジトリ へPull-Requestくだされば幸いです😊
この記事3章の内容は、
- 加算と減算
- 乗算器
- 除算器
- 浮動小数点数
- SIMD
です。
各章の解答集
- 『コンピュータの構成と設計 第5版』演習問題解答集 第1章 (執筆中)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第2章
- 『コンピュータの構成と設計 第5版』演習問題解答集 第3章 (この記事)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第4章
- 『コンピュータの構成と設計 第5版』演習問題解答集 第5章 (執筆中)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第6章 (執筆中)
続きを読む
“パタヘネ本” でおなじみの『コンピュータの構成と設計 第5版』の解答集です。読者は書籍を保有していることを前提として解答・解説を記載します。
訂正案などありましたら本ブログ記事のリポジトリ へPull-Requestくだされば幸いです😊
この記事2章では、ひたすらMIPSアセンブリと戯れます。
各章の解答集
- 『コンピュータの構成と設計 第5版』演習問題解答集 第1章 (執筆中)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第2章 (この記事)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第3章
- 『コンピュータの構成と設計 第5版』演習問題解答集 第4章
- 『コンピュータの構成と設計 第5版』演習問題解答集 第5章 (執筆中)
- 『コンピュータの構成と設計 第5版』演習問題解答集 第6章 (執筆中)
続きを読む
Rustの特徴のひとつは、所有権(ownership)・移動(move)・借用(borrow)の概念です。これらがコンパイル時に厳格にチェックされることにより、古くから未定義挙動でプログラマを悩ませてきたダングリングポインタなどの問題がなくなり、メモリ安全性がもたらされます。
しかし一方で、自分で多少複雑なデータ構造を定義しようとする場合にはコンパイルを通すだけでもかなりの知識・力量が要求されます。
この(不定期)連載では、 Rustではじめるデータ構造とアルゴリズム と題し、プログラミングコンテストなどでよく見かける基礎的なデータ構造とアルゴリズムを、できるだけシンプルにRustで実装していきます。 &
, &mut
, Box
, Rc
, Cell
, RefCell
などの使い分けや、なぜそれを使う必要があるかの解説を、実例を通して行います。
今回第2回では、 二分探索木 を取り扱います。値の大小に沿った構造を持つ二分木であり、単純なデータ構造でありながら、検索やソートなど実用性が高いです。第1回の二分木に少し制約を付け足した構造になるので、未読の方はぜひ第1回のほうからご覧ください。
続きを読む
Rustの特徴のひとつは、所有権(ownership)・移動(move)・借用(borrow)の概念です。これらがコンパイル時に厳格にチェックされることにより、古くから未定義挙動でプログラマを悩ませてきたダングリングポインタなどの問題がなくなり、メモリ安全性がもたらされます。
しかし一方で、自分で多少複雑なデータ構造を定義しようとする場合にはコンパイルを通すだけでもかなりの知識・力量が要求されます。
この(不定期)連載では、 Rustではじめるデータ構造とアルゴリズム と題し、プログラミングコンテストなどでよく見かける基礎的なデータ構造とアルゴリズムを、できるだけシンプルにRustで実装していきます。 &
, &mut
, Box
, Rc
, Cell
, RefCell
などの使い分けや、なぜそれを使う必要があるかの解説を、実例を通して行います。
第1回は、最もシンプルな木構造である 二分木 を取り扱います。基礎的な木構造なので、再帰・深さ優先探索・幅優先探索のエッセンスを集中的に理解することが期待できます。
各回共通し、以下のような構成を予定しています。
- データ構造の説明と、Rustでの定義
- 関連するアルゴリズムの説明と、(汎用的に実装できる場合は)Rustでの実装
- 定義したデータ構造とアルゴリズムを使って、プログラミングコンテストの問題を解いてみる
続きを読む
全世界のプレイングマネージャーに捧ぐ・・・
自分自身がプレイングマネージャー的な役割をこなす場面があるときに、「プレイヤー仕事たのし〜」「マネージメント仕事戻るの気が重いよ〜〜」となることがあります。多々あります。
そんな自分を慰めるために、自分の心に秘めた独自理論があります。名付けて
です。
一生自分の胸だけに秘めるつもりだったのですが、同僚と1on1してポロッと話してみたら意外とウケたので、増長してブログに書きました。
続きを読む