%
%
% Proceedings of DAQ workshop at RCNP, 06-07, Sep., 1995.
%
%
\documentstyle[12pt,psfig,a4j]{jarticle}
%
\makeatletter
\def\section{\@startsection {section}{1}{\z@}{1.5ex plus 1ex minus
 .2ex}{1.0ex plus .2ex}{\large\bf}}
\makeatother
%
\topmargin = -1.0 cm
\oddsidemargin = -0.5 cm
\evensidemargin = -0.5 cm
\textheight = 24.0 cm
\textwidth = 16.5 cm
\footskip = 1 cm
\pagestyle{empty}
\begin{document}

% Title
\begin{center}
  {\Large KEK--PS�¸�(E248 AIDA)�ǤΥǡ������������ƥ�γ�ȯ} \\
  {\large = HP--RT��Ȥä�UNIDAQ = \\ }
          {\normalsize Development of data acquisition system for KEK--PS 
                       experiment (E248 AIDA) \\ }
          ���� ����(�칩����)���� ˧��(KEK) \\
          {\it tajimay@kekvax.kek.jp, yasu@kekvax.kek.jp \\
               http://kekux1.kek.jp/\~{}tajimay/rcnp\_daq\_ws/}
  
\end{center}
\begin{abstract}
Data acquisition(DAQ) system for KEK--PS AIDA(E248) experiment has been
developed on VME board computers, HP743rt with real-time UNIX and HP743i 
with HP--UX.
The experiment needs fast system response and UNIX compatibility for the DAQ 
system because high speed read-out and easy porting of UNIX based software 
are expected. Thus, HP--RT based on LynxOS has been adopted as the 
real-time UNIX.
KEK standard DAQ software, UNIDAQ, has been ported on the DAQ system. 
Device drivers for VME, CAMAC and TKO systems have been developed for 
CAMAC and TKO systems as the front-end and VME system as the rear-end.
The DAQ performance has been measured by using a DAQ performance 
evaluation tool, DAQBENCH. The result shows that the DAQ system satisfies 
with the requirements of AIDA experiment.
\end{abstract}
\section{�Ϥ����}
  KEK--PS�¸�E248 AIDA���롼�פǤ�
VME�ܡ��ɥ���ԥ塼���ȥꥢ�륿����OS --HP743rt-- ��Ȥä�
�ǡ������������ƥ��KEK����饤�󥰥롼�פȶ�Ʊ�ǳ�ȯ������
���ߤǤ�¿����KEK--PS�¸����롼�פǺ��Ѥ���Ƥ��롣
�����Ǥ�AIDA�¸��Υǡ������������ƥ�γ�ȯ�����ˤĤ�����𤹤롣

\section{AIDA�¸��ȥǡ������������ƥ���׵ᤵ�����ǽ}
 E248 AIDA�¸���$pp\to K^+K^+X$ȿ���Ǥ�Hγ�Ҥ�õ����\cite{AIDA}��
KEK--PS��12GeV���ۻҥӡ���ȱ��ο��ǥ������åȤ�ȿ�������Ȥ���
ȯ������2�Ĥ�K${}^+$γ�Ҥ�2��Υ��ڥ��ȥ��᡼������ޤ���
����missing massʬ�ۤ��H dibaryon��õ������¸��Ǥ��롣
�¸��Υ��åȥ��åפ��\ref{setup}~�ˡ�
�ޤ��¸��ǻ��Ѥ���븡�д�ڤ�channel����ɽ\ref{detector}~�˼�����
AIDA�¸��Υǡ������������ƥ���׵ᤵ������1event������Υǡ����̡�
event rate�Ȥ��KEK--PS�¸��Ȥ��Ƥ���ɸ��Ū�ǡ�
������2kB/event, 500Hz��1MB/s���٤Υǡ����̤Ǥ��롣
KEK--PS�¸�����ħ�ϲ�®�狼��Υӡ���μ��Ф�����
2�ô֥ӡ��ब�Фơ�2�ô֥ӡ��ब�ߤޤ�4�ü����Υ��ԥ빽¤��
���Ƥ��뤳�ȤǤ��롣
���Τ���˥ǡ���������
�ӡ��ब�ФƤ���֤ϥϡ��ɥ������ΥХåե��˥ǡ���������Ƥ�����
�ӡ��ब�ߤޤäƤ���֤˥���ԥ塼�����ɤ߽Ф�����Ͽ�����Ϥ���
����������뤳�Ȥ�¿����

\section{�ϡ��ɥ�����}
����PS�¸��Ǥ��ɤ߽Ф��Ѥβ�ϩ��
CAMAC����TKO system\cite{tko}�˰ܤ���ϴ��Ǥ��뤿��ˡ�
AIDA�Ǥ�MWDC, �����󥿡���ADC�ˤĤ��Ƥ�TKO system��
MWPC, �����󥿡���TDC�ˤ�CAMAC system����Ѥ��Ƥ��롣
TKO system��TRISTAN�¸��Ѥ˳�ȯ���줿system�ǤϤ��뤬��
���Ǥ�PS�¸��Ǥ�ɸ��Ū�˻��Ѥ���Ƥ��ꡢ
�ǹ�8MB/s�Υǡ����ɤ߽Ф�����ǽ�Ǥ��롣
���Ѥ��Ƥ���ϡ��ɥ��������\ref{daq_hard}~�˼�����
���٥�ȥȥꥬ����TKO�Ǥ�VME--SMP, CAMAC�Ǥ�buffer memory\cite{bufmem}��
�����졢���줾��λ��äƤ���Хåե��ؤΥǡ����μ������Ԥ��롣
�ɤ���Υ⥸�塼��⥨�󥳡��ɵ�ǽ�����ꡢ
�ǡ����Τʤ��⥸�塼����ɤ����Ф����Ȥ��Ǥ�
��Ψ���ɤ���������ǽ�ˤʤäƤ��롣
VME--SMP��1MB$\times$2(double buffer)��
buffer memory��16kB�ΥХåե������ꡢ
���줾��ӡ���νФƤ���2�ô֡��ǡ���������³���롣
AIDA�¸��ǤϤ���VME--SMP��5�桢buffer memory��15����Ѥ��뤳�Ȥǡ�
���ԥ�������Υǡ����̤κ����ͤ�2MB��ȯ���������Ǥ⡢
���줾��ΥХåե������դ�ʤ��ͤ˥ǡ�������ʬ���Ƥ��롣

�ӡ��ब�ߤޤä��Ȥ��˥ǡ�����VME--SMP�Ǥ�ľ�ܡ�buffer memory�Ǥ�
Crate controller Kinetic 3922, VME interface Kinetic 2917��𤷤�
VMEbus����ɤ߽Ф���롣
VME--SMP�Ǥϥ֥��å�ž����10MB/s�ʾ塢CAMAC�Ǥ�1MB/s�ǤΥǡ���ž����
��ǽ�Ǥ��롣

\section{HP743�����ƥ�γ�ȯ�Ȥ���ɾ��}
AIDA�¸�Ω���夲���顢KEK--PS�ǤϤ����Ĥ��Υǡ������������ƥब
���Ѥ���Ƥ��������桹���׵�������������ƥब¸�ߤ�����
�����KEK�Υ���饤�󥰥롼�פ⼡�Υǡ������������ƥ�γ�ȯ��
��Ƥ���Ƥ����Τǡ���Ʊ���ƿ������ǡ������������ƥ��ȯ���뤳�Ȥ�
�ʤä���
�ǡ����ɤ߽Ф��ѤΥ���ԥ塼�����Ф��Ƥϰʲ����ͤʾ��Ǹ�Ƥ��Ԥä���
\begin{enumerate}
\item{\bf VME �����ƥ�}\\
     VMEbus��ץ�åȥۡ���ˤ��ƥǡ������������ƥ��ȯ���Ƥ���Τǡ�
     VMEbus����³������뤳��
\item{\bf ������}\\
     �ƥ��ȼ¸������̤ξ��ǹԤ���礬����ΤǱ��¤��ưפǤ��뤳��
\item{\bf ��®��}\\
     �����߱�����CAMAC, VME access���ץ����������ؤ����ץ��������̿���
     �ǡ������������ƥ�ˤ����ƽ��פʥѥ�᡼����®������
\item{\bf �ߴ���}\\
     UNIX���ư��Ƥ���ץ������ΰܿ�����ñ�Ǥ��뤳��
\item{\bf �����}\\
     ��ȯ�Ķ������ѴĶ��λȤ����꤬�褤����
\end{enumerate}
�����ξ�����������ΤȤ��ơ��ϡ��ɥ������ˤϹ�®��CPU������ʤ�
���뤵��Ϥ᤿VME�ܡ��ɥ���ԥ塼����OS�Ȥ��Ƥ�UNIX interface����ä�
real-time UNIX��LynxOS�򥿡����åȤȤ�����
���Ѥ���HP743rt��PA--RISC��Ȥä�VME�ܡ��ɥ���ԥ塼���ǡ�
OS�ˤ�LynxOS��١����˺��줿HP--RT�����Ѥ���Ƥ��롣
����ˡ�VMEbus�ؤΥ��������ˤĤ��Ƥ⡢DMA��master��ǽ�������
BLT, MBLT(VME64)��ǽ�򥵥ݡ��Ȥ��Ƥ��뤿�ᡢ
��®�Υǡ��������β�ǽ�������ԤǤ�����
�����ǡ��桹��KEK�Υ���饤�󥰥롼�פȶ�Ʊ�Ǥ���HP743rt��ǡ�
1) CAMAC, VME device driver�κ���\cite{driver1,driver2}�� 
2) UNIX������ѥǡ������������ƥ�UNIDAQ\cite{UNIDAQ}�ΰܿ�
��Ԥä�\cite{HP-RT}��

�����γ�ȯ������ǴĶ������Τ����͡���UNIX�ǻ��Ѥ���Ƥ���
�ץ������(less, tcsh, Tk/Tcl etc.)�ΰܿ���Ԥä���
HP743rt�ϳ�ȯ�Ķ��ϥ���������ѥ���Ǥ���ʳ���
login���Ƥ���δĶ����ץ������ΰܿ����Ǥ�¾��standard UNIX��Ʊ���˻��ѤǤ���
HP--RT(LynxOS)�Ϥ��Ǥ�UNIX�ΰ�Ĥ�flavor�Ȥ��ƽ�ʬǧ�����Ǥ�����

����˥ǡ������������ƥ�Ȥ��ƺ������ꤷ��HP743rt��ɾ��������
ɾ���ˤϥǡ��������ѥ�᡼����¬�ꤹ��DAQBENCH\cite{DAQBENCH}��
���Ѥ���Ʊ��Υϡ��ɥ�������standard UNIX (HP--UX)��ܤ��Ƥ���
HP743i�Ȥ���Ӥ�Ԥä�\cite{vme_access}����̤�ɽ\ref{rt_vs_i}~�˺ܤ��롣

ɽ\ref{rt_vs_i}~��ߤ�ȡ�HP--UX���Ф��ơ�HP--RT�ϥץ������֤����ؤ���®����
�ץ��������̿��ˤĤ��Ƥ⥪���С��إåɤ���������
�����real-time UNIX����ħ�Ǥ⤢�롣
�ºݤΥǡ������������ƥ�ˤ����Ƥϡ��̿��Υ����С��إåɤ�
�������Ȥ������ȤϽ��פ����ǤȤ����롣
���η�̤�ꡢstandard UNIX����Ӥ���real-time UNIX��
�ǡ������������ƥ���ۤ���Τˤ��Ŭ���Ƥ��뤳�Ȥ���ǧ�Ǥ�����
�����ƺ���γ�ȯ����Ū�Ǥ���AIDA�¸��Υǡ������������ƥ�Ȥ���
��ʬ����ǽ�����ԤǤ��뤳�Ȥ�ʬ���ä���

\section{���եȥ�����}
AIDA�Υǡ������������ƥ�Ǥ�HP743rt��HP743i��
2��Υܡ��ɥ���ԥ塼������Ѥ��ơ�
HP743rt�Ǥ�CAMAC, TKO system����Υǡ����������ơ��פؤε�Ͽ��Ԥ���
HP743i�Ǥϥ���饤��ǡ������ϡ������ƥ����Τ������Ԥ��褦�ˤ�����
���Υ����ƥ�Υǡ�����ή�졢���եȥ������ι������\ref{daq_flow}~�˼�����
AIDA�Υǡ����������եȥ������Υ١�����ʬ��UNIDAQ�Υ١�����ʬ�򤽤Τޤ�
���Ѥ��ƹ�������Ƥ��롣
�ǡ����δ����������buffer manager��NOVA����process���Ф��ƹԤäƤ��롣
collector process�ϥӡ�����߻���VME--SMP, CAMAC���ǡ������ɤ߽Ф���
NOVA���Ϥ���
NOVA�ϼ�����ä��ǡ�����recorder, transfer�γƥץ������˽���褯��
CPU����٤��θ���ƿ���ʬ���Ƥ�����
recorder process�Ǥ�SCSI����³���줿�ơ��ץɥ饤��(DDS2 or DLT)�˵�Ͽ��Ԥ���
transfer process�ϥǡ����򥪥�饤����Ϥ򤹤뤿���HP743i�إǡ�����
socket��Ȥä����äƤ��롣
�ǡ���ž���ˤ�VMEbus��Ȥä�TCP/IP��VME backplane network���Ѥ��Ƥ��ơ�
��3MB/s��ž������ǽ�Ǥ��롣
�ǡ����������HP743i�Ǥ�net\_ana process ��CERN Library��PAW��Ȥä�
�ǡ������ϡ��ҥ��ȥ�����ɽ������ԤäƤ��롣

�ޤ�HP743i��Ǥ����Υǡ��������ץ������������Ԥ��ץ������򸽺�
��ȯ��Ǥ��롣
�ºݤΥǡ����������濴�Υץ�������HP743rt������äƤ��롣
�����Υץ������������ethernet���̤���UNIDAQ��message handling��
���Ѥ��ƹԤ��褦�ˤ��Ƥ��롣
user interface�ϳ�ȯ���ݼ顢�����ñ�ˤ��뤿���Tk/Tcl��١����Ȥ���
GUI�򸽺ߺ������Ƥ��롣

���Υǡ������������ƥ����ħ����٤�¿���ǡ��������ȥ���饤����Ϥ�
2��Υ���ԥ塼����ʬ������������ˤ��δ֤Υǡ�����ή����ϩ�ȡ�
�����Ѥη�ϩ�Ȥ�ʬΥ���뤳�Ȥǡ��ǡ���ž����¾�αƶ����������
���ꤷ�ƹԤ���褦�ˤʤä����ȤǤ��롣

\section {�ޤȤ�}
KEK--PS E248 AIDA�¸��Υǡ������������ƥ��real-time UNIX��
UNIX���ѥǡ������������ƥ�UNIDAQ��Ȥä�HP743rt���濴�˹�����ǡ�
���ߥ١����ˤʤ���ʬ�ϴ��������ƥ��ȼ¸��ˤ�����400byte/event, 100Hz
�ǤΥǡ���������ư��Ƥ��롣
�ޤ�DAQBENCH���Ѥ���ɾ����real-time UNIX��standard UNIX����٤�
�ǡ������������ƥ�ˤ��Ŭ���Ƥ��뤳�ȡ�AIDA�¸��Υǡ������������ƥ�
�ˤ����ƽ�ʬ����ǽ�������뤳�Ȥ���ǧ�Ǥ�����
���ߤ���ʤ�tuning��user interface���γ�ȯ��ʤ�Ƥ��ꡢ
��ǯ�٤���Ϥޤ��ܼ¸��˸����ơ���ǯ����������ƥब��������ͽ��Ǥ��롣


\begin{thebibliography}{99}
\begin{small}
\bibitem{AIDA} KEK Progress Report 94-1, 
             Experiment 248 
             Search for the H particles via the $pp\to K^+K^+X$ reaction,
             Experiments at the KEK 12-GeV PS in 1991--1995, p56.             
\bibitem{tko}T.K.~Ohska et al.,
             TKO Specification.,
             KEK-85-10
\bibitem{bufmem}M.~Ikeno et al.,
             Data Acquisition System with Encoder and Buffer Memory Modules,
             Nucl. Instr. Meth. 225(1984), 347.
\bibitem{driver1}Y.~Yasu and Y.~Tajima,
             DAQ Performance of Real-time UNIX on New HP VME Board,
             KEK Internal 93-11.
\bibitem{driver2}Y.~Yasu et al.,
             VMEbus based computer and Real-time UNIX as infrastructure of DAQ,
             Proceedings of the Computing in High Energy Physics '94,
             San Francisco, USA, April 1994;
             KEK Preprint 94-19.
\bibitem{UNIDAQ}M.~Nomachi et al.,
             UNIDAQ,
             Proceedings of the International Conference Computing in High 
             Energy Physics '94,
             LBL-35822(1994), p.114.
\bibitem{HP-RT} Y.~Yasu and Y.~Tajima,
             Lynx--HP and DAQ--System (in Japanese),
             ʿ��6ǯ��ŷʸ��¬����ȷ׻������渦���Ͽ��
             ��Ωŷʸ�桢���롢December 1994;
             KEK Preprint 94-191.
\bibitem{DAQBENCH}Y.~Yasu and Y.~Tajima,
             Performance Evaluation Tool of DAQ Computer DAQBENCH,
             Proceedings of International Data Acquisition Conference on 
             Event Building and Event Data Readout in Medium and 
             High-Energy Physics Experiments
             Fermilab, Batavia, Illinois, USA, October 1994;
             KEK Preprint 94-137.
\bibitem{vme_access}Y.~Yasu et al.,
             Evaluation of DAQ Performance,
             the Computing in High Energy Physics '95,
             Rio de Janeiro, Brazil, September 1995.
\end{small}
\end{thebibliography}




\begin{table}[h]
\begin{center}
\begin{tabular}{|l|r|l|r||ll|}  \hline
���д�           & ��� &     & channel & \multicolumn{2}{c|}{electronics} \\
                                                          \hline \hline
MWPC             & 1��  &     &  700ch  & CAMAC & MWPC memory \\ \hline
MWDC             & 8��  &     & 3200ch  & TKO   & 32ch TDC    \\ \hline
Counter          & 8��  & ADC &  180ch  & TKO   & 32ch ADC    \\
(TOF, Cerenkov)  &      & TDC &  220ch  & CAMAC &  8ch TDC    \\ \hline
\end{tabular}
\end{center}
\caption{AIDA�ǻ��Ѥ��븡�д�}
\label{detector}
\end{table}

\begin{figure}
  \begin{center}
  \leavevmode\psfig{figure=aida_setup.eps,angle=-90,width=16cm}
  \end{center}
  \caption{E248 AIDA setup}
  \label{setup}

  \begin{minipage}[t]{0.47\linewidth}
    \psfig{figure=daq_hard.eps,width=7.5cm}
    \caption{AIDA DAQ system hardware}
    \label{daq_hard}
  \end{minipage}
\hfill
  \begin{minipage}[t]{0.47\linewidth}
    \psfig{figure=daq_flow.eps,width=7.5cm}
    \caption{AIDA DAQ system software}
    \label{daq_flow}
 \end{minipage}
\end{figure}

\begin{table}
\newcommand{\lsa}[1]{\multicolumn{2}{l|}{\large #1}}
\newcommand{\lsb}[1]{\multicolumn{3}{|c}{\large #1}}
\newcommand{\lsc}[1]{\multicolumn{3}{|c}{#1}}
\newcommand{\lsd}[1]{\multicolumn{3}{r|}{#1}}
\newcommand{\ms}{$\mu$s}
\begin{tabular}{ll|rcr|rcr}
  \lsa{Machine}              & \lsb{HP743rt/64} & \lsb{HP743i/64} \\
  \lsa{OS}                   & \lsb{HP--RT 2.02}   & \lsb{HP--UX 9.05}  \\
  \multicolumn{2}{l|}{Central Processor}&\multicolumn{6}{c}{PA7100LC/64MHz}\\
  \multicolumn{2}{l|}{Main Memory}&\lsc{32MB}    & \lsc{64MB}         \\
                                                                \hline \hline
  \lsa{Data Transfer Speed}  &       & &         &       & &          \\
           & memcpy()        &      \lsd{29MB/s} &       & &  25MB/s  \\
           & strcpy()        &      \lsd{15MB/s} &       & &  15MB/s  \\
           & do-loop         &      \lsd{23MB/s} &       & &  21MB/s  \\
  \hline
  \lsa{Inter-Process Communication}& & &         &      & &         \\
           & Context Switch  & 10\ms & &         & 40\ms& &         \\
           & Semaphore       & 11\ms & &         & 19\ms& &         \\
           & Signal          & 29\ms & &         & 79\ms& &         \\
           & Pipe            & 13\ms &+&  32MB/s & 90\ms&+&   28MB/s\\
           & FIFO            & 13\ms &+&  32MB/s & 90\ms&+&   28MB/s\\
           & Message Que     & 16\ms &+&  14MB/s & 30\ms&+&   28MB/s\\
           & Socket(AF\_UNIX)& 30\ms &+&  32MB/s & \lsc{***1}       \\
  & Socket(INET in localhost)& 54\ms &+&   6MB/s & \lsc{***1}       \\
  \hline
  \lsa{CAMAC Access}         &       & &         &      & &         \\
   single  & NDT             & 15\ms & &         &      & &         \\
           & Read            & 22\ms & &         &      & &         \\
           & Write           & 20\ms & &         &      & &         \\
   block   & Read            & 95\ms &+& 920kB/s &      & &         \\
           & Write           & 95\ms &+& 850kB/s &      & &         \\
  \multicolumn{2}{l|}{Interrupt latency}& 70\ms&&&      & &         \\
  \hline
  \lsa{VME Access}           &       & &         &      & &         \\
   PIO     & Read            &    \lsd{ 4.8MB/s} &      & &         \\
           & Write           &    \lsd{ 5.6MB/s} &      & &         \\
   DMA     & NON-BLT Read    &    \lsd{12.1MB/s} &      & &         \\
   (A32D32)& NON-BLT Write   &    \lsd{15.0MB/s} &      & &         \\
           & BLT Read        &    \lsd{19.2MB/s} &      & &         \\
           & BLT Write       &    \lsd{19.5MB/s} &      & &         \\
   DMA     & MBLT Read       &    \lsd{38.0MB/s} &      & &         \\
   (A32D64)& MBLT Write      &    \lsd{38.0MB/s} &      & &         \\
  \hline
  \lsa{Buffer Manager Round-trip Cycle}&&&         &      & &         \\
           & 1 process       &      \lsd{3240Hz} &      & &   1700Hz\\
           & 2 processes     &      \lsd{1480Hz} &      & &    900Hz\\
           & 3 processes     &      \lsd{ 800Hz} &      & &    600Hz\\
           & 1 process +     &       & &         &      & &         \\
           & other heavy I/O process&\lsd{2840Hz}&      & &    350Hz\\
\end{tabular}
\begin{flushright}  ***1 : not estimated. \end{flushright}
\caption{HP743rt, HP743i �Υǡ��������ѥ�᡼��
(DAQBENCH v0.9��¬��)
}
\label{rt_vs_i}
\end{table}

\end{document}
