「エンコードは高速化するためにハード化した」というのを聞いたことがあるのですが、
ハード化するというのはどういうことなのでしょうか。
プログラムのソースコードがICチップのようなものになり、バイナリデータを通すと変換されたデータが帰ってくるということなのですか?
また、それは個人で手軽に出来るものなのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
CPUのような汎用の演算装置ではなく、
目的に特化したその目的にしか使えない専用の回路を用意して、
その回路にやらせるという意味です。
個人でやるならFPGAやCPLDを使います。
手軽ではないです。
当然ハードが必要になりますし、
verilogやvhdlといった回路を記述するための言語、
ハードウェア記述言語(HDL)も学ぶ必要があります。
ハードウェアは基本的に全て並列で動くので、
手続き型の言語と発想が違います。すごく宣言的です。
関数型とは親和性高いです。
投稿2015/12/31 04:06
編集2015/12/31 14:56総合スコア13521
0
プログラムのソースコードがICチップのようなものになり、バイナリデータを通すと変換されたデータが帰ってくるということなのですか?
だいたいそんな感じです。
ただし、一般的なアプリケーションがハードウェアに直接アクセスすることはできないので、デバイスドライバーを介して「通信」することになります。
それは個人で手軽に出来るものなのでしょうか。
「エンコードは高速化するためにハード化した」という文脈においては、エンコード処理を全てプログラムするのではなく、一部の時間のかかる処理をGPU
と呼ばれるハードウェアで行わせるということを指す場合が多いです。
画像処理以外にGPUを利用する技術をGPGPUというのですが、エンコードもその応用例の一つです。
GPUが搭載されていないPC(スマホやタブレットも)は存在しないので、何か特別に用意する必要はありませんし、「OpenCL」やWindows限定ですが「DirectCompute」などのSDKもあるので、その意味では(それなりの知識があれば)手軽にできると言えます。
ただし、より一般的なハードウェアの開発にまで話を広げた場合、「手軽」とはほど遠いものになります。
投稿2015/12/31 16:50
総合スコア5938
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
自分もハードウェアには詳しくないのであっているかはちょっと分かりませんが、前に似たような話を聞いていたときの自分のイメージを書いてみますね。
ハードで、という場合それは物理的に、と置き換えてもいいかなと思っています。
なのでデジタルではなくアナログなものでまず考えてみてください。
例えば、大小様々なサイズのボールが多数あるとします。
それをとある機械の入り口に入れると、色々な仕組みを介してサイズごとに振り分けられるようなものを想像してみてください。(機械の中は物理的な動きを利用して適切に振り分けているもの、と考えてください)
これって「ボールを入れたらサイズを振り分けてくれる」ことに特化した機械ですよね。
逆にこの用途以外にはまったく使えませんが、ボールを入れさえすれば結果がすぐに出ます。
デジタルの「ハードで行う」というのも、概念的にはこれと同じことだと思っています。
つまり、特定の電気信号をハードウェアに送るとなにかしら別の電気信号に変換してくれるもの。
これが「エンコードは高速化するためにハード化した」ということだと考えると分かりやすいのではないでしょうか。
投稿2015/12/31 08:17
総合スコア2283
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ハード化できます。大きく分けてその方法は3つ。
1.processorが持つrepeat prefixかもっと高度な命令を使う。
2.GPGPUを使う。
3.自分でchipを作る。
「自分でchipを作る」会社で働いています。FPGAマガジンという本のあたりから調べるとわかりますが、安いものは、5千円くらいからあります。簡単なものであれば、一ヶ月もあればエンコーダを作れるようになります。
bitcoinの計算処理をFPGAで行うのがはやった時代もあります。大きいFPGAを使えば、最速のi7の10倍以上の処理速度になります。処理によっては100倍とかもっと早くなるときもあります。
投稿2016/07/27 10:26
総合スコア580
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
こんにちは。
ソフトウェアでエンコードすると言った場合、CPUというハードウェアでプログラムというソフトウェアを実行させてエンコードします。ここにはプログラムを解釈して実行するという1段階迂遠な処理が入ります。
これに対してハードウェアでエンコードすると言った場合、その迂遠な処理無しに直接LSIというハードウェアで処理します。
従って、下記の特性により、より高速に処理できます。
①プログラムの解釈と実行が不要
②より細かい単位で並列処理できるのでより多くの処理を並列に実行できる
専用LSIを開発すると下記のようなメリットも期待できます。
・大量生産による大幅な低価格化
・プログラムの解釈・実行しないでよい分、消費電力の低減
ただし、初期投資として億円単位の費用がかかります。
プログラムのソースコードがICチップのようなものになり、バイナリデータを通すと変換されたデータが帰ってくるということなのですか?
ざっくりそのように考えて良いと思います。
ただし、プログラムはハードウェア記述用の言語で開発するイメージです。
また、それは個人で手軽に出来るものなのでしょうか。
専用LSIは費用が掛かり過ぎるので無理ですが、FPGAなら個人でも買える価格帯で開発キットが売ってます。
手軽かというと、難易度は高そうです。私自身はやったことないのですが、C言語を余裕で使いこなせる優秀な人が高価な研修を受けて数ヶ月くらいで小規模なものなら開発できるようになりました。
投稿2015/12/31 13:57
総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。