Virtual Simulation of distributed IP-based designs

3 downloads 121 Views 715KB Size Report
based EDA tool built on a secure client-server architecture .... Section 4 is dedicated to the characterizing feature of Java- .... rent threads, thereby providing.
3.3

Virtual Marcello

Simulation Dalpasso

of distributed Alessandro

DE1 - Universiti di Padova Via Gradenigo, 6/A - 35131 Padova, Italy [email protected]

Bogliolot

designs

Luca Beninit

tDEIS - Universiti di Bologna Viale Risorgimento, 2 - 40136 Bologna, Italy abogliolo,[email protected]

The purpose of this work is to provide a platform that supports the use of IP components provided by third-party vendors over the Internet. The typical transaction between designer (IP-user) and vendor (IP-provider) can be summarized as follows. Before purchasing a component, the IP-user wants to obtain an estimate of the cost (in area, performance, power) of instantiating the component. During preliminary design exploration approximate cost estimates may suffice, and could be obtained from a standard datasheet. As the design is refined, the IP-user may need much more First, she/he may want an abstract accurate information. functional model for testing the functionality of the component within her/his design. Second, she/he may require accurate cost e&mates that cannot be obtained without the (partial) knowledge of both the implementation and the environment of the component. On the IP-provider side, the main issue is intellectual property protection: the provider wants to communicate to the user as much information as possible to facilitate the purchase, but she/he does not want to disclose her/his intellectual property to the IP-user.

Abstract One key issue in design flows based on reuse of third-party intellectual property (IP) components is the need to estimate the impact of component instantiation within complex designs. In this paper we introduce JavaCAD, an internetbased EDA tool built on a secure client-server architecture that enables designers to perform simulation and cost estimation of circuits containing IP components wihout actually purchasing them. At the same time, the tool ensures intellectual property protection for the vendors of IP components, and for the IP-users as well. Moreover, JavaCAD supports negotiation of the amount of information and the accuracy of cost estimates, thereby providing seamless transition between IP evaluation and purchase. 1

IP-based

Introduction

The market for electronic systems is characterized by two fundamental trends. On one side, the level of integration of elementary devices increases exponentially with time, giving designers large amounts of “silicon real estate” to be filled with complex and powerful functional blocks. On the other hand, time-to-market constraints become increasingly tighter and impose faster design cycles. These trends jointly push designers towards higher productivity levels that can be achieved through only innovative design methodologies. One of the most promising avenues for overcoming the productivity crisis in hardware design leverages the reuse of pre-designed functional blocks developed by third-party vendors. For this reason, the design of a large digital system will be increasingly centered on the selection, evaluation and acquisition of intellectual property (IP) components. IP-based design requires communication of valuable information between IP providers and users. Design environments that facilitate communication and data exchange have been studied in the past [17]. More recently, the explosive growth of computer networking and the World-Wide Web has lead to the implementation of several prototypes of networked (or Web-based) EDA tools and tool frameworks [9, 1, 11, 14, 8, 3, 5, 41.

I

I

IP-provider 1

IP-user

JavaCAD backplane (sener)

Figure 1: Client-server environment.

Permission to make digital or hard copies of all OTpart of this work for personal or classmom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. DAC 99. New Orleans, Louisiana 01999 ACM l-58113.W2-9/99/ooo6..$5.00

architecture

of the JavaCAD

design

We have implemented a complete simulation backplane, called JavaCAD, that supports IP evaluation during design specification/exploration and, at the same time, guarantees IP protection for both the user and the provider. The IP-user can instantiate IP components from multiple

50

remote providers and simulate them together with proprietary blocks in a seamless fashion. Moreover, the IP-user can negotiate at simulation setup what type of cost estimators and functional models will be made available by each provider for each component. JavaCAD is fully written in Java and supports hierarchy, multiple levels of abstraction, distributed and parallel simulation. The conceptual architecture of JavaCAD is depicted in Fig. 1. The IP-user specifies a complete design within a JavaCAD client. The design contains IP components from one or more providers. Providers communicate with the client through JavaCAD servers. During a setup phase, user and provider negotiate the type of functional and cost models that will be deployed during simulation. Simulation is then performed and the complexity of the communication between client and servers over the internet is completely hidden by the backplane. In synthesis, JavaCAD performs virtual simulation where one or more components of the design are virtual, because they have not yet been purchased. The paper is outlined as follows: the next Section reviews internet-based EDA tools related to JavaCAD; Section 3 summarizes the main features of the design environment and gives some details about JavaCAD architecture; Section 4 is dedicated to the characterizing feature of JavaCAD, namely, the availability of several cost models for estimating the impact of IP instantiation. Section 5 reports some experiments of JavaCAD usage. Section 6 concludes the work. 2

Previous

3

JavaCAD

Architecture

The JavaCAD backplane is a set of packages written in Java [6], called JavaCAD Foundation Packages (JFP), that must be used by the IP-provider and by the IP-user. Components and designs (i.e., hierarchical collections of interconnected components) are instantiated as sub-classes of basic JFP classes. JFP contains a multi-level event-driven simulator. The choice of the simulation engine was motivated by the generality and flexibility of event-driven simulation, as opposed to more specialized simulation techniques that target high efficiency at the expense of generality. Furthermore, JFP provides full support (based on Java threads) for concurrent simulations of different parts of a design or of different setups for the same design. 3.1

Basic classes

Any design component in JavaCAD is a subclass of the Module class. A Module instance is specialized by: i) a set of methods that are executed when events reach the component (for instance, methods specifying functionality and cost metrics), ii) a set of connections, each one tied to a different Connector. The behavior of the component can be specified at different levels of abstraction: gate and register-transfer level are currently supported in JavaCAD. As detailed later, Modules in a design can be either local or remote. A local Module always runs on the IP-user’s Java Virtual Machine. Remote Modules are sent from an IP-provider to the IPuser through the Internet. Some or even all of the methods of a remote Module run on the JavaCAD server at the IPprovider site. A Connector ties two Modules together, and it performs no other function but Token-passing between Modules. Two Modules can be connected only through a Connector. It is easy to enforce any communication semantics between Modules by means of a custom Connector. For instance, bit-level and word-level Connectors are provided by JavaCAD to handle bit-level and word-level variables, respectively. More complex connectors can be designed to handle abstract design representations. Since Connectors represent point-to-point connections, special Modules are needed to handle multiple fan-out nets and represent net delays. This gives the designer a high degree of flexibility: for instance, custom FanOut modules can provide different delays for the propagation towards different target Connectors. Similarly, custom Modules can be designed to handle an interface between a part of the design that is specified at the gate level, and another part that is described at the register-transfer level.

work

The definition of standard formats for design descriptions such as VHDL and EDIF and the framework initiative [17] were the first important milestones in providing EDA infrastructure for reuse in hardware design. With the growth of networked computing new paradigms emerged for organizing the access to design-specific information [11, 14, 121. The basic idea in these works is that geographically-dispersed design-critical information can be automatically collected and visualized by exploiting the World-Wide Web. Such an idea has been very successful: virtually all major companies in the semiconductor business have Web servers that provide information (data-sheets, application notes, technical documentation, etc.) to designers. Several research groups have envisioned a more radical approach [8, 3, 5, 41. The Internet is exploited not only to share information, but also to actually perform designcritical tasks, such as validation and optimization. In this more aggressive view, a designer is a client in a client-server architecture and he/she can request services from a variety of servers. CAD tool usage is one type of service, as is intellectual property delivery. More recent research initiatives [5, 4] propose advanced client-server architectures to support complex transactions and collaborative, distributed design. JavaCAD is based on a client-server architecture where clients are IP-users and servers are IP-providers. This is the main similarity with previous approaches. The main focus of JavaCAD is on supporting IP-based designs, more than trying to provide a distributed framework for generic EDA transactions. We assume that Java is the hardware specification language. Java-based system specification styles have been studied in [15, 71. These works have assessed the suitability of Java as an abstract hardware-software description language.

Example 1 Consider the RTL design shown in Fig. 2. The designer wants to use proprietary register macros (i.e., the registers are local Modules), and she/he wants to evaluate a high-performance, low-power multiplier architecture sold by an IP-provider. Thus, the multiplier MULT is a remote Module. The figure also shows the simplified pseudocode of the JavaCAD class that describes the circuit. Notice that the instantiation of a remote module is identical to that of any local module, but the name of the prouider server host is given. 3.2

Simulation

and Event

JavaCAD implements gine, where multiple

51

Handling

a general event-driven simulation enevent types are supported. The super-

It is important to notice that remote Modules are not constrained to be fully remote. In most cases, only methods containing IP-related information are implemented as remote.

Example 2 Referring to the example of Fig. 2, the IPprovider can provide a local method (which will run on the IP-user machine) that accurately implements the functionality of the multiplier (functionality can be abstractly expressed by a multiplication operation, without disclosing any intellectual property). On the other hand, a method that generates output events with accurate timing should be implemented as remote, because accurate timing computation requires the analysis of the gate-level structure of the multiplier that cannot be disclosed to the IP-user.

public class Example extends Design { public void design0 throws Exception C ... int width = 16; ... Connector A = new WordConnector(width); Module INA = new RandomPrimaryInput(width, A); Module REGA = new Registercwidth, A, AR); ... Module HULT = new MultFastLP (providerHost, width, AR, BR, 0); ... Circuit c = new Circuit(INA, REGA, . . .) ; Simulator s = new Simulator(c, . ..I. ... s.start();

3.4

class for any eventis the Token, and Tokens are handled (i.e., scheduled and delivered) by a Scheduler. It is possible to instantiate multiple Schedulers and to run them in concurrent threads, thereby providing full support for concurrent simulations running over the same design. During simulation, internal state information for each component is stored in lookup tables addressed by unique identifiers associated with the Schedulers. Notice that Tokens are not used to represent only functional events (i.e., changes of signal values), but they are employed as a general communication method to traverse the design, collect information from modules, set up runtime parameters etc. In other words, Tokens implement a general message-passing engine for design manipulation. Remote

Module

Implementation

The implementation of remote Modules is based on Java Remote Method Invocation (RMI, [13]), an implementation of a CORBA’-like distributed object model for the Java language that retains the semantics of the Java object model, making distributed objects easy to implement and use. The key features of RMI exploited by JavaCAD are: l

creation of local instances of remote classes (Modules) without having their byte-code available (such classes are virtual IP components);

s invocation of methods handling of parameters l

of remote classes, with and return value;

a proper 4

handling of a secure Internet communication channel between the client (the IP-user) and the server (the IP-provider).

’ Common

Object

Request

Broker

and IP Protection

Security is a key issue in JavaCAD, because the tight interaction between clients and servers poses additional problems with respect to traditional Internet-based client-server computing [lS]. In fact, not only the communication between the client and the server must be secured from third-party intrusions, but even the client and the server cannot completely trust each other (for IP-protection goals). Both these problems have been solved in JavaCAD by exploiting RMI features, and through an innovative use of the enhanced security model that comes in Java 2 [lo]. As regards man-in-the-middle intrusions, secure communication between IP-user and provider is completely handled by the RMI protocol, that uses sockets for communication; such sockets are customizable and can be as secure as the client and the server want and agree upon (e.g., SSL, DES, RSA). Security for the IP provider has been implemented in JavaCAD by splitting remote Module specifications in two parts. The IP-protected part of the component specification is located on the IP-provider server as a private class, whose byte-code is never sent to the client. The public part of the component specification is given to the IP-user by the IP-provider and it is used to instantiate the remote component within the design. Such a public part (an RMI stub) handles the invocation of remote methods to be run on the IP-provider server. Finally, protection of the IP of the designer that uses remote components has been implemented in JavaCAD by a careful usage of parameter marshalling in RMI (Object Serialization, [13]). Bounding each Module with Connectors enables the JavaCAD engine to completely inhibit the transmission of sensitive information (the other Modules instantiated in the design as well as their properties and mutual relationships). Since the remote IP-component (a Module itself) needs only information that is available at its own Connectors to perform any possible estimation and simulation, only such information can be transmitted over the RMI channel. In addition, the downloaded public stub classes that make up the package supplied by the IP provider have no special permission when executing in the designer environment, since they are marked as “non trusted” and consequently handled by the Java security manager.

Figure 2: A simple circuit that computes the product of two input words (stored in registers), and an excerpt of its description as a JavaCAD class.

3.3

Security

Estimating

The estimation perform static mance metrics

Architecture

52

cost metrics package of JFP provides the framework to and dynamic estimation of the cost/perforof interest (area, propagation delay, aver-

age power, peak power, I/O activity,...), called Parameters within JavaCAD. The evaluation of the actual value of a parameter is performed by the estimate method of an Estimator. Estimators are characterized by a unique name, an expected accuracy, a cost and an expected CPU time. For a given design component, different estimators can be available to evaluate the same parameter, thus allowing the designer to span the trade-off between accuracy, cost and performance. Moreover, estimators can be either local (running on the designer’s machine) or remote (running on the provider’s machine). This is a key feature of JavaCAD that enables what we call virtual simulation, i.e., the early evaluation of a design composed of not-yet-purchased IP’s, with a degree of accuracy that requires the knowledge of not-yet-disclosed implementation details.

Example

3 Consider, for instance, the multiplier MULT of Fig. 2, and assume that three Estimators are available to evaluate its power consumption: i) a constant estimator (const), ii) a linear regression model (Xn), and iii) gate-level toggle count (tcount). While the first two estimators can be freely released by the provider together with the functional description of the IP, the third one requires the complete knowledge of the gate-level design, that is part of the intellectual property. Hence, the estimate method of the tcount estimator is implemented as a remote method running on the provider’s JavaCAD server. The following table reports sample distinguishing features of the three estimators:

const

1 (%)

1 (%)

1 (USD/patt.)

1 (ms/patt.)

1 25

1 100

I 0

IO

SetupController setup.set(AREA, setup.set(POWER, setup.set(DELAY, setup.apply(c);

If setup requirements cannot be satisfied for some parameter of some component, a warning message is displayed and the default null estimator is associated with the parameter. The choice of using the null estimator (that always returns a null value) as a default has two main reasons: first, it provides a simple way of performing local estimates (this is done by specifying non-null estimators only for the modules of interest), second, it enables the simulation of a design even if no estimators are available for some of its modules. Evaluation is performed during simulation according to a given setup passed to the Simulator constructor at instantiation time: Simulator s = new Simulator(c, setup). Multiple setups can be specified for the same design and multiple simulations can be performed concurrently (on separate threads) with different setups. Inside each Module, the estimators to be used are stored in a hash table whose key is a SetupController. During event-driven simulation, the current setup is always passed to the module with any simulation Token, thus enabling the run-time retrieval of the desired estimators and the automatic invocation of the corresponding evaluate methods.

Example

5 The following code defines two setups for the design of Fig. 2 and associates them with two simulators that run concurrently: SetupController setup1 = new SetupControllerO; SetupController setup2 = new SetupControllerO; setupl.set(POWER, constant); setupl.apply(c); setup2.set(POWER, most-accurate); setup2.apply(c); Simulator sl = new Simulator(c, setupl); Simulator s2 = new Simulator(c, setupa); sl.startO; s2.startO;

Notice that a cost (in USD) is associated with the remote estimator, since the designer has to pay for the usage of provider’s computation resources. The asterisk at the end of the third row of the table represents a flag that tells the designer that an additional (unpredictable) amount of time can be spent in communicating with the remote server across the Internet.

Simulator estimators,

sl

4.1

4.2

provider’s

The

designer’s

standpoint

From a designer’s standpoint, design evaluation consists of two steps: setup and evaluation. During setup, the designer specifies which Parameters have to be evaluated and which Estimators have to be used for each component. This is done by means of a SetupController that has two main methods: set ( ,) , that specifies the criteria for choosing the estimator to be associated with a given parameter, and apply(), that hierarchically applies a setup to a module and to all its sub-modules. If the entire ciruit (i.e., the top module) is specified as the target for the apply method, the same setup criteria are applied to all components.

Example

4 With respect to the example of Fig. 2, the following code specifies a simulation setup that uses for the entire circuit a constant area model, the most accurate power estimator (chosen among the power estimators available for each component) and a constant propagation delay:

setup = new SetupControllerO; constant); most-accurate); constant);

The

performs a power estimate based on constant while s2 performs gate-level toggle count. standpoint

To make an IP component available within the JavaCAD environment, the IP developer has to provide a class for the component and an arbitrary number of classes for its custom estimators. A class for the component is obtained by subclassing the JFP Module class and by specializing the processInputEvent method that implements the functionality of the module. All other methods (taking care of initialization, event handling, setup control, estimator selection and invocation, . ..) are directly inherited from the superclass and do not have to be overridden. Similarly, each estimator is a subclass of the JFP Estimator class, specialized by overriding the evaluate method only. Once the estimators have been developed, they need to be instantiated within the constructor of the IP to become candidate estimators for some of its parameters. The addEstimator method of the Module can be used to this purpose, as described in the following example.

Example

6 We consider the JavaCAD specification of the multiplier of Fig. 5’. We assume that two standard estimators exist, Const and Lin, whose constructors take as parameters the constant value to be returned by the evaluate method and the coefficients of the regression equation, respectively. One further estimator (Tcount) is specified by the IP developer as follows:

public class Tcount public ParamValue /* put here the 3 3

extends Estimator { evaluatec...) ( code of toggle count

The following pseudocode available as power estimators public class MultFastLP(.

MultFastLP . .) {

addEstimator(POWER, addEstimator(POWER, addEstimator(POWER,

1 Design

~1 Multiplier

Module

{

new Const(25.4)); new Lin(10.3, 32.1)); new Tcount 0) ;

processInputEvent(...) the functional description

(s) 1 Real (s) )

II

13 I

15 I

localhost

JavaCAD client and JavaCAD server run on the same host, but client/server communication is performed through RMI and TCP, even though not accessing the network (localhost loopback is used); this environment is useful to assess RMI and JavaCAD performance without taking into account network unpredictable delays;

{ */

3 5

11 CPU

Table 1: The simulations regard 100 random patterns, with a buffer of 5 patterns. The reported time does not take into account the actual time spent for the PPP estimation, that is overwhelming with respect to JavaCAD run time, and can be safely considered constant in all cases. All simulations have been performed on Sun UltraSparc-I running SunOS 5 with JDK 1.2.

3 public Token[] /* put here 3

Remote

I N.A.

*/

specifies which estimators are for the MultFastLP multiplier. extends

Host

1 All Local

JavaCAD client/server communication is performed through the LAN at DEIS, University of Bologna, Italy, with the usual network load in working time;

Case study

JavaCAD client/server communication is performed through the Internet (WAN), between DEIS, University of Bologna, Italy, and DEI, University of Padova, Italy, with the usual network load in working time.

The case study presented here is based on the simple circuit shown in Fig. 2, and some different environments are analyzed: i) all the design components are local (All Local, AL); ii) the whole multiplier is remotely accessed on the IP-provider JavaCAD server (Multiplier Remote, MR); iii) only one method of the multiplier is remotely accessed (Estimator Remote, ER). As regards case ER, the involved method is an accurate power estimation performed with PPP [2], an advanced gate-level power simulator using Verilog-XL as simulation platform. The invocation of PPP has been implemented through a “native” method (exploiting the Java Native Interface, JNI [13]), that links a C library and calls the PPP simulator. Since running the PPP simulator requires the gate-level description of the IP-protected multiplier, such a simulation is performed on the JavaCAD server of the IP-provider: this environment allows the IP-user to access accurate power estimation for the multiplier without having its gate-level description disclosed, and without having the PPP simulator at all, nor licensing it. The same PPP estimation is performed when the whole multiplier is remotely accessed (MR). Power estimation is not performed at each pattern, but the input patterns to the multiplier are buffered (locally, in case ER; remotely, in case MR) and issued to the simulator with a configurable buffer size. Furthermore, gate-level simulations are not blocking, i.e., they are performed on a new thread. Buffering is helpful in amortizing the time spent in RMI calls and parameter passing. Non-blocking simulation contributes to hiding the latency that would be caused by long runs of the accurate gate-level simulator. Table 1 reports the CPU and real time of performing the simulation of 100 random input patterns to the circuit in some different cases. In particular, the remote cases (MR and ER) have been simulated in different network environments, namely:

As a comment to the most relevant results, it should be noticed that the impact of using RMI to access a module having only one remote method is almost negligible, while using RMI to access a wholly-remote module adds a relevant overhead to the CPU time, mainly because of argument marshalling/unmarshalling that happens at each event handling, and all events having the module as their target are sent to the module itself. As exuected. the client CPU time is not affected bv the server being local, on the LAN or on the Internet: of course, the actual time elapsed from the begin to the end of the simulation strongly depends on network delays (see the real time between Bologna and Padova). The real time for MR in the localhost configuration is unexpectedly higher then the corresponding time over LAN because the only machine used in the experiment (in the localhost case) is more heavily loaded when both the JavaCAD client and the JavaCAD server run on it. The impact of buffer size on simulation speed is shown in Fig. 3. The purpose of the experiment was to estimate the RMI overhead caused by calling the remote power estimation method and passing input pattern data. To do this we disabled the call to the PPP simulator in the power estimator. The run time increase is therefore only caused by RMI overhead and not by power simulation. The plot clearly shows that a large pattern buffer is very helpful in amortizing RMI overhead. Both wall-clock execution time and CPU time decrease with increasing buffer size, even though diminishing returns are obtained with buffer size larger than 50% (communication setup overhead becomes small compared to the time required to send data). In summary, buffering is I

54

I

A. Khetawat, F. Brglez and K. Kozminski. Executable workflows: a paradigm for collaborative design on the Internet. Proc. of the Design Automation Conference, pages 553-558, 1997.

[51 H. Lavana,

[‘31J.

Gosling,

Specification.

B. Joy and G. Steele. The Java Addison-Wesley, 1996.

PI J.

Young et al. Design and specification ded systems in Java using successive, formal

Proc. of the Design Automation 75, 1998.

181L. Benini,

A. Bogliolo tool integration:

EDA

130

0

10

20

30

40 Buffering

50 60 vs. patterns(%)

70

80

90

191L.

Geppert.

IC Design

of embedrefinement.

Conference, pages 70-

and G. De Micheli. the PPP paradigm.

International Conference on Computer 448-453, 1996.

I 100

Language

on the World

Distributed

Proc. of the Design, pages

Wide

Web.

IEEE

Spectrum, June 1998.

Figure 3: Pattern buffer size vs. CPU time and wallclock time. The simulations have been performed in case ER/WAN of Table 1.

PO1L.

Gong. The Java Security Addison-Wesley, announced.

WI

D21M.

Wesley,

language

[16] S. Hauck

and S. Knoll.

Data

[17] T. J. Barnes et al. Electronic Academic Publishers, 1992.

-

Proc. of the Design Conference, pages 27-32, 1996.

[a] F. Chan, M. Spiller and R. Newton. WELD - An environment for Web-based electronic design. Proc. of the

Design Automation

the

Network.

on Computer-

Almanac.

Addison-

Java as a specification systems. Proc. of the

security

Proc. of the Design Automation pages 788-793, 1998.

473-488, 1997.

Automation

and K. Olukotun. for hardware-software

CAD.

Conference,

exploration

and

International Conference on Computer-Aided pages 690-697, 1997.

[2] A. Bogliolo, L. Benini, D. De Micheli and B. Riccb. Power and Current Estimation of Cell-Based CMOS Circuits. IEEE Transactions on VLSI Systems, pages power

EDA

1998.

1151 R. Helaihel

and R. Camposano. Tool integration and using generated graph-based design repre-

[3] D. Lidsky and J. Rabaey. Early a World Wide Web application.

R. Newton.

of code1141 P. G. Ploger et al. WWW Based structuring signs. Proc. of the International Symposium on System Synthesis, pages 138-143, 1995.

References

sentation. Proc. of the Design Automation pages 94-99, 1995.

and

The Java Developers

1131 P. Chan.

The success of design paradigms based on reuse of IP components critically depends on the availability of early estimates of component cost (in terms of area, power, performance). We have described an innovative approach to IP component cost estimation that enables detailed analyses even before components are purchased. Designers can instantiate components provided by remote IP-providers, and test them within their designs, specifying the desired level of estimation accuracy. IP-providers have complete freedom in the choice of the type and amount of information that they want to make available to designers: cost estimation that could imply intellectual property disclosure can be performed on the provider’s server in a secure fashion. Our simulation backplane, called JavaCAD, supports IP-based design flows by hiding the complexity of secure communication between IP-users and providers.

A. Bedenfeld construction

Spiller

Proc. of the International Conference Aided Design, pages 470-475, 1997.

Conclusions

[I]

M. J. Silva and R. H. Katz. The case for design using the World Wide Web. Proc. of the Design Automation

Conference, pages 579-585, 1995.

helpful, but it is not convenient to arbitrarily increase buffer size because this would imply increased memory usage with almost no speed-up.

6

Model and Architecture.

Conference, pages 146-151, 1998.

55

Design,

for Web-based

Conference,

CAD frametaorks.

Kluwer

Suggest Documents