いざ、一からハードウェア〜ソフトウェアまでのアーキテクチャを
考えようとすると、結構悩むことが多い。
レイヤーの積み重ねをして、各コンポーネントのやることを
小さくしていくことで問題の局所化をすれば、
まぁまぁそれなりのものはできてくるんだけど、
イマイチ綺麗ではないなぁ…と思ってしまう。
具体的な解放はともかくとして、一つ確実に言えることは
既存のソフトウェアアーキテクチャをよく観察しておくこと。
一から洗練されたものは難しいので、既存のアーキテクチャに
ちょっと付け足して工夫をしたりすることで、よりよいものを作ってく。
いろんなことに共通する考え方だろうね…。
そんなこんなで、今週一週間は悩んでいましたとさ。
生活の中で拍子抜けすることがあって、
気持ち的にざわついていたけど切り替えが大切だなと。
気分一新して、邁進していこう
いろいろと調べてみたので、頭の整理も兼ねたまとめ。
現在のLinuxの基本はプリエンプションありだけれども、クリティカルセクションの最中などは
常に特定の処理が走るため、必ずしも一定時間で応答がかえってくるとは限らない。
この点でLinuxにはリアルタイム性がないとなっている。
当然、Linuxも組み込み用途で使いたいという需要から、リアルタイム(RT)化するパッチが出ている。
それがPREEMPTRTのパッチ。
厳密なリアルタイム性を保証しているわけではないが、リアルタイムにできるだけ近いものになっている。
(いわゆるソフトリアルタイム)
この、PREEMPTRTのパッチが何をやっているかに関しては、以下のスライドの前半がわかりやすい。
http://events.linuxfoundation.org/sites/events/files/slides/rtmux_1.pdf
やっていることは、
簡単に言うと、とにかくどこでもプリエンプション可能にして、処理をぶった斬れるようにすること。
Linuxの場合、どのプログラム(ドライバ)が何やっているかを気にしていると
キリがないので、どのプログラムが実行してようがとにかく実行権を取り上げる、って思想だと思う。
それ以上のリアルタイム性(いわゆるハードリアルタイム)が欲しい場合、
Xenomaiや別のOSを同時に動かすことなどがあげられる。
上場廃止決定後、29日、30日はストップ安でザラ場引け
SBIの場合、ストップ安(高)で終わった場合は、以下の配分方法になるとのこと。
株式のストップ配分方法は?
http://faq.sbisec.co.jp/faq_detail.html?id=10972
29日、30日ともに結構な確率だけど、出来高はあるので機会はあったみたい。
ただし、両日共に当たらず。
1月30日に東証からスカイマークの制限幅撤廃の通知。
東証 : スカイマーク(株)株式に係る呼値の制限値幅の撤廃について
http://www.tse.or.jp/news/20/150130_c.html
それにともなって、2月2日に32円で成立した。
この日の最高値が35円、終値が19円なので、成り行きで全部売っぱらうのが正解だったのかな。
(まだ、今日以降の取引次第ではあるけど…)
スカイマーク株、19円に下落 値幅制限解除で取引成立:朝日新聞デジタル
http://www.asahi.com/articles/ASH2261YKH22ULFA02X.html?iref=comtop_list_biz_n02
被害がないといえば嘘になるけど、まぁまぁ想定出来うるリスクの中で対処できたので良かった
上場廃止になった企業がどうなるか、良い勉強になりましたよ。。。
エアバスはなぜスカイマークによるA380キャンセルで巨額の違約金を請求しようとしているのか? - BusinessNewsline
http://www.businessnewsline.com/news/201501161234310000.html
そう、一度巨額な違約金を言ってしまうと、今後のビジネス展開に支障がでるんじゃ…と
思ってたんだけど、この記事見て納得。
A380のような大型機はあまり需要がなくて、その中でキャンセルしようとしてるから
エアバス側が回収に躍起になってるということなんだね。
14年ベストエアラインはキャセイ、スカイトラックス調査
http://www.travelvision.jp/news/detail.php?id=62562
あれ、全日空が全然見当たらない。。。
勝手な印象としては、JAL > ANAと思ってたけど、そうでもないのね。
国内線の航空券の価格からそういう印象が来てるのかもな…。
いくつかの航空会社で国がわからなかったものをあげてみた。
よく聞くけど、いつも「どこだろう?」と流してたんだな。。。
バランスボールを会社で使っています。
今まで午前・午後のどちらかだけだったんですが、
最近ようやく一日中できるようになりました。
導入してからすでに半年近くになるので、ようやくといった感じ。
一日中やった場合の効果はどうなのかな?
どうやら、投稿されてもメールが来てなかった模様…。
コメントを今までに投稿した人に送るロジックはあったけど、
僕自身にくるロジックが抜けていた。。。
なんだろな、昼は包丁で千切りにしていたら、親指の関節を切ってしまい、
(そもそもちゃんとした持ち方していれば、そんなところ切るはずもないんだが…)
夜は鍋敷きの上においてあった鍋をコンロに移動して、火をつけてから
鍋敷きがくっついたままのことに気づいたり…。
(鍋敷きは焼けてしまってダメになりました…)
何か変な一日でした。
それ以外は、AR.DroneのSDKが気になって少し下調べしたり、
料理の科学的な裏付けが気になってこちらも調べてみたり、
資料を読んだりするのがほとんどだったかな。
服買うときは、ちょこちょこと買うのではなく、まとめて買ってしまうようにしている。
そのほうが、時間もかからないし、服全体の統一感とか組み合わせがやりやすいよね。
ここ1,2年はほとんど冬物を買ってなかったので、久しぶりに服を買いに行ってきました。
場所は酒々井のプレミアムアウトレット。東京駅からバスが出てて、片道1時間ぐらい。
最初はGarrettのポップコーン、酒々井は穴場のようで15分ぐらいで買えました。
その日、何度か店の前を通りかかって見てた感じ、必ず並ぶ必要はありそうだけど、
概ね15分ぐらいで買えそうな感じでした。東京駅で1時間、2時間待ちより良いよね…。
その後は服探し。いつも買う系統の店3店舗ぐらいを回って、目星をつけてささっと購入。
上下合わせて合計8点ぐらい購入。結構良いのが見つかって良かった。
ちょっと前までは家に帰って昼ごはんを食べていたけど、
それも移動するのが面倒だなと思い始めて、弁当を作って会社で食べてます。
弁当っても、手軽に済ませたいので、スープとおにぎり2つにしてます。
スープはAmazonの「THERMOS 真空断熱フードコンテナー 」ってのに入れて、
二日おきぐらいにレシピを変えたものを入れてます。
このフードコンテナだとかなり保温がきくので、その点も非常に良いね。
おにぎりはまだ試行錯誤中。
ほとんど力を入れずに握ると、ふっくらした感じに仕上るところまではできてきた。
ただ、味付けとか、ふっくらさ加減とか、まだまだ改良の余地はありそうなので、
毎日試行錯誤してます。
こうやって料理作ってると、いろいろと考えて改善できるところが多いので、
やっぱり楽しいなと思うね。
今日から本業に復帰
長い休みでよい気分転換になったと思う
やることもたくさんあるので、ちゃちゃっと終わらせてこう
読もうと思ったきっかけは、普段書くコードが他人から見て見にくいな、と思ったこと。
決して見せられないほどひどくは書かないけど、頭にスラスラと入ってくるぐらい良いコードを書けていないので、
この機会に見なおそうと思いました。
http://www.amazon.co.jp/dp/4873115655
タイトルの通り、コードをいかにしてより良いものにするかというがメインです。
コメントや変数名の付け方などの基本的なものから、
1関数1機能にすること、をどう徹底するかなど、ちょっと踏み入ったものまであります。
普段コードを書く人からすると、すでに身についているものも多いですが、
文章として書かれると、意外と知らず知らずにやっていたことが「そうなっていたのか」と納得できることもありました。
僕としては、以下の内容が良かったです。
全然本の内容とは関係ないけど、本文中の以下の言葉も納得。
「エンジニアリングとは、大きな問題を小さな問題に分割して、それぞれの解決策を組み立てることに他ならない。」
普段のコードにも取り入れてみて、より良いコードを書いていきたいね。
11月、12月と仕事がたてこんでいたこともあり、
年末年始休みと合わせて、今週もお休みをもらった。
普段時間取れなくて進められていなかったこととか、
こういう機会に進められて良い感じ。
明日もまたがんばろう!
あけましておめでとうございます。今年もよろしくお願いします!
年末から1週間ほどかけてAndroidのアプリケーションを作っていまして、
三が日も親戚周り以外はカタカタとコーディングをしています。
その傍ら、突然始めてみたSimcityが面白くて、アイテム作っては
市場で売ってお金を手に入れたりなど、まずまずはまっています。
まぁ、iPad版だとなのか、時間の流れが遅いので、そろそろ飽きそうですが…。
そんな感じで、今年も技術的な部分、それ以外の部分合わせて、
頑張っていきたいと思いますので、よろしくお願いいたします。
5年先、10年先に役に立つものをしっかりと考えてかないとね。
2014年もありがとうございました! みなさまお世話になりました。
今年はいろいろと動きの多い、一年だったなと思います。
特に技術的な面だと、仕事でやってきたことがようやく形になってきました。
個人では「将来的にこういうものがあると良いのでは?」という長期的な視点で、やっていく方向性が決まってきました。
まだまだ学んだり、考えたりすることは多いですが、実際に形にできるようにがんばっていきます!
来年は(仕事も個人も)基本的な部分をおさえつつ、5年・10年先の未来がちゃんと描けるような基盤を作っていきます。
仕事はファームウェアやドライバの開発が一気に来るので、実装を頑張るというよりは、
道筋をしっかりと考えて、無理のない期間で終わらせられるようにやっていきたいです。
あと、個人的なところでも大きな節目となるので、そちらも進めていかないとな。
来年もがんばっていきます!
調べてみると、こういうことみたいです。
-bオプションで「0.0.0.0」を指定する。
いつかからかデフォルトが127.0.0.1のループバックアドレスになったみたい。
コンテナ使うことが多くなってきて、直接接続することが少なくなったからかな?
昨日から実家に帰ってきました
久しぶりに実家で外食してみて、何か味が変だなぁと
朝のホテルでのブッフェと言い、昼に食べた豊橋カレーうどんと言い
「なんだろ?」とよくよく考えてみると、どれも塩分が多い
何となくだけど、その辺りの塩気に関する調味料の変なのかなぁ…と思いました
それと同時に、「あ、東京の人間になったんだな」とも(笑)
もう最終営業日。。。早いなぁ
時間がすぎるのが惜しい気もするけど、
充実した1年だったと思うので、あまり後悔はないかな
今回の仕事休み、いろいろとありまして17連休となりました
ということで、仕事のことは一旦忘れて、やりたいことをいろいろとやろうかなと
はじめまして(の方が多いと思うので…)yasuharuと申します。
普段は組み込み関係、特にファームウェアの開発やLSI検証のお仕事をしています。よろしくお願いします。
半年ぐらい前の記事になりますが、こんな記事が発表されました。
IBM、新型「SyNAPSE」チップを発表--認知コンピューティングの可能性を広げる - CNET Japan
http://japan.cnet.com/news/service/35052072/
記事を見た時「脳型コンピュータチップってなんだろう?」という感じでした。
最初はちょっと目新しいだけなのかな…と思っていましたが、読み進めていくとこれはいけるんじゃないか?と思いました。
特にLSIの開発に関わっていると、LSIの微細化の問題などにより性能の頭打ちは顕著に感じられます。
これなら近い将来もさらに計算機の性能があげられそうです。
ということで、今回は上記の記事の全容を見るべく、Congnitive Computingがどういうアイディアを
元にしているか・どういう世界を描こうとしているか、論文とともに紹介をしていきたいと思います。
IBMのCognitive Computingに関する研究は、最初にサルの脳の情報伝達の考察から始まり、Neurocynaptic Chipの設計、
スパコンを使った性能シミュレーション、ASICでの試作、アプリケーションへの展開と着実に進化を遂げています。
これらの研究は2011年頃から発表されており、IBMのresearcherであるDharmendra S. Modha氏が中心となって進めているようです。
今回はこれらのうち、サルの脳の情報伝達の考察、ASICでの試作の部分を取り上げて行きます。
まずはNeurosynaptic Chipの目標とするアーキテクチャを見ていきます。
発想の原点となるのは、サルの脳の仕組みです。
Network architecture of the long-distance pathways in the macaque brain
http://www.pnas.org/content/107/30/13485.full
Macaqueは「東南アジア、日本、北アフリカに分布するオナガザル科マカク属(Macaca)のサルの総称 」です。
(引用元:http://eow.alc.co.jp/search?q=macaque )
CoCoMacというneurosynaptic database(脳の部位ごとの情報伝達などを扱っているデータベース)を元として解析・考察したものがこの論文です。
ざっくり言うと、この論文から以下の知見が得られたようです。
このアイディアを元として、Neurosynaptic Chipの設計がされているようです。重要なのは、
という2点です。
ちなみに、この論文、普段読むようなシステム系論文とは異なり、脳神経系の単語がバンバン出てきます。読むのが大変でした…。
ASIC = Application Specific Integrated Circuit、つまり特定用途に特化したLSIです。
実際にLSIを作ってみましょうという話ですね。
一体どれだけのお金が…と言っても、自社のファブだから関係ないのかもしれません。
前置きはさておき、このASIC化について述べられた論文が以下のものです。
A 45nm CMOS Neuromorphic Chip with a Scalable Architecture for Learning in Networks of Spiking Neurons
http://www.modha.org/papers/013.CICC2.pdf
論文の前置きとして、一般的な脳の情報伝達はどうなってるのか?というのが少し書かれています。
これが肝になるアイディアなので、ちゃんと書いておきます。
(ただし、図はWikipedaから持ってきたもの、文章は論文からのものなので、図と文が一致しない部分があります。すみません、手を抜きました…。)
引用元:Created by Quasar (talk), http://ja.wikipedia.org/wiki/%E7%A5%9E%E7%B5%8C%E7%B4%B0%E8%83%9E#mediaviewer/File:Neuron_Hand-tuned.svg
このニューロンの構造を使って、Neurosynaptic Chipが作られました。このチップの特徴は以下のとおりです。
この回路は次のブロック図で表されます。
先の図で言うところのシナプスに相当するのが256x256のSynapse Array、これを中心として、
軸索からシナプスを通って樹状突起に作用する一連の流れを表します。
引用元:http://www.modha.org/papers/013.CICC2.pdf
外部からのスパイクを受けて、学習を行い、出力をします。特徴として、同じ構成のチップをたくさんつなげることで、スケールアウトが簡単にできます。
細かいニューロンの動きは今回は説明を省略させていただくとして、一番興味をもった部分は、Synapse ArrayのSRAMの構造です。
一般的なSRAMのトランジスタの構成は以下のとおりです。
しかし、今回の研究で使われているSRAMは以下の構造になります。
(図を読み解くヒントとして、下の図では値の記憶部分をインバータで表現していますが、上の図はトランジスタで表現しており、
これらは等価なものです。その点だけ気をつければ、違いは大きく一箇所のみです)
引用元:http://www.modha.org/papers/013.CICC2.pdf
要はrowとcolumn両方ともからread/write可能なSRAMになっています。
こうすることで、軸索(axon)に対応するrowの読み書き、樹状突起(dendrite)に対応するcolumnの読み書きを高速に行うことができます。
ざっくりとした話で、サルの脳から始まるアイディアとASIC化について書いてみました。
まだまだアプリケーションレイヤーの話などもありますが、一つの記事には長すぎるのでこの辺りでいったん終わりとします。
最後にまとめようと思ったのですが、実はこれだけの論文を読んだだけだと「サルの脳」と「ASIC化」の関連性がさっぱりとわかりませんでした…。
サルの脳の話はなくても…?という感じがしますが、もう少し読み進めてみないとわかりません。
ということで、ちゃんと物語としてまとまっているのか? あるいは、試行錯誤の中で(サルの脳の話は)うやむやになっているのか、
この続きは(反応があれば)リアルな場で発表したいと思います。
それではみなさん、良いお年を!