• 検索結果がありません。

thesis.dvi

N/A
N/A
Protected

Academic year: 2021

シェア "thesis.dvi"

Copied!
64
0
0

読み込み中.... (全文を見る)

全文

(1)

PC-UNIX

CAMAC ACC

を用いた

リアルタイムデータ収集システムの開発

A Real-Time DataAcquisition System with PC-UNIX and CAMAC ACC

長崎総合科学大学大学院工学研究科流体工学専攻

長谷野 雅哉

(2)

目次

1 はじめに 3 2 物理学実験におけるデータ収集システム 5 3 システム構成 9 3.1 ハードウェア構成 : : : : : : : : : : : : : : : : : : : : : : : : : : : 9 3.1.1 PC-UNIXシステム : : : : : : : : : : : : : : : : : : : : : : 9 3.1.2 CAMAC : : : : : : : : : : : : : : : : : : : : : : : : : : : : 12 3.1.3 CAMAC ACC: : : : : : : : : : : : : : : : : : : : : : : : : 14 3.2 ソフトウェア構成 : : : : : : : : : : : : : : : : : : : : : : : : : : : 15 3.3 データ収集フロー : : : : : : : : : : : : : : : : : : : : : : : : : : : 17 4 プログラム開発 19 4.1 CAMACデバイスドライバ・ライブラリ : : : : : : : : : : : : : : : 19 4.1.1 CAMACデバイスドライバ : : : : : : : : : : : : : : : : : : 19 4.1.2 CAMACライブラリ : : : : : : : : : : : : : : : : : : : : : 25 4.2 ACCプログラム開発環境 : : : : : : : : : : : : : : : : : : : : : : : 26 4.3 データ収集プログラム開発 : : : : : : : : : : : : : : : : : : : : : : 28 4.3.1 ACCメモリマップ : : : : : : : : : : : : : : : : : : : : : : 28 4.3.2 ACC-UNIDAQライブラリ : : : : : : : : : : : : : : : : : : 30 4.3.3 ACCとUNIDAQプログラム : : : : : : : : : : : : : : : : : 32 5 システムの性能 35

(3)

目次 5.2 CAMACライブラリの性能 : : : : : : : : : : : : : : : : : : : : : : 37 5.2.1 CAMACシングルアクション : : : : : : : : : : : : : : : : : 37 5.2.2 CAMACブロックアクション : : : : : : : : : : : : : : : : : 39 5.2.3 CAMAC割り込み処理 : : : : : : : : : : : : : : : : : : : : 41 6 考 察 45 6.1 コストパフォーマンス : : : : : : : : : : : : : : : : : : : : : : : : : 45 6.2 CPUとOSの違いによるシステムの性能比較 : : : : : : : : : : : : 50 6.3 UNIXの問題点 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 54 7 まとめ 57 8 謝 辞 59

(4)

1

はじめに

最近のコンピュータシステムの性能向上は目覚ましく、しかも価格低下が進み、 高性能なコンピュータが身近に扱えるようになってきた。特に、パーソナルコン ピュータにおいてこの傾向が著しく急速に普及し始めている。このパーソナルコ

ンピュータの急速な普及の要因として、MacOS、Windows95、WindowsNTな

どのGUIを使用したOSが登場し、快適にコンピュータを扱えるようになってき

たことがあげられる。また、SCO UNIX、Linux、386BSDなどのUNIX系OS

(PC-UNIX)の登場によりパーソナルコンピュータの新たな可能性も見出されは じめている。 巨大な粒子加速器を使用する物理学実験分野においても、1960年代からコン ピュータを用いた自動計測制御が積極的に行われている。この分野では、物理的発 見のため常にその時々の最新技術を投入し計測機器の開発並びに技術開発が行わ れ、その場における技術の発展があってこそ、新しい発見が見出されるといっても 過言ではない。さらに、ここで培われた技術は成熟すれば産業界の応用も図られ普 及していく場合が多い。 この分野のデータ収集システムは、単にデータを収集するだけでなく、それと同 時にデータの保存、収集したデータの一部を解析しグラフの表示等を行わなければ ならない。そのため、コンピュータには個々の処理の実行に見合った能力よりはる かに大きな処理能力が要求される。その要求はこれまでメインフレームにより実現 されていたが、UNIXワークステーションの性能向上とネットワークの普及によ り、それに代わってUNIXワークステーションがデータ収集のホストコンピュー タやデータ解析用のコンピュータとして用いられるようになり標準的地位を築きつ つある。 最近では、実験に使用する検出器が複雑化してきたことにより、単位時間に収集 しなければならないデータ量が増加傾向にあり、大量なデータを高速に収集するこ

(5)

Chapter 1.はじめに とが要求されるようになってきた。その要求の高まりに応えるため、高速性、即時 応答性を特徴とするリアルタイムUNIXを用いてシステムの構築が行われている が[17]、リアルタイムUNIXはまだ発展途上で応答スピードに限界がありデータ収 集に必要な処理をリアルタイムに行うには問題となる場合がある。 そこで本研究では、外部にデータ収集の機能を持ったコントローラ(CAMAC ACC)とUNIXワークステーションを用いて高速性の要求されるリアルタイム データ収集システムの開発を行った[9][27]。その結果、PC-UNIXのようなリアル タイム性を保証しないOSでも高速なリアルタイムデータ収集システムを構築する ことが可能となった[26]。

(6)

2

物理学実験におけるデータ収集システム

コンピュータをとりまく環境はめまぐるしく変化しており、物理学実験分野の データ収集システムもその影響を受け、その時々に応じたシステムが開発されてい る。日本では文部省高エネルギー物理学研究所(KEK)が中心となりデータ収集 システムの標準化が進められている。その具体的な開発経緯をたどってみる[22]。 ま ず、DEC社 製 の コ ン ピュー タVAX上 に、VMSと い うOSが 動 作 す る コ ンピュータシステム(VAX/VMS)を用いてデータ収集システムが構築された。 VMSはリアルタイムOSであり、高速データ収集/パフォーマンス/操作性な ど の 統合 的 な 判断 でVAX/VMSが選 ば れ た。測 定 回路 シ ス テム に はCAMAC

(IEEE standard Serial Highway Interface)が用いられ、VAXのシステムバス

であるQ-Busとのインターフェイスを介して接続された。データ収集システムの

ソフトウェアはFORTRAN言語によって書かれ、CAMACデータ収集ライブラ

リはKEK独自の仕様でアセンブラ言語で書かれた(CAMLIB)[20]。

次に標準となったのはモトローラ社の68000シリーズコンピュータ上にOS9と

いうOSが動作するコンピュータシステム(68K/OS9)で、測定回路には

CA-MAC、TKOが用いられシステムが構築された。測定回路と68K/OS9とは、産

業界で標準化されたVME Busを介して接続された。VAX/VMSはデータ収集シ

ステムのホストコンピュータとして適したものであったが、より安価で、標準バス

を搭載した68K/OS9が主流となった。データ収集システムのソフトウェアはC言

語によって書かれ、よりポータブルなものとなった。CAMACライブラリもほぼ

C言語によって書かれ、VAX/VMSのものと互換性が保たれた。

そして、現在ではVAX/VMSや68K/OS9に比べて遥かに高性能なUNIXワー

クステーションを用いられるようになった[15]。また、コンピュータネットワーク

の普及とあいまって、複数のコンピュータを用いてシステムが構築されている。こ

(7)

Chapter 2.物理学実験におけるデータ収集システム コンピュータ ネットワーク UNIXワークステーション オンライン モニタリング データ データ 解析 保存 データ Mass 収集 Storage 測定回路 検出器 図2.1: 物理学実験におけるデータ収集システム データ収集システムに利用されなかったのは、UNIXがリアルタイム性を保証し ないためである。しかしながら、CPUの処理速度の急激な上昇、デバイスドライ バの実装上の工夫により、物理学実験が要求する程度のリアルタイム性を十分確 保することができるようになってきた。データ収集ソフトウェアはC言語によっ て書かれており、UNIXをOSとして用いるようになったことで、より移植性の 高いコードに拡張された。CAMACライブラリもすべてC言語によって書かれ、 VAX/VMSと68K/OS9のものと互換性が保たれている。このようにデータ収集 システムは標準に沿って連続して発展してきた。 最近では、コンピュータシステムの性能向上はとどまることはなく、VMEボー ドコンピュータを用いてポータブルなシステムが構築されている。OSもまた進化 しており、リアルタイム性を保証するようなUNIXに近いOSが開発され、この OSを用いたシステムも構築されている[17]。一方、物理学実験における検出器は 巨大化・複雑化してきており、それに伴い、データ収集システムに対する要求が高 まってきている。そのため、それに応じて新しいシステムの開発が行われ続けてい る。 その具体的例として、KEKにおいて行われているE337実験プロジェクトにお けるシステム開発をあげる。E337実験プロジェクトは、高温、高密度核物質生成 のメカニズムを探るターゲットマルチフラグメンテーションの研究実験プロジェ

(8)

ビームを用いて1995年12月から1996年5月にかけて行われた[25]。 この実験では、検出器にFrisch Gridをもつガスイオンチェンバーの一種であ るブラッグカーブカウンタ(BCC)を用い、入射荷電粒子がカウンター内のガ ス中で停止する際に作り出した電離電子の空間分布の測定を行う。BCCはター ゲットを中心に水平面上に4台、上部に大型のものが1台配置され、それぞれを 合わせて37chの出力系統を持っている。検出器から送られてくる信号は、時間情 報、電圧情報を抽出し、測定回路システムにCAMACを用いてADC74ch、TDC (SCALER)74chによって測定を行う。この検出器によって測定される物理事象 は、最大に見積もって1秒間に5000回起こると予想された。また、1つの物理事 象に対し収集しなければならないデータ量は、8∼23wordである。これは、一般 的なKEK-PSを用いた実験とは異なり、1つの物理事象に対して収集しなければ ならないデータ量は非常に少ないが、事象発生頻度が非常に高い。そのため、従来 のシステムでデータ収集を行うことは困難であり、この要求に応える新しいシステ ムを開発することとなった。 ビーム KEK-PS 12GeV プロトンビーム 0.25 Hz(spill width Max. 2 sec)

検出器 ブラッグカーブカウンタ(37チャンネル) 測定器 CAMAC ADC(74チャンネル) TDC(74チャンネル) 事象発生頻度 Max. 5000 Hz データ量 8∼23word/event 460 KB/spill 表2.1: E337実験のセットアップとデータ量 E337実験のデータ収集システムを開発する上で最も重要なことは、測定する物 理事象が1秒間に最大5000回起こると予想されているので、1つの物理事象に対 するデータを最低でも200secの間に収集しなければならないということであっ た。そこで、この要求を満足するため、CAMAC上にデータ収集機能を持ったコ

ントローラCAMAC ACC(Auxiliary Crate Controller)を使用することが提案

され、これとUNIXワークステーションとを組み合わせた新しいシステムが構築

された[27]。このシステムは、E337実験において80%以上のデータ収集率をあ

(9)

Chapter 2.物理学実験におけるデータ収集システム

CAMAC ACCを用いることにより、E337実験の要求を満足する高速なデータ

収集が実現され、良い結果を得ることができた。このシステムの成功により一般的 な実験への応用も期待され、標準的な新しいシステムを構築することとなった。第

(10)

3

システム構成

パーソナルコンピュータの普及が急速に進んでおり、またその性能も一昔前の ワークステーションに匹敵する程に向上してきている。このような状況をふまえ、 新しいシステムのホストコンピュータとしてパーソナルコンピュータを採用し、シ ステムの構築を行った。本章ではそのシステムの構成を述べる。 3.1

ハードウェア構成

本研究において構築したPC-UNIXとCAMAC ACCを用いたデータ収集シス

テムの構成を図3.1に示す[26]。システムは、測定回路システムとデータ収集を司

るホストコンピュータとからなり、単にデータ収集を行うだけでなく、それと同 時にデータの保存、収集したデータの一部を解析しグラフ表示を行う。ホストコ

ンピュータには、パーソナルコンピュータ(IBM PC互換機)にLinuxというOS

をのせたPC-UNIXシステムを、測定回路システムにはCAMACを用いる。IBM PC互換機とCAMACクレートとは、ISAバスを介するCAMACインターフェイ

スカードとCAMACクレートコントローラを用いて接続する。この構成でデータ

収集が可能となるが、さらなる高速データ収集を実現するため、CAMAC上に

データ収集機能を持ったCAMAC ACC(Auxiliry Crate Controller:補助クレー

トコントローラ)を配置する。

3.1.1 PC-UNIXシステム

数年前まで、UNIXは強力なミニコンあるいはワークステーションのOSとして

使用されるのが普通であったが、ここ最近のパーソナルコンピュータの急激な性能

(11)

Chapter 3.システム構成

PC-UNIX

CAMAC Crate

CAMAC/IBM PC

Interface CAMAC ACC

(Model 2927) (Model 3976)

IBM PC Compatibles Crate Controller

(Model 3922) GATEWAY2000 CPU:Pentium (150MHz) OS :Linux 2.0.0 図 3.1: システム構成 た。 本システムのOSとして用いているLinux[7]は、フィンランドのヘルシンキ大

学においてLinus B. Torvalds氏によって開発されたUNIX系OSである。Linux

のカーネルコードはゼロから開発され、1990年10月最初のバージョンがインター

ネット上に公開されると、世界中に広がり多くの人々の協力によって開発が行われ

るようになった。Linuxは、POSIX(IEEE standard 1003.1)に準拠しており、

カーネルの機能はSystem V互換になっているが、ネットワークデーモンなどの ユーティリティ機能はBSDから移植されており、SystemVとBSDの拡張機能の 両方を兼ね備える。また、基本的なコマンドはGNUのものが使われており、さら にCコンパイラ等のプログラム開発環境をはじめとするほとんどのGNUツールも 移植されている。このようにしてLinuxはUNIXシステムにおける機能のほとん どを実現しており、ソースレベルで互換性を持っている。以下に、Linuxの持つ主 な機能をあげる。  マルチタスク、マルチユーザー 同時にいくつものプログラムを実行でき、同時に何人ものユーザーがシス テムを利用できる環境を提供する。

(12)

3.1. ハードウェア構成  仮想記憶でメモリの少ないシステムに対応 ハードディスク上に記憶領域(スワップ領域)を設け、その領域を使いメ モリを仮想的に拡張し実メモリより大きなメモリ空間を扱うことができる。 また、デマンドページング機能により実メモリより大きなプログラムを実行 することができる。  シェアドメモリ BSD系のUNIXで採用されている機能であるが、プログラムの一部をメ モリ上で共有することができる。メモリの占有量を減らせるなどの特徴を持 つ。  シェアドライブラリ System V系のUNIXで採用されている機能であるが、プログラムをコン パイル時ではなく、実行時に共有ライブラリと結合する機能である。多くの プログラムでライブラリを共有するので、メモリ、ディスクのの占有量を減 らすことができる。  ネットワーク機能

TCP/IP、IPXプロトコル、Aplle Talkネットワークといったネットワー

クプロトコルをサポートしており、これらを利用したネットワークサービス 機能を備える。  プロテクトモードをサポート Linuxは386系プロセッサのプロテクトモードで動作するため、ユーザー プログラムによりシステムが破壊されることがない。  動的に確保されるディスクキャッシュ 実メモリ上に使われていない空き領域がある場合、そこをディスクキャッ シュとして利用する機能があり、このキャッシュ領域は実メモリ領域が必要 になったら減少するというように動的に確保される。  多種のファイルシステムに対応

Linuxは、MS-DOS(FAT)、Windows95(VFAT)、 OS/2

(HPFS)、 など様々なOSのファイルシステムやCD-ROM(ISO9660)

のファイルシステムをサポートしており、そのままマウントして使用するこ

とができる。また、Linux独自のファイルシステム(ext2)は、255文字ま

(13)

Chapter 3.システム構成  フリーソフトウェアである Linuxは、GNUパブリックライセンスに従って配布されているフリーソ フトウェアであり、ソースコードを含め誰もが自由に入手でき変更、再配 布が許されている。配布にはインターネットが大いに活用され、その普及 と共にユーザーは世界中に広まっており、その性能は高く評価されている。 また、ソースコードが公開されているため、世界中の多くのプログラマが Linux開発を支援しており、対応するハードウェア、Linuxの持つ機能は他 のUNIX系OSと比較して多くのものをサポートしている。

Linuxの優れた機能を十分に発揮させるため、IBM PC互換機にはPemtium

CPUを搭載するGATEWAY2000 P5-150を採用した。その仕様を表3.1に示す。

メモリ、ハードディスクに十分な容量を与え、データ収集、解析を行うに十分な性 能を確保した。最近のパーソナルコンピュータは価格低下が進んでいるため、性能 を重視してハードウェアを構成しても、コスト面で問題となるようなことはない。

GATEWAY2000 P5-150

CPU(CPU Clock) Pentium(150MHz)

メインメモリ EDO 64MByte

キャッシュメモリ PB SRAM 256KByte

ハードディスク 2GByte SCSI

拡張スロット ISA ×3, PCI ×4

VIDEOチップ ATI Mach64ct

ネットワークカード 3Com595TXPCI 10/100BASE-T

SCSIアダプタ Buslogic BT-964C FastSCSIPCI

OS(パッケージ) Linux2.0.0(Slackware3.1)

表3.1: GATEWAY2000 仕様

3.1.2 CAMAC

CAMACの規格は、CERN(欧州共同原子核物理学研究所)を中心として提唱

され、1969年ESONE(European Standards on Neclear Electronics)の委員会

で制定され、その後、ACE、IEEEで承認され国際標準規格(ANSI/IEEE

publi-cation SH-08482)となった。この規格では、インターフェイス回路の信号伝達方

式や信号の電気的仕様だけでなく、機械的構造についても細かく規定されており、

(14)

3.1. ハードウェア構成 CAMACクレートは最大25のスロット(ステーション)を持ち、このスロット には左から順にN=1、2、……、25とステーションナンバー(N)が割り付けら れている。ステーションナンバーN=1∼24はノーマルステーションと呼ばれ、 この任意の場所にADCやTDCなどのCAMACモジュールを差して用いる。右 端に位置するステーションナンバーN=25はコントロールステーションと呼ば れる特別なもので、ここを通じてコンピュータはCAMACクレートの制御を行 う。CAMACクレートの後部は43×2のボードエッジコネクタが取り付けられ、 バス線(CAMACデータウェイ)に接続されている。各ノーマルステーションに

は、24bitのREAD、WRITEそれぞれの専用バス、9bitのコントロールバス、

モジュールのイニシャライズ、クリア、インヒビット、のためのZ、C、I、モ ジュールのステーションナンバー、コマンドアクセプト、レスポンスを示すN、 X、Q、割り込み線L(LAM: Look-At-Me)、タイミング信号線S1、S2、バス の使用を示すB、の各1bitのバス線につながる。コントロールステーションは、 READ、WRITEのバス線に代わり、各ステーションからのLとNの線がつな がる。コントロールバスは、F(5bit)、A(4bit)で構成され、Fはファンク ション、Aはサブアドレスを指定するものである。これらとNを組み合わせて、 各ステーションに配置されるCAMACモジュールをコントロールする。コント ロールに用いるN、A、Fの信号は、ハンドシェイク行わないで1サイクルで動 作が完全に終了し、その動作でデータ転送も完了する。バスのサイクル時間は、 1secと規定されており最大3MB/secの転送能力を持つ[23]。 CAMACク レー ト と コ ン ピュー タ の 接 続 は、 ク レー ト コ ン ト ロー ラ と コ ン ピュータインターフェイスを用いて行う。クレートコントローラはCAMACク レートの右端に配置する。本システムのクレートコントローラには、文部省高エネ ルギー物理学研究所において陽子シンクロトロンを用いて行われる実験(KEK-PS 実験)で従来から標準的に用いられているKineticSystems社のModel 3922を、 ホストコンピュータであるPC-UNIXとのインターフェイスはそれに合わせて、

ISAバスを介するKineticSystems社のModel 2927を採用した。これらの間は40

本のパラレルリボンケーブルにより接続し、最大90mの長さのケーブルを使用す ることができる。Mo del 2927インターフェイスはDMAによるブロック転送機能 を持っており、最大800KB/secのデータ転送が可能である[2][3]。 CAMAC自体現在では、既に古く良いものであるとはいえないが、これまでに 蓄えられたハード・ソフトの資産が多く受け継がれてきており、また様々な用途に 合わせた多くのモジュールを商業的にも比較的容易に入手することができるなどの 理由で、制定されて20年以上経つ現在でも最もよく用いられている。

(15)

Chapter 3.システム構成

Modules CAMAC ACC (KineticSystems Model 3976)

M PU ROM M68030 40 MHz 512 KB ADC, TDC Crate etc ... Controller Internal M68030 Bus CSR Dual Port Interrupt RAM AUX Logic 1MB Crate Controller ACB CAMAC Bus 図3.2: CAMACACCの内部構成 3.1.3 CAMAC ACC CAMAC ACCは、プロセッサを搭載したインテリジェントなコントローラで、 クレートコントローラと同じ機能を持ち、CAMACバスをコントロールすること ができる。

本システムのCAMAC ACCには、KineticSystems社のMo del 3976を採用し

た。その内部構成を図3.2に示す。 Mo del 3976は、Motorola 68EC030プロセッ

サ、数値演算用コプロセッサを搭載するシングルスパンのCAMACモジュール で、プログラムによりスタンドアローンで動作し、CAMACクレート上にある測 定モジュールにアクセスしてデータ収集を行う。Mo del 3976の内部機構は、それ ぞれインターナルバスにつながっており、それらをコントロールする68EC030プ ロセッサは、メモリマネージメント機構を持たない68030のハイスピードバージョ ンであり40MHzのクロックスピードで動作している。コントロールステイタスレ ジスタ(CSR)、デュアルポートRAMは、CAMACバスともつながっており、 ホストコンピュータからクレートコントローラを経由してこれらにアクセスするこ とができる[4]。これにより、3976が収集したデータをデュアルポートRAM上に 一時バッファリングしておき、バッファリングしたデータをホストコンピュータが

(16)

3.2. ソフトウェア構成

ブロック転送により収集することで、データ収集の高速化が図れる。

3.2

ソフトウェア構成

システムを制御するソフトウェアの構成を表3.2に示す。

Application UNIDAQ

Library CERN LIB,CAMLIB, ACC-UNIDAQLIB System UNIX OS / X windowSystem

Kernel Linux Device Driver Hardware K2927 (ISA) 表3.2: ソフトウェア構成 データ収集ソフトウェアには、KEK-PS実験において標準的に用いられている UNIDAQ[12][13]を使用した。UNIDAQはアメリカ合衆国におけるSSCプロジェ クトのSDC実験グループにより開発されたデータ収集ソフトウェアであり、以下 にその特徴を示す。  分散処理 データ収集に必要なタスクを段階的に区分けし、それぞれのタスクに対し プロセスが与えられている。データ収集に必要なタスクは大きく分けて4つ である。その4つとは、CAMACなどの測定回路システムからデータを取り 込みバッファー内に格納するCollectorプロセス、バッファーからデータを 読みとり解析しグラフ描画プログラム(PAW)にデータを渡すanalyzerプ ロセス、バッファーからデータを読みとりハードディスクなどの記憶装置に 書き保存するrecorderプロセス、そして、これらプロセスへのデータの受け 渡しを管理するバッファーマネージャーNOVAである。各プロセスは統一的 な構造であるので目的に応じたプロセスを容易に作成することができる。こ のような形態にすることで、ユーザーが必要とするタスクのみを実行できる ほか、同じタスクでも複数のプロセスを実行させることもでき、あるタスク の走っているプロセスが何らかの理由でハングアップしても、他のタスクに 影響を及ぼさない。

(17)

Chapter 3.システム構成  Portability UNIDAQは既存のライブラリを利用することで高い移植性を実現して おり、各種コンピュータで動作している。現在までにUNIDAQが動作し ているUNIXシステムを表3.2に挙げる。IBM PCには本システム構築の 際に移植を行い、ハードウェア、OSに対する依存性を吸収するデバイス

ドラ イバ を開 発し た。UNIDAQは、CAMACの操 作を 行うた めにKEK

に お い て 開 発 さ れ たCAMACデー タ 収 集 ラ イ ブ ラ リ (CAMLIB) を、 データ解析・グラフ描画には高エネルギー物理学分野でよく使われている CERNLIB(HBOOK/PAW)を利用す る。また本システム においては、 CAMAC ACCとのコミュニケーションを容易に行うため、今回開発した ACC-UNIDAQライブラリも使用する。デバイスドライバ、ACC-UNIDAQ LIBについてはのちの章で詳しく述べる。 コンピュータ(OS) Bus Interface

Sun(SunOS,Solaris) SBus SFVME-100,PT-SBS915(VME) ForceVMEComputer(SunOS) SBus 内蔵 VMEInterface(VME) DEC(ULTRIX) TURBOchannel DEC PMABV/T6000(VME) HP(HP-UX) EISA BIT3

HPVMEComputer(HP-RT) VME SGI(IRIX) VME

IBMPC(Linux) ISA Kinetics Mo del2927(CAMAC)

表3.3: UNIDAQがサポートするUNIXシステム  ネットワーク機能 UNIDAQは、複数のコンピュータシステムを1つのデータ収集システムと してサービスする機能を持っている。つまり、あるコンピュータでデータ収 集を行い、取り込んだデータをコンピュータネットワークを通じて他のコン ピュータへ転送し、そこでオンライン解析を行うこともできる。それぞれの コンピュータは、もちろん異なる機種であってもかまわない。UNIDAQの 外部仕様は統一されており、コンピュータによる使い勝手の差はほとんどな いように設計されているからである。 UNIDAQを使用することで小規模なテスト実験から大規模な実験までカバーす ることができ、ソフトウェア開発の短縮を図ることができる。

(18)

3.3. データ収集フロー 3.3

データ収集フロー

本システムのデータ収集のフローダイヤグラムを図3.3、図3.4に示す。図3.3は データの流れに沿って、図3.4は時間の流れに沿って書いたものである。このデー タ収集の基本的概念は、モジュールのデータをACCがCAMAC上で収集しメモ リ上にバッファリングし(1次データ収集)、次にバッファリングしたデータをホ ストコンピュータ読み込む(2次データ収集)と言うものである。 UNIDAQは、データ収集に必要なタスクを段階的に区分けし、それぞれのタ スクに対してプロセスが与えられている。データ収集に必要なタスクは大きく分 けて4つである。その4つとは、CAMACなどの測定回路システムからデータを 取り込み、シェアドメモリ上に構成されたバッファー内に格納するCollectorプロ セス、バッファーからデータを読みとりグラフ描画プログラム(PAW)にデータ を渡すanalyzerプロセス、バッファーからデータを読みとりハードディスクなど の記憶装置に書き込み保存するrecorderプロセス、そして、これらプロセスへの データの受け渡しを管理するバッファーマネージャーNOVAである。 測定モジュールのデータは、まずACCが読み込み内部のメモリ上に構成され たダブルバッファの片方に記憶される。片方のバッファが一杯になると、ACCは UNIDAQのcollectorプロセスに割り込みをかけバッファ内のデータを収集するよ うに要求する。UNIDAQはその要求を受け付けると、ACC上に記憶されている

データをDMA機構によるブロック転送で読み込む。その間、ACCは40secで

バッファをもう片方に切り替え、データ収集を続けている。バッファ切替え時間

40secは、データ収集のデッドタイムとなる。しかし、ホストコンピュータにお

けるデッドタイムと比較すると短いものである。

UNIDAQに 取 り 込 ま れ た デー タ は,UNIDAQの バッ ファ を 管 理 し て い る

NOVAプロセスを通してRecorder,Analyzerプロセスに渡り,保存,解析が行

われる。また、UNIDAQはデータのほかにも取り決められたACCのステイタス

(19)

Chapter 3.システム構成

Modules

ADC,TDC etc... Communication Area

Shared Memory Program Area Double Buffer Buffer Communication Program Pointer Collector Tape or Disk Recorder NOVA Analyzer PAW CC Command or Status Data ・1次データ収集 DMA転送機構により 高速に収集する。 ・2次データ収集 直接CAMAC上で収集する。 UNIDAQ ACC 図3.3: データの流れに沿ったデータ収集フロー ・ UNIDAQ Recorder Process Analyzer Process Collector Collector Process Process Interrupt Interrupt

・ ACC Buffer Full Buffer Full

Data Taking Data Taking Data Taking

Switch Switch

Buffer Buffer

( 40 μs)

(20)

4

プログラム開発

本 章 で は、 シ ス テ ム を 構 築 す る た め、 本 研 究 に お い て 開 発 し た

CA-MACデ バ イ ス ド ラ イ バ・ ラ イ ブ ラ リ、ACCプ ロ グ ラ ム 開 発 環 境、ACC

デー タ 収 集 ラ イ ブ ラ リ に つ い て 述 べ る。 な お、 開 発 し た ソ フ ト ウェ ア は、 http://www.elc.nias.ac.jp/~daq/software/ より公開している。 4.1 CAMAC

デバイスドライバ・ライブラリ

PC-UNIXを用 いてCAMACを コントロール しデータ収集を 行うためには、 Mo del 2927 CAMACインターフェイスのデバイスドライバが必要である。また、 データ収集プログラムを作成する際の便宜を図りデータ収集ライブラリも合わせて 用意した。 4.1.1 CAMACデバイスドライバ デバイスドライバ[6][10][14]は、コンピュータで動作するソフトウェアのうち最 も低レベルに位置し、OSとハードウェアを結びつける役割を持つ。 デバイスドライバはC言語で書かれた関数の集まりであり、カーネル自体の コードとリンクされカーネルの一部となる。これらの関数は、ユーザープロセスが システムコールにより要求を出したとき、カーネルによって呼び出される。デバイ スドライバを作成する上で用いるプログラムインターフェイス(カーネルサポート 関数)は、通常のアプリケーションプログラムのインターフェイスとは異なる関数 群を用い、標準のライブラリ関数は用いることができない。その詳細については参

考文献[10]に記されているが、ハードウェア操作の基礎となるinとout、iop erm

(21)

Chapter 4.プログラム開発

inb() Read a byte from a port. #include <asm/io.h>

inline unsigned int inb(unsigned short port) Argument:

port Port to read byte from. Returns:

The byte is returned in the low byte of the 32-bit integer.

outb() Writes a byte to a port. #include <asm/io.h>

inline void outb(char value, unsigned short port) Argument:

value The byte to write. port Port to write byte to.

図4.1: inb、outbカーネルサポート関数

図4.1は、参考文献[10]からカーネルサポート関数inとoutについての部分を引

用したものだが、これを利用することでハードウェアのI/Oレジスタにアクセス

することができる。関数inは、引数portにより指定したI/Oレジスタからデータ

を読み込み、そのデータを返す。関数outは逆に、引数p ortにより指定したI/O

レジスタへ、引数valueを書き込む。アクセスする際、バイト単位のアクセスには

inbとoutb、ワード単位のアクセスにはinwとoutw、ロングワード単位のアクセ

スにはinlとoutlを用いる。

ハードウェアは通常カーネルがデバイスドライバを通じコントロールされるが、

Linuxでは、iop ermというシステムライブラリが用意されており、ユーザープロ

セスからもコントロールすることができる。図4.2はオンラインマニュアルからの

引用であるが、iop ermはユーザープロセスからハードウェアのI/Oポートを直接

コントロールするために、プロセスが使うI/Oポートをカーネルに宣言し、許可

を得るというものである。iop ermの1番目の引数fromは、I/Oポートのアドレ

ス、2番目の引数は、1番目の引数で指定したポートからいくつ(num Byte)許

可を得るのかを指定し、3番目の引数は、指定したポートを獲得するか、返却する

かの指定である。iop ermにより使用の許可を得ることができるI/Oポートは、シ

(22)

4.1. CAMACデバイスドライバ・ライブラリ

NAME

ioperm - set port input/output permissions SYNOPSIS

#include <unistd.h>

int ioperm(unsigned long from, unsigned long num, int turn_on);

RETURN VALUE

On success, zero is returned.

On error, -1 is returned, and errno is set appropriately. CONFORMING TO

ioperm is Linux specific.

図4.2: iop ermオンラインマニュアル

可を得ることができたらカーネルサポート関数inとoutを使ってハードウェアの

I/Oレジスタにアクセスすることができる。また、iop ermの使用はスーパユーザ

(ro ot)のみに限定される。 CAMACデバイスドライバ構成する関数群は、カーネルが呼び出すエントリポ イントと呼ばれる関数とドライバ内部でローカルに用いる関数とに分けることがで きる。まず、エントリポイントの処理をみていく。括弧内は、その中の各処理を行 うカーネルサポート関数である。  cc init() initエントリポ イントは、システ ムがブートされた ときに直ちに カー ネルが呼び出す。このとき、CAMACデバイスファイル(/dev/cc0)のメ

ジャーナンバーの登録(register chrdev())とCAMACインターフェイ

スが使うI/Oスペースを確保(request region())する。

 cc open()

op enエントリポイントは、ユーザープロセスがCAMACデバイスファイ

ルに対してop enシステムコールを実行したときに、カーネルが呼び出す。

このとき、割り込み線(IRQ)、DMAチャンネルを確保(request irq(),

request dma())し、ハードウェアのリセットを行う。  cc read()

(23)

Chapter 4.プログラム開発

ルに対してreadシステムコールを実行したときに、カーネルが呼び出す。こ

のとき、DMA機構を使ってCAMACからデータを128KBまでの任意のブ

ロックで読み込む。ここでの処理は次のようになる。

1. DMAコントローラの設定をする。この処理は、cc setup dma()と名

付けたローカルな関数にまとめており、処理の流れは後に示す。

2. Model 2927のコントロールステイタスレジスタのGO bitをセットす

る。これによりDMA動作が開始される。

3. DMA動作の終了を待つ。終了はコントロールステイタスレジスタの

DONEbitにより知らされるので、DONEbitをポーリングにより監視

する。 4. DMAが終了したら、バッファメモリ内に読み込まれたデータを、ユー ザープロセスのメモリ空間にコピーする(memcpy tofs())。 5. Return。  cc write() writeエントリポイントは、ユーザープロセスがCAMACデバイスファイ ルに対してwriteシステムコールを実行したときに、カーネルが呼び出す。 このとき、DMA機構を使ってCAMACへデータを128KBまでの任意のブ ロックで書き込む。ここでの処理は次のようになる。 1. ユーザープロセスのメモリ空間にあるデータをバッファメモリ内にコ ピーする(memcpy fromfs())。 2. DMAコントローラの設定をする。 3. Model 2927のコントロールステイタスレジスタのGO bitをセットす る。 4. DMA動作の終了を待つ。 5. DMA動作が終了したらReturn。  cc ioctl() io ctlエントリポイントは、ユーザープロセスがCAMACデバイスファイ ルに対してio ctlシステムコールを実行したときに、カーネルが呼び出す。こ こでは、Mo del 2927のレジスタを操作し、CAMACをコントロールする処 理のほとんどと割り込み処理を行っており、CAMACライブラリの処理と 対応する。処理はio ctlの引数cmdによりスイッチする。引数のリストはイ

(24)

4.1. CAMACデバイスドライバ・ライブラリ

引数cmd 処理

CCIOC RESET Model 2927 インターフェイスをリセット CCIOC SET CRATE クレートナンバーのセット

CCIOC ENABLE LAM Enable LAM CCIOC DISABLE LAM Disable LAM CCIOC WAIT LAM Wait LAM

CCIOC SINGLE CAMACシングルアクション CCIOC SETUP DMA DMA セットアップ

表4.1: io ctl処理 ンクルードファイル(cc.h)に定義している。用意した処理を表4.1にまとめ る。 次に、ドライバ内部で用いる関数の処理をみていく。  cc reset() Model 2927のリセットを行う。  cc interrupt() Model 2927からのインタラプトをハンドリングする (wake up interruptible())。  cc setup dma()

IBM PC互換機には、2つのIntel 8237 DMAコントローラチップが搭載

されており、8bit転送用に4チャンネル(0∼3)、16bit転送用に4チャ ンネル(4∼7)、計8チャンネルのDMAチャンネルを持つ。Mo del 2927 は、16bitの転送チャンネルを使用するが、チャンネル4は8bit転送用のコ ントローラと16bit転送用のコントローラとのカスケード接続に使用されて いるため、チャンネル5∼7のうちの一つを使用する[2]。DMAコントロー ラの設定を行うためのインターフェイスが/usr/include/asm/dma.hに定 義されているのでこれを用いる。コントローラの設定は次のようになる。設 定を行っている最中にインタラプト、DMAの動作が起こらないように、設

定を行う前にこれらを禁止(cli(), disable dma())し、設定が終ったら

解除(sti(), enable dma())する[11]。

(25)

Chapter 4.プログラム開発

2. コントローラのフリップフロップをクリア(clear dma ff())

3. バッファメモリの先頭アドレスをセット(set dma add())

4. データのサイズをセット(set dma count())

5. DMAモードをセット(set dma mode())

 camac single

CAMACのシングルアクション処理を行う。ここでの処理は次のようにな

る[2]。

1. CAMACNAFコードをNAFレジスタにセットする。

2. NAFコードのセット完了を待つ。完了はコントロールステイタスレジ

スタのDONE bitにより知らされるので、DONE bitをポーリングに

より監視する。 3. 転送モード(24bitモードか16bit)の設定する。 4. Writeファンクションならばデータをデータレジスタにセットする。 5. コントロールステイタスレジスタのGO bitをセットする。これにより シングルアクションが開始される。 6. シングルアクション動作の完了を待つ。 7. READファンクション ならば、データレジ スタよりデータを 読み込 む。

(26)

4.1. CAMACデバイスドライバ・ライブラリ 4.1.2 CAMACライブラリ CAMACライブラリはデバイスドライバとユーザープログラムとのインター フェースであり、その仕様はこれまでにKEKにおいて、各種コンピュータ用に開 発されているCAMACライブラリ(CAMLIB)と互換性を持つようにした[16]。 そのため、ハードウェアに対する依存性をCAMACライブラリが吸収し、これま で他のコンピュータ上でCAMLIBを使って開発したデータ収集プログラムを PC-UNIX上に移植することができる。PC-UNIX上でサポートするファンクションを 表4.2にまとめた。KEKリスト処理、Kineticリスト処理ついては、今回開発を 行っていない。 Function Contents SETUP

CAMOPN Op en CAMACdevice CAMCLS Close CAMACdevice CGENC Initialize CAMACmo dules CGENZ Clear CAMACmo dules

CSETI Settingthe CAMACdataway inhebit CREMI Resettingthe CAMAC dataway inhibit CSETCR Settingcurrentcrate numb er

Single Action

CAMAC CAMACSingle DataTransfer with 24bit width CAMACW CAMACSingle DataTransfer with 16bit width Block Action

CDMAL CAMACBlo ckData Transfer with 24 bit width CDMAW CAMACBlo ckData Transfer with 16 bit width InterruptHandling

CELAM Enable LAM Interrupt CDLAM Disable LAM Interrupt CWLAM Wait for anLAM Interrupt

(27)

Chapter 4.プログラム開発

ユーザープログラム

データ収集ライブラリ ( CAMLIB )

Device SETUP System Call CAMAC Initialize

Interrupt Handling

CAMAC Block Action (16Bit, 24Bit) CAMAC Single Action(16Bit, 24Bit)

ioperm

Linux Kernel

CAMAC I/O access

デバイスドライバ via ISA Bus

open ioctl read release write IBM PC/CAMAC IF Model 2927 CAMAC Crate Contoller Model 3922 図4.3: CAMACデバイスドライバ・ライブラリ 4.2 ACC

プログラム開発環境

Mo del 3976 CAMAC ACCを動作させるプログラムを開発するための環境は、 KineticSystems社から提供されているが、非常に高価であるため、誰もが気軽に 利用することができない。そこで、誰もが利用することができる開発環境を整備し た。 CAMAC ACCのプログラム開発は、C言語を用いて行うことにした。そのた め、C言語で書かれたソースコードを、ACCが実行できる形式にコンパイルする コンパイラが必要である。そのコンパイラにはGNUプロジェクトによって開発さ れたCコンパイラgccとリンカldを利用する。これらはGNUパブリックライセ ンスにしたがって配布されており、インターネットなどを通じて、誰もが自由に入

(28)

4.2. ACCプログラム開発環境

手することができる。gccとldをM68030プロセッサーのマシン語コードにコン

パイルするクロスコンパイラとして、データ収集を行うホストコンピュータ上にイ

ンストールする。GNUプロジェクトが供給するgcc、ldは非常に移植性が高く、

ほとんどのUNIXにインストールすることが可能であり、Linux、SunOS、

UL-TRIX、HP-UX、IRIX、のUNIX OSでgcc、ldをクロスコンパイラとしてイン

ストールすることができることを確認している。 ACCにデータ収集を行わせるプログラムを作成する際の便宜を図り、ACC用 のデータ収集ライブラリ(ACC CAMLIB)を用意した。このデータ収集ライブラ リもKEKにおいて開発されたCAMLIBと互換性を持っている[16]。また、デー タ転送の処理のみを行うデファイン文によるマクロ定義ファンクションも用意し た。ACC上でサポートするファンクションを表4.3にまとめた。 Function Contents Single Action

CAMAC CAMACSingle DataTransfer with 24bit width CAMACW CAMACSingle DataTransfer with 16bit width InterruptHandling

CELAM Enable LAM Interrupt CDLAM Disable LAM Interrupt CWLAM Wait for anLAM Interrupt Macro Function

CAM WRITE Write aData CAM READ Read a Data CAM CTL Control op eration

表4.3: ACCがサポートするCAMACFunction

ACCのデータ収集プログラムをコンパイルする手順は、まずソースコードを gccを使って、オブジェクトファイルに変換する。次にそのオブジェクトファイル とACC CAMLIBをリンカldをつかって結合し実行ファイル形式に変換する。変 換する際、このようにgcc、リンカldと手順を踏むことにより、単純な形式の実行 ファイルを作成することができる。この実行ファイルをodコマンドを用いてマシ ン語コードで分析してみると、最初はヘッダ部でその後、0(NULL)が並ぶ。そ して、4KByte以降にプログラムの動作が記述されている68030マシン語コードが 並んでいることが分かった。 にはプログラムの動作が記述されている部分の

(29)

Chapter 4.プログラム開発

・Host Computer ・CAMAC

ACC CC ACC Program ACC CAMLIB

gcc Cross Compiler Program Area

Any OS ( Linux, SunOS, etc...) Down Load 図 4.4: CAMACACCプログラム開発環境 みをダウンロードし実行させると良い。そこで、この実行ファイルを読み、プログ ラムの動作が記述されている部分を抜き出し、その部分をCAMACバスを経由し てACCのメモリ上へダウンロードするダウンローダープログラムを開発した。 4.3

データ収集プログラム開発

本システムではACCとcolectorプロセスとで処理を分散してデータ収集を行う ため、これらの間でデータ収集、コミュニケーションがスムースに行われるよう に、ACCのユーザメモリ領域のメモリマップとコミュニケーションレジスタを設 定し、ACCをコントロールするためのACC-UNIDAQライブラリを開発した。 4.3.1 ACCメモリマップ 表4.4に示すように、1MByteの領域があるACCのメモリをコミュニケーショ ンエリア、バッファーエリア、プログラムエリア、スタックエリアの4つに区分 した。コミュニケーションエリアは、ACCとcollectorプロセスとの間の情報交換 の窓口として用いる。バッファーエリアとして512KByteの領域をとり、ここに収

(30)

4.3. データ収集プログラム開発

集したデータを一時保管するためのバッファーを配置する。バッファーはダブル

バッファー構造とした。プログラムエリアとして256KByteの領域をとり、ここに

ACCのプログラムを配置する。スタックエリアは、プログラムがスタック領域と

して用いる。

Area Memory Address

コミュニケーションエリア 0x208000 {0x20FFFF バッファーエリア (512KB) 0x210000 {0x24FFFF (Bu er1) 0x250000 {0x28FFFF (Bu er2) プログラムエリア (256KB) 0x290000 {0x2EFFFF スタックエリア 0x2f0000 { 0x2FFFFF 表4.4: ACCのメモリマップ コミュニケーションエリアには、表4.5に示すように、Control Command、

ACC Status、DAQ Status、Data Semaphoreの4つのコミュニケーションレジ

スタを配置する。これらのレジスタに、ACC、collectorプロセスが取り決められ たステイタス情報を交換することでコミュニケーションをとる。  Control Command レジスタ collectorプロセスがACCを制御するためのコマンドをここに書き込む。 ACCはこのコマンドに従って動作を切替える。  ACC Status レジスタ ACCがcollectorプロセスからのコマンドを受け付けたことを知らせるた めに用いる。collectorプロセスはこのレジスタを読むことで、ACCが正し くコマンドを受け付けたかどうか知ることができる。  DAQ Status レジスタ ACCがcollectorプロセスに対しバッファー読み込み要求を出したときの 状態を知らせるために用いる。このレジスタは2つのバッファそれぞれに設 置している。  Data Semaphore レジスタ バッファーが使用されているかどうかを示すレジスタで、ACCによりセッ トされ、collectorプロセスによりクリアされる。

(31)

Chapter 4.プログラム開発

RegisterName (Memory Address) Value

ControlCommand (0x208000) 1:Resume 2:Pause 3:End

ACCStatus (0x208010) 1:Resume 2:Pause 3:End

DAQStatus on Bu er1,Bu er2 (0x208020, 0x208024) 1:Spill o 2:Bu erfull 3:NoLAM 0:Execution

DataSemaphore onBu er1, Bu er2 (0x208030, 0x208034) 1:Bu er in use 0:Bu erfree

表 4.5: コミュニケーションレジスタの構成 4.3.2 ACC-UNIDAQライブラリ ACCを容易にコントロールするため開発したACC-UNIDAQライブラリの関数 を以下に示す。これら関数を用いてcollectorプロセスのユーザープログラムを作 成しACCをコントロールする。  ACC INT

Syntax: ACC INIT(int n) Description:

ACCのステーションナンバーをライブラリ全体に対して設定し、

ACCをイニシャライズする。

Arguments: n;ACCが配置されているステーションナンバー Rerurn value: success =0

 Enable ACC LAM

Syntax: Enable ACCLAM()

Descliption: ACCのLAMをイネーブルにする。 Arguments:

Return value: success=0  ACC LOAD

Syntax: ACC LOAD(char* lename, long start address) Description:

(32)

4.3. データ収集プログラム開発 lenameで指定されるプログラムをACCのメモリ上へ ダウンロードする。 Arguments: * lename; ACCへダウンロードするプログラム名。 start address; プログラムを配置する場所の先頭アドレス。 Return value: success=0

 ACC START

syntax: ACC START(longstart address)

Description: ACCにダウンロードしたプログラムをスタートさせる。 Arguments: start address; スタートさせるプログラムの先頭アドレス。 Return value: success=0

 ACC WAIT LAM

Syntax: ACC WAIT LAM(long timeout) Description:

timeoutで指定した期間、ACCのLAMを待つ。

指定した期間が過ぎると、LAMが無くてもwakeupする。

Arguments: timeout; タイムアウト期間(単位 sec) Return value: 割り込みあり=0、割り込みなし=timeout  ACC GET BUF

Syntax: ACC GET BUF(int *bu er,long start address,long bu en) Description:

ACCのRAMから、bu enで指定した大きさのデータをブロック転送

によりbu erに取り込む。 Arguments:

*bu er; バッファー。

start address; 取り込むデータの先頭アドレス。 bu en; 取り込むデータの大きさ。

Return value: success=0  ACC READ COMREG

Syntax: ACC READ COMREG (long address, int *retdata) Discreption: コミュニケーションレジスタのデータを読み込む。 Arguments:

(33)

Chapter 4.プログラム開発

*retdata; 読み込まれたデータ Return value: success=0  ACC WRITE COMREG

Syntax: ACC WRITE COMREG(long address,int *data) Discreption: コミュニケーションレジスタへデータを書き込む。 Arguments:

address; コミュニケーションレジスタアドレス *data; 書き込むデータ

Return value: success=0

4.3.3 ACCとUNIDAQプログラム

ACCとUNIDAQのcollectorプロセスのデータ収集プログラムを見て行く。図 4.5にACCとUNIDAQcollectorプロセスのプログラムフローとコミュニケーショ

ンの様子を示す。 collectorプロセスには動作をコントロールするコマンドが設けてあり、そのコマ ンドに対する動作をユーザー各自で実験の用途、測定系に合わせてプログラムする ことができる。コマンドは4つあり、システムの初期化を行わせるb egin、データ 収集を開始させるresume、データ収集を一時停止させるpause、データ収集を終 了させるendコマンドである。ACC側もこれらのコマンドに対応した動作をする ようにプログラムを行った。

b eginコマンドを発行するとcollectorプロセスはまずCAMACクレートの初

期化を行う。その後、ACCプログラムをプログラムエリアにダウンロードし、

ACCを動作させるCAMACファンクションF(25)を発行する。ACCはこれを受

け付けるとプログラムがスタートし、collectorプロセスからのコマンドを待つ状

態になる。

resumeコマンドを発行するとcollectorプロセスはACCに対しデータ収集開始

コマンドを発行する。その後、ACC、collectorプロセスはそれぞれresumeルー

チンを開始する。ACCのresumeルーチンは次にようになる。2つのバッファー のうちデータが書き込める状態にあるバッファーをゲットする。バッファーの状態 はデータセマフォにより判断する。そして、モジュールからデータを収集しバッ ファーに保管していく。バッファーがいっぱいになると、collectorプロセスに対 し割り込みをかけバッファーに保管されているデータを読み出すように要求する。 これと同時にACCはもう一つのバッファーをゲットしデータ収集を続ける。バッ ファーをダブルバッファー構造にしたことで、連続的にデータ収集を続けること

(34)

4.3. データ収集プログラム開発

ができる。collectorプロセスのresumeルーチンは次のようになる。まず、ACC

が割り込みをかけるまでsleep状態で待つ。そして、割り込みがかかるとwaikup

しACC、DAQステイタスを読みACCが正常に動作しているか確認する。正常

であれば、2つのバッファーのうち、データを読み込める状態にあるバッファー からデータをDMAによるブロック転送を使って読み込む。読み込んだデータは NOVAのバッファーへ転送される。これが終了すると再びACCの割り込み信号を 待つ状態に戻り一連の動作を繰り返す。そして、endコマンドが発行されるまで データ収集を続ける。 データ収集はpauseコマンドにより一時停止させることができ、再開するときは resumeコマンドを発行する。 ACCとcollectorプロセスとでデータ収集を進めて行くうえでこのプログラムが

基本となる。ユーザー各自は、その用途にあわせてACC上のDAQroutineの部分

を作成するだけでよい。このDAQ routineの部分もACCCAMLIBを使うことで

(35)

Chapter 4.プログラム開発

end routine Buffer Full DAQ routine

LAM Interrupt

Command, ACC status, DAQ status DATA semaphore

Transfer Data to NOVA LAM Memory Address 0x290000 0x2F0000 0x2FFFFF 0x208000 0x210000 resume routine pause routine

Download ACC Program

ACC starts

Issue resume command

Wait ACC's LAM

Read ACC,DAQ status

Read ACC's Buffer

Issue Pause Command

Read ACC status

Issue End Command

Read ACC status

Close CAMAC Test Command

Get Buffer

Return Test Command

ACC stops

Initialize CAMAC

Buf 1

Return Test Command Buf 2 Communication Area Double Buffer Buffer Area (512KB) Program Area (256KB) Stack Area begin resume pause end

ACC

UNIDAQ (collector)

図 4.5: ACCとUNIDAQ間のデータフロー

(36)

5

システムの性能

本データ収集システムを評価するため、DAQBENCH評価プログラムによるテ スト、CAMACライブラリ関数の処理に要する時間の測定を行った。本章では、 その結果について述べる。 5.1 DAQBENCH 本 デー タ 収 集 シ ス テ ム の ホ ス ト コ ン ピュー タ で あ るPC-UNIXの 性 能 を DAQBENCH[21]と い う ベ ン チ マー ク プ ロ グ ラ ム を 用 い て 評 価 を 行っ た。 DAQBENCHはKEKより提唱 されている ベンチマーク プログラムで、 データ 収集に必要とされるパラメータを設定し、それに基づいてコンピュータを評価す る。評価を行ったパラメータは、コピー性能、プロセス間通信、UNIDAQバッ ファーマネージャのラウンドトリップ時間で、その結果を、表5.1に示す。また比 較のために、現在データ収集システムに用いられているUNIXワークステーショ ンHP743rt、FORCE CPU-5CEのデータも示している。HP743rtのデータは文 献[29]を 参 照し た。 ま た、PC-UNIXとHP743rt、CPU-5CEの 仕 様を 表5.2に 示す。HP743rtはHP社製のVMEボードコンピュータで、OSにはリアルタイ ムOSであるLynxOSをベースとしたHP-RTが使用されており、コンテクスト スイッチ、割り込みに対する処理時間がある一定期間内に終ることを保証してい る。HP743rtを使用したシステムのデータ収集性能は高く評価されている[18]。 CPU05CEはFORCE社製のVMEボー ドコンピュータ で、OSには標準UNIX

であるSunOSが使用されている。

PC-UNIXの性能をここに挙げるUNIXワークステーションと比較してみると、

UNIXワークステーションに対し、全体的にみて優れており、特にmemcpy()、

(37)

Chapter 5.システムの性能

Computer GATEWAY HP743rt CPU-5CE Data Transfer Speed

memcpy() 40 MB/s 29 25 strcpy() 16 MB/s 15 19 for-lo op 40 MB/s 23 19 InterPro cess Communication

ContextSwitch 3.5 sec 10 88 Semaphore 5 sec 10 96

Signal 29sec 29 137

Pip e(overhead) 37MB/s (4 sec) 32 (12) | FIFO(overhead) 38MB/s (4 sec) 32 (12) 11 (79) MessageQue(overhead) 27MB/s (4 sec) 14 (16) 14 (62) So cketINET(overhead) 11 MB/s (13 sec) 33 (30) | So cketUNIXDomain(overhead) 23 MB/s (18 sec) 5(53) | Bu er Manager Round-trip

Collector 242 sec 294 892 Collector+Analyzer 467 sec 698 1943 Collector+2Analyzers 798 sec 1248 3107 Collector+3Analyzers 1164 sec 2064 4358 Collector+CPUConsumerPro cess 395 sec 441 1368 Collector+IOConsumerPro cess 1321 sec 376 8357

表5.1: DAQ Benchによる性能評価

Computer GATEWAY HP743rt CPU-5CE CPU Pentium PA7100LC microSPARC CPU Clock 150MHz 64MHz 85MHz Op erating System Linux 2.0.0 HP-RT2.02 SunOS4.1.2

Main Memory 64MB 32MB 32MB

(38)

5.2. CAMACライブラリの性能 の処理時間が短いことがわかった。コンテクストスイッチは、OSの性能を示す重 要なパラメータでありLinuxの性能がいかに優れているかわかる。また、バッファ マネージャはデータ収集の核であり、この処理がUNIXワークステーションより早 く行われているということは、PC-UNIXがデータ収集システムのホストコンピュー タとして十分に実用になる性能を持っているということを示している。 5.2 CAMAC

ライブラリの性能

データ収集効率に直接関係してくるCAMACライブラリ関数の処理時間を

PC-UNIXとACCそれぞれについて測定した。測定を行ったライブラリ関数は、

CA-MACシングルアクション関数(CAMACW, CAMAC)、CAMACブロックア

クション関数(CDMAW)、CAMACからの割り込み(LAM)を処理する関数

(CWTLAM)である。以下それぞれについて測定方法とその結果を示す。また比

較のためにUNIXワークステーションHP743rt、CPU-5CEを用いたシステムの

データも示す。HP743rtのデータは、文献[29]を参照した。

5.2.1 CAMACシングルアクション

まず、CAMACシングルアクション関数であるが、この関数はファンクショ

ンを発行しCAMACモジュールに対して16bitまたは24bitの幅を持った1つの

データの読み込み(READ)、書き込み(WRITE)、それから、コントロールを

行う。コントロールの際はデータのやり取りは行わない(Non Data Transfer)。

こ れ ら3つ の 処 理 に つ い て 測 定 を 行っ た。 ま た、READ、WRITEは16bit、

24bitモードそれぞれについて測定を行った。 PC-UNIXの測定方法はシングルアクション関数をプログラムループにより5000 回呼び出し、そのループの前後でシステムタイムを取得しその差分から1回の処理 に要した時間を割出す。システムタイムの取得には、gettimeofday()システムラ イブラリ関数を用いた。この関数を用いることによりsec単位で測定することが できる。この方法で10000個のデータを貯めその統計と平均値を解析ツールPAW で求める。 ACCの測定方法は、測定するシングルアクション関数の前後にアウトプットレ ジスタへデータを書き込み、そこから出力される信号をオシロスコープで観測して 行う。ACCは、マクロ定義によるファンクションのデータである。 結 果 を 表5.3に 示 す。 ま た、 デー タ の 統 計 を 図5.1に 示 す。 図5.1で は、 処 理 時間のバラツキを顕著化するため頻度のスケールを スケールとしている。

(39)

Chapter 5.システムの性能

PC-UNIXの シ ン グ ル ア ク ショ ン の 処 理 時 間 は、READ、WRITE共 に16bit

モードで15sec、24bitモードで17sec、NDTは12secであった。ACCは、 24bitモー ド、16bitモー ド 共 にREADで4.6sec、WRITEで2.4secと なっ

た。 こ れ よ り、 シ ン グ ル ア ク ショ ン に よ る デー タ 転 送 能 力 は、PC-UNIXが

READ、WRITE共 に130KB/sec、ACCが、READで430KB/sec、WRITE

で830KB/secとなる。

Computer READ sec WRITE sec NDT sec (16bit / 24bit) (16bit / 24bit)

ACC 4.6 2.4 2.0 PC-UNIX 15/17 15/ 17 12 HP-743rt 22(24bit) 20 (24bit) 15 CPU-5CE 105 / 106 104 / 106 92

表5.3: CAMACシングルアクション関数の性能

PC-UNIX Single Action (READ 16-bit)

1 10 102 103 104 0 5 10 15 20 25 30 ID Entries Mean RMS 100 7000 15.08 0.1056

PC-UNIX Single Action (WRITE 16-bit)

1 10 102 103 104 0 5 10 15 20 25 30 ID Entries Mean RMS 101 7000 15.09 0.8791E-01

PC-UNIX Single Action (Non Data Transfer)

1 10 102 103 104 0 5 10 15 20 25 30 ID Entries Mean RMS 102 7000 12.68 0.8062E-01 図 5.1: PC-UNIX シングルアクションデータの統計

PC-UNIXの16bitモード、24bitモードによるの処理時間の差は、Model 2927

インターフェイスのデータレジスタは16bitであり、16bitモードではでーたの

(40)

5.2. CAMACライブラリの性能

めである。それに対してACCは、データレジスタが32bitであるため、16bit、

24bitのモードによる差はないが、READとWRITEと比較した場合、READは CAMACバスのサイクルを待つ時間が加わるため、約2sec程遅くなる。 PC-UNIXではシングルアクションの動作完了を待っておりCAMACバスのサイクル 時間はここで吸収される。 PC-UNIXの性能は、その性能を高く評価されているHP743rtを凌ぐものであ り、非常に良い結果が得られた。統計データをみてもバラツキはほとんど見られな い。

ACCは直接CAMACバスにアクセスできるため、コンピュータI/Oの時間ロ

スがほとんどない。また、ACCに搭載される68EC030プロセッサは40MHzで 動作しており十分な処理スピードを確保している。そのため、非常に高速なデータ 転送を行うことができ、そのスピードはCAMACバスのサイクルである1secに 迫るものがある。PC-UNIXとの比較して、その処理時間は、READで約3分の 1、WRITEで約5分の1である。 5.2.2 CAMACブロックアクション 次に、CAMACブロックアクション関数であるが、この関数はファンクション を連続的に発行し、任意のブロックサイズでデータの読み込み(READ)、書き 込み(WRITE)を行う。それに伴うデータ転送はDMA機構を用いて行うため、

CPUを消費することなく高速なデータ転送を可能としている。READ、WRITE

それぞれについて測定を行った。

測 定 は、CAMACブ ロッ ク ア ク ショ ン 関 数 を 呼 び 出 し デー タ を100Byte∼

100KByteまで変化させながら転送を行い、呼び出しの前後でシステムタイムを取

得し処理時間を測定する。これを50回繰り返しデータを貯めグラフ上にプロット

する。プロットしたデータから近似直線を求め、これよりオーバヘッドと転送速度

Computer READ KByte/sec WRITEKByte/sec (overhead sec) (overheadsec) PC-UNIX 530 (30) 530 (30)

HP-743rt 920 (95) 850 (95) CPU-5CE 650 ({) 650 ({)

(41)

Chapter 5.システムの性能

を求める。

結 果 を 表5.4に 示 す。 こ の 結 果 は 図5.2に 示 す 近 似 直 線 よ り 求 め た も の で、

PC-UNIXの ブ ロッ ク ア ク ショ ン に よ る 転 送 速 度 は、READ、WRITE共 に 530KByte/sec、またオーバヘッドが約30secである。またその特性は非常にリニ

アであることがわかる。他のUNIXワークステーションの性能と比較すると転送

速度で劣っているが、これはUNIXワークステーションではCAMACインタフェ

イスにVMEバスを介するKyneticSystems社のModel 2917を使用しており、こ

の違いによるものであると考える。また、ACCのデータ収集能力(READ)よ

り、ブロックアクションREADのほうが速いので、ACCの能力を十分に引き出

せることがわかった。

Block Action Speed (READ)

y = 1.9x + 0.03 R2 = 1 0.1 1 10 100 1000 0.1 1 10 100 Data Size [KB] Transfer Time [ms ]

Block Action Speed (WRITE)

y = 1.9x + 0.03 R2 = 1 0.1 1 10 100 1000 0.1 1 10 100 Data Size [KB] Transfer [size ] 図 5.2: CAMACブロックアクションスピード

(42)

5.2. CAMACライブラリの性能 5.2.3 CAMAC割り込み処理 最後に、CAMACからの割り込みを処理する関数であるが、割り込みに対する 応答時間を測定した。 測定は、応答時間を統計的に測るため図5.3のような回路をCAMAC上に組み、 次のような手順のプログラムで行った[19]。また、PC-UNIXについては3つの環 境下で測定を行った。その環境は、1.ネットワークとXウインドウシステムが動 作するごく普通の環境下、2.ディスクに頻繁にアクセスするプロセスを実行しシ ステムにI/O負荷をかけた環境下、3.計算プロセスを実行しシステムにCPU負 荷をかけた環境下である。2.と3.のプロセス実行に用いるプログラムを図5.4に 示す。 CAMAC O I ● ● U N 1MHz S K T T C Clock C 3 R R L A 9 E E O L 2 G G C E 2 IIBBMM PPCC 1● ● K R Compatibles 2● ● 100msec Gate Delay GATE GENERATER START STOP 図5.3: 割り込み応答時間測定のための回路構成 1. スケーラをクリアする。 2. アウトプットレジスタ1にデータを書き込み、割り込み信号パルスを作る。 (このパルスはディレイモジュールで100msec遅らせて、インタラプトレ ジスタ、ゲートジェネレータのスタートに入力される。パルスが入力される と、割り込みが発生し、それと同時にスケーラでカウントが始まる。) 3. インタラプトレジスタからの割り込みを待つ。このとき、PC-UNIXはス リープ状態で待つが、ACCは割り込みを知らせるレジスタをポーリングし ながら待っている。

表 3.1: GATEW AY2000 仕様
表 3.3: UNIDAQ がサポートする UNIX システム  ネットワーク機能 UNIDAQ は、複数のコンピュータシステムを 1 つのデータ収集システムと してサービスする機能を持っている。つまり、あるコンピュータでデータ収 集を行い、取り込んだデータをコンピュータネットワークを通じて他のコン ピュータへ転送し、そこでオンライン解析を行うこともできる。それぞれの コンピュータは、もちろん異なる機種であってもかまわない。 UNIDAQ の 外部仕様は統一されており、コンピュータによる使い勝手の差はほと
図 3.4: 時間の流れに沿ったデータ収集フロー
表 4.1: io ctl 処理 ンクルードファイル( cc.h )に定義している。用意した処理を表 4.1 にまとめ る。 次に、ドライバ内部で用いる関数の処理をみていく。  cc reset() Model 2927 のリセットを行う。  cc interrupt() Model 2927 からのインタラプトをハンドリングする ( wake up interruptible() )。  cc setup dma()
+7

参照

関連したドキュメント

AUTO : 出力先機器の EDID に従います。. DVI :

DVI-D シングルリンク信号エクステンダー DVIDEX-UTPPSV は、安価な CAT5e 以上の UTP LAN ケ ーブルを使用して、DVI-D

現行の HDTV デジタル放送では 4:2:0 が採用されていること、また、 Main 10 プロファイルおよ び Main プロファイルは Y′C′ B C′ R 4:2:0 のみをサポートしていることから、 Y′C′ B

41 の 2―1 法第 4l 条の 2 第 1 項に規定する「貨物管理者」とは、外国貨物又 は輸出しようとする貨物に関する入庫、保管、出庫その他の貨物の管理を自

土壌は、私たちが暮らしている土地(地盤)を形づくっているもので、私たちが

2-2 に示す位置及び大湊側の埋戻土層にて実施するとしていた。図 2-1

2018年 1月10日 2つの割引と修理サービスの特典が付いた「とくとくガス床暖プラン」の受付を開始 2018年