kivantium活動日記

プログラムを使っていろいろやります

2016年に読んだ本

2016年最後の日なので今年読んだ本を振り返ってみたいと思います。 まんがタイムKRコミックス 今年もたくさんのきららコミックスを読みました。 NEW GAME! NEW GAME! (4) (まんがタイムKRコミックス)作者: 得能正太郎出版社/メーカー: 芳文社発売日: 2016/07…

アセンブリ言語 その2

この記事はkivantium Advent Calendarの19日目です。前回は最初のCPUの設計に使う命令セットを紹介しました。 今回はこの命令を使っていろいろなプログラムを書いてみます。 SPIM ここではMIPSのシミュレータとして有名なSPIM (MIPSを逆から読んだ名前) を使…

アセンブリ言語 その1

この記事はkivantium Advent Calendarの18日目です。 CPUを設計する際に重要な要素の一つが命令セットアーキテクチャ (ISA) です。 これから設計する簡単なCPUのISAとして、分かりやすく参考文献も多いMIPSを採用することにしました。 MIPS ISA の詳細は htt…

いろいろなCPU

この記事はkivantium Advent Calendarの17日目の記事です。昨日まででCPUを作る部品の解説は一通り終わったのでついにCPUの作成に入る準備ができました。 実際に作成に入る前に過去の偉人に学ぶべく独断と偏見で選んだ歴史上のCPUたちを一言ずつ紹介していき…

浮動小数点数の除算

この記事はkivantium Advent Calendarの16日目です。昨日は浮動小数点数の加減算を扱いました。 今日は演算器シリーズの最終回として浮動小数点数の除算を取り上げます。 基本原理 浮動小数点数の演算を行うには符号部・指数部・仮数部を決める必要がありま…

浮動小数点数の加減算

この記事はkivantium Advent Calendarの15日目です。このページは移動しました。https://kivantium.net/cpu-faddを見てください。

バレルシフタ

この記事はkivantium Advent Calendarの14日目です。昨日は浮動小数点数の乗算をやりました。 今日は浮動小数点数の加減算をするのに必要な部品であるバレルシフタを紹介します。 シフトの使い道 シフト演算は高速なのでビット演算テクニックとしてよく使わ…

きんモザ・ごちうさ聖地巡礼記

この記事はまんがタイムきらら Advent Calendar 2016、きんいろモザイク Advent Calendar 2016、ごちうさ Advent Calendar 2016の14日目です。(さすがに欲張りすぎた)9月にきんいろモザイクの聖地であるイギリスと、ご注文はうさぎですか?の聖地とされる…

浮動小数点数の乗算

この記事はkivantium Advent Calendarの13日目です。昨日は浮動小数点数のフォーマットについて説明しました。 今日は浮動小数点数の乗算をやります。 仕組み 浮動小数点数は仮数と指数で表されるので 指数の和を取る 仮数の積を取る 仮数を丸めてフォーマッ…

浮動小数点数

この記事はkivantium Advent Calendarの12日目です。昨日までで整数の四則演算のやり方を紹介しました。 今日からは浮動小数点数の使い方を紹介します。 IEEE-754 浮動小数点数の表し方はコンピュータの歴史の中で何種類かありましたが、現在主流となってい…

除算器 その2

この記事はkivantium Advent Calendarの11日目です。昨日は回復法を用いた除算器の設計を説明しました。回復法は符号付き整数を扱えないという欠点がありました。今日はこれを克服する非回復法を説明します。 非回復法(引き放し法) 回復法では引き算の結果…

除算器 その1

この記事はkivantium Advent Calendarの10日目です昨日までで四則演算のうち3つが揃ったので今日からは最難関の割り算をやります 回復法(引き戻し法) 話を簡単にするため、まずは符号なし整数の割り算を考えます。 割り算の場合も基本の考え方は筆算です。…

乗算器 その3

この記事はkivantium Advent Calendarの9日目です。昨日はWallaceツリーを用いた乗算器の構成を紹介しました。 昨日までの方法ではbit数と同じ数の部分積の和を取る必要がありましたが、今日は部分積を減らすことで高速化を目指す方法を紹介します。 Radix-4…

乗算器 その2

この記事はkivantium Advent Calendarの8日目です。昨日は符号なし整数掛け算の実現方法として単純な2つの回路を考えてそれらが実用的でないことを確認し、また、符号付き整数の掛け算を行う方法としてBaugh-Wooleyアルゴリズムを紹介しました。 今日は乗算…

乗算器 その1

この記事はkivantium Advent Calendarの7日目です。昨日は乗算器の準備のために順序回路の構成要素であるラッチとフリップフロップについて簡単に触れ、シフトレジスタを導入しました。今日は掛け算を行う回路を作っていこうと思います。 単純な符号なし乗算…

ラッチとフリップフロップ

この記事はkivantium Advent Calendarの6日目です。昨日までは入力だけで出力が確定する組み合わせ回路を扱っていました。 しかし、掛け算のような複雑な演算を効率的に行うには前の計算結果を保存しておいて、何度か繰り返し計算を行うような処理が必要にな…

減算器

この記事はkivantium Advent Calendarの5日目です。昨日までで足し算ができるようになったので今度は引き算を考えます。 引き算はという関係から負の数の足し算として考えれば加算器をそのまま流用することができそうです。 しかし、2進数での負の数をどう定…

加算器 その2

この記事はkivantium Advent Calendarの4日目です。昨日は半加算器・全加算器・リップルキャリーアダーを紹介しました。 リップルキャリーアダーはゲートがたくさん直列に並んでいるため遅いです。 そこで今回は高速な加算器を実装する話です。 キャリールッ…

加算器 その1

この記事はkivantium Advent Calendarの3日目です。昨日はNANDゲートから任意のゲートを作れることを確認しました。 ここからは何回かに分けて四則演算などの基本的な計算を行う回路の実現方法を書いていきます。四則演算は組み合わせ回路として書けるので、…

NANDがあればなんでもできる その2

この記事はkivantium Advent Calendarの2日目です。昨日はトランジスタを使ってNANDゲートを作る方法を解説しました。 今日はNANDゲートを使っていろんなゲートを作っていきます。 基本的なゲート ゲートにはNANDゲートの他にも何種類もあります。よく使う有…

NANDがあればなんでもできる その1

この記事はkivantium Advent Calendarの1日目です。 このAdvent Calendarについて トランプ大統領の誕生により、核戦争で文明が崩壊するリスクが高まっています(脳内設定)。また、巷では空前の異世界転生ブームが巻き起こっているため、いつ異世界に飛ばさ…

はてなブログでKaTeXを使う

はてな記法には数式を表示するためのtex記法が用意されています。 はてなブログでの数式表示はGoogle Charts APIを使っているようでそこそこ遅いです。 はてなブログの数式レンダリングが遅いとTwitterに嘆いていたところ、KaTeXという高速な数式レンダリン…

帰無仮説のもとでp値の分布が一様分布になることの証明

帰無仮説のもとでp値の分布が一様分布になるらしいのですが、納得できるちゃんとした証明が検索しても出てこなかったので書いておきます。p値とは何かとか、帰無仮説とは何かみたいな解説は省略します。 証明 を観測値の帰無仮説の分布、をの累積分布関数 を…

PythonからGNU Socialを使う

先日Twitterに障害が発生した際に「Twitterが落ちてつぶやけない」というつぶやきができなくて非常に苦しい思いをしました。 また、Twitter社の収益が怪しく買収交渉も失敗したという噂も流れています。 なんにせよTwitterがなくてもつぶやきを続行できる代…

Travis CIによるC言語プログラムの自動テスト

自動テストはエンジニアの必須スキル!という話を最近よく聞くのですが、テストをやったことがなかったのでTravis CIで試してみました。 Travis CIとは Travis CIは自動テスト実行サービスで、GitHubと連携してpushした際に自動でテストを行ってくれるところ…

SystemVerilog文法メモ

前回の記事でSystemVerilogをちょこっと書いたので、今度はSystemVerilogの文法について細かく勉強しようと思います。 あくまで自分が勉強するためのメモなので、お気づきの点があったら指摘してもらえると助かります。 理解したところから記述を足していく…

FPGAボードのBasys 3を買った

SystemVerilogの勉強のためにVivadoが使えるFPGAボードが欲しかったので、DigilentのBasys 3を購入しました。ちなみにAcademic料金で購入するとかなり安くなるので、大学等に所属している人はAcademic登録することをおすすめします。 store.digilentinc.comU…

精度保証付き数値計算(その1)

コンピュータ上で実数を表現する際には浮動小数点数を使うのですが、浮動小数点数の計算では誤差が発生します。簡単な例を見てみます。 #include <cstdio> int main(void) { float a = 0.0; for(int i=0; i<10000; ++i) a += 0.01; printf("%.10f\n", a); } という0.</cstdio>…

COBRApyを使ったFlux Balance Analysis

生物の代謝を数学的にシミュレーションする手法の一つにFlux balance analysis(FBA, 日本語だと「代謝流束均衡解析」)というものがあります。一般的な代謝のシミュレーションでは速度定数を実験的に求めてから微分方程式を解く必要があり、実験の手間も計…

最近読んだ本とか

大学の実験で心が折れそうだったので最近かなりのペースでマンガやラノベを読んでいました。というわけでいくつか紹介していきます。 WORLD END ECONOMiCA 「できるかできないかじゃない」「うまくいくまでやるんだよ」冬木糸一さんのレビュー(最高の効率で…

特定商取引法に定められた事項は請求により遅滞なく提供する