平成21年度卒業研究  16bitCPUの製作               福永研究室                   家村 光                   唐木 靖雅                   木次 遼太.

Slides:



Advertisements
Similar presentations
CPU設計と パイプライン.
Advertisements

基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
USB2.0対応PICマイコンによる データ取得システムの開発
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報塾( ) CPUとメモリがどんなふうに動くのだろう。 レジスタやI/O プログラムの実行、マシン語。
テープ(メモリ)と状態で何をするか決める
2012年度 計算機システム演習 第4回 白幡 晃一.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情 報 技 術 基 礎 処理装置の構成と動作 D17kog706pr101 始.
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
計算機システムⅡ 命令セットアーキテクチャ
計算機システム ハードウェア編(第3回) ~ ノイマン型コンピュータ ~.
USB2.0対応PICを用いたデータロガーの製作
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
プログラムはなぜ動くのか.
デジタル回路(続き) コンピュータ(ハードウェアを中心に)
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
人間とコンピュータの違い コンピュータ 人間
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
専門演習Ⅰ 国際経済学部 国際産業情報学科 2年 石川 愛
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
イーサネットについて 飯塚務.
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
明星大学 情報学科 2010年度後期     コンピュータ設計論  
第8回 入出力装置1 インターフェース、ヒューマンデバイス
勉強会その1    2016/4/ 分35秒 コンピュータアーキテクチャとは? コンピュータの構成 命令の実行.
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
序章 第2節 教育機器とコンピュータ 1 パーソナルコンピュータ
1.コンピュータと情報処理 p.18 第1章第1節 2.コンピュータの動作のしくみ CPUと論理回路
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
情報リテラシー2014 part 5/5 (亀田担当分最終回)
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
ソートアルゴリズムの種類 選択ソート (selection sort) バブルソート (bubble sort)
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
情報機器と情報社会のしくみ Web素材利用
1.情報機器について知ろう(p.8-9) 第1章 第1節
ディジタル回路の設計と CADによるシステム設計
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
プログラミング 4 整列アルゴリズム.
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンピュータの仕組み 〜ハードウェア〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
明星大学 情報学科 2012年度前期     情報技術Ⅰ   第1回
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
システム玩具を 応用した環境計測システムの構築
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
コンピュータの五大要素 入力装置 データ(プログラム)を取り込む 出力装置 処理結果のデータを外部に取り出す
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
明星大学 情報学科 2014年度前期     情報技術Ⅰ   第1回
並列処理プロセッサへの 実数演算機構の開発
アルゴリズム ~すべてのプログラムの基礎~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

平成21年度卒業研究  16bitCPUの製作               福永研究室                   家村 光                   唐木 靖雅                   木次 遼太

目次 1.CPU 2.I/O 3.アセンブラ 4.今後の展望 3.1 アセンブラとは 3.2 クイックソート 3.3 フィボナッチ数列 1.1 CPUとは 1.2 本研究で製作したCPUの構成 1.3 主なmoduleの概要 2.I/O 2.1 I/Oとは 2.2 RS232C 2.3 USBについて 3.アセンブラ 3.1 アセンブラとは 3.2 クイックソート 3.3 フィボナッチ数列 4.今後の展望

1章 CPU

1.1 CPUとは CPU(Central Processing Unit:中央処理装置)とは、プログラムにより各種演算・制御を行う装置のこと。 CPUは、ALUなどの演算装置、データを一時記憶するレジスタ、メモリなどの記憶装置、周辺機器との入出力装置、CPU全体を制御する制御装置などで構成される。 ←Intel corei7 (画像引用:Naopy Hobby Land CPUコレクション http://www7a.biglobe.ne.jp/~naopy/cpu_sub.html#CPU)

1.2 本研究で製作したCPUの構成 今回はPICO-16をベースに製作。 1.2 本研究で製作したCPUの構成 今回はPICO-16をベースに製作。 PICOとは、慶應義塾大学と東京工科大学で共同開発された実験教育用のCPUのシリーズで、PICO-16とは命令サイズが16bitのもの。 16bitの汎用レジスタを8つ持つregister-registerマシン。 データの長さは16bitに固定。 動作クロックは48MHz メモリは32767×8×2bit 入力はシステムリセットとRS232C通信用の2種類 出力はRS232C通信用の1種類 31種類の命令を実行できる。

命令一覧 I 形式 (即値命令) R 形式 (レジスタ-レジスタ命令) J 形式 (ジャンプ命令)

命令形式 Type I Type R Type J

命令形式 Type I Type R Type J I形式(即値命令)はイミーディエイト命令、条件分岐命令などに使用する。OPが命令コード、Rdが使用するレジスタ、immediateが数値を意味する。 (例)ADDI 1,10; 00110 001 00001010

命令形式 Type I Type R Type J R形式(レジスタ-レジスタ命令)は算術演算・論理演算などに使用する。OPにはすべて0が入り、FUNCで命令を判断する。Rd、Rsが使用するレジスタ、FUNCが補助命令コードを意味する。 (例)AND 1,2; 00000 001 010 00010

命令形式 Type I Type R Type J J形式(ジャンプ命令)はジャンプ命令、サブルーチンコールなどに使用する。OPが命令コード、offsetがジャンプ距離を意味する。 (例)JMP 100; 01111 01100100

ホストコンピュータと通信するための入出力 CPUの概略図 ホストコンピュータと通信するための入出力 (今回はRS232C) (画像引用:フリー素材の来夢来人  http://www.civillink.net/">フリー素材の来夢来人 )

1.3 主なmoduleの概要 Control Unit ALU Reg_file Ir pc

Control Unit 全体の制御を行う。各ステージでそれぞれのモジュールに制御信号を出す。 HALT HALT IF1 IF1 IF2 ここまででreg_fileから使用するレジスタを読み出す。 プログラムの異常終了。 ここまででpcで指定されるアドレスの命令をirにセットする。 メモリアクセスを行う命令はここで実際のメモリのアクセスを行う。 HALT HALT IF1 IF1 IF2 IF2 RF1 RF1 RF2 RF2 EX1 EX1 EX2 EX2 プログラムの正常終了。 FIN FIN メモリアクセスを行う命令以外はここで処理を実行し次の処理へ。

IF1 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・

IF2 制御信号 00000_001_010_00110 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 0000000101000110

00000_001_010_00110 RF1 制御信号 2 2 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 0000000101000110

00000_001_010_00110 RF2 制御信号 制御信号 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ R[1] R[2] 2 0000000101000110

00000_001_010_00110 EX1 R[1]+R[2] 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ R[1] R[2] 2 0000000101000110

00000_001_010_00110 IF1 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 2 0000000101000110

00000_001_010_00110 IF2 制御信号 0000000001010101 00010_011 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 0001001101010101 0000000101000110

00010_011 RF1 制御信号 2 0000000001010101 4 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 2 0001001101010101

00010_011 RF2 制御信号 制御信号 0000000001010101 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ R[3] 4 0001001101010101 0000000101000110

00010_011 EX1 0000000001010101 R[3]&100 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ R[3] 4 0000000101000110 0001001101010101

00010_011 IF1 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 4 0001001101010101

00010_011 IF2 制御信号 01111 0000000001100100 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 4 0111100001100100 0001001101100100

00010_011 RF1 2 0000000001100100 6 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 4 0111100001100100

00010_011 RF2 制御信号 0000000001100100 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 6 0111100001100100

00010_011 EX1 0000000001100100 106 0 : 0000000101000110 (ADD 1,2) 2 : 0001001101100100 (ANDI 3,100) 4 : 0111100001100100 (JMP 100) ・・・ 6 0111100001100100

ALU ・Control Unitからの命令信号によって 色々な演算が行われる。CPUでの演算 は全てここで行われる。 命令 0000 0001 0010 0011 0100 0101 1100 1101 1110 1111 出力 THA THB AND OR XOR NOT SHL SHR ADD SUB A B A&B A|B A^B ~B B<<1 B>>1 A+B A-B 命令 入力A 出力 入力B ・Control Unitからの命令信号によって 色々な演算が行われる。CPUでの演算 は全てここで行われる。

Reg file 8つのレジスタを格納しているモジュールで、 Control Unitからの命令によって、データの書き込み、読み出しと、それを行うレジスタを指定する。

01_001_010の命令の場合

10_100_000の命令の場合

ir メモリから送られてきたデータを適切な形に変換して、 Control Unitやsbus2に送る。

LDHI命令がメモリから送られてきた例。 他にも色々な変換がある。 Control Unit LDHI命令がメモリから送られてきた例。 他にも色々な変換がある。

PC これから行う命令の番地を格納しておくレジスタ。命令毎に2ずつ増加する。ジャンプ命令がきた時には、ジャンプしたい数を加算する。 Pc(0) Pc(2) 2 4 6 8 10 12 Pc(14) 14 16

2章 I/O

2.1 I/Oとは 入出力(Input/Output)の事.CPUが人間の脳なら、I/Oは口や手足に当たる.計算結果を外部に出力したい時や、外部からの数値をCPUに入力したい時に必要となる. 具体例としてはキーボードやマウス等、実に様々なものが挙げられる. 今回はRS232Cを製作した.後に、USB通信についても説明する.

2.2 RS232Cについて シリアル通信方式の一つ.シリアル通信とはデータを1bitを順番に送っていく事である.シリアル通信とは別に、パラレル通信がある.後述するUSB通信もシリアルバスの1種である 今回作成したCPUの入出力はこのRS232Cで行われる.8bit毎の通信を行う.

RS232Cのプロトコル(通信方式) 初期状態としては1が流れている.これは新しいデータの流れがあるまで続く.新しいデータの流れが来たときには最初に0、最後に1を足してデータを挟み込んで入出力する. 下に具体例を示す. ・・・1 “0” 1 1 0 1 0 0 1 1 “1”・・・・・ データ 11001011というデータを送りたい時(“0”と“1”はデータじゃない) “1”以降データが来ない限りは1を出し続ける

RS232C(tx) PC CPU RS232Cの実装(その1) ホストPC→CPU(1bit → 16bit) rxという部品が担当する. 何もしていない状態の時0000_0000_0000_0000を出力. 8bit単位でデータを流すのだが今回のCPUは16bit単位で動くので、CPUに送る時には 0000_0010_dddd_dddd(dはデータ)の形で CPUにデータを流すようにしている. RS232C(tx) PC CPU 1bit 16bit

RS232C(tx) PC CPU RS232Cの実装(その2) CPU→ホストPC(16bit → 1bit) 8bit単位でデータを扱っているので、RS232Cはxxxx_xxxx_yyyy_yyyyという形のデータを受け取ったらyyyy_yyyyの部分しか流さない. データが来ない限り1を流し続ける.最初に0、最後に1をはさんでデータを流す.txという部品が担当する. RS232C(tx) PC CPU 1bit 16bit

RS232Cの実装(その3) クロック分周 今回のCPUのクロック数は48Mhz(1秒間に48万回反転)しているのでRS232Cも同様なのだが、Tera Termでは9600bps(1秒間に9600bit送受信)設定になっている.ビットの幅はクロック数で決まるので、CPUのスピードでRS232Cが動いてもちゃんとしたデータをやり取り出来ない.なので、クロックを分周(遅らせる)して、RS232Cが9600bpsでも正常な動作が出来るようにする.clk_delayという部品が担当. 幅を合わせて正しく読める様にする!! 幅が正しくないと読み取れない!!

2.3 USBとは Universal Serial Busの略.インテルが中心となり、マイクロソフト、コンパック(ヒューレット・パッカード)、日本電気(NEC)などが共同で仕様を決めている. 1994年に上記の会社等が集まり規格を決め始めて以来、2010年3月4日現在1.0から始まったUSBのバージョンは3.0まである. 類似独自規格の乱造乱立を防止する目的で特許が存在しているが、使用料が無料とされているのでマウスや携帯の充電器、玩具に至るまで様々な機器で使用されている.

USBのピン配置 差動型のデータ線の組(D+とD-)、電源(Vbus)、接地(GND)の四本のピンが配置されている.上の写真の右はシリーズA、左はシリーズBと言うコネクタである. (出典:通信用語の基礎知識 http://www.wdic.org/w/WDIC/USB%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%BF)

USBの利点 USBハブを用いれば、最大127台まで同時に接続できる(各デバイスにアドレスを7bitで振り分けている). 小型コネクタによる省スペース USBポートから電源を取ることが出来る.更にコンピュータ側が自動的に処理を行うことにより、差し込むだけで使用できる(プラグ&プレイ、パワーマネージメント). コンピュータの電源を入れたままでも付け外しを行える構造を備えている(活栓挿抜). USBのハブ.これを用いれば複数のUSB機器を繋いで操作することが出来る.(出典:http://buffalo-kokuyo.jp/products/peripheral/usbhub/bus-self/bsh4a03u3/index.html)

USBの転送速度 USB1.1・・・フルスピード(12Mbps)・ロースピード(1.5Mbps)の2種類. USB3.0・・・スーパースピード(5Gbps)を加え4種類. RS232Cの転送速度は最大115.2kbps   USBは遥かに速い!!

USBのプロトコル シリアルバス規格の一つ.プロトコルは NRZI(Non Return to Zero Invert)変調した 信号を使っている. 送りたいデータ・ビットが 0の時・・・・信号を反転させる 1の時・・・・信号はそのまま 0 1 1 0 0 0 1 データ 0 0 0 1 0 1 1 NRZI ※実際はデータにおいて1が6ビット続いたら、 スタッフビットと呼ばれる0を挿入する.

USB通信の流れ(バルクOUT転送の例) ホストPCからターゲットへのデータ転送を行っている. 出典:USBの基礎知識 http://www.kumikomi.net/archives/2007/03/22usb1.php?page=9

3章 アセンブラ

3.1 アセンブラとは アセンブリ言語を機械語に変換する事をアセンブルすると言い、それを行うプログラムの事をアセンブラと言う。 3.1 アセンブラとは アセンブリ言語を機械語に変換する事をアセンブルすると言い、それを行うプログラムの事をアセンブラと言う。 // test.asm ・・・ ADDI 5,2; MV 0,5; SUBI 0,2; // test.coe ・・・ 00110101,00000010, 00000000,01000001, 00111000,00000010, アセンブラ 今回はC言語で作成!

3.2 クイックソート データ列を順番に並べ替えるソートアルゴリズムの一つ。 単純かつ高速なソートとして知られている。 アルゴリズム 3.2 クイックソート データ列を順番に並べ替えるソートアルゴリズムの一つ。 単純かつ高速なソートとして知られている。 アルゴリズム 1、データ列の中から基準値(今回は先頭)をひとつ選ぶ。 2、基準値以上の数を先頭から、基準値未満の数を末尾からひとつずつ探索していく。 3.該当する数同士を入れ替える。 4、再び探索を開始し、お互いの探索がぶつかるか交差するまで続ける。 5、4の位置でデータ列を二つにわけて、それぞれのグループに対して1から繰り返す。 6、以上を再帰的に行う。

今回は3、5、1、4、2をソートする。その様子は以下のようになっている。 先頭ポインタ 末尾ポインタ  今回は3、5、1、4、2をソートする。その様子は以下のようになっている。      先頭ポインタ       末尾ポインタ    基準は3 探索(終了)(3以上)      (3未満) 交換   (3以上)   探索  

           (3以上)(3未満) 探索終了 交換 交差 分割

   先頭   末尾 基準値は2 探索(終了)  (2以上)(2未満) 交換 交差 分割 基準値は5 同様の作業を行っていく

3.3 フィボナッチ数列 F(n) = F(n-1) + F(n-2) (n > 2) F(1) = 1,F(2) = 1 3.3 フィボナッチ数列 F(n) = F(n-1) + F(n-2) (n > 2) F(1) = 1,F(2) = 1  で定義される数列。フィボナッチ数列を表示するプログラムは、n=1からメモリに再帰的に数を格納するようになっている。今回は要素数12の数列を表示する。  クイックソートとフィボナッチ数列の表示をFPGAを用いて実演する。

4章 今後の展望

4.今後の展望 プログラムのロード機能 プログラムを読み込ませるたびに毎回メモリを書き換える必要がなくなる USBの実装   プログラムを読み込ませるたびに毎回メモリを書き換える必要がなくなる USBの実装  RS232Cよりも速い通信が見込まれる