Hyper-Threading Techology版
|
はじめの一歩 これ、linuxを動作させた時のtopの内容です。 xeonのデュアルパソコン、CPUは2つなのに4つに見えてます。
|
動かすプログラムによっては、CPUstatesもなんと、397.2%と表示されます。 なんか得した?ような感じですよね。 で、なにを思ったかと言うと、もともとx86系はデュアルならLitronを移植しても良いかなと思っていたのですが、これならシングルCPUのパソコンでもLitronを動作させられると考えたのでした。 とりあえず、Hyper-Threading Techologyをサポートしているpentium4を入手しなくては。 |
2005年 4月20日 |
|
Hyper-Threading Techology完全対応版です!?大きな変更点としてはiTRONをkernel_threadとして動作させるようにしました。 Ver1.0rev001(litron2_050420.tgz) 一応、iTRONが一つのCPUを占有して動きます。ただ、Xの唯我独尊的アプリ(サイコロがぐるぐる回るICOみたいな)を動かすとlinuxが極端に重くなります。linuxのスケジューリングをいじると色々問題がでそうなのと、webブラウザーみたいな大きなアプリでも問題なく動くので良し!としています。ちなみにシングルCPUでも動きます。 これまでのようにフックをかけて略奪式に比べて、遅くなるのでは!と思いましたが結果的には差異がなかったので、sh等の組み込みCPUもこの方式に変更してみます。遅いCPUだと違いがでるはず? |
2005年 2月4日 |
Hyper-Threading Techology対応が不安定というか、あまりメリットがでない!それに、2.8Gのpen4はさすがに速い!十分使用可能範囲かと? でベータ版(litron2_050204.tgz)の公開です。 内容はlinuxとjsp1.4へのパッチとlinuxとiTRONの通信サンプルプログラムです。 ですから、kernelバージョン2.6??のlinuxとjsp-1.4が別途必要です。 jsp-1.4はトパーズプロジェクト(http://www.toppers.jp)よりダウンロード可能です。 性能についての詳細は始まったばかりですか、linuxデバイスの割り込みとハンドラーでの割り込み禁止を抑えていないのですが、linuxも2.6になってマルチCPU対応が進んでいるおかげ?で、かなり速いみたいです?互換性維持にはこのままの方が良いのかも知れません。 サンプルプログラムのスナップショット モジュールロード時のメッセージ(X環境下では表示されないのでdmesgで確認) uITRON Extensions Loaded (http://www.goodsoft.jp) ver 0.9 rev 001 JSP Kernel Release 1.4 (patchlevel = 0) for LiTron_hst (Feb 3 2005, 23:14:01) Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory Toyohashi Univ. of Technology, JAPAN インタフェースプログラムの起動 [root@localhost if_litron]# ./if_litron iTRON interface Start System logging task is started on port 1. iTRON! Genki!! ng (002). | task2 is running (003). + task1 is running (003). | task3 is running (003). * task1 is running (004). | task3 is running (004). * task2 is running (004). + task3 is running (005). * task2 is running (005). + task1 is running (005). | . . . . task1 is running (071). | task2 is running (071). + task3 is running (071). * task3 is running (072). * task2 is running (072). + task1 is running (072). | task2 is running (073). + task1 is running (073). | task3 is running (073). * task3 is running (074). * task1 is running (074). | task2 is running (074). + 1 task2 is running (075). + task1 is running (075). | task3 is running (075). * s task3 is running (076). * task1 is running (076). | task2 is running (076). + task2 is running (077). + #1#slp_tsk() task3 is running (077). * task3 is running (078). * task2 is running (078). + task2 is running (079). + task3 is running (079). * task3 is running (080). * task2 is running (080). + 2 s task2 is running (081). + task3 is running (081). * task3 is running (082). * task2 is running (082). + #2#slp_tsk() task3 is running (083). * task3 is running (084). * task3 is running (085). * task3 is running (086). * task3 is running (087). * 3 task3 is running (088). * s task3 is running (089). * task3 is running (090). * #3#slp_tsk() |