ただ、p71に誤記ありましたのでこちらでお知らせします。
表3.13のS'1の1番下は「1」ではなく「0」です。
プライム無料体験をお試しいただけます
プライム無料体験で、この注文から無料配送特典をご利用いただけます。
非会員 | プライム会員 | |
---|---|---|
通常配送 | ¥410 - ¥450* | 無料 |
お急ぎ便 | ¥510 - ¥550 | |
お届け日時指定便 | ¥510 - ¥650 |
*Amazon.co.jp発送商品の注文額 ¥2,000以上は非会員も無料
無料体験はいつでもキャンセルできます。30日のプライム無料体験をぜひお試しください。
新品:
¥5,500¥5,500 税込
ポイント: 165pt
(3%)
無料お届け日:
3月21日 木曜日
発送元: Amazon.co.jp 販売者: Amazon.co.jp
新品:
¥5,500¥5,500 税込
ポイント: 165pt
(3%)
無料お届け日:
3月21日 木曜日
発送元: Amazon.co.jp
販売者: Amazon.co.jp
中古品: ¥2,980
中古品:
¥2,980

無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません。
ウェブ版Kindleなら、お使いのブラウザですぐにお読みいただけます。
携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。
ディジタル回路設計とコンピュータアーキテクチャ[ARM版] 大型本 – 2016/4/25
デイビッド・M・ハリス サラ・L・ハリス
(著),
天野英晴
(翻訳)
{"desktop_buybox_group_1":[{"displayPrice":"¥5,500","priceAmount":5500.00,"currencySymbol":"¥","integerValue":"5,500","decimalSeparator":null,"fractionalValue":null,"symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"jfhzBu0nClYfv%2BtueV7R1XfutYjii6aovSyD6gg2w3ctRb4Gvp9ZGOVxx5TfS%2BXTEu1xheq07TTUxVcuBpvqaXIVpyxOYwfox01oTru5DxrDbxdbaKcBLIYVNDgqxpVrXB6LVF9DPp4%3D","locale":"ja-JP","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}, {"displayPrice":"¥2,980","priceAmount":2980.00,"currencySymbol":"¥","integerValue":"2,980","decimalSeparator":null,"fractionalValue":null,"symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"jfhzBu0nClYfv%2BtueV7R1XfutYjii6ao1SZXj%2Bgv9uiGfXHF6Rhxcc%2F6ZjLx6r6TmBP5JcFWqG6jeKXmMThstNfpCPisjFSTbj1hC5e2x7ak28XZ3msZMDRV88LpVLrOpEKHbuQ56Q7s9OkKY3RJaAg4uIKaS8dt23id1kzBDkrQBHSMih78zbRdwEr3%2B%2FBb","locale":"ja-JP","buyingOptionType":"USED","aapiBuyingOptionIndex":1}]}
購入オプションとあわせ買い
- 本の長さ319ページ
- 言語日本語
- 出版社星雲社
- 発売日2016/4/25
- ISBN-104434218484
- ISBN-13978-4434218484
よく一緒に購入されている商品
![ディジタル回路設計とコンピュータアーキテクチャ[ARM版]](https://images-fe.ssl-images-amazon.com/images/I/91sPwWO+ZrL._AC_UL116_SR116,116_.jpg)
対象商品: ディジタル回路設計とコンピュータアーキテクチャ[ARM版]
¥5,500¥5,500
最短で3月21日 木曜日のお届け予定です
残り7点(入荷予定あり)
¥2,420¥2,420
一時的に在庫切れ; 入荷時期は未定です。
注文確定後、入荷時期が確定次第、お届け予定日をEメールでお知らせします。万が一、入荷できないことが判明した場合、やむを得ず、ご注文をキャンセルさせていただくことがあります。商品の代金は発送時に請求いたします。
総額:
当社の価格を見るには、これら商品をカートに追加してください。
ポイントの合計:
pt
もう一度お試しください
追加されました
一緒に購入する商品を選択してください。
この商品を見た後に買っているのは?
ページ 1 以下のうち 1 最初から観るページ 1 以下のうち 1
登録情報
- 出版社 : 星雲社 (2016/4/25)
- 発売日 : 2016/4/25
- 言語 : 日本語
- 大型本 : 319ページ
- ISBN-10 : 4434218484
- ISBN-13 : 978-4434218484
- Amazon 売れ筋ランキング: - 326,476位本 (本の売れ筋ランキングを見る)
- - 14,956位コンピュータ・IT (本)
- カスタマーレビュー:
著者について
著者をフォローして、新作のアップデートや改善されたおすすめを入手してください。

著者の本をもっと発見したり、よく似た著者を見つけたり、著者のブログを読んだりしましょう
イメージ付きのレビュー

5 星
FPGAを使って実際に動作するミニマムARMコアを作る醍醐味が味わえます
CPUを自作することをテーマにした本を2冊ほど買っていましたが、この本でやっと実際に動作するCPUをFPGAを使って作ることができました。実際にFPGAを使ってCPUを動作させてみることでより理解が深まりますので、少々お金はかかりますが、是非FPGA開発キットを入手して実際に動くCPUを作ってみることをお勧めします。お手頃なボードとしてはAltera社のCyclone Vを搭載したDE0-CVがお勧めです。Amazonでもマルツオンラインの出展品が買えますが、マルツオンラインから直接買った方が安いです。さて中身ですが、1章・2章はディジタル回路の基礎で、ある程度は分かっていた内容なのでざっと読み飛ばしました。ブール代数を使った論理圧縮の手法は知っておいた方が良いのですが、今時ならHDLのコンパイラで最適化ができると思い、この辺りも読み飛ばしてしまいました。4章のハードウェア記述言語(HDL)の解説は非常に分かりやすく、じっくりと読み込みました。これまでVerilog HDLを少しかじったことがある程度の予備知識はありましたが、組み合わせ回路や順序回路の記述など、後の章で実際にFPGAを使ってCPUを作るのに必要な知識が一通り取得できます。本書はHDLとしてSystem VerilogとVHDLの二本立てで解説がなされていますが、System VerilogではVerilogの分かりづらかった部分が明快になり(例えば、regとwireの使い分けがlogicで一元化されたり、フリップフロップや組み合わせ回路を明示的に記述できるなど)実際にFPGAで回路を記述する際に役立ちました。まだ参考書を探すとVerilogの本が主流でSystem Verilogに関する書籍は少ないですが、この章だけでかなりのことが学べます。5章はまたざっと読み飛ばして、6章のARM CPUのアーキを概観した後、7章で実際にHDL(私はSystem Verilogを使いました)を使ってCPUの回路を記述します。ここはじっくりと時間をかけて読み進めました。CPUを構成するビルディングブロックを、プログラムカウンター・命令フェッチ・レジスタファイル・ALU・データメモリー/レジスタへのライトバックと順を追って丁寧に解説してあり、CPUを構成するビルディングブロックがどのように構成されているかがよく分かります。実際に7種類(ADD/SUB/AND/OR/LDR/STR/BL)の命令を実行できるARMコアを作るのですが、以下に示す3つ実装例が具体的な動作ロジックの説明や図解で丁寧に解説されています。1) もっとも単純な順序回路をベースとしたシングルサイクル動作の実装(1クロックで、命令のフェッチ・デコード・演算までを行い、次のクロックで結果のライトバックと次命令のフェッチを並列して行うため、実質的に1クロックで1命令が実行できる)。この実装はHDLのコードが書籍に記載されているので実際に手入力で打ち込んで動作させてみました。Alteraの開発環境(Quartus Prime)は初めて使うため、開発環境への習熟期間もかかりましたが、入力ミスで思い通り動かない回路を論理シミュレーションでデバックすることで実際の動作がより理解できました。2) 次に、ステートマシンを使ったマルチサイクル動作のCPUに関する解説があります。こちらは命令フェッチ・デコード・実行・ライトッバクをシーケンス動作で実行するモデルに従った実装を行います。ロジックの考え方やブロック図の記載はありますが、HDLを使った実装は演習問題となっており、本書には記載がありません。最初は自力でコーディングしてみたのですがうまく動かせず、奇数番号の演習問題は回答がネットで公開されているため、(この演習は奇数番号なので)ネットの回答をカンニングして動かしてみました。基本的な考え方は間違っていなかったのですが、ステートマシンの状態記述に網羅性がなく状態の定義に漏れがあったことが回答を見て分かりました。是非、まずは自力で動かしてみることにチャレンジすると理解が深まります。3) 最後は、パイプライン動作の実装を行います。こちらも基本的な考え方やブロック図の記載はありますが、実装は演習問題になっておりHDLコードの記載はありません。また、この演習問題は偶数番号でネットの回答例もないため、頑張って自力で実装して動作させることができました。パイプライン動作の基本は知っていましたが、依存性のある連続した命令(一つ前の演算結果を次の命令で使用する場合など)の解決方法としてフォワーディングというテクニックが記載されており、これはこの本で初めて知りました。あと、分岐命令でパイプラインがストールした際の制御に関しても解説があり、実際にFPGAで動作させることによって理解が深まります。このように、FPGAを使って実際に動くCPUを作るステップを詳細に記載した稀少かつ非常に有意義な書籍です。コンピューターアーキテクチャーには元々興味があったのですが、実際に動くCPUを作ることでアーキテクチャーの理解がより深まりました。FPGA開発キットと合わせると少々お高いですが、その価値は十分あります。元々大学の教科書として作られているため演習問題がたくさんありましすが、上記2)3)のCPUを動作させる演習問題以外はほとんど出来ていません。今時のコンピューターサイエンスを専攻している学生さんは、学生時代に自分で動くCPUが作れるなんてすごい時代になったなと思いました。写真は、実際にパイプライン動作(ループのため分岐が多く、ストールしまくっていますが)で動かしているDE0-CVで作ったCPUの動作イメージです。
フィードバックをお寄せいただきありがとうございます
申し訳ありませんが、エラーが発生しました
申し訳ありませんが、レビューを読み込めませんでした
-
トップレビュー
上位レビュー、対象国: 日本
レビューのフィルタリング中に問題が発生しました。後でもう一度試してください。
2016年7月22日に日本でレビュー済み
CPUを自作することをテーマにした本を2冊ほど買っていましたが、この本でやっと実際に動作するCPUをFPGAを使って作ることができました。実際にFPGAを使ってCPUを動作させてみることでより理解が深まりますので、少々お金はかかりますが、是非FPGA開発キットを入手して実際に動くCPUを作ってみることをお勧めします。お手頃なボードとしてはAltera社のCyclone Vを搭載したDE0-CVがお勧めです。Amazonでもマルツオンラインの出展品が買えますが、マルツオンラインから直接買った方が安いです。
さて中身ですが、1章・2章はディジタル回路の基礎で、ある程度は分かっていた内容なのでざっと読み飛ばしました。ブール代数を使った論理圧縮の手法は知っておいた方が良いのですが、今時ならHDLのコンパイラで最適化ができると思い、この辺りも読み飛ばしてしまいました。
4章のハードウェア記述言語(HDL)の解説は非常に分かりやすく、じっくりと読み込みました。これまでVerilog HDLを少しかじったことがある程度の予備知識はありましたが、組み合わせ回路や順序回路の記述など、後の章で実際にFPGAを使ってCPUを作るのに必要な知識が一通り取得できます。本書はHDLとしてSystem VerilogとVHDLの二本立てで解説がなされていますが、System VerilogではVerilogの分かりづらかった部分が明快になり(例えば、regとwireの使い分けがlogicで一元化されたり、フリップフロップや組み合わせ回路を明示的に記述できるなど)実際にFPGAで回路を記述する際に役立ちました。まだ参考書を探すとVerilogの本が主流でSystem Verilogに関する書籍は少ないですが、この章だけでかなりのことが学べます。
5章はまたざっと読み飛ばして、6章のARM CPUのアーキを概観した後、7章で実際にHDL(私はSystem Verilogを使いました)を使ってCPUの回路を記述します。ここはじっくりと時間をかけて読み進めました。CPUを構成するビルディングブロックを、プログラムカウンター・命令フェッチ・レジスタファイル・ALU・データメモリー/レジスタへのライトバックと順を追って丁寧に解説してあり、CPUを構成するビルディングブロックがどのように構成されているかがよく分かります。
実際に7種類(ADD/SUB/AND/OR/LDR/STR/BL)の命令を実行できるARMコアを作るのですが、以下に示す3つ実装例が具体的な動作ロジックの説明や図解で丁寧に解説されています。
1) もっとも単純な順序回路をベースとしたシングルサイクル動作の実装(1クロックで、命令のフェッチ・デコード・演算までを行い、次のクロックで結果のライトバックと次命令のフェッチを並列して行うため、実質的に1クロックで1命令が実行できる)。この実装はHDLのコードが書籍に記載されているので実際に手入力で打ち込んで動作させてみました。Alteraの開発環境(Quartus Prime)は初めて使うため、開発環境への習熟期間もかかりましたが、入力ミスで思い通り動かない回路を論理シミュレーションでデバックすることで実際の動作がより理解できました。
2) 次に、ステートマシンを使ったマルチサイクル動作のCPUに関する解説があります。こちらは命令フェッチ・デコード・実行・ライトッバクをシーケンス動作で実行するモデルに従った実装を行います。ロジックの考え方やブロック図の記載はありますが、HDLを使った実装は演習問題となっており、本書には記載がありません。最初は自力でコーディングしてみたのですがうまく動かせず、奇数番号の演習問題は回答がネットで公開されているため、(この演習は奇数番号なので)ネットの回答をカンニングして動かしてみました。基本的な考え方は間違っていなかったのですが、ステートマシンの状態記述に網羅性がなく状態の定義に漏れがあったことが回答を見て分かりました。是非、まずは自力で動かしてみることにチャレンジすると理解が深まります。
3) 最後は、パイプライン動作の実装を行います。こちらも基本的な考え方やブロック図の記載はありますが、実装は演習問題になっておりHDLコードの記載はありません。また、この演習問題は偶数番号でネットの回答例もないため、頑張って自力で実装して動作させることができました。パイプライン動作の基本は知っていましたが、依存性のある連続した命令(一つ前の演算結果を次の命令で使用する場合など)の解決方法としてフォワーディングというテクニックが記載されており、これはこの本で初めて知りました。あと、分岐命令でパイプラインがストールした際の制御に関しても解説があり、実際にFPGAで動作させることによって理解が深まります。
このように、FPGAを使って実際に動くCPUを作るステップを詳細に記載した稀少かつ非常に有意義な書籍です。コンピューターアーキテクチャーには元々興味があったのですが、実際に動くCPUを作ることでアーキテクチャーの理解がより深まりました。FPGA開発キットと合わせると少々お高いですが、その価値は十分あります。元々大学の教科書として作られているため演習問題がたくさんありましすが、上記2)3)のCPUを動作させる演習問題以外はほとんど出来ていません。今時のコンピューターサイエンスを専攻している学生さんは、学生時代に自分で動くCPUが作れるなんてすごい時代になったなと思いました。
写真は、実際にパイプライン動作(ループのため分岐が多く、ストールしまくっていますが)で動かしているDE0-CVで作ったCPUの動作イメージです。
さて中身ですが、1章・2章はディジタル回路の基礎で、ある程度は分かっていた内容なのでざっと読み飛ばしました。ブール代数を使った論理圧縮の手法は知っておいた方が良いのですが、今時ならHDLのコンパイラで最適化ができると思い、この辺りも読み飛ばしてしまいました。
4章のハードウェア記述言語(HDL)の解説は非常に分かりやすく、じっくりと読み込みました。これまでVerilog HDLを少しかじったことがある程度の予備知識はありましたが、組み合わせ回路や順序回路の記述など、後の章で実際にFPGAを使ってCPUを作るのに必要な知識が一通り取得できます。本書はHDLとしてSystem VerilogとVHDLの二本立てで解説がなされていますが、System VerilogではVerilogの分かりづらかった部分が明快になり(例えば、regとwireの使い分けがlogicで一元化されたり、フリップフロップや組み合わせ回路を明示的に記述できるなど)実際にFPGAで回路を記述する際に役立ちました。まだ参考書を探すとVerilogの本が主流でSystem Verilogに関する書籍は少ないですが、この章だけでかなりのことが学べます。
5章はまたざっと読み飛ばして、6章のARM CPUのアーキを概観した後、7章で実際にHDL(私はSystem Verilogを使いました)を使ってCPUの回路を記述します。ここはじっくりと時間をかけて読み進めました。CPUを構成するビルディングブロックを、プログラムカウンター・命令フェッチ・レジスタファイル・ALU・データメモリー/レジスタへのライトバックと順を追って丁寧に解説してあり、CPUを構成するビルディングブロックがどのように構成されているかがよく分かります。
実際に7種類(ADD/SUB/AND/OR/LDR/STR/BL)の命令を実行できるARMコアを作るのですが、以下に示す3つ実装例が具体的な動作ロジックの説明や図解で丁寧に解説されています。
1) もっとも単純な順序回路をベースとしたシングルサイクル動作の実装(1クロックで、命令のフェッチ・デコード・演算までを行い、次のクロックで結果のライトバックと次命令のフェッチを並列して行うため、実質的に1クロックで1命令が実行できる)。この実装はHDLのコードが書籍に記載されているので実際に手入力で打ち込んで動作させてみました。Alteraの開発環境(Quartus Prime)は初めて使うため、開発環境への習熟期間もかかりましたが、入力ミスで思い通り動かない回路を論理シミュレーションでデバックすることで実際の動作がより理解できました。
2) 次に、ステートマシンを使ったマルチサイクル動作のCPUに関する解説があります。こちらは命令フェッチ・デコード・実行・ライトッバクをシーケンス動作で実行するモデルに従った実装を行います。ロジックの考え方やブロック図の記載はありますが、HDLを使った実装は演習問題となっており、本書には記載がありません。最初は自力でコーディングしてみたのですがうまく動かせず、奇数番号の演習問題は回答がネットで公開されているため、(この演習は奇数番号なので)ネットの回答をカンニングして動かしてみました。基本的な考え方は間違っていなかったのですが、ステートマシンの状態記述に網羅性がなく状態の定義に漏れがあったことが回答を見て分かりました。是非、まずは自力で動かしてみることにチャレンジすると理解が深まります。
3) 最後は、パイプライン動作の実装を行います。こちらも基本的な考え方やブロック図の記載はありますが、実装は演習問題になっておりHDLコードの記載はありません。また、この演習問題は偶数番号でネットの回答例もないため、頑張って自力で実装して動作させることができました。パイプライン動作の基本は知っていましたが、依存性のある連続した命令(一つ前の演算結果を次の命令で使用する場合など)の解決方法としてフォワーディングというテクニックが記載されており、これはこの本で初めて知りました。あと、分岐命令でパイプラインがストールした際の制御に関しても解説があり、実際にFPGAで動作させることによって理解が深まります。
このように、FPGAを使って実際に動くCPUを作るステップを詳細に記載した稀少かつ非常に有意義な書籍です。コンピューターアーキテクチャーには元々興味があったのですが、実際に動くCPUを作ることでアーキテクチャーの理解がより深まりました。FPGA開発キットと合わせると少々お高いですが、その価値は十分あります。元々大学の教科書として作られているため演習問題がたくさんありましすが、上記2)3)のCPUを動作させる演習問題以外はほとんど出来ていません。今時のコンピューターサイエンスを専攻している学生さんは、学生時代に自分で動くCPUが作れるなんてすごい時代になったなと思いました。
写真は、実際にパイプライン動作(ループのため分岐が多く、ストールしまくっていますが)で動かしているDE0-CVで作ったCPUの動作イメージです。

CPUを自作することをテーマにした本を2冊ほど買っていましたが、この本でやっと実際に動作するCPUをFPGAを使って作ることができました。実際にFPGAを使ってCPUを動作させてみることでより理解が深まりますので、少々お金はかかりますが、是非FPGA開発キットを入手して実際に動くCPUを作ってみることをお勧めします。お手頃なボードとしてはAltera社のCyclone Vを搭載したDE0-CVがお勧めです。Amazonでもマルツオンラインの出展品が買えますが、マルツオンラインから直接買った方が安いです。
さて中身ですが、1章・2章はディジタル回路の基礎で、ある程度は分かっていた内容なのでざっと読み飛ばしました。ブール代数を使った論理圧縮の手法は知っておいた方が良いのですが、今時ならHDLのコンパイラで最適化ができると思い、この辺りも読み飛ばしてしまいました。
4章のハードウェア記述言語(HDL)の解説は非常に分かりやすく、じっくりと読み込みました。これまでVerilog HDLを少しかじったことがある程度の予備知識はありましたが、組み合わせ回路や順序回路の記述など、後の章で実際にFPGAを使ってCPUを作るのに必要な知識が一通り取得できます。本書はHDLとしてSystem VerilogとVHDLの二本立てで解説がなされていますが、System VerilogではVerilogの分かりづらかった部分が明快になり(例えば、regとwireの使い分けがlogicで一元化されたり、フリップフロップや組み合わせ回路を明示的に記述できるなど)実際にFPGAで回路を記述する際に役立ちました。まだ参考書を探すとVerilogの本が主流でSystem Verilogに関する書籍は少ないですが、この章だけでかなりのことが学べます。
5章はまたざっと読み飛ばして、6章のARM CPUのアーキを概観した後、7章で実際にHDL(私はSystem Verilogを使いました)を使ってCPUの回路を記述します。ここはじっくりと時間をかけて読み進めました。CPUを構成するビルディングブロックを、プログラムカウンター・命令フェッチ・レジスタファイル・ALU・データメモリー/レジスタへのライトバックと順を追って丁寧に解説してあり、CPUを構成するビルディングブロックがどのように構成されているかがよく分かります。
実際に7種類(ADD/SUB/AND/OR/LDR/STR/BL)の命令を実行できるARMコアを作るのですが、以下に示す3つ実装例が具体的な動作ロジックの説明や図解で丁寧に解説されています。
1) もっとも単純な順序回路をベースとしたシングルサイクル動作の実装(1クロックで、命令のフェッチ・デコード・演算までを行い、次のクロックで結果のライトバックと次命令のフェッチを並列して行うため、実質的に1クロックで1命令が実行できる)。この実装はHDLのコードが書籍に記載されているので実際に手入力で打ち込んで動作させてみました。Alteraの開発環境(Quartus Prime)は初めて使うため、開発環境への習熟期間もかかりましたが、入力ミスで思い通り動かない回路を論理シミュレーションでデバックすることで実際の動作がより理解できました。
2) 次に、ステートマシンを使ったマルチサイクル動作のCPUに関する解説があります。こちらは命令フェッチ・デコード・実行・ライトッバクをシーケンス動作で実行するモデルに従った実装を行います。ロジックの考え方やブロック図の記載はありますが、HDLを使った実装は演習問題となっており、本書には記載がありません。最初は自力でコーディングしてみたのですがうまく動かせず、奇数番号の演習問題は回答がネットで公開されているため、(この演習は奇数番号なので)ネットの回答をカンニングして動かしてみました。基本的な考え方は間違っていなかったのですが、ステートマシンの状態記述に網羅性がなく状態の定義に漏れがあったことが回答を見て分かりました。是非、まずは自力で動かしてみることにチャレンジすると理解が深まります。
3) 最後は、パイプライン動作の実装を行います。こちらも基本的な考え方やブロック図の記載はありますが、実装は演習問題になっておりHDLコードの記載はありません。また、この演習問題は偶数番号でネットの回答例もないため、頑張って自力で実装して動作させることができました。パイプライン動作の基本は知っていましたが、依存性のある連続した命令(一つ前の演算結果を次の命令で使用する場合など)の解決方法としてフォワーディングというテクニックが記載されており、これはこの本で初めて知りました。あと、分岐命令でパイプラインがストールした際の制御に関しても解説があり、実際にFPGAで動作させることによって理解が深まります。
このように、FPGAを使って実際に動くCPUを作るステップを詳細に記載した稀少かつ非常に有意義な書籍です。コンピューターアーキテクチャーには元々興味があったのですが、実際に動くCPUを作ることでアーキテクチャーの理解がより深まりました。FPGA開発キットと合わせると少々お高いですが、その価値は十分あります。元々大学の教科書として作られているため演習問題がたくさんありましすが、上記2)3)のCPUを動作させる演習問題以外はほとんど出来ていません。今時のコンピューターサイエンスを専攻している学生さんは、学生時代に自分で動くCPUが作れるなんてすごい時代になったなと思いました。
写真は、実際にパイプライン動作(ループのため分岐が多く、ストールしまくっていますが)で動かしているDE0-CVで作ったCPUの動作イメージです。
さて中身ですが、1章・2章はディジタル回路の基礎で、ある程度は分かっていた内容なのでざっと読み飛ばしました。ブール代数を使った論理圧縮の手法は知っておいた方が良いのですが、今時ならHDLのコンパイラで最適化ができると思い、この辺りも読み飛ばしてしまいました。
4章のハードウェア記述言語(HDL)の解説は非常に分かりやすく、じっくりと読み込みました。これまでVerilog HDLを少しかじったことがある程度の予備知識はありましたが、組み合わせ回路や順序回路の記述など、後の章で実際にFPGAを使ってCPUを作るのに必要な知識が一通り取得できます。本書はHDLとしてSystem VerilogとVHDLの二本立てで解説がなされていますが、System VerilogではVerilogの分かりづらかった部分が明快になり(例えば、regとwireの使い分けがlogicで一元化されたり、フリップフロップや組み合わせ回路を明示的に記述できるなど)実際にFPGAで回路を記述する際に役立ちました。まだ参考書を探すとVerilogの本が主流でSystem Verilogに関する書籍は少ないですが、この章だけでかなりのことが学べます。
5章はまたざっと読み飛ばして、6章のARM CPUのアーキを概観した後、7章で実際にHDL(私はSystem Verilogを使いました)を使ってCPUの回路を記述します。ここはじっくりと時間をかけて読み進めました。CPUを構成するビルディングブロックを、プログラムカウンター・命令フェッチ・レジスタファイル・ALU・データメモリー/レジスタへのライトバックと順を追って丁寧に解説してあり、CPUを構成するビルディングブロックがどのように構成されているかがよく分かります。
実際に7種類(ADD/SUB/AND/OR/LDR/STR/BL)の命令を実行できるARMコアを作るのですが、以下に示す3つ実装例が具体的な動作ロジックの説明や図解で丁寧に解説されています。
1) もっとも単純な順序回路をベースとしたシングルサイクル動作の実装(1クロックで、命令のフェッチ・デコード・演算までを行い、次のクロックで結果のライトバックと次命令のフェッチを並列して行うため、実質的に1クロックで1命令が実行できる)。この実装はHDLのコードが書籍に記載されているので実際に手入力で打ち込んで動作させてみました。Alteraの開発環境(Quartus Prime)は初めて使うため、開発環境への習熟期間もかかりましたが、入力ミスで思い通り動かない回路を論理シミュレーションでデバックすることで実際の動作がより理解できました。
2) 次に、ステートマシンを使ったマルチサイクル動作のCPUに関する解説があります。こちらは命令フェッチ・デコード・実行・ライトッバクをシーケンス動作で実行するモデルに従った実装を行います。ロジックの考え方やブロック図の記載はありますが、HDLを使った実装は演習問題となっており、本書には記載がありません。最初は自力でコーディングしてみたのですがうまく動かせず、奇数番号の演習問題は回答がネットで公開されているため、(この演習は奇数番号なので)ネットの回答をカンニングして動かしてみました。基本的な考え方は間違っていなかったのですが、ステートマシンの状態記述に網羅性がなく状態の定義に漏れがあったことが回答を見て分かりました。是非、まずは自力で動かしてみることにチャレンジすると理解が深まります。
3) 最後は、パイプライン動作の実装を行います。こちらも基本的な考え方やブロック図の記載はありますが、実装は演習問題になっておりHDLコードの記載はありません。また、この演習問題は偶数番号でネットの回答例もないため、頑張って自力で実装して動作させることができました。パイプライン動作の基本は知っていましたが、依存性のある連続した命令(一つ前の演算結果を次の命令で使用する場合など)の解決方法としてフォワーディングというテクニックが記載されており、これはこの本で初めて知りました。あと、分岐命令でパイプラインがストールした際の制御に関しても解説があり、実際にFPGAで動作させることによって理解が深まります。
このように、FPGAを使って実際に動くCPUを作るステップを詳細に記載した稀少かつ非常に有意義な書籍です。コンピューターアーキテクチャーには元々興味があったのですが、実際に動くCPUを作ることでアーキテクチャーの理解がより深まりました。FPGA開発キットと合わせると少々お高いですが、その価値は十分あります。元々大学の教科書として作られているため演習問題がたくさんありましすが、上記2)3)のCPUを動作させる演習問題以外はほとんど出来ていません。今時のコンピューターサイエンスを専攻している学生さんは、学生時代に自分で動くCPUが作れるなんてすごい時代になったなと思いました。
写真は、実際にパイプライン動作(ループのため分岐が多く、ストールしまくっていますが)で動かしているDE0-CVで作ったCPUの動作イメージです。
このレビューの画像

2016年4月25日に日本でレビュー済み
発売日前に池袋ジュンク堂書店で買えました。以前の MIPS 版の翻訳は見てませんが、まだ最初ですが、翻訳の質は良いかと思います。(MIPS版と同じ翻訳者が担当してます)
オリジナルの英語版は1万円を超えていて、翻訳本が半額で変えるのはお得な気がします。
この分野は自分は全くの素人で、遠い昔の大学時代 ブール代数を勉強した程度で、それ以来ソフトウェア開発をしてました。最近 FPGA の学習キットを買って、CPUの勉強するためにこの本を買いました。特に今スマホ、タブレットでは標準の ARM なのがとても興味深いです。
「ARMの手が届かないところで勝手に実装されることに対しては極めて厳しい態度で臨むのがARMという会社の特徴」だそうで、この本の教材は ARM 社の承認を貰って作ってるそうです。
2進数など、かなり基本から始まってますので、とっつきは良いかと思います。もともと大学の教材なので、演習問題は山程あり、ネットでは奇数問だけの回答を得られる様です。ところどころ、アメリカ本らしくジョークが入ってますが、分からない物もあり、翻訳版はフォローして欲しいです。
第7章のマイクロアーキテクチャーまで到達出来れば良いのですが、じっくりと読むことにします。
推薦文が東大名誉教授の和田英一先生でした。まだ活躍されて居られるのを拝見して嬉しく思いました。
オリジナルの英語版は1万円を超えていて、翻訳本が半額で変えるのはお得な気がします。
この分野は自分は全くの素人で、遠い昔の大学時代 ブール代数を勉強した程度で、それ以来ソフトウェア開発をしてました。最近 FPGA の学習キットを買って、CPUの勉強するためにこの本を買いました。特に今スマホ、タブレットでは標準の ARM なのがとても興味深いです。
「ARMの手が届かないところで勝手に実装されることに対しては極めて厳しい態度で臨むのがARMという会社の特徴」だそうで、この本の教材は ARM 社の承認を貰って作ってるそうです。
2進数など、かなり基本から始まってますので、とっつきは良いかと思います。もともと大学の教材なので、演習問題は山程あり、ネットでは奇数問だけの回答を得られる様です。ところどころ、アメリカ本らしくジョークが入ってますが、分からない物もあり、翻訳版はフォローして欲しいです。
第7章のマイクロアーキテクチャーまで到達出来れば良いのですが、じっくりと読むことにします。
推薦文が東大名誉教授の和田英一先生でした。まだ活躍されて居られるのを拝見して嬉しく思いました。