changeset 3:8fd7e6fb855f

spell check pdf generated.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 01 Jun 2010 20:22:21 +0900
parents 2e6bb87054bf
children 8a755d853a4f
files db.ind ieee-kono.tex
diffstat 2 files changed, 79 insertions(+), 197 deletions(-) [+]
line wrap: on
line diff
--- a/db.ind	Tue Jun 01 19:48:29 2010 +0900
+++ b/db.ind	Tue Jun 01 20:22:21 2010 +0900
@@ -5,14 +5,14 @@
 -abstract:
 
 To implement scalable services, not only higher software design,
-low level implementation is also important to achive performance
+low level implementation is also important to achieve performance
 and reliability.
 A combination of fine grain task manager and continuation based
 language is good to make Scalable Services on Many core architecture. 
 Code segment is a
 small part of execution code written in a lower language of C.
-Data segements are fragments of memory and these are passed
-amoung code segments and CPU cores.  We discuss the pro and cons
+Data segments are fragments of memory and these are passed
+among code segments and CPU cores.  We discuss the pro and cons
 of our method.
 
 --Tools for implementing Distributed Application
@@ -26,25 +26,25 @@
 Not necessary mentioned SEDA \cite{SEDA2001}, scalable services
 requires highly distributed servers and highly multi-threaded
 program on a server among them. This type of implementation works
-fine in theory, but it heavily depends on low level implementation, such
+fine in theory, but it heavyly depends on low level implementation, such
 as threads, synchronized queues and CAS operations.
 
 We have successfully implemented
 WWW services using Classical tools such as C++, Java, or even C.
 Script Languages such as Perl, PHP or Python are used in front end,
 but in case of heavy duty database side, careful implementation
-is necessary to achive good performance.
+is necessary to achieve good performance.
 
 Now some of the services have more than 10 millions users, 
 load balancing among several WWW front-end and many
-memcached\cite{memcahed04} servers to replicate Database accesses using
+memcached\cite{memcached04} servers to replicate Database accesses using
 classical database such as Oracle, mySQL or Postgress, which
 performs so badly, Internet companies have to 
 create Key Value Store system by themselves, such as BigTable
 \cite{Chang06bigtable:a}
 or Cassandra\cite{cassandra09}. 
 This situation is sometimes discussed in a context
-of ACID vs BASE database scheme \citeP{Brewer:2000:TRD:343477.343502}.
+of ACID vs BASE database scheme \cite{Brewer:2000:TRD:343477.343502}.
 
 Based on our works on Internet programming and Sony PS3
 programming, that is Cell architecture\cite{Cell}, now, 
@@ -58,7 +58,7 @@
 now, so we have to reconsider the situation 
 (Fig. \ref{Data and Code in Internet Service}).
 
-<center><img src="fig/ManyCore.jpg" alt="Data and Code in Internet Service"></center>
+<center><img src="fig/two-side.pdf" alt="Data and Code in Internet Service"></center>
 
 We are working on a combination of Continuation based C\cite{kono08f,cbc-sourceforge}
  and
@@ -71,7 +71,7 @@
 our own memory manager. We can use 6 SPE with 2Tbit/s ring bus in
 PS3 Linux (Fig. \ref{Cell Architecture}).
 
-<center><img src="fig/Cell.jpg" alt="Cell Architecture"></center>
+<center><img src="fig/Cell.pdf" alt="Cell Architecture"></center>
 
 In this paper, first we analyze problems in scalable system. Then
 we introduce new concepts: Code Segment and Data Segment. Code
@@ -88,7 +88,7 @@
 Instead of using direct pointer access,
 data segments are copied among modules and CPU cores, which are carefully
 adopted to the cache or interconnect communication such as DMA.
-All the data segments are hashed in 2^n size memory pool similar to the
+All the data segments are hashed in $2^n$ size memory pool similar to the
 Unix malloc mechanism. This pool is in 64bit address space and
 it makes data segment communication far simpler.
 
@@ -157,7 +157,7 @@
 processing in modules can be executed in a pipelined way.
 In order to implement the pipeline, we assign threads from
 thread pools to each module layer .
-Each thread is interconnected by a sychronized queue, which has
+Each thread is interconnected by a synchronized queue, which has
 certain overheads, but if it is carefully implemented, parallel
 processing hides its costs.
 
@@ -173,8 +173,8 @@
 stages. In case of C++, we have to managing all the queue manually
 because it lacks garbage collection. It is not so easy and requires
 complex memory pools ( or conservative GC ), which is a bug prone
-(Fig.\ref{Layer by Trhead}).
-<center><img src="fig/layer-continuation.pdf" alt="Layer by Trhead"></center>
+(Fig.\ref{Layer by Thread}).
+<center><img src="fig/layer-continuation.pdf" alt="Layer by Thread"></center>
 
 ---Thread Implementation
 
@@ -213,7 +213,7 @@
 cost. In case of Java, to avoid GC penalty, link node is not reused and
 it simply delete old one and create new one. If the new operation is
 shared among threads (unlikely), it requires another CAS, otherwise
-it requires separate memory pool for each therad, which consumes a lot
+it requires separate memory pool for each thread, which consumes a lot
 of memory.
 
 ---Scheduling
@@ -226,7 +226,7 @@
 execution time of tasks.
 
 Sometimes it is better to reduce concurrency and skip these
-synchronization costs. In this case, synchronization of theads
+synchronization costs. In this case, synchronization of threads
 becomes just a cost.
 
 ---Garbage Collection
@@ -286,11 +286,12 @@
 
 CbC Syntax is very simple.
 
-   struct interface1  { DataSegment<Data> *i; };
-   struct interface2  { DataSegment<Data> *o; };
+   struct interface1 { DataSegment<Data> *i;};
+   struct interface2 { DataSegment<Data> *o;};
 
-   __code f(struct interface1 *a) { 
-       struct interface2<Data> *b; b->o=a->i;  
+   __code f(struct interface1 *a,
+	struct interface2 *b) { 
+       b->o=a->i;  
        goto g(b); 
    }
 
@@ -315,21 +316,23 @@
 We also supports full continuation of normal C function using GCC nested function and statement expression. It is implemented some like this in GCC compiler in
 a pseudo code with GCC extensions.
 
-        void (*__return)(int retval_, void *_envp);
-        __return = ({
-          nee_label__ _cbc_exit0;
-            void __return_func(int retval_, void *_envp){
+    void (*__return)(int retval_, void *_envp);
+      __return = ({
+         nee_label__ _cbc_exit0;
+         void __return_func(int retval_, 
+                      void *_envp){
                retval = retval_;
-               goto exit0;
-            }
-            if (0) {
-              _cbc_exit0:
-               return retval;
-            }
-            __return_func;
+              goto exit0;
+         }
+          if (0) {
+             _cbc_exit0:
+              return retval;
+         }
+          __return_func; // return value
         });
 
-        void *__environment = __builtin_frame_pointer();
+        void *__environment = 
+           __builtin_frame_pointer();
 
 We have a environment pointer which is usually the frame pointer, but
 it is not used here, because this is a closure with a hidden environment.
@@ -340,13 +343,14 @@
 
 Anyway this can be used like this.
 
-    int main() {
-	goto f(1, __environment, __return );
-	  ....
-    }
-    __code f(int, void *env, __code (*continuation)(int retval_,void *fp)) {
-            goto (continuation)(-1, env);
-    }
+  int main() {
+    goto f(1, __environment, __return );
+      ....
+  }
+  __code f(int, void *env, 
+    __code (*continuation)(int retval_,void *fp)) {
+ 	goto (continuation)(-1, env);
+  }
 
 In this example, \verb+main+ will return -1. When you want to return to
 the middle of the normal function or code segment, put an extra function
@@ -355,7 +359,7 @@
 
 --Data Segment
 
-We have Open CL like task manager with data segement.
+We have Open CL like task manager with data segment.
 
 Data segment is a set of doubly linked fix size block which also
 hashed by the 64bit address. It has $2^n$ size, so it is allocated
@@ -374,9 +378,9 @@
 
 <center><img src="fig/pipeline.pdf" alt="Pipeline buffered data segment"></center>
 
-Each Core have to have two input segements and two output segments
-to make pipeline correctly. With two extra segements are necessary
-for task array itselves, so we have 6 segments total.
+Each Core have to have two input segments and two output segments
+to make pipeline correctly. With two extra segments are necessary
+for task array it-selves, so we have 6 segments total.
 
 ---Data Segment operations
 
@@ -393,7 +397,8 @@
 
 API can be called from a Task like this, 
 
-    TilePtr tile = smanager->get_segment(tex_addr,g->tileList);
+    Datasegment tile = 
+      smanager->get_segment(addr);
 
 but usually it not visible from the task, because its reading 
 operations were done before its execution and its writing
@@ -415,11 +420,12 @@
 execution.
 
 In following example, \verb+t_exec+ is created, and it has one input
-data segement and one output data segment. It can be executed in
+data segment and one output data segment. It can be executed in
 any SPU (PS3's CPU core), and \verb+t_print+ task have to wait for
 its completion. Finally it is spawned.
 
-    HTask *t_exec = manager->create_task(TASK_EXEC); 
+    HTask *t_exec = 
+       manager->create_task(TASK_EXEC); 
     t_exec->add_input_datasegment(i_data);
     t_exec->add_output_datasegment(o_data);
     t_exec->set_cpu(SPE_ANY); 
@@ -452,14 +458,16 @@
 we know where to execute it. It can be passed to the current
 task.
 
-    _code task_a(next_task, interface input, interface output) {
+    _code task_a(next_task, interface input, 
+           interface output) {
 	.... Task processing
-        goto next_task->code(next_task, next_task->input, next_task->output);
+        goto next_task->code(next_task, 
+          next_task->input, next_task->output);
     }
 
 If we have not task to execute more, we can put mail waiting task in
-the next_task.
-In this way, next_task call address is determined well before the call.
+the \verb+next_task+.
+In this way, \verb+next_task+ call address is determined well before the call.
 
 ---Data segment deallocation timing
 
@@ -539,8 +547,10 @@
 tasks on requests. We can simply writes this using iterator.
 In case of word count in a file, 
 
-    foreach data segment d in ( file ), out in (partial_result) {
-        task_work_count(d,out);
+    foreach data segment d 
+         in ( file ), 
+         out in (partial_result) {
+             task_work_count(d,out);
     }
     task_sum_up(partial_result);
 
--- a/ieee-kono.tex	Tue Jun 01 19:48:29 2010 +0900
+++ b/ieee-kono.tex	Tue Jun 01 20:22:21 2010 +0900
@@ -1,4 +1,3 @@
-
 %% bare_conf.tex
 %% V1.3
 %% 2007/01/11
@@ -127,13 +126,14 @@
 % *** GRAPHICS RELATED PACKAGES ***
 %
 \ifCLASSINFOpdf
-  % \usepackage[pdftex]{graphicx}
+  \usepackage[dvipdfmx]{graphicx}
   % declare the path(s) where your graphic files are
   % \graphicspath{{../pdf/}{../jpeg/}}
   % and their extensions so you won't have to specify these with
   % every instance of \includegraphics
   % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
 \else
+  \usepackage[dvipdfmx]{graphicx}
   % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
   % will default to the driver specified in the system graphics.cfg if no
   % driver is specified.
@@ -352,24 +352,24 @@
 %
 % paper title
 % can use linebreaks \\ within to get better formatting as desired
-\title{Bare Demo of IEEEtran.cls for IEEECS Conferences}
+\title{Programming Scalable Service in Code segment and Data segment}
 
 
 % author names and affiliations
 % use a multiple column layout for up to two different
 % affiliations
 
-\author{\IEEEauthorblockN{Authors Name/s per 1st Affiliation (Author)}
-\IEEEauthorblockA{line 1 (of Affiliation): dept. name of organization\\
-line 2: name of organization, acronyms acceptable\\
-line 3: City, Country\\
-line 4: Email: name@xyz.com}
+\author{\IEEEauthorblockN{Shoji TAMAKI }
+\IEEEauthorblockA{Information Engineering\\
+University of the Ryukyus\\
+Nishihara-cyo 1, Okinawa, 903-01, Japan\\
+Email: shoshi@cr.ie.u-ryukyu.ac.jp}
 \and
-\IEEEauthorblockN{Authors Name/s per 2nd Affiliation (Author)}
-\IEEEauthorblockA{line 1 (of Affiliation): dept. name of organization\\
-line 2: name of organization, acronyms acceptable\\
-line 3: City, Country\\
-line 4: Email: name@xyz.com}
+\IEEEauthorblockN{Shinji KONO}
+\IEEEauthorblockA{Information Engineering\\
+University of the Ryukyus\\
+Nishihara-cyo 1, Okinawa, 903-01, Japan\\
+Email: kono@ie.u-ryukyu.ac.jp}
 }
 
 % conference papers do not typically use \thanks and this command
@@ -408,13 +408,11 @@
 
 
 \begin{abstract}
-The abstract goes here. DO NOT USE SPECIAL CHARACTERS, SYMBOLS, OR MATH IN YOUR TITLE OR ABSTRACT.
-
+\input abstract.tex
 \end{abstract}
 
 \begin{IEEEkeywords}
-component; formatting; style; styling;
-
+scalable; continuation; parallel processing;
 \end{IEEEkeywords}
 
 
@@ -428,126 +426,7 @@
 % creates the second title. It will be ignored for other modes.
 \IEEEpeerreviewmaketitle
 
-
-
-\section{Introduction}
-% no \IEEEPARstart
-This demo file is intended to serve as a ``starter file''
-for IEEE conference papers produced under \LaTeX\ using
-IEEEtran.cls version 1.7 and later.
-
-All manuscripts must be in English. These guidelines include complete descriptions of the fonts, spacing, and related information for producing your proceedings manuscripts. Please follow them and if you have any questions, direct them to the production editor in charge of your proceedings at Conference Publishing Services (CPS): Phone +1 (714) 821-8380 or Fax +1 (714) 761-1784.
-% You must have at least 2 lines in the paragraph with the drop letter
-% (should never be an issue)
-
-\subsection{Subsection Heading Here}
-Subsection text here.
-
-
-\subsubsection{Subsubsection Heading Here}
-Subsubsection text here.
-
-\section{Type style and Fonts}
-Wherever Times is specified, Times Roman or Times New Roman may be used. If neither is available on your system, please use the font closest in appearance to Times. Avoid using bit-mapped fonts if possible. True-Type 1 or Open Type fonts are preferred. Please embed symbol fonts, as well, for math, etc.
-
-
-% An example of a floating figure using the graphicx package.
-% Note that \label must occur AFTER (or within) \caption.
-% For figures, \caption should occur after the \includegraphics.
-% Note that IEEEtran v1.7 and later has special internal code that
-% is designed to preserve the operation of \label within \caption
-% even when the captionsoff option is in effect. However, because
-% of issues like this, it may be the safest practice to put all your
-% \label just after \caption rather than within \caption{}.
-%
-% Reminder: the "draftcls" or "draftclsnofoot", not "draft", class
-% option should be used if it is desired that the figures are to be
-% displayed while in draft mode.
-%
-%\begin{figure}[!t]
-%\centering
-%\includegraphics[width=2.5in]{myfigure}
-% where an .eps filename suffix will be assumed under latex, 
-% and a .pdf suffix will be assumed for pdflatex; or what has been declared
-% via \DeclareGraphicsExtensions.
-%\caption{Simulation Results}
-%\label{fig_sim}
-%\end{figure}
-
-% Note that IEEE typically puts floats only at the top, even when this
-% results in a large percentage of a column being occupied by floats.
-
-
-% An example of a double column floating figure using two subfigures.
-% (The subfig.sty package must be loaded for this to work.)
-% The subfigure \label commands are set within each subfloat command, the
-% \label for the overall figure must come after \caption.
-% \hfil must be used as a separator to get equal spacing.
-% The subfigure.sty package works much the same way, except \subfigure is
-% used instead of \subfloat.
-%
-%\begin{figure*}[!t]
-%\centerline{\subfloat[Case I]\includegraphics[width=2.5in]{subfigcase1}%
-%\label{fig_first_case}}
-%\hfil
-%\subfloat[Case II]{\includegraphics[width=2.5in]{subfigcase2}%
-%\label{fig_second_case}}}
-%\caption{Simulation results}
-%\label{fig_sim}
-%\end{figure*}
-%
-% Note that often IEEE papers with subfigures do not employ subfigure
-% captions (using the optional argument to \subfloat), but instead will
-% reference/describe all of them (a), (b), etc., within the main caption.
-
-
-% An example of a floating table. Note that, for IEEE style tables, the 
-% \caption command should come BEFORE the table. Table text will default to
-% \footnotesize as IEEE normally uses this smaller font for tables.
-% The \label must come after \caption as always.
-%
-%\begin{table}[!t]
-%% increase table row spacing, adjust to taste
-%\renewcommand{\arraystretch}{1.3}
-% if using array.sty, it might be a good idea to tweak the value of
-% \extrarowheight as needed to properly center the text within the cells
-%\caption{An Example of a Table}
-%\label{table_example}
-%\centering
-%% Some packages, such as MDW tools, offer better commands for making tables
-%% than the plain LaTeX2e tabular which is used here.
-%\begin{tabular}{|c||c|}
-%\hline
-%One & Two\\
-%\hline
-%Three & Four\\
-%\hline
-%\end{tabular}
-%\end{table}
-
-
-% Note that IEEE does not put floats in the very first column - or typically
-% anywhere on the first page for that matter. Also, in-text middle ("here")
-% positioning is not used. Most IEEE journals/conferences use top floats
-% exclusively. Note that, LaTeX2e, unlike IEEE journals/conferences, places
-% footnotes above bottom floats. This can be corrected via the \fnbelowfloat
-% command of the stfloats package.
-
-
-
-\section{Conclusion}
-The conclusion goes here. this is more of the conclusion
-
-% conference papers do not normally have an appendix
-
-
-% use section* for acknowledgement
-\section*{Acknowledgment}
-
-
-The authors would like to thank...
-more thanks here
-
+\input{0}
 
 % trigger a \newpage just before the given reference
 % number - used to balance the columns on the last page
@@ -564,20 +443,13 @@
 % http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/
 % The IEEEtran BibTeX style support page is at:
 % http://www.michaelshell.org/tex/ieeetran/bibtex/
-%\bibliographystyle{IEEEtran}
+\bibliographystyle{IEEEtran}
 % argument is your BibTeX string definitions and bibliography database(s)
-%\bibliography{IEEEabrv,../bib/paper}
+\bibliography{ref}
 %
 % <OR> manually copy in the resultant .bbl file
 % set second argument of \begin to the number of references
 % (used to reserve space for the reference number labels box)
-\begin{thebibliography}{1}
-
-\bibitem{IEEEhowto:kopka}
-H.~Kopka and P.~W. Daly, \emph{A Guide to \LaTeX}, 3rd~ed.\hskip 1em plus
-  0.5em minus 0.4em\relax Harlow, England: Addison-Wesley, 1999.
-
-\end{thebibliography}