//tips
//基本技術情報理解
プログラムの実行中に必要になった領域を動的に確保する場合、その割り当て領域をヒープという。
ヒープを使用すると必要な領域を都度確保できるが、確保と解放を頻繁に繰り返すことでヒープ上に未使用領域が多数発生するようになる。
このような領域をガーベジといい、それらの領域を回収し、再利用するためにガーベジコレクションを行う必要がある。
これを行わないと利用可能なメモリ領域が減少するメモリりーくという現象が発生することになる。
Staticではない動的変数では、手続きされた際に記憶域が確保され、手続きが終了すると自動的に解放されるため頻繁に確保と開放が行われることになる。
オブジェクト指向言語では全てのデータはオブジェクトであり、全ての計算はオブジェクトにメッセージを送ることで実現される。
共用ライブラリは、複数のプログラムが共通して利用するライブラリのことで、複数のプログラムから同時に呼び出されても待たせることなく、正しく実行できる必要があるので再入可能なプログラムであると言える。
ハードウェアでは組み合わせ論理回路の記号を全て覚える必要がある。
A・B:論理積素子:共に1の時だけ出力1
Not A・B:共に1の時だけ出力0
A+B:一方が1であれば出力1
Not A+B:共に0の時だけ出力1
XOR:2つの入力が異なるときに出力1同じ時には0
Not: 入力が1なら出力は0、0なら1の出力
論理回路は
・真理値表の作成
・論理式を求める
・論理回路の設計
という順序になる。
Not A・BはA NAND Bと表すことができ、全ての回路はNANDゲートを用いて表すことが可能。
入力に対して一意に決まらない論理回路を順序論理回路といい、過去の記憶も現在の入力に影響を与えるもので、記憶する仕組みを整えるためにフリップフロップ回路が使われる。
従来は回路図をもとにプリント基盤上に論理ICを配置し、配線を行って論理回路を製造する方法だったが、今では論理回路を自由にプログラムできる論理ICであるPLDが用いられ、その代表的なものがFPGAであるとのこと。
製造後の検証やデバッグが難しく、時間とコストがかかるため。
FPGAの設計フロー
・機能動作をハードウェア言語で記述
・記述ソースの回路変換
・回路の配置や配線、入出力信号を調整
・回路情報をFPGAに書き込み、動作検証を行う
論理の話が何に繋がるのかと思ったら機能を集積回路(LSI)の上に載せる際の記述様式ということのよう。やっと話が見えてきた。
集積回路の消費電力は、年々増加しており、冷却の観点や消耗度の観点から低消費電力設計が目指されている。
基本的には、不要不急の動作をする回路ブロックを停止させるか、低速に動作させるなどの対応がとられている。
ダイナミック電力とは回路のブロック動作に伴って消費される電力のことで、ダイナミック電力の大きさは電源電圧Vの2乗と周波数fの積に比例する。
電源電圧を下げてしまうと性能が低下し、動作が遅くなるので、マルチVdd技術(複数の電源電圧を使用)や動的制御技術(負荷量に応じて電源電圧・動作周波数を変更、)を用いることになる。
スタティック電力は動作の有無に関わらず発生する消費電力でリーク電力ともいう。パワーゲーティングという動作する必要がない回路への電源供給を遮断することで削減する。
電源供給を遮断してしまうと記憶データを保持できないという問題があるため、電源供給が遮断されている時にも記憶データを保持するため特別な回路を使用する。
主要部分のフリップフロップの横にリテンション・フリップフロップを配置し、遮断する際にはフリップフロップの出力をリテンションの方に入力し、記憶データを保存させる。
電子機器のデジタル化に伴い必要とされる回路にデータコンバータ(A/Dコンバータ)がある。
これはアナログ信号をデジタル信号に変換する電子回路で、A/D変換器とも呼ばれる。
アナログ信号の振幅えお一定時間間隔で切り出し、デジタル信号に変換して出力。
この際に機能として、分解能と変換速度が重要になってくる。
分解能は入力電圧レンジ/2^出力ビット数で表され、出力ビットが多いほどアナログ値を正確に変換できる。
3ビットだと000~111までの8パターン。ビットは一桁分。
各種の機械や装置に適切な操作を加えて、目的とした動作をとらせることを制御という。
シーケンス制御では、制御対象に複数の状態で異なる対応を取らせたいときに順序に従って制御の各段階を進めていく。
PLCというプログラミングできる装置でラダー図を使用して記述していくことになる。
アクチュエータとは電気エネルギーなどの流体エネルギーを動きに変換する装置で、状態をセンサで検出し、検出値を電気信号に変換し、アクチュエータを通して力学的な動きに変換する。
ロボットなどに使われるDCサーボモータやパソコンのファンに使われるDCブラシレスモータなどがある。
CPUが出てきて混乱したので整理。
集積回路はICとも呼ばれる電子部品のひとつで、半導体やコンデンサーなどを小さな基板の上に配置し、配線でつなぎ、複数の回路を一つにまとめたもの。回路をより密に阻止を集積させたものをLSIと呼ぶ。
CPUとはコンピュータの演算処理装置のことで、コンピュータに入力されたデータに対して演算処理を行い、出力を返すもので、0と1の二進法で表されたデータを取り扱う。
以前のCPUはICを多数搭載したが、現在はLSIなどの技術が発展してきたため、LSIが一つ又はごく少数が搭載されているだけとなっている。
プロセッサというと一般的にはCPUのことをさすが、ハードウェア処理装置の総称でもある。
プロセッサの方式はCISCとRISCがあり、
CISC:
複雑で多機能な機械語命令が実装されている。これが高度な処理能力を持ちプログラマの負担を軽減する。一方で、高度な機能を持つためCPUへの負担は大きくなる。
RISC:
シンプルな機構となっており、専用の論理回路で高速に実行できるようにしている。各命令の処理時間を均一化し、処理速度をCISCより向上させやすくなっている。その分、プログラミングの手間は増えることになる。
CPUは制御装置、演算装置、レジスタ群で構成されており、制御装置は記憶されているプログラム命令を一つずつ読み出して解読、演算装置は、制御装置からの指示に従って演算・比較処理を行う。レジスタは少量で高速な記憶装置。
CPUがプログラムを実行するためには、補助記憶装置からプログラムをメモリに読み込む。メモリに領域を確保し、プログラムをロード、プログラムの読み込み場所と実行箇所を指定した情報をレジスタに格納した後にプログラムが実際に走ることになる。
命令の実行には、ステップがあり、メモリからのプログラムを、制御装置である命令レジスタ+命令でコーダで受け取り、解読、解読したものを、再度メモリに問い合わせ情報補填された後に、演算装置に命令実行指示をかけ、実行される。
このようにプログラムの実行にはメモリと制御装置、演算装置が絡み合っている。
機械語の命令は、一般的には命令部とアドレス部(オペランド部)により構成され、命令が解読されると、アドレス部に指定しているレジスタやアドレスからメモリ上のアドレスが計算されることになる。
メモリのアドレスを固定値にしてしまうと不具合が生じてしまうため、再配置可能となるようにベースアドレス指定方式というどのアドレスに配置されてもプログラムが実行可能なようにする方式が用いられている。
CPUが処理対象とするデータには1バイトのデータだけではなく複数バイトのデータもあり、バイトの順序づけの問題が発生する。
例えば10進数の1234があった場合、2進数で考えると2バイトとなり、メモリに12の部分から配置するのか34の部分から配置するのかなどを考えなければならない。
一般的な CPU ではデータの格納場所の大きさは 8 ビット(= 1 バイト)なので、メモリは 1 バイトごとに番地をもっている。
通常はバイト順序を機にする必要はないが、ネットワークを介して異なるバイト順序を持つプロセッサ間で取引する場合に重要な問題となる。
TCP/IPプロトコルではネットワークバイトオーダはビックエイディアンと規定されている。
割り込みとは、あるプログラムの実行中に何らかの要因により、実行中のプログラムを一時中断し、別の処理を優先させること。
この際に速やかに元のプログラムの実行に戻れるように、PSW(プログラム状態語)をスタックに退避しておく。割り込み処理が終わったらこの情報を再読み込みしてリスタートする。スタック退避のためのハードウェアが必要。
コンピュータ処理の高速化を考える際に、CPUのクロックアップ、ハードディスクアクセスの高速化、単位時間あたりの処理量(スループット)の向上、マルチCPU処理などに着目できる。