タグ

FPGAとプログラミングに関するSuperAlloyZZのブックマーク (2)

  • FPGA超並列時代に向けて!? - 関数型プログラミングを学ぶわけ - fintopo

    私の頭はループ脳、って書いた。 メソッドチェーンとループ脳 - fintopo ループってのは、順次処理の繰り返しってことなんだよね。つまりプログラマは、添字の順番に処理されることを期待している。 PASCALのfor文にはdowntoという構文がある。通常はカウントアップでfor文を回すんだけど、カウントダウンで回したい時があるんだよね。これなんかまさに順番が重要ってことを示している。 だけど、関数型プログラミングってのは、処理の順番を気にしない。・・・まぁ、原則的には。 数学的な関数の適用というのは、集合の各要素に対して個別に関数処理をすることで、順番なんて関係ないんだよね。まぁ、遅延評価とか、末尾再帰とか、現状のコンピュータ上で実行するための話ってのは、どうしても出てくるわけだけれども。 そう、問題は現状のCPUのアーキテクチャにある。マシン語レベルで順次処理と条件分岐が大前提として

  • CPUはオワコン - きしだのHatena

    FPGACPUを組んでると、フェッチ部やデコーダ部で足し算や掛け算をしようとして、そんなことしたらCPUの意味ないなーと思ってしまうことがありました。 で、よく考えたら、FPGAでロジックを組むならCPUの意味はないんです。 だいたい、ひとつの処理実行するのに何クロックかかってんですか!と。 CPUでは、計算効率をよくするためにパイプラインという仕組みが使われています。 最近では、18段とかのパイプラインもあるようです。 ここで、18段のパイプラインのうち、実際に計算を行うのは2段か3段だったりします。残りの15段くらいは、命令や計算結果を読んだり書いたりしているだけです。 このパイプラインも、ほとんどはメモリの読み書き、それも命令の読み込みに多くが使われます。 であれば、CPUにしなければ、18段全部計算に使えるんじゃね?という話になりますね。 決まりきった計算を行うのに、いちいちメモ

    CPUはオワコン - きしだのHatena
  • 1