パスワードを忘れた? アカウント作成
16437 story

組み込み市場における、並列化言語の普及の可能性は? 121

ストーリー by GetSet
組込向けトレンドの明日はどっちだ? 部門より

backslashdot 曰く、

EEtimes Japanの記事より。組み込み機器向けプロセッサもマルチコア・アーキテクチャへと徐々に移行している昨今だが、記事によるとマルチコアの性能を引き出す並列プログラミング言語はほとんど 利用されておらず、組み込み機器向けソフトウエアの開発者のうち85%はC言語またはC++言語を使っており、新しい 並列プログラミング言語が普及する可能性はほとんどないだろう、とされている。
マルチコアの性能を引き出すために並列プログラミング言語を利用する、というのは分からないでもないのですが、 組み込み向けでそんなに意識する必要があるのかな、という疑問も。そもそも「C/C++以外」を選択するメリットというのは、 どの程度あるのだろうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2007年10月08日 18時13分 (#1230899)
    何を使うかなんて、ベンダ提供ツール、ミドルウェアライブラリ、社内ライブラリ、
    それに何よりプログラマの習熟度、そういうしがらみで決まるもんでしょう。

    そんなに簡単にスイッチできるものなら、いまやWindowsアプリの半分ぐらいは
    並列化言語とやらで書かれていてもおかしくないはずなのに、そんな話は聞かない。
    ましてより制約の厳しい組み込み業界ならなおさら。
    ソレを動かすこと自体が仕事ならともかく。

    リンク先より
    >同氏は、「組み込み機器のソフトウエア開発者は、高レベルな複数のプログラムやモジュールをマルチコア・プロセッサで単に別々に動作させることで、並列プログラミング言語への移行に伴う苦労を避けようとしている」とソフトウエア開発者の現状の姿勢を批判した。

    何様? って感じ。
    お前がその苦労のコストを払ってくれるのかと。
    • by Anonymous Coward on 2007年10月08日 18時59分 (#1230922)
      そういうのは「え~、今時マルチスレッド対応じゃないの?」っていう
      ハードを売りたい人がやってる釣りだと思うよ。熱くなっちゃダメ。

      マルチスレッドへの対応は時流の流れで仕方の無いことだけど、
      パラダイムの大変更なわけだから、焦ってやったって不安定なものが
      できて不幸な人が増えるだけ。じっくり腰を据えてやりましょう。
      親コメント
      • by hassi- (34191) on 2007年10月08日 21時34分 (#1230995)
        そうなんですよ。

        マルチスレッド万能伝説みたいに、マルチスレッド当たり前の世界観があるのは理解します。
        PCやWSの世界では、CPU数を変化させて、性能のスケールUPを目指すわけですから、
        マルチスレッドの極地だとおもうんですよ。
        しかしメニーコアなCPUを複数個乗せたりすると、カーネルがスレッドスケジューリングの際
        キャッシュコーヒーレントなどを考え、どのコアに配置するかを動的に悩みだすわけで。

        じゃ、組み込み世界で、この「動的な悩み」を解決するコストが妥当か?
        シングルコアのマルチスレッドのような並行処理は重要かもしれないけど
        (というか、適度な並行処理がないと設計モデルが破綻すると思う)
        じゃ、メニーコアなCPUでどこにどの機能を担当するスレッド・タスクをマッピングするかを
        動的に悩むのか?これが問題と思う。
        そもそも「動画処理」と「音声処理」はこのコア、「UI処理」はこのコアと静的に割り振るのが
        妥当なときもあると思う。

        対称マルチプロセッサは、ある意味正しいと思うけど、それを実現する動的コストが妥当かどうか
        だと思います。非対称マルチプロセッサ(ASMP)がある意味解なわけで、そうなると並列処理言語より
        ASMP支援ライブラリだとおもうんですよ。

        親コメント
        • by Anonymous Coward on 2007年10月09日 0時16分 (#1231072)
          たぶん、あなたは私の知っている人のような気がするのでここにぶら下げてみる。

          並行(concurrent)と並列(parallel)は意味が違ことはきっとご存じだと思う。
          で、訳文を見てみると 並列 としつこく書いてある。
          え? 組み込みで 並列 なの?
          と思って、原文を探してみた。
          たぶん、これ
          http://www.eetimes.com/showArticle.jhtml;jsessionid=AG5UTXCIMCYGAQSNDL... [eetimes.com]
          やっぱ、 parallel と書いてある。

          結論:
          コレはスレッディング以上の恐ろしいことについて、さらっと流している戦慄すべき記事のようです。
          我々がスレッドで書いているような粒度の問題を気にしているわけではなさそうな...

          という続きは、明日羽田空港で(もし私の知っている人なら。違ってたらスンマセン)。
          親コメント
      • マルチスレッド対応のマルチコアCPUはシングルコアのCPUと比べて価格とか消費電力に違いは無いのでしょうかね。

        原価が上がると数が出る製品には使いにくいし、消費電力が上がるとバッテリの持ちが悪くなるし。買うほうとしては安くて長持ちするほうがありがたいものも多いのではないかと。

        親コメント
    • by Anonymous Coward on 2007年10月08日 19時02分 (#1230924)
      いやいや、既存のプロフェッショナルなプログラマーじゃなくて、今大学で勉強しているような人材なら、ループを100万回廻さずに、スレッドを10本くらい乱発して、最後に排他制御で同期を取る、とかを真顔で考えてるってことでしょ。どっちにしろ、日本の教育は遅れてるわけだから、さらにワンクッションあるわけで、まあ、こうやって、先進国との格差が開いていくんだと思う。

      遠大すぎると地に足が着かないが、近視眼的すぎてもダメってことだろう。数年後に後塵を拝するかどうかは、現在の努力に掛かっているわけで、まあ、実際にその手法を学ぶかどうかはともかく、投資先の一つと考えるのは悪くないと思う。
      親コメント
      • >今大学で勉強しているような人材なら、ループを100万回廻さずに、スレッドを10本くらい乱発して、最後に排他制御で同期を取る、とかを真顔で考えてるってことでしょ。

        それをするためのハードウェアのコストを払ってくれるならな。コストをハードウェアに乗せるかソフトウェアに乗せるかはどのくらい数を出すつもりなのかとかの外部的な要因に左右されるので単に速いとか遅いとかで決定できるようなもんじゃない。それに、その方法で実行時間が一定に収まる事を保証できるかい? 演算性能を犠牲にしてもそれが必要な用途もあるんだよ? まーまずは演算速度だけが性能じゃないんだって事をわかれ。
        親コメント
        • by Anonymous Coward on 2007年10月09日 0時33分 (#1231081)
          だから、決められたハードに、決められた用途をプログラミングするような人材には、そもそも端から縁がない話なんだって。

          世の中の組み込みには、炊飯ジャー起動から、リアルタイムエンコーディングまであるんだから、最初から切り捨ててるような思考しかできないんだったら、関わりができるはずもないだろう。組み込み機器でももっと性能が欲しい場合はいくらでもあるんだから、自分が想像できないからって、頭ごなし「わかれ」ってのはねぇ。
          親コメント
  • by mty (26483) on 2007年10月08日 18時23分 (#1230902) ホームページ 日記
    マルチコアの性能を活かして、なんて言われたら、それこそ完成までの道のりが倍々ですよ。
    ちょうどマルチコアではないけど、マルチプロセッサのシステムで開発を追えたばかりなのでIDで愚痴っぽく。

    この2、3年位で、組込みの世界でもようやくLinuxがまともに使えるようになってきて、
    その共通プラットフォームとしての利点を活かして
    PCで先考開発して、とか、別の基板向けので開発した資産を流用、なんてことが
    ほんとにようやくできるようになってきたところ、と感じています。(あくまで自分の回りの話ですが)

    マルチコアの件もそういう環境(開発環境、諸々の気運)が整ってようやく、なんでしょうね。

    • by Anonymous Coward on 2007年10月08日 18時46分 (#1230912)
      どこにつけようか迷ったけど、
      > そういう環境(開発環境、諸々の気運)
      この一節にひかれてここに。

      こういうのって(新しいハードを売り込みたいハード屋さんの強力なバックアップを得て)採算よりも新進性を取れる体力(と赤字回収を見込めるだけの能力)があるトコが何か凄いことをやって、アンテナ伸ばしている人から順に「俺もやってみてぇな」ってなって、手軽に試せる環境が出てきて、それではじめてちらほらと導入されていくもんなんじゃないかと思います。

      お客さんが一斉にパッと変わってくれることを期待してちゃ商売になりませんよ。
      # ならば今すぐ愚民どもすべてに英知を授けt(ry
      親コメント
    • Re:1個でも大変なのに (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2007年10月08日 20時20分 (#1230959)
      >マルチコアの性能を活かして、なんて言われたら、それこそ完成までの道のりが倍々ですよ。

      その「手間」を減らすためにこそ並列処理型言語どうよ?という話なんだと思う。それ自体は理屈の上ではTRUEなのは間違いないでしょう。

      だから逆にいえば、論点とすべきは、そいつの言い分が「額面どおり」なのかどうか?って点だと思う。
      親コメント
  • by Anonymous Coward on 2007年10月08日 17時43分 (#1230885)
  • by Anonymous Coward on 2007年10月08日 18時17分 (#1230900)
    のでバカ高くなるマルチコアCPUより
    H8クラスの遅いマイコンとTIとかのDSPとかがコスト的に現実的な設計だったりするけどね
    あ最近C++使うためにSHに転びました。

    てか組み込み系っていうけど少なくともわたしの周辺は製品の数だけ選択するCPU違うので
    マルチコアって紋切り型にいわれてもなんとも賛同できませんね。

    「携帯電話」とかだと同じプラットフォームを延々つかうんだっけ。ふーんてなかんじ
  • by Anonymous Coward on 2007年10月08日 18時28分 (#1230904)
    そもそもマルチCPU(orコア)が必要な状況があったとしても
    並列化言語が必要な状況がある場合に並列化言語への要求が生まれるのだが、
    単にマルチなCPUを使っているだけで並列化言語を使おうとするのは
    組み込み機器の安定性を阻害するだけの話だ。

    安定し、かつ、使いやすい並列化言語があるなら使ってもいいかもしれないが、
    そうでないのであれば並列化言語なんてのは無用の長物。

    組み込み機器向けマルチコア・プロセッサやその手の開発環境を売りたいだけの
    セールストークに惑わされず、実質を見極めてこそ安定した機器を送り出せる
    エンジニアと言えよう。
  • by hassi- (34191) on 2007年10月08日 21時15分 (#1230990)
    Java環境や.NET環境って、GCやメモリ管理やフレームワークのリッチな支援があり、
    そのリッチな支援のために、実行時にハードウェアリソース(CPU・メモリ・電力)を支払っていると思う。
    対価として開発のしやすさを得ているのでしょう。

    #いわゆる等価交換の原理ってやつ?(ハガレンの見すぎ)

    じゃ、その対価を払うと、借金をしないといけない環境だったら、C/C++を使うわけで。

    Cって、マクロアセンブラ , C++ って高級オブジェクト指向マクロアセンブラと考えられる
    くらい、ハードウェア密着型言語だとおもう。

    だからといって、C / C++ を擁護しているわけじゃなく、適材適所ってだけだと思う。
    新しい環境がそろい、そのプラットフォームがそろえば、新しい環境に移ってくれても
    全然問題ないわけで、逆にブレークスルーの為に環境移行が必要であれば積極的に行わないと。

    で、並列処理言語をいれると、どんなブレークスルーが起こるんでしょうか?

    現在の2桁くらいかわる性能がだせるとか?
    現在の2桁くらい電力消費量が減るのとか?

  • by Anonymous Coward on 2007年10月09日 8時34分 (#1231187)
    多種多様な機器が含まれる「組み込み」という漠然とした対象につ
    いて技術的な話をすることが困難なのかもしれない。

    組み込み機器を規模や用途によって明確に分類するような工業規格
    が登場すれば、組み込み機器の設計に関する技術ももっと整理され
    るのかもしれない。
  • メニイコア、ヘテロジニアスコアのプログラミング言語 [impress.co.jp]
    テラスケールコンピューティングのための言語「Ct」 [impress.co.jp]

    コンパイラ/ライブラリを上手く移植できれば動くかねぇ

    # 知識にまったく自信がない(汗
    --
    M-FalconSky (暑いか寒い)
  • 選択肢 (スコア:2, 興味深い)

    by roto (17040) on 2007年10月08日 18時51分 (#1230917) ホームページ 日記
    > 組み込み機器向けソフトウエアの開発者のうち85%はC言語またはC++言語を使っており

    開発言語として、アーキテクチャによってはアセンブリ言語かC/C++言語しかないので仕方なくC/C++言語を使っているという人がほとんどだと思う。
    • Re:選択肢 (スコア:2, 興味深い)

      by Anonymous Coward on 2007年10月09日 1時00分 (#1231095)
      >仕方なくC/C++言語を使っているという人がほとんどだと思う。

      お願いです。他の言語にするのはやめて。
      「特定の動作のときにメモリが化ける」とか「この評価ボードだけ動作がおかしい」とか難癖
      つけられてCコンパイラが吐き出したコードまで追い回して調査させられるハード屋なので。
      (ソースのバグ、コンパイラのバグ、・・・そんなんばっかですが)
      ただ、量産を始めるとppmのオーダーではあるものの、本当にメモリ化けするチップがでる
      ことがあるから疑われる・・・。

      #Javaにしてくれればポインタバグは無くなって平和になれるかな・・?
       追い回せなくなるけど・・。
      親コメント
  • by Anonymous Coward on 2007年10月08日 22時24分 (#1231015)
    いまこそ、日本が頑張って暖めてたこいつらを! :-P
    PIM/KL1 [wikipedia.org]
  • by Cat Scan (31113) on 2007年10月08日 22時36分 (#1231022) 日記
    Green Hills Software [ghs.com]はリアルタイムOSを前面に出している会社のようです。
    Wind River [windriver.com]はVxWorksで有名な会社です。Linuxカーネル2.6.x+αの販売も行っているようです。
    Virtutech [virtutech.com]は組み込み用開発ツールの会社でしょうか?
    Venture Development [vdc-corp.com]は元記事にあるように市場調査会社のようです。
    元記事によれば、これらの会社のお偉いさんとかが「これからもC言語が使われるだろう」と言っているとのことです。

    それに対して、Rick Merritt:EE Times は、Venture DevelopmentのEric Heikkila氏の発言「並列プログラミング言語が主流になる見込みはない」に文脈的につながっている次の段落で、以下のように書いています。

    ソフトウエア開発の問題には、早急に何らかの解決策が必要だ。(中略) だが、マルチコア・プロセッサに向けたソフトウエア開発の準備が整っているエンジニアは、わずか40%程度だ。


    EE TimesのRick Merrittさんは、チャレンジングスピリットを持った熱い人なのかもしれませんが、少し変ですね。
    今はマルチコア対応よりもっと重要なこと(価格とか納期とか)があるわけで、マルチコアの必要性があればみんなやると思います。

    # 並列プログラミングと聞いて、遥か昔のSeeNa 88版がFDDにも演算させていたらしいという話を思い出しました。
  • by Anonymous Coward on 2007年10月08日 23時50分 (#1231057)
    フレームの元覚悟で
    ASICやFPGAの部品代をケチるために姑息なこんなことはしないリアルタイム処理作ったりとか割り込みが足りなくなって外に変な論理回路組んで自前割り込み共有作ったりとかというところに
    組み込みプログラミングの醍醐味ってはあると思いますね。というかプログラミングパラダイム以前にエネルギーを注ぎ込むところです。結果部品代が100円下がるというような世界です。

    民意が低いっていわれようがこれが現実。すべて現場対応。
  • by shoji12 (14093) on 2007年10月08日 19時31分 (#1230939)
    何か具体的な規格があれば教えて下さい。
    逆行列の計算は、並列処理ができるけど、コンパイラがそうできるようにするところを見ると、
    最初から並列処理できるとわかっているものはコンパイラで処理すればよい。
    並列化言語って、コンパイラが並列処理をするかどうか判断するような言語のことではないですよね?
  • ユビキタス社会なんてのが実現されるのは、はるか遠くの未来ということですかねぇ?
    …残念なりよ。
  • 設計思想が間違ってる (スコア:1, すばらしい洞察)

    by Anonymous Coward on 2007年10月08日 22時44分 (#1231024)
    並列は望まれている部分もありますが
    並列は個々は干渉せず全体で緩やかに統合するような処理内容であり
    いちプログラムで統合しようとするものではありません

    もし並列かしたコンピュータを設計するなら
    プログラムの処理が速くも遅くもならないで処理する作りでしょうね
    それでバラバラ動かすと、パソコンではない気がするが
    そんな所だろ
  • by Anonymous Coward on 2007年10月08日 22時53分 (#1231027)
    マルチコアへ移行する案件をお持ちの方、その理由は何ですか?
    私が知るものの多くは複数のチップを使っていた機能を、
    ひとつのチップに集約してコストダウンというのもばかりでした。

    そこに並列プログラミング言語が普及する余地はあるでしょうか?

typodupeerror

Stay hungry, Stay foolish. -- Steven Paul Jobs

読み込み中...