US7266487B1 - Matched instruction set processor systems and method, system, and apparatus to efficiently compile hardware and software designs - Google Patents
Matched instruction set processor systems and method, system, and apparatus to efficiently compile hardware and software designs Download PDFInfo
- Publication number
- US7266487B1 US7266487B1 US10/156,170 US15617002A US7266487B1 US 7266487 B1 US7266487 B1 US 7266487B1 US 15617002 A US15617002 A US 15617002A US 7266487 B1 US7266487 B1 US 7266487B1
- Authority
- US
- United States
- Prior art keywords
- design
- vectors
- mapping
- hardware
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime, expires
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000013461 design Methods 0.000 claims abstract description 210
- 239000013598 vector Substances 0.000 claims abstract description 184
- 238000013507 mapping Methods 0.000 claims abstract description 35
- 238000004891 communication Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 39
- 230000006870 function Effects 0.000 claims description 8
- 239000003292 glue Substances 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 3
- 230000002194 synthesizing effect Effects 0.000 claims 1
- 239000000047 product Substances 0.000 description 32
- 230000003542 behavioural effect Effects 0.000 description 17
- 230000002123 temporal effect Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 239000004065 semiconductor Substances 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 7
- 238000012938 design process Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 239000000470 constituent Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000032258 transport Effects 0.000 description 4
- 239000013589 supplement Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010790 dilution Methods 0.000 description 1
- 239000012895 dilution Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000003094 perturbing effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
Definitions
- This invention relates to matched instruction set processor systems and method, system, and apparatus to efficiently compile hardware and software designs.
- FIG. 1A illustrates two exemplary types of Vectors in accordance with one embodiment of the present invention.
- FIG. 1B shows an exemplary Terminal Structural model expressed in terms of a set of interconnected Functional Vectors in accordance with one embodiment of the present invention
- FIG. 2A is a diagram showing a plurality of exemplary tiers or stages in the Unified Design Methodology (UDM) in accordance with one embodiment of the present invention.
- UDM Unified Design Methodology
- FIG. 2B shows an exemplary template for Functional Elements or Application Components in accordance with one embodiment of the present invention.
- FIG. 2C illustrates the overall approach for the development of the behavioral model in accordance with one embodiment of the present invention.
- FIG. 3A illustrates the overall structure of an exemplary UDM Design Vector in accordance with one embodiment of the present invention.
- FIG. 3B shows an exemplary set of Vector Attributes in accordance with one embodiment of the present invention.
- FIG. 3C shows exemplary variables definitions in accordance with one embodiment of the present invention.
- FIG. 3D shows exemplary Methods of an exemplary UDM Design Vector in accordance with one embodiment of the present invention.
- FIG. 4 illustrates a three-tier component-based system that enables design reuse in accordance with one embodiment of the present invention.
- FIG. 5 shows an exemplary implementation template that can be used to instantiate a CVM in accordance with one embodiment of the present invention.
- FIG. 6 shows an exemplary Tier 3 library of implementation components in accordance with one embodiment of the present invention.
- FIG. 7 illustrates an exemplary realization of mapping of UDM Design Vectors 705 in accordance with one embodiment of the present invention.
- FIG. 8 illustrates various exemplary cases of realization mapping from the default ISA (instruction set architecture) to the target ISA.
- This invention relates to matched instruction set processor systems and method, system, and apparatus to efficiently compile hardware and software designs.
- Virtual Integrated Circuits are generally IC products whereby both of the software as well as the hardware aspects of the product are unified into a seamless architecture.
- Soft Products are generally Virtual Integrated Circuits designed to address a specific application but not targeting a specific hardware technology, platform or semiconductors technology and can be realized into an Application Specific Standard Product (ASSP) or run on a re-configurable hardware Platform.
- ASSP Application Specific Standard Product
- the Virtual IC design method and business model can overcome many of the shortcomings of the “Fabless IC” model.
- the Virtual IC model both of the software as well as the hardware aspects of the product design are unified into a seamless and unified design method.
- the hardware and software design aspects remain unified until the latter stages of the design are reached, thus allowing maximum flexibility to alter the functional allocation and partition between the hardware and the software aspects.
- the design is not committed to a specific hardware architecture, technology or foundry. Rather, the overall product design is verified and validated against the product design requirements then ported to the desired hardware architecture, the preferred technology and target foundry.
- This front-end design process independence prevents the dilution of the product designers' value-added encountered in the Fabless IC model while retaining the flexibility to port the design to any desired hardware architecture, technology or foundry.
- the decoupling of the chip design from the product design frees hardware designers to evolve and eventually replace their designs without perturbing legacy product designs.
- design modularity is an integral attribute of the design and is incorporated at the onset of the design process.
- the design modularity in the Virtual IC model is done in such a way that any single module can be committed to either hardware or software implementation and can be reused from one product realization to another.
- design modularity provisions in the Virtual IC model allows hardware/software partition flexibility as well as reusability.
- the Virtual IC model attains maximum efficiency for Digital Communication products through Portability across hardware platforms and Reusability across digital communication standards.
- Matched Instruction Set Processors are generally processors that can be adapted or reconfigured to support a variety of base instruction sets. These processors can be matched to individual tasks that a communication processor is expected to perform. As a result Matched Instruction Processors are good candidates for implementing communication processors targeted to changing communication applications and standards. As such, Matched Instruction Set Processors support reconfigurable computing architectures, thereby enabling adaptation of hardware resources to perform a specific computation. Reconfigurable computing architectures can provide an alternate paradigm to utilize the available logic resources on the chip. For several classes of applications (including digital communication applications), Matched Instruction Set Processors that support reconfigurable computing architectures could provide power optimization, cost reduction, and enhanced run-time performance.
- Matched Instruction Set Processors are made up of specific hardware and software objects or elements. These processors can be described as multiple parallel-processing pipelines that contain interconnected Functional and Interconnection Vectors, with each of the Application Models corresponding to one or more Vectors.
- each parallel-processing pipeline can contain one or more Functional Vectors and/or Interconnect Vectors.
- a Vector can be generally defined as a portion of a processing pipeline that requires no further parallelism.
- a Functional Vector generally contains design information for one or more functional aspects of the processing pipeline.
- An Interconnect Vector generally contains design information for connectivity characteristics.
- FIG. 1A illustrates two exemplary types of Vectors in accordance with one embodiment of the present invention.
- Vectors are the most basic building blocks with which the terminal architectural model can be constructed.
- two exemplary types of Vectors include Functional Vectors 186 and Interconnect Vectors 184 .
- each Functional Vector 186 can be dedicated to performing a single function of transforming the input variables into the output variables. It should be noted that Functional Vectors 186 could be restricted to receive their input variables from a single Interconnect Vector and deliver their output variables to a single Interconnect Vector.
- Interconnect Vectors 184 can be used to provide the interconnectivity between Functional Vectors 186 .
- Each Interconnect Vector 184 can typically perform the functions required to contain and transport shared and global variables between Functional Vectors 186 . If an Interconnect Vector 184 interconnects two Functional Vectors 186 , variables exchanged between the two Functional Vectors 186 are shared variables. If an interconnect vector transports variables between more than two Functional Vectors 186 , the transported variables are global variables.
- FIG. 1B shows an exemplary Terminal Architectural model 190 that is expressed in terms of a set of interconnected Functional Vectors 192 in accordance with one embodiment of the present invention.
- Interconnect Vectors 194 are used to link or interconnect the Functional Vectors 192 .
- Interconnect Vectors 194 and Functional Vectors 192 represent the lowest level of building blocks that will be used in building the terminal structural model.
- Each Vector is implemented by a Scaled Virtual Machine supporting the required computing capabilities. Examples of computing capabilities or features may include an instruction set, processing throughput requirement, memory requirement, etc.
- a Scaled Virtual Machine generally includes computing capabilities or features that represent a truncation or extension of pre-determined computing capabilities or features of a default virtual machine.
- the Java Virtual Machine is used to implement the default virtual machine.
- capabilities or features of the default virtual machine or the JVM can be extended or truncated to define an instance of the Scaled Virtual Machine that could meet the computing capabilities or features required by the Vector.
- FIG. 2A is a diagram showing a plurality of exemplary tiers or stages 205 , 210 , 215 in the Unified Design Methodology (UDM) 200 in accordance with one embodiment of the present invention.
- the Unified Design Methodology 200 generally includes multiple tiers or stages 205 , 210 , 215 . In each tier or stage 205 , 210 , 215 , a different set of tasks is performed.
- the Unified Design Methodology 200 generally provides an efficient technique to efficiently design and implement Matched Instruction Set Processors applicable to Virtual IC in general and digital communication Virtual IC in specific. Furthermore, the Unified Design Methodology 200 can enable the development of cost-effective digital communication Virtual IC products by incorporating all of the software as well as the hardware design aspects of the product and can be independently realized into a target hardware architecture, platform, or technology.
- the Unified Design Methodology 200 is generally based on a multi-tier or multi-stage approach with each tier or stage 205 , 210 , 215 being supported by a corresponding design library 220 , 225 , 230 .
- the Methodology 200 generally maps system design specifications 235 into hardware and software designs while allowing the incorporation of a preferred hardware specifications and constraints. Allocation or mapping of the system design to hardware and software is performed at the latter stages 240 , 245 of the Methodology 200 . Therefore, the overall system design can be verified before being committed, allocated, or mapped to actual hardware and software platforms.
- the Methodology 200 allows the system design to be substantially independent of hardware platform and semiconductors technology. As a result, the resulting system design and its constituent elements can be realized using any preferred hardware platform and semiconductors technology.
- Behavioral Verification In general, a Behavioral Analysis of the system design flow is performed in Tier 1 205 to ensure compliance with system design specifications 235 . The process of ensuring compliance with system design specifications 235 is called Behavioral Verification.
- system design specifications 235 are analyzed and mapped into one or more Application Components.
- Appropriate pre-existing Application Components can be extracted from an Application Components Library 220 , modified (if required) to be compatible with system design specifications 235 , and incorporated into the system design flow.
- System design requirements, including processing and timing requirements, can also be allocated or mapped to the Application Components.
- Each Application Component generally represents a reusable function commonly used in digital communication systems.
- a Functional Element generally represents a group of related functions, each of which performing specific tasks common to digital communication systems. Accordingly, each Functional Element can be composed of a group of interconnected Application Components.
- FIG. 2B shows an exemplary template 250 for Functional Elements or Application Components in accordance with one embodiment of the present invention.
- Input Data 255 provides data to the Functional Element/Application Component 250 .
- Functional Element/Application Component 250 generally processes the Input Data 255 and generates the Output Data 260 .
- the Functional Element/Application Component 250 could maintain an internal state.
- Output Data 260 generally conveys the data output of the Functional Element/Application Component to another Functional Element or Application Component.
- Input Control 265 generally provides control input to the Functional Element/Application Component 250 .
- the Input Control 265 may include timing information, processing preemption, configuration commands, or other control information.
- Output Control 270 generally provides control output from the Functional Element/Application Component.
- the Output Control 270 may include operational status and other timing information that may be needed by another Functional Element/Application Component.
- Tier 1 205 is generally a Behavioral Model that can be used to verify compliance with system design specifications 235 .
- engineering designers can think in high-level abstraction. It should be noted that no specific assumption is made in Tier 1 205 regarding the allocation of the system design specifications 235 and requirements into hardware and software.
- Application Components residing in the Application Components Library 220 could be defined in a manner that will promote and enable reusability of the modules across various different digital communication standards.
- FIG. 2C illustrates the overall approach for the development of the Behavioral Model.
- System Design Specifications 235 generally provide the requirements input to the Requirement Analysis phase 275 of Tier 1 205 .
- the Application Components Library 220 contains existing Application Components that could be used during the generation of the Behavioral Model 280 .
- the Behavioral Model 280 can be generated using existing Application Components in the Application Components Library 220 and new Application Components identified during the Requirement Analysis phase 275 .
- New Application Components can be saved in the Application Components Library 220 upon completion of the generation of the Behavioral Model 280 for later usage.
- each Application Component has some corresponding Architectural Components residing in the Architectural Components Library 225 . If so, these corresponding Architectural Components are automatically incorporated in Tier 2 210 based on the Application Component generated in Tier 1 205 .
- Application Component generated in Tier 1 205 is a newly defined component
- Architectural Components corresponding to the newly defined Application Component may need to be generated.
- a newly defined Application Component is first decomposed into one or more parallel processing pipelines in order to satisfy system processing and timing requirements.
- Each parallel-processing pipeline can be further decomposed further into one or more Functional and Interconnect Design Vectors.
- a Design Vector can be generally defined as a portion of a processing pipeline that requires no further parallelism.
- a Functional Design Vector generally contains design information for one or more functional aspects of the processing pipeline.
- An Interconnect Design Vector generally contains design information for connectivity characteristics.
- the design of system can be represented by a set of interconnected Functional and Interconnection Design Vectors, with each Application Component generated in Tier 1 corresponding to one or more Design Vectors generated in Tier 2 .
- each Design Vector can then be analyzed to determine computing capabilities or features that are needed to support the Design Vector.
- Examples of computing capabilities or features may include an instruction set, processing throughput requirement, memory requirement, etc.
- the required computing capabilities or features of each Design Vector can then be used to define a Scaled Virtual Machine.
- a Scaled Virtual Machine generally includes computing capabilities or features that represent a truncation or extension of pre-determined computing capabilities or features of a default virtual machine.
- the Java Virtual Machine is used to implement the default virtual machine.
- capabilities or features of the default virtual machine or the JVM can be extended or truncated to define an instance of the Scaled Virtual Machine that could meet the computing capabilities or features required by the Design Vector.
- FIG. 3A illustrates the overall structure of an exemplary UDM Design Vector 300 in accordance with one embodiment of the present invention.
- the exemplary UDM Design Vector 300 can contain Run Method 310 and a definition of the “Matched” execution engine hardware, referred to as a Conjugate Virtual Machine (CVM) 315 .
- CVM Conjugate Virtual Machine
- the UDM Design Vector 300 can be represented as a software module executing on its own virtual (hardware) processor referred to as CVM.
- Header 305 and Trailer 320 contain the binding methods that connect the Design Vector 300 to other Design Vectors.
- Run Method 310 generally contains the behavior of the Design Vector 300 .
- the Run Method 310 can include a Java software module that describes the processing to be performed by the UDM Design Vector 300 .
- Temporal 325 typically contains the invocation method of the Design Vector.
- CVM 315 generally contains the description of the execution engine, which can be the JVM instruction subset that is needed to support the execution of the Run Method 310 .
- the Header 305 generally contains the description of the input variables and the UDM Design Vectors that produce the input variables.
- the Trailer 320 generally contains the description of the output variables and the UDM Design Vectors destined to receive the output variables.
- the UDM Design Vectors 300 use the following types of Header and Trailer variables, including Local Variables, Shared Variables, and Global Variables.
- Local Variables are generally local within an UDM Design Vector.
- Shared Variables are typically shared between two Functional Design Vectors.
- Global Variables can be shared between several Functional Design Vectors.
- Shared Variables and Global Variables can be accessed by multiple Design Vectors, and hence can be used to pass data between Design Vectors.
- Shared Variables and Global Variables are defined in the Header 305 and Trailer 320 of the Design Vector 300 .
- Synchronization of access to Shared & Global Variables is performed data synchronization mechanisms provided by the selected design language. Examples of data synchronization mechanisms can include “wait( )” and “notify( )” methods, as defined by the Java programming language.
- Temporal information 325 contains the invocation information and the maximum allowable response time within which the Design Vector 300 needs to complete its processing.
- Conjugate Virtual Machine (CVM) field 315 generally includes design information describing required computing capabilities or features of the Scaled Virtual Machine that are minimally sufficient to execute the sequence of operations described in the Method field 310 . Later in the Unified Design Methodology 200 (shown in FIG. 2A ), the realization of the Scaled Virtual Machine as described in the CVM field 315 can be committed to either hardware or software depending upon the specified capabilities of a preferred platform 248 (shown in FIG. 2A ).
- the programming language can correspond to the default CVM that is being used. For example, the Java programming language would be used if the default virtual machine were a JVM.
- the CVM describes the hardware that is the matched subset of the JVM instruction set generated by compiling the Design Vector Run Method.
- the design of the system can be decomposed into a collection of interconnected Design Vectors in Tier 2 210 of the Unified Design Methodology 200 to fully capture hardware and software design aspects or features of the system.
- the design information or specification of each interconnected Design Vector can be captured in a UDM Design Vector 200 , as shown in FIG. 3A and described in the text accompanying the figure. Therefore, the collection of Design Vectors may be thought of as a detailed design document that captures hardware and software design aspects or features of the system.
- each of the interconnected Design Vector can be either a Functional Design Vector or an Interconnect Design Vector.
- the design of each Design Vector can be described using any design language.
- the design language can be a programming language based on the object-oriented paradigm.
- An exemplary programming language based on the object-oriented paradigm is Java.
- each UDM Design Vector should include hardware and software aspects or features. Thus, the design description or specification of each UDM Design Vector should be sufficiently complete to enable validation and verification against any design specifications that flows down to Tier 2 210 from Tier 1 205 of the Unified Design Methodology 200 .
- FIGS. 3B , 3 C, and 3 D together show an exemplary UDM Design Vector being implemented as a Java class. It should be noted that Javadoc comments are employed in the figures to further describe the UDM Design Vector.
- the UDM Design Vector could include Class Name (i.e., name of the Java class that implements the exemplary UDM Design Vector), Design Vector Attributes, Variable Definitions, and Methods.
- FIG. 3B shows an exemplary set of Design Vector Attributes 330 , including Vector Name 335 , Vector Type 340 , and Parent Application Syntax 345 .
- Vector Name 335 usually is the same as Class Name.
- Vector Type 340 can be used to indicate whether the vector is a Functional Vector or an Interconnect Vector.
- Parent Application Syntax name 345 is generally the Name of the Parent Vector.
- FIG. 3C shows exemplary variables definitions 350 including Header 355 and Trailer 360 binding information.
- the Header binding information 355 can include definitions of input variables and the name of the source vector generating these input variables.
- the Trailer binding information 360 can include definitions of output variables and the name of the destination vector that will absorb these output variables.
- FIG. 3D shows exemplary Methods 370 of an exemplary UDM Design Vector, including a Vector constructor method 372 , a vectorRun( ) method 374 , a vectorInvocation( ) method 376 , a getHeaderInput( ) method 378 , a sendTrailerOutput( ) method 380 , a run( ) method 382 , and other Java specific methods used to complete the vector—such as initialize( ), wrapup( ), vectorGet( ), vectorSend( ), vectorWait( ), headerDataReady( ), trailerDataReady( ).
- the Vector constructor method 372 is generally called when the vector is first created. When called, the Vector constructor method 372 stores the Vector Attributes 330 (shown in FIG. 3B ) and receives the Header and Trailer binding information 355 , 360 (shown in FIG. 3C ).
- the vectorRun( ) method 374 can generally be invoked to perform the vector function.
- the vectorInvocation( ) method 376 generally contains the invocation and temporal information and waits until these requirements are satisfied.
- the getHeaderInput( ) method 378 can be used to obtain the Header binding information 355 (shown in FIG. 3C ).
- the sendTrailerOutput( ) method 380 can be used to send the trailer variables to the bound vector that consumes the Trailer.
- the run( ) method 382 should exist in each Java thread and should be executed automatically when the Java thread is created.
- the UDM Design Vectors are the most basic building blocks with which the terminal architectural model can be constructed.
- the two exemplary types of UDM vectors include Functional Vectors 186 and Interconnect Vectors 184 .
- each Functional Vector 186 can be dedicated to performing a single function of transforming the input variables into the output variables as described in the run( ) method 182 (shown in FIG. 3D )
- Functional Vectors 186 could be restricted to receive their input variables from a single Interconnect Vector and deliver their output variables to a single Interconnect Vector.
- Interconnect Vectors 184 can be used to provide the interconnectivity between Functional Vectors 186 .
- Each Interconnect Vector 184 can typically perform the functions required to contain and transport shared and global variables between Functional Vectors 186 . If an Interconnect Vector 184 interconnects two Functional Vectors 186 , variables exchanged between the two Functional Vectors 186 are shared variables. If an interconnect vector transports variables between more than two Functional Vectors 186 , the transported variables are global variables.
- FIG. 1B shows an exemplary Terminal Structural model 190 that is expressed in terms of a set of interconnected Functional Vectors 192 in accordance with one embodiment of the present invention.
- Interconnect Vectors 194 are used to link or interconnect the Functional Vectors 192 .
- Interconnect Vectors 194 and Functional Vectors 192 represent the lowest level of building blocks that will be used in building the terminal structural model.
- Design Vectors 300 are generally parsed and analyzed so that system design aspects or features can be mapped into specific hardware and software objects or elements.
- Tier 3 215 the hardware specifications and constraints of the preferred hardware platform can be superimposed on the output of Tier 2 210 to map designs of Vectors into detail designs of hardware and software objects or elements.
- Tier 3 215 is supported by an Implementation Components Library 230 containing detailed design of the Implementation Components that generally includes detailed designs of constituent elements of a Scaled Virtual Machine. Examples of constituent elements of the Scaled Virtual Machine may include instruction set primitives such as adder, multiplier, shifter, etc.
- the Implementation Components of Tier 3 215 can be expressed in the same design language used in Tier 1 205 and Tier 2 210 .
- each Implementation Component can be mapped into specific hardware and software objects or elements in one of the following three ways.
- the Implementation Component can be substituted with an equivalent Component of the preferred hardware platform.
- the Implementation Component can be instantiated as a hardware element.
- the Implementation Component can be emulated using the Component of the preferred platform. Mapping of Implementation Components into one of three aforementioned ways is the general objective of Tier 3 215 .
- a collection of Vectors can be fused or grouped together and executed on one of the processing elements of the preferred hardware platform.
- the Implementation Components of the fused or grouped Vectors can be substituted by the equivalent Implementation Components of the preferred hardware platform or emulated using the Implementation Components of the preferred platform.
- the Temporal or Timing Specification or the instruction set required to support a Vector prohibits direct mapping or emulation of the Vector to the preferred hardware platform, the Scaled Virtual Machine of the Vector would be mapped or allocated to hardware and software elements supplementing the preferred platform.
- each Vector can be mapped or allocated to specific hardware and/or software objects or elements.
- the specifications of the preferred platform together with the description of the supplementary hardware elements will typically describe the system hardware required to run the system software objects or elements.
- FIG. 4 illustrates a three-tier component-based system 400 that enables design reuse in accordance with one embodiment of the present invention.
- the three-tier component-based approach is shown along with the associated engineering skill category at each tier.
- Tier 1 205 engineers or experts 405 in the application (e.g., Wireless LAN, 2G & 3G Wireless Systems, Broadband Cable & xDSL Systems, etc) typically create system-level (product) behavioral models of the specified product by integrating behavioral models using the application components provided in Tier 1 library.
- the application engineer 405 need not be an expert in the internal design aspects of the application components. Rather, the application engineer 405 is an expert in the application (product) itself and the way the application components should be integrated to fulfill the application design requirements.
- the application components architectural models can generally be designed in such a way that they can be mapped, through the Tier 3 realization mapping process, to software executing on either a target platform or dedicated hardware processing nodes. These dedicated hardware processing nodes can be realized using implementation components incorporated in Tier 3 Implementation Components Library.
- ⁇ -level models can be designed in such a way that they can be mapped through a synthesis process to a specified semiconductor process.
- the implementation components can also be designed in such a way that allows them to be mapped into a soft realization utilizing a set of external implementation components. External in this context is meant to refer to implementation components inputted to the UDM flow in Tier 3 415 in the form of a target platform specifications and constraints.
- the mapping of the Design Vectors into one of the design realization alternatives can generally be the essence of the Tier 3 design process. This mapping can be accomplished by analyzing the Design Vectors generated in Tier 2 versus the target platform specifications and constraints. The analysis process generally involves examining various fields of the Design Vectors in order to map the design aspects of each Design Vector to either the target platform, or to dedicated hardware processing nodes that will supplement the target platform.
- a Design Vector can be mapped to execute on one of the processing nodes of the target hardware platform.
- the CVM specifications generated in Tier 2 can be allocated to hardware that will supplement the target platform.
- Tier 3 can be thought of as a two-dimensional compiler that parses the Design Vectors and maps their corresponding design specifications into software and/or hardware realizations.
- Tier 1 205 the application product engineer generally integrates behavioral models of the application components to map the product design specification into product behavioral models that can be verified against the specified requirements.
- the transition from Tier 1 205 (application product realm) to Tier 2 210 (application components realm) can generally be bounded through the use of the most commonly used and essential components of the application field, for example the digital communications field.
- the application component engineer needs to be concerned only with a bounded set of implementation components when designing the application components.
- the bounded set of application components can include components such as demodulators, decoders, interleavers, and multiple-access protocol design components.
- the transition from Tier 2 210 (application components realm) to Tier 3 215 (implementation component realm) can also be bounded.
- Such transition can be generally bounded by the instruction set architecture (ISA) of the default virtual machine, which is used as the bases for creating the architectural models in Tier 2 210 .
- ISA instruction set architecture
- the Tier 3 implementation components can be a realization of the default virtual machine instruction set and the associated micro-architectural elements. The implementation component engineer needs to be concerned only with a finite set of realization components.
- the CVM specifications generated in Tier 2 can be allocated to hardware that will supplement the target platform.
- Tier 3 Realization Mapping would generally yield an instantiation of the CVM based on the characterization provided in the Design Vector CVM hardware definition field.
- the CVM can be instantiated by retrieving the appropriate set of Implementation Components from Tier 3 Library and by using these components to assemble the processing node hardware designs that are compliant with the CVM specifications.
- FIG. 5 shows an exemplary implementation template 500 that can be used to instantiate a CVM in accordance with one embodiment of the present invention.
- a processing node hardware design that is compliant with the CVM specifications can be assembled based on predefined processing node hardware template.
- the template 500 provides the general basis to assemble Implementation Components retrieved from Tier 3 Library to realize the processing node hardware design that complies with the CVM specifications.
- the process of assembling a processing node hardware design that is compliant with the CVM specifications can be a compilation process and as such can be referred to as “Hardware Compilation”.
- the processing node implementation template can generally include three categories of Implementation Components, namely:
- a sequencer 505 that can fetch 510 , decode 515 and execute 520 instructions 525 1 , 525 2 , . . . , 525 N , where “N” is a positive integer;
- Glue elements (such as instruction bus 530 , memory bus 535 , clocks, etc.) that are needed to stitch together the sequencer and the instructions 525 1 , 525 2 , . . . , 525 N .
- the CVM instantiation into hardware processing nodes can be accomplished by a Tier 3 Hardware Realization Compiler as follows:
- FIG. 6 shows an exemplary Tier 3 library 600 of implementation components in accordance with one embodiment of the present invention.
- the implementation components in the Tier 3 library generally consist of the following catalogs:
- An instruction catalog 605 that generally includes synthesizable RTL models of each instruction of the Default Virtual Machine (DVM) ISA (currently we are using the JVM ISA as the DVM ISA);
- a sequencer catalog 610 that generally includes synthesizable RTL models of sequencers incorporating instructions, each capable of fetch, decode, and execute operations;
- a glue elements catalog 615 that generally includes synthesizable RTL models of the glue elements needed to integrate the required subset of instructions together with the most appropriate sequencer
- the output of Tier 3 Realization Mapping can be a Synthesizable RTL model of the instantiated CVM. Similar instantiation of CVMs associated with the Interconnect Design Vectors can result in the hardware and software realizations of the interfaces between an instantiated CVM and the target platform.
- the system specifications can be mapped into synthesizable hardware platform consisting of an interconnected array of hardware processing nodes together with the software required to implement system functionality.
- synthesizable hardware platform consisting of an interconnected array of hardware processing nodes together with the software required to implement system functionality.
- the CVM field of each Design Vector contained in the system architectural model is compiled into synthesizable RTL as described earlier.
- FIG. 7 illustrates an exemplary realization 700 of mapping of UDM Design Vectors 705 in accordance with one embodiment of the present invention.
- Portability can be enabled by allowing the UDM internal implementation components to be mapped in Tier 3 to an external set of implementation components.
- the following text will describe how the portability aspects of the UDM works for porting the UDM Design Vectors 705 to desired external implementation components, collectively referred to as the target platform 710 .
- the application product is designed using the UDM application components, which in turn is designed using the UDM internal set of implementation components.
- the target platform first, one should typically ascertain that the temporal aspects of the Design Vectors to be mapped could be satisfied by the target platform. That is the throughput needs of the Design Vectors to be mapped can be met by the target platform. If the target platform throughput cannot support the application component temporal requirements, then the UDM internal implementation component, specified to operate at the needed throughput, should be used to realize the CVM associated with the Design Vector as described above. However, if the target platform throughput can support the temporal requirements of the Design Vector, then the UDM internal implementation components used in the design of the Design Vector are substituted by the appropriate external implementation components associated with the target platform 710 .
- FIG. 8 illustrates various exemplary cases of realization mapping from the default ISA to the target ISA.
- the realization mapping in Tier 3 can be accomplished through straightforward substitution.
- “One-to-one equivalence” 805 generally means that at a lower performance bound defined by the temporal specification of the UDM internal implementation component, the external implementation component associated with the target platform should have the throughput capability to meet or exceed the temporal specifications of the UDM internal implementation component to be mapped.
- a typical example of the one-to-one matching would be the mapping of the UDM internal implementation components ADD or MULTIPLY to the corresponding implementation components of the target platform.
- the realization mapping in Tier 3 can be accomplished through a soft realization mapping in which the specified capabilities of the of the internal implementation component is realized using a program sequence of a set of external implementation components that are associated with the target platform.
- An example of this case would be if the UDM internal implementation component to be mapped were complex, such as add-compare-select (ACS) that has no one-to-one equivalence in the target platform.
- the Tier 3 realization mapping is accomplished by substituting the UDM ACS implementation component with the appropriate set of target platform instructions.
- the Tier 3 realization mapping can be accomplished through a compilation process through which a set of internal implementation components are grouped together and substituted by the collectively equivalent external implementation component associated with the target platform.
- An example of this case would be if a multiply-and-accumulate (MAC) instruction exists in the target platform ISA but not in the default virtual machine ISA.
- the Tier 3 realization mapping is accomplished by substituting a target platform MAC instruction whenever a multiply and an accumulate implementation components are used consecutively.
- Customer specific components can be handled by the UDM in a similar manner, i.e., viewed as external components.
- the entire design vector, or a group of design vectors may have to be substituted by a customer specific (external) component.
- the customer prefers that we incorporate some of their intellectual property, such as a Viterbi Decoder.
- the group of Tier 2 Design Vectors representing the Viterbi Decoder will be substituted, both hardware and software aspects, by the customer's Viterbi Decoder.
- the externally supplied Viterbi Decoder could satisfy the temporal aspects of the mapped designed vectors, and that the binding aspects of the mapped design vectors are mapped properly.
- the ability of the Ellipsis' UDM to map Tier 2 Design Vectors to either an internal or an external set of implementation components is an important attribute of the UDM because it allows the fully verified design of Tier 2 to be mapped (ported) to any set of external implementation components, whether a target processor or an application specific component.
- Analog and mixed signal components can also be handled by the UDM and can be viewed as internal or external components.
- the Tier 2 models of the application components are viewed as Behavioral Models rather than a Structural Model, i.e., specifying the capabilities of the application component rather than the specific design of that component.
- the design environment used throughout the UDM flow namely Ptolemy II, has the capability to model heterogeneous types of components such as digital, analog, and mixed signal.
- the UDM enables the designer to construct a structural model and to map such a model to an implementation using implementation components compiled in the Tier 3 library.
- this approach does not offer the semiconductor process independence as in the case of the digital component, it does, however, allow the entire system to be specified and be verified at the behavioral level collectively.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
-
- Lack of a unified hardware (HW) and software (SW) design approach, leading to difficulties in verifying the integrated design, and hence incompatibilities across the hardware and software boundary.
- Tendency to define a priori a partitioning of hardware and software, leading to rigid and sub-optimal designs.
- Lack of well-defined design flow, making specification revision difficult and hence impacting time-to-market.
- Lack of built-in techniques within the design process to promote reusability and portability, preventing timely reaction to market trends and leading to the inability to leverage attained market position.
Claims (8)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/156,170 US7266487B1 (en) | 2001-08-29 | 2002-05-28 | Matched instruction set processor systems and method, system, and apparatus to efficiently compile hardware and software designs |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31581101P | 2001-08-29 | 2001-08-29 | |
US10/156,170 US7266487B1 (en) | 2001-08-29 | 2002-05-28 | Matched instruction set processor systems and method, system, and apparatus to efficiently compile hardware and software designs |
Publications (1)
Publication Number | Publication Date |
---|---|
US7266487B1 true US7266487B1 (en) | 2007-09-04 |
Family
ID=38456990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/156,170 Expired - Lifetime US7266487B1 (en) | 2001-08-29 | 2002-05-28 | Matched instruction set processor systems and method, system, and apparatus to efficiently compile hardware and software designs |
Country Status (1)
Country | Link |
---|---|
US (1) | US7266487B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230161718A1 (en) * | 2021-11-19 | 2023-05-25 | Micron Technology, Inc. | Input/output sequencer instruction set processing |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623684A (en) | 1994-05-17 | 1997-04-22 | Commquest Technologies, Inc. | Application specific processor architecture comprising pre-designed reconfigurable application elements interconnected via a bus with high-level statements controlling configuration and data routing |
US5867400A (en) * | 1995-05-17 | 1999-02-02 | International Business Machines Corporation | Application specific processor and design method for same |
US6120549A (en) * | 1997-01-06 | 2000-09-19 | Xilinx, Inc. | Method and apparatus for generating optimized functional macros |
US6216258B1 (en) * | 1998-03-27 | 2001-04-10 | Xilinx, Inc. | FPGA modules parameterized by expressions |
US6226776B1 (en) * | 1997-09-16 | 2001-05-01 | Synetry Corporation | System for converting hardware designs in high-level programming language to hardware implementations |
US6233540B1 (en) * | 1997-03-14 | 2001-05-15 | Interuniversitair Micro-Elektronica Centrum | Design environment and a method for generating an implementable description of a digital system |
US20020100029A1 (en) * | 2000-07-20 | 2002-07-25 | Matt Bowen | System, method and article of manufacture for compiling and invoking C functions in hardware |
US6484304B1 (en) * | 1997-12-01 | 2002-11-19 | Improv Systems, Inc. | Method of generating application specific integrated circuits using a programmable hardware architecture |
US7000213B2 (en) * | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
US7055019B2 (en) * | 2001-02-13 | 2006-05-30 | Ellipsis Digital Systems, Inc. | Matched instruction set processor systems and method, system, and apparatus to efficiently design and implement matched instruction set processor systems by mapping system designs to re-configurable hardware platforms |
-
2002
- 2002-05-28 US US10/156,170 patent/US7266487B1/en not_active Expired - Lifetime
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623684A (en) | 1994-05-17 | 1997-04-22 | Commquest Technologies, Inc. | Application specific processor architecture comprising pre-designed reconfigurable application elements interconnected via a bus with high-level statements controlling configuration and data routing |
US5867400A (en) * | 1995-05-17 | 1999-02-02 | International Business Machines Corporation | Application specific processor and design method for same |
US6120549A (en) * | 1997-01-06 | 2000-09-19 | Xilinx, Inc. | Method and apparatus for generating optimized functional macros |
US6233540B1 (en) * | 1997-03-14 | 2001-05-15 | Interuniversitair Micro-Elektronica Centrum | Design environment and a method for generating an implementable description of a digital system |
US6226776B1 (en) * | 1997-09-16 | 2001-05-01 | Synetry Corporation | System for converting hardware designs in high-level programming language to hardware implementations |
US6484304B1 (en) * | 1997-12-01 | 2002-11-19 | Improv Systems, Inc. | Method of generating application specific integrated circuits using a programmable hardware architecture |
US6216258B1 (en) * | 1998-03-27 | 2001-04-10 | Xilinx, Inc. | FPGA modules parameterized by expressions |
US20020100029A1 (en) * | 2000-07-20 | 2002-07-25 | Matt Bowen | System, method and article of manufacture for compiling and invoking C functions in hardware |
US7000213B2 (en) * | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
US7055019B2 (en) * | 2001-02-13 | 2006-05-30 | Ellipsis Digital Systems, Inc. | Matched instruction set processor systems and method, system, and apparatus to efficiently design and implement matched instruction set processor systems by mapping system designs to re-configurable hardware platforms |
Non-Patent Citations (11)
Title |
---|
Bart Kienhuis et al.; "Compaan: Deriving Process Networks from Matlab for Embedded Signal Processing Architectures", 2000, Proceedings of the Eighth International Workshop on Hardware/Software Codesign. * |
Daniel D. Gajski et al.; "System Design Methodologies: Aiming at the 100 h Design Cycle", 1996, IEEE Transactions on Very Large Scale Integration Systems, vol. 4, No. 1, Mar. 1996. * |
Josef Fleischmann et al.; "Protoyping Networked Embedded Systems", 1999, Computer, Feb. 1999, vol. 32, Issue 2. * |
Kuhn et al.; "Description and Simulation of hardware/software systems with Java", 1999, Proceedings of 36th Design Automation Conference, pp. 790-793. * |
M. Haldar et al.; "Automated synthesis of pipelined designs on FPGAs for signal and image processing applications described in MATLAB", Feb. 2001, Design Automation Conference, Proceedings of the ASP-DAC 2001, Asia and South Pacific, pp. 645-648. * |
M. Haldar et al.; "FPGA hardware synthesis from MATLAB", Jan. 2001, Fourteenth International Conference on VLSI Design, pp. 299-304. * |
Maya Gokhale et al.; "Stream-Oriented FPGA Computing in the Streams-C High Level Language", Apr. 2000, IEEE Symposium on Field Programmable Custom Computing Machines, pp. 49-56. * |
P. Banerjee et al.; "A MATLAB compiler for distributed, heterogeneous, reconfigurable computing systems", Apr. 2000, 2000 IEEE Symposium on Filed Programmable Custom Computing Machines, pp. 39-48. * |
Slomka et al.; "Generating mixed hardware/software systems from SDL specifications", 2001, Proceedings of the Ninth International Symposium on Hardware/Software Codesign, pp. 116-120. * |
Volker Aue et al.; "MATLAB based codesign framework for wireless broadband communication DSPs", Proceedings of 2001 IEEE International Conference on Acoustics, Speech, and Signal Processing, 2001, vol.2, May 2001. * |
Weizheng Wang, "Simulink Communications Toolbox", 1997, The MathWorks, Inc. * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230161718A1 (en) * | 2021-11-19 | 2023-05-25 | Micron Technology, Inc. | Input/output sequencer instruction set processing |
US11853237B2 (en) * | 2021-11-19 | 2023-12-26 | Micron Technology, Inc. | Input/output sequencer instruction set processing |
US20240086344A1 (en) * | 2021-11-19 | 2024-03-14 | Micron Technology, Inc. | Input/output sequencer instruction set processing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5870588A (en) | Design environment and a design method for hardware/software co-design | |
Hsu et al. | Software synthesis from the dataflow interchange format | |
US20040045015A1 (en) | Common interface framework for developing field programmable device based applications independent of target circuit board | |
EP0772140B1 (en) | A design environment and a design method for hardware/software co-design | |
Pimentel | The artemis workbench for system-level performance evaluation of embedded systems | |
EP1065611A2 (en) | A design environment for hardware/software co-design | |
US7055019B2 (en) | Matched instruction set processor systems and method, system, and apparatus to efficiently design and implement matched instruction set processor systems by mapping system designs to re-configurable hardware platforms | |
Matilainen et al. | System-on-Chip deployment with MCAPI abstraction and IP-XACT metadata | |
Stripf et al. | A compilation-and simulation-oriented architecture description language for multicore systems | |
US7266487B1 (en) | Matched instruction set processor systems and method, system, and apparatus to efficiently compile hardware and software designs | |
O'Nils | Specification, synthesis and validation of hardware/software interfaces | |
WO2024026160A1 (en) | Reconfigurable neural engine with extensible instruction set architecture | |
US20020112219A1 (en) | Matched instruction set processor systems and efficient design and implementation methods thereof | |
Quadri | MARTE based model driven design methodology for targeting dynamically reconfigurable FPGA based SoCs | |
US20020116164A1 (en) | Matched instruction set processor systems and efficient design and implementation methods thereof using java programming language | |
Misra et al. | Efficient HW and SW Interface Design for Convolutional Neural Networks Using High-Level Synthesis and TensorFlow | |
Huber et al. | MDA-based development in the DECOS integrated architecture-modeling the hardware platform | |
US20020116166A1 (en) | Matched instruction set processor systems and method, system, and apparatus to efficiently design and implement matched instruction set process systems using interconnected design components | |
Dziri et al. | Combining architecture exploration and a path to implementation to build a complete SoC design flow from system specification to RTL | |
Sahin | A compilation tool for automated mapping of algorithms onto FPGA-based custom computing machines | |
Patterson et al. | Slotless module-based reconfiguration of embedded FPGAs | |
de la Fuente et al. | Synthesis of simulation and implementation code for OpenMAX multimedia heterogeneous systems from UML/MARTE models | |
Schirner et al. | System-level development of embedded software | |
Spivey et al. | A component architecture for FPGA-based, DSP system design | |
Ang et al. | An algorithm for the allocation of functional units from realistic RT component libraries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ELLIPSIS DIGITAL SYSTEMS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EL-GHOROURY, HUSSEIN S.;REEL/FRAME:012949/0334 Effective date: 20020523 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: OSTENDO TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ELLIPSIS DIGITAL SYSTEMS, INC.;REEL/FRAME:020638/0377 Effective date: 20071115 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Expired due to failure to pay maintenance fee |
Effective date: 20190904 |
|
PRDP | Patent reinstated due to the acceptance of a late maintenance fee |
Effective date: 20200722 |
|
FEPP | Fee payment procedure |
Free format text: SURCHARGE, PETITION TO ACCEPT PYMT AFTER EXP, UNINTENTIONAL. (ORIGINAL EVENT CODE: M2558); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Free format text: PETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PMFG); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Free format text: PETITION RELATED TO MAINTENANCE FEES FILED (ORIGINAL EVENT CODE: PMFP); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2553); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Year of fee payment: 12 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |