質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.11%

ソフトウェアではなくハードウェアで処理するってどういうこと?

受付中

回答 6

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 1,474
退会済みユーザー

退会済みユーザー

「エンコードは高速化するためにハード化した」というのを聞いたことがあるのですが、
ハード化するというのはどういうことなのでしょうか。

プログラムのソースコードがICチップのようなものになり、バイナリデータを通すと変換されたデータが帰ってくるということなのですか?

また、それは個人で手軽に出来るものなのでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

+7

CPUのような汎用の演算装置ではなく、
目的に特化したその目的にしか使えない専用の回路を用意して、
その回路にやらせるという意味です。
個人でやるならFPGAやCPLDを使います。

手軽ではないです。
当然ハードが必要になりますし、
verilogやvhdlといった回路を記述するための言語、
ハードウェア記述言語(HDL)も学ぶ必要があります。
ハードウェアは基本的に全て並列で動くので、
手続き型の言語と発想が違います。すごく宣言的です。
関数型とは親和性高いです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

プログラムのソースコードがICチップのようなものになり、バイナリデータを通すと変換されたデータが帰ってくるということなのですか? 

だいたいそんな感じです。
ただし、一般的なアプリケーションがハードウェアに直接アクセスすることはできないので、デバイスドライバーを介して「通信」することになります。

それは個人で手軽に出来るものなのでしょうか。 

「エンコードは高速化するためにハード化した」という文脈においては、エンコード処理を全てプログラムするのではなく、一部の時間のかかる処理をGPUと呼ばれるハードウェアで行わせるということを指す場合が多いです。
画像処理以外にGPUを利用する技術をGPGPUというのですが、エンコードもその応用例の一つです。

GPUが搭載されていないPC(スマホやタブレットも)は存在しないので、何か特別に用意する必要はありませんし、「OpenCL」やWindows限定ですが「DirectCompute」などのSDKもあるので、その意味では(それなりの知識があれば)手軽にできると言えます。

ただし、より一般的なハードウェアの開発にまで話を広げた場合、「手軽」とはほど遠いものになります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

自分もハードウェアには詳しくないのであっているかはちょっと分かりませんが、前に似たような話を聞いていたときの自分のイメージを書いてみますね。

ハードで、という場合それは物理的に、と置き換えてもいいかなと思っています。
なのでデジタルではなくアナログなものでまず考えてみてください。

例えば、大小様々なサイズのボールが多数あるとします。
それをとある機械の入り口に入れると、色々な仕組みを介してサイズごとに振り分けられるようなものを想像してみてください。(機械の中は物理的な動きを利用して適切に振り分けているもの、と考えてください)

これって「ボールを入れたらサイズを振り分けてくれる」ことに特化した機械ですよね。
逆にこの用途以外にはまったく使えませんが、ボールを入れさえすれば結果がすぐに出ます。

デジタルの「ハードで行う」というのも、概念的にはこれと同じことだと思っています。
つまり、特定の電気信号をハードウェアに送るとなにかしら別の電気信号に変換してくれるもの。
これが「エンコードは高速化するためにハード化した」ということだと考えると分かりやすいのではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

プログラムの場合は、1つ1つの命令を順番に実行するのですが
ハードの場合、全ての回路を同時に(並列に)動作させることができます。

それにより高速動作が可能となります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

こんにちは。

ソフトウェアでエンコードすると言った場合、CPUというハードウェアでプログラムというソフトウェアを実行させてエンコードします。ここにはプログラムを解釈して実行するという1段階迂遠な処理が入ります。
これに対してハードウェアでエンコードすると言った場合、その迂遠な処理無しに直接LSIというハードウェアで処理します。
従って、下記の特性により、より高速に処理できます。
①プログラムの解釈と実行が不要
②より細かい単位で並列処理できるのでより多くの処理を並列に実行できる

専用LSIを開発すると下記のようなメリットも期待できます。
・大量生産による大幅な低価格化
・プログラムの解釈・実行しないでよい分、消費電力の低減
ただし、初期投資として億円単位の費用がかかります。

プログラムのソースコードがICチップのようなものになり、バイナリデータを通すと変換されたデータが帰ってくるということなのですか?

ざっくりそのように考えて良いと思います。
ただし、プログラムはハードウェア記述用の言語で開発するイメージです。

また、それは個人で手軽に出来るものなのでしょうか。

専用LSIは費用が掛かり過ぎるので無理ですが、FPGAなら個人でも買える価格帯で開発キットが売ってます。
手軽かというと、難易度は高そうです。私自身はやったことないのですが、C言語を余裕で使いこなせる優秀な人が高価な研修を受けて数ヶ月くらいで小規模なものなら開発できるようになりました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ハード化できます。大きく分けてその方法は3つ。
1.processorが持つrepeat prefixかもっと高度な命令を使う。
2.GPGPUを使う。
3.自分でchipを作る。

「自分でchipを作る」会社で働いています。FPGAマガジンという本のあたりから調べるとわかりますが、安いものは、5千円くらいからあります。簡単なものであれば、一ヶ月もあればエンコーダを作れるようになります。
bitcoinの計算処理をFPGAで行うのがはやった時代もあります。大きいFPGAを使えば、最速のi7の10倍以上の処理速度になります。処理によっては100倍とかもっと早くなるときもあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る