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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

6回答

2473閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

2グッド

2クリップ

投稿2015/12/31 03:57

編集2015/12/31 03:58

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

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

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

izkn, yohhoy👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

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

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

投稿2015/12/31 04:06

編集2015/12/31 14:56
ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

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

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

投稿2015/12/31 16:50

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

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

投稿2015/12/31 08:17

edo_m18

総合スコア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

gm300

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

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

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

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

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

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

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

投稿2015/12/31 13:57

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

投稿2015/12/31 12:33

libra

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問