Software Infrastructure and Tools for the TRIPS Prototype

Total Page:16

File Type:pdf, Size:1020Kb

Software Infrastructure and Tools for the TRIPS Prototype Software Infrastructure and Tools for the TRIPS Prototype Bill Yoder Jim Burrill Robert McDonald Kevin Bush KatherineCoons MarkGebhart SibiGovindan BertrandMaher Ramadas Nagarajan Behnam Robatmili Karthikeyan Sankaralingam SadiaSharif AaronSmith DougBurger StephenW.Keckler KathrynS.McKinley Computer Architecture and Technology Laboratory Department of Computer Sciences The University of Texas at Austin [email protected] - www.cs.utexas.edu/users/cart/trips ABSTRACT between the motherboard and chips. A key theme of software development has been to adapt The TRIPS hardware prototype is the first instantiation of an Explicit off-the-shelf solutions when possible and to create homegrown Data Graph Execution (EDGE) architecture. Building the compiler, solutions when necessary. toolset, and system software for the prototype required supporting the The remainder of this paper is organized as follows. Sec- system’s unique dataflow construction, its banked register and memory tion 2 discusses the TRIPS language toolchain and the ap- configurations, and its novel Instruction Set Architecture. In particu- proach we used to implement a full-featured software devel- lar, the TRIPS ISA includes (i) a block atomic execution model, (ii) ex- opment kit. Section 3 discusses several of the TRIPS software plicit mappings of instructions to execution units, and (iii) predicated simulators, enabling us to prove out a number of design ideas instructions which may or may not fire, depending on the outcome during every stage of development. Section 4 discusses the of preceding instructions. Our primary goal has been to construct TRIPS operating environment, with its use of a host-based re- tools to consume standard C and Fortran source code and generate source manager to download, execute, and control TRIPS bi- binaries both for the TRIPS software simulators and hardware proto- naries on the target processors. Section 5 covers the TRIPS type. A secondary goal has been to build the software infrastructure on build, integration, and testing processes. Section 6 describes standard platforms using standard tools. These goals have been met the availability of the tools and simulators for the TRIPS pro- through a combination of off-the-shelf and custom tools. We present totype. a number of design issues and their resolution in enabling end users to exercise the prototype ISA using familiar tools and programming interfaces. Finally, we offer download instructions for those who wish 2 LANGUAGE TOOLCHAIN to test-drive the TRIPS tools. The TRIPS toolchain is responsible for consuming source files written in ANSI C, a subset of GNU C, and Fortran 77; apply- 1 INTRODUCTION ing both classic and novel optimizations to the control flow structures; and generating binary objects that can be linked The development of the TRIPS processor has required build- with standard math and C runtime libraries. Support for ing a large software infrastructure and set of tools (or ttools), C++ and Fortran 90 applications has thus far not been judged including functional and timing simulators; an assembler, critical. Toolchain construction has been guided by a well- linker, and binary utilities; a high-level language compiler and designed set of components or links, each with clearly spec- instruction scheduler; a set of optimized and unoptimized run- ified syntactical and calling conventions. Figure 1 shows the time libraries; a resource manager to coordinate and control various components of the toolchain. system resources; and a variety of build and test utilities. To manage the complexity of compiler development, we 2.1 Architectural Constraints implemented major components using well-defined interfaces, a variety of Open Source products, and modular construction. The TRIPS architecture has several features that require un- To create a runtime system in a timely fashion with modest usual support in the software toolchain. The ISA defines a resources, we limited the feature set of the operating environ- block atomic execution model, in which program functions ment, put the bulk of command and control on a stock desktop are subdivided into variable-size blocks of up to 128 instruc- Host PC running x86/Linux, used off-the-shelf software and tions [1]. When fetched, each block is mapped onto a row development tools for the motherboard, and defined simple but of architectural registers and a grid of execution units. Each powerful protocols between the Host PC and motherboard and TRIPS block comprises a header chunk and one to four in- All stack items are aligned on high virtual memory 8-byte boundaries. environment = 0xFFFFFFFF and argv strings argument save area return address =0 sp of _start() back chain pointer=0 register save area local variable area Stack grows down. argument save area return address Fixed size sp of main() back chain pointer link area of main() register save area local variable area argument save area return address link area of func() sp of func() back chain pointer Figure 1: Toolchain links. register save area local variable area return address link area of leaf() struction chunks. Register read and write instructions are em- sp of leaf() back chain pointer bedded in the header chunk, in addition to fields for magic unused stack area number, block type information, and processor control flags. Application bss The ISA places strict limits on the number of instructions in a and data area block, on the number of register reads and writes, and on the low memory combined number of load/store instructions. Loader places data beginning at 0x80000000. Optimally mapping instructions on the grid is critical, due Figure 2: Application memory organization. to the TRIPS dataflow execution model, in which each execu- tion node fires when its operands arrive. Cycle counts depend not only on opcode cycles but on operand arrival times, them- selves determined by feeds from banked architectural regis- ters, a routing operand network (OPN), and a banked L1 data ¯ A common set of application programming interfaces cache. that can be used by other tools, such as the simulators Despite such contraints, numerous features have made the and debugger. prototype easier to program, including regular and clearly de- We chose to support a simple version of the Executable Link- fined instruction formats; a global 40-bit address space, which ing Format (ELF) to output a small number of string tables and enables software to access any chip register or memory lo- text, data, and bss program sections. Figure 2 shows how the cation through its unique address; and a uniform processor linker lays out application data in virtual memory. The figure exception model, in which all processor exceptions occur at also reflects the simple but effective calling convention of the block boundaries and present a consistent interface to the soft- TRIPS Application Binary Interface (ABI) [9]. One simpli- ware. fication that made binutils development easier was dropping Throughout toolchain development, we relied on a ro- support for shared libraries–all TRIPS executables are stati- bust functional simulator, an accurate timing simulator, and cally linked, which dramatically simplifies installing, version- a sophisticated set of performance tools to analyze execution ing, and debugging toolchain components and applications. traces, to visualize instruction placement, and to pinpoint crit- The utility front ends are largely platform independent. For ical paths and execution bottlenecks. example, once we specified the TRIPS data types, such as 64- bit pointers, longs, and doubles and 32-bit integers and floats, 2.2 Binary Utilities the GNU utilities transparently provided support for allocating and accessing TRIPS scalar variables. The assembler, linker, and other utilities, such as nm, obj- However, to support the prototype ISA and high-level com- dump, and ar, are ports of the GNU binary utilities (binutils), piler. the TRIPS-specific back ends required a significant port- available from the Free Software Foundation [4]. ing effort. Descriptions of major customizations follow. A number of benefits have accrued from the decision to use the binutils package: 2.2.1 Block-oriented rather than line-oriented ¯ A leveraged and rich set of functionality based on a ma- assembly ture codebase. The GNU front end assumes that each line of a source file ¯ A large installed user base and an active, experienced translates into one instruction word. Once the TRIPS Assem- development community. bly Language (TASL) had been defined, encoding the individ- ual 32-bit instructions proved straightforward, simply requir- To save instruction count (4 vs. 2 constant instructions), ing the tas assembler to parse and translate the source file a the compiler emits CALLO and BRO instructions for all jump line at a time [14]. targets. Because the offset field specifies 128-byte chunks and ¾7 However, to support the TRIPS block-atomic model, TASL supports a 20-bit offset, any target within a ¾ byte-spread is syntax groups instructions and register reads and writes into reachable. blocks, demarcated with “block begin” (.bbegin) and “block However, for very large applications the 20-bit offset field end” (.bend) directives for that block. The tas assembler can be insufficient. In such cases, the linker must detect the therefore tracks the individual statements after the opening shortfall, “relax” the current code section, and insert a tram- .bbegin directive and enters them into a memory structure rep- poline above the current block which fully specifies the abso- resenting the execution grid and architectural registers. When lute target address with a fabricated BR instruction. The orig- encountering the matching .bend directive, the assembler tra- inal CALLO or BRO instruction in the block is retargetted to verses the data structure, marks instructions that require relo- the adjacent trampoline block, which bounces execution to the cation, uses the GNU Binary File Description (BFD) routines far-flung address. Code trampolines introduce an extra level of to translate x86 Little-Endian formats to TRIPS Big-Endian, indirection. Fortunately, the need for them rarely occurs. and commits the whole block to disk.
Recommended publications
  • Also Includes Slides and Contents From
    The Compilation Toolchain Cross-Compilation for Embedded Systems Prof. Andrea Marongiu ([email protected]) Toolchain The toolchain is a set of development tools used in association with source code or binaries generated from the source code • Enables development in a programming language (e.g., C/C++) • It is used for a lot of operations such as a) Compilation b) Preparing Libraries Most common toolchain is the c) Reading a binary file (or part of it) GNU toolchain which is part of d) Debugging the GNU project • Normally it contains a) Compiler : Generate object files from source code files b) Linker: Link object files together to build a binary file c) Library Archiver: To group a set of object files into a library file d) Debugger: To debug the binary file while running e) And other tools The GNU Toolchain GNU (GNU’s Not Unix) The GNU toolchain has played a vital role in the development of the Linux kernel, BSD, and software for embedded systems. The GNU project produced a set of programming tools. Parts of the toolchain we will use are: -gcc: (GNU Compiler Collection): suite of compilers for many programming languages -binutils: Suite of tools including linker (ld), assembler (gas) -gdb: Code debugging tool -libc: Subset of standard C library (assuming a C compiler). -bash: free Unix shell (Bourne-again shell). Default shell on GNU/Linux systems and Mac OSX. Also ported to Microsoft Windows. -make: automation tool for compilation and build Program development tools The process of converting source code to an executable binary image requires several steps, each with its own tool.
    [Show full text]
  • An Execution Model for Serverless Functions at the Edge
    An Execution Model for Serverless Functions at the Edge Adam Hall Umakishore Ramachandran Georgia Institute of Technology Georgia Institute of Technology Atlanta, Georgia Atlanta, Georgia ach@gatech:edu rama@gatech:edu ABSTRACT 1 INTRODUCTION Serverless computing platforms allow developers to host single- Enabling next generation technologies such as self-driving cars or purpose applications that automatically scale with demand. In con- smart cities via edge computing requires us to reconsider the way trast to traditional long-running applications on dedicated, virtu- we characterize and deploy the services supporting those technolo- alized, or container-based platforms, serverless applications are gies. Edge/fog environments consist of many micro data centers intended to be instantiated when called, execute a single function, spread throughout the edge of the network. This is in stark contrast and shut down when finished. State-of-the-art serverless platforms to the cloud, where we assume the notion of unlimited resources achieve these goals by creating a new container instance to host available in a few centralized data centers. These micro data center a function when it is called and destroying the container when it environments must support large numbers of Internet of Things completes. This design allows for cost and resource savings when (IoT) devices on limited hardware resources, processing the mas- hosting simple applications, such as those supporting IoT devices sive amounts of data those devices generate while providing quick at the edge of the network. However, the use of containers intro- decisions to inform their actions [44]. One solution to supporting duces some overhead which may be unsuitable for applications emerging technologies at the edge lies in serverless computing.
    [Show full text]
  • Introduction to Embedded C
    INTRODUCTION TO EMBEDDED C by Peter J. Vidler Introduction The aim of this course is to teach software development skills, using the C programming language. C is an old language, but one that is still widely used, especially in embedded systems, where it is valued as a high- level language that provides simple access to hardware. Learning C also helps us to learn general software development, as many of the newer languages have borrowed from its concepts and syntax in their design. Course Structure and Materials This document is intended to form the basis of a self-study course that provides a simple introduction to C as it is used in embedded systems. It introduces some of the key features of the C language, before moving on to some more advanced features such as pointers and memory allocation. Throughout this document we will also look at exercises of varying length and difficulty, which you should attempt before continuing. To help with this we will be using the free RapidiTTy® Lite IDE and targeting the TTE®32 microprocessor core, primarily using a cycle-accurate simulator. If you have access to an FPGA development board, such as the Altera® DE2-70, then you will be able to try your code out in hardware. In addition to this document, you may wish to use a textbook, such as “C in a Nutshell”. Note that these books — while useful and well written — will rarely cover C as it is used in embedded systems, and so will differ from this course in some areas. Copyright © 2010, TTE Systems Limited 1 Getting Started with RapidiTTy Lite RapidiTTy Lite is a professional IDE capable of assisting in the development of high- reliability embedded systems.
    [Show full text]
  • Embedded C Programming I (Ecprogrami)
    To our customers, Old Company Name in Catalogs and Other Documents On April 1st, 2010, NEC Electronics Corporation merged with Renesas Technology Corporation, and Renesas Electronics Corporation took over all the business of both companies. Therefore, although the old company name remains in this document, it is a valid Renesas Electronics document. We appreciate your understanding. Renesas Electronics website: http://www.renesas.com April 1st, 2010 Renesas Electronics Corporation Issued by: Renesas Electronics Corporation (http://www.renesas.com) Send any inquiries to http://www.renesas.com/inquiry. Notice 1. All information included in this document is current as of the date this document is issued. Such information, however, is subject to change without any prior notice. Before purchasing or using any Renesas Electronics products listed herein, please confirm the latest product information with a Renesas Electronics sales office. Also, please pay regular and careful attention to additional and different information to be disclosed by Renesas Electronics such as that disclosed through our website. 2. Renesas Electronics does not assume any liability for infringement of patents, copyrights, or other intellectual property rights of third parties by or arising from the use of Renesas Electronics products or technical information described in this document. No license, express, implied or otherwise, is granted hereby under any patents, copyrights or other intellectual property rights of Renesas Electronics or others. 3. You should not alter, modify, copy, or otherwise misappropriate any Renesas Electronics product, whether in whole or in part. 4. Descriptions of circuits, software and other related information in this document are provided only to illustrate the operation of semiconductor products and application examples.
    [Show full text]
  • Computer Architecture and Assembly Language
    Computer Architecture and Assembly Language Gabriel Laskar EPITA 2015 License I Copyright c 2004-2005, ACU, Benoit Perrot I Copyright c 2004-2008, Alexandre Becoulet I Copyright c 2009-2013, Nicolas Pouillon I Copyright c 2014, Joël Porquet I Copyright c 2015, Gabriel Laskar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being just ‘‘Copying this document’’, no Front-Cover Texts, and no Back-Cover Texts. Introduction Part I Introduction Gabriel Laskar (EPITA) CAAL 2015 3 / 378 Introduction Problem definition 1: Introduction Problem definition Outline Gabriel Laskar (EPITA) CAAL 2015 4 / 378 Introduction Problem definition What are we trying to learn? Computer Architecture What is in the hardware? I A bit of history of computers, current machines I Concepts and conventions: processing, memory, communication, optimization How does a machine run code? I Program execution model I Memory mapping, OS support Gabriel Laskar (EPITA) CAAL 2015 5 / 378 Introduction Problem definition What are we trying to learn? Assembly Language How to “talk” with the machine directly? I Mechanisms involved I Assembly language structure and usage I Low-level assembly language features I C inline assembly Gabriel Laskar (EPITA) CAAL 2015 6 / 378 I Programmers I Wise managers Introduction Problem definition Who do I talk to? I System gurus I Low-level enthusiasts Gabriel Laskar (EPITA) CAAL
    [Show full text]
  • Toward IFVM Virtual Machine: a Model Driven IFML Interpretation
    Toward IFVM Virtual Machine: A Model Driven IFML Interpretation Sara Gotti and Samir Mbarki MISC Laboratory, Faculty of Sciences, Ibn Tofail University, BP 133, Kenitra, Morocco Keywords: Interaction Flow Modelling Language IFML, Model Execution, Unified Modeling Language (UML), IFML Execution, Model Driven Architecture MDA, Bytecode, Virtual Machine, Model Interpretation, Model Compilation, Platform Independent Model PIM, User Interfaces, Front End. Abstract: UML is the first international modeling language standardized since 1997. It aims at providing a standard way to visualize the design of a system, but it can't model the complex design of user interfaces and interactions. However, according to MDA approach, it is necessary to apply the concept of abstract models to user interfaces too. IFML is the OMG adopted (in March 2013) standard Interaction Flow Modeling Language designed for abstractly expressing the content, user interaction and control behaviour of the software applications front-end. IFML is a platform independent language, it has been designed with an executable semantic and it can be mapped easily into executable applications for various platforms and devices. In this article we present an approach to execute the IFML. We introduce a IFVM virtual machine which translate the IFML models into bytecode that will be interpreted by the java virtual machine. 1 INTRODUCTION a fundamental standard fUML (OMG, 2011), which is a subset of UML that contains the most relevant The software development has been affected by the part of class diagrams for modeling the data apparition of the MDA (OMG, 2015) approach. The structure and activity diagrams to specify system trend of the 21st century (BRAMBILLA et al., behavior; it contains all UML elements that are 2014) which has allowed developers to build their helpful for the execution of the models.
    [Show full text]
  • Compiler Construction
    Compiler Construction Chapter 11 Compiler Construction Compiler Construction 1 A New Compiler • Perhaps a new source language • Perhaps a new target for an existing compiler • Perhaps both Compiler Construction Compiler Construction 2 Source Language • Larger, more complex languages generally require larger, more complex compilers • Is the source language expected to evolve? – E.g., Java 1.0 ! Java 1.1 ! . – A brand new language may undergo considerable change early on – A small working prototype may be in order – Compiler writers must anticipate some amount of change and their design must therefore be flexible – Lexer and parser generators (like Lex and Yacc) are therefore better than hand- coding the lexer and parser when change is inevitable Compiler Construction Compiler Construction 3 Target Language • The nature of the target language and run-time environment influence compiler construction considerably • A new processor and/or its assembler may be buggy Buggy targets make it difficult to debug compilers for that target! • A successful source language will persist over several target generations – E.g., 386 ! 486 ! Pentium ! . – Thus the design of the IR is important – Modularization of machine-specific details is also important Compiler Construction Compiler Construction 4 Compiler Performance Issues • Compiler speed • Generated code quality • Error diagnostics • Portability • Maintainability Compiler Construction Compiler Construction 5 Compiler Speed • Reduce the number of modules • Reduce the number of passes Perhaps generate machine
    [Show full text]
  • A Brief History of Just-In-Time Compilation
    A Brief History of Just-In-Time JOHN AYCOCK University of Calgary Software systems have been using “just-in-time” compilation (JIT) techniques since the 1960s. Broadly, JIT compilation includes any translation performed dynamically, after a program has started execution. We examine the motivation behind JIT compilation and constraints imposed on JIT compilation systems, and present a classification scheme for such systems. This classification emerges as we survey forty years of JIT work, from 1960–2000. Categories and Subject Descriptors: D.3.4 [Programming Languages]: Processors; K.2 [History of Computing]: Software General Terms: Languages, Performance Additional Key Words and Phrases: Just-in-time compilation, dynamic compilation 1. INTRODUCTION into a form that is executable on a target platform. Those who cannot remember the past are con- What is translated? The scope and na- demned to repeat it. ture of programming languages that re- George Santayana, 1863–1952 [Bartlett 1992] quire translation into executable form covers a wide spectrum. Traditional pro- This oft-quoted line is all too applicable gramming languages like Ada, C, and in computer science. Ideas are generated, Java are included, as well as little lan- explored, set aside—only to be reinvented guages [Bentley 1988] such as regular years later. Such is the case with what expressions. is now called “just-in-time” (JIT) or dy- Traditionally, there are two approaches namic compilation, which refers to trans- to translation: compilation and interpreta- lation that occurs after a program begins tion. Compilation translates one language execution. into another—C to assembly language, for Strictly speaking, JIT compilation sys- example—with the implication that the tems (“JIT systems” for short) are com- translated form will be more amenable pletely unnecessary.
    [Show full text]
  • Porting Musl to the M3 Microkernel TU Dresden
    Porting Musl to the M3 microkernel TU Dresden Sherif Abdalazim, Nils Asmussen May 8, 2018 Contents 1 Abstract 2 2 Introduction 3 2.1 Background.............................. 3 2.2 M3................................... 4 3 Picking a C library 5 3.1 C libraries design factors . 5 3.2 Alternative C libraries . 5 4 Porting Musl 7 4.1 M3andMuslbuildsystems ..................... 7 4.1.1 Scons ............................. 7 4.1.2 GNUAutotools........................ 7 4.1.3 Integrating Autotools with Scons . 8 4.2 Repositoryconfiguration. 8 4.3 Compilation.............................. 8 4.4 Testing ................................ 9 4.4.1 Syscalls ............................ 9 5 Evaluation 10 5.1 PortingBusyboxcoreutils . 10 6 Conclusion 12 1 Chapter 1 Abstract Today’s processing workloads require the usage of heterogeneous multiproces- sors to utilize the benefits of specialized processors and accelerators. This has, in turn, motivated new Operating System (OS) designs to manage these het- erogeneous processors and accelerators systematically. M3 [9] is an OS following the microkernel approach. M3 uses a hardware/- software co-design to exploit the heterogeneous systems in a seamless and effi- cient form. It achieves that by abstracting the heterogeneity of the cores via a Data Transfer Unit (DTU). The DTU abstracts the heterogeneity of the cores and accelerators so that they can communicate systematically. I have been working to enhance the programming environment in M3 by porting a C library to M3. I have evaluated different C library implementations like the GNU C Library (glibc), Musl, and uClibc. I decided to port Musl as it has a relatively small code base with fewer configurations. It is simpler to port, and it started to gain more ground in embedded systems which are also a perfect match for M3 applications.
    [Show full text]
  • A Parallel Program Execution Model Supporting Modular Software Construction
    A Parallel Program Execution Model Supporting Modular Software Construction Jack B. Dennis Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 U.S.A. [email protected] Abstract as a guide for computer system design—follows from basic requirements for supporting modular software construction. A watershed is near in the architecture of computer sys- The fundamental theme of this paper is: tems. There is overwhelming demand for systems that sup- port a universal format for computer programs and software The architecture of computer systems should components so users may benefit from their use on a wide reflect the requirements of the structure of pro- variety of computing platforms. At present this demand is grams. The programming interface provided being met by commodity microprocessors together with stan- should address software engineering issues, in dard operating system interfaces. However, current systems particular, the ability to practice the modular do not offer a standard API (application program interface) construction of software. for parallel programming, and the popular interfaces for parallel computing violate essential principles of modular The positions taken in this presentation are contrary to or component-based software construction. Moreover, mi- much conventional wisdom, so I have included a ques- croprocessor architecture is reaching the limit of what can tion/answer dialog at appropriate places to highlight points be done usefully within the framework of superscalar and of debate. We start with a discussion of the nature and VLIW processor models. The next step is to put several purpose of a program execution model. Our Parallelism processors (or the equivalent) on a single chip.
    [Show full text]
  • Versa 8051 Mcus TB102 – Using Versa 8051 Include Files Rev 1.0
    Versa 8051 MCUs TB102 – Using Versa 8051 Include Files Rev 1.0 How to Use Include Files for Versa 8051 MCUs 1 Introduction For compilers/assemblers that do not allow long file names, the naming convention is as follows: This technical bulletin addresses the include files developed for each of Ramtron’s fast and flexible AAFFDDDD.EXT Versa 8051 microcontrollers. Include files contain code AA: The initials of the compiler or assembler, such as for the MCU’s special function registers (SFRs). This ML for the MetaLink Cross Assembler. code is compatible with most popular 8051 compilers and assemblers. FF: The family of the target device: RS for the Versa 8051 family. 2 Supported Compilers DDDD: The first digit grouping of the device name, for Currently, include files exist for the following 8051 example the VRS51L2070 will use 2070. compilers and assemblers: EXT: The extension for the target programming language, such as .H for the C language, or .inc for an • MetaLink Macro Assembler assembler. • RIDE 51 (RKit) MA51 Macro Assembler • RIDE 51 (RKit) RC51 C Compiler 3.2 Location and Installation • Keil µVision3 A51 Macro Assembler All the files are placed in a zipped folder labeled with • Keil µVision3 C51 C Compiler the device name (for example, VRS51L3074.ZIP). • SDCC (Small Device C Compiler) When downloaded, the necessary file(s) can be moved • ASX8051 cross assembler to two possible locations: If you are using a different compiler, apply one of the • The compiler/assembler source directory provided files as a template or contact Ramtron for • The folder of the current project assistance.
    [Show full text]
  • CNT6008 Network Programming Module - 11 Objectives
    CNT6008 Network Programming Module - 11 Objectives Skills/Concepts/Assignments Objectives ASP.NET Overview • Learn the Framework • Understand the different platforms • Compare to Java Platform Final Project Define your final project requirements Section 21 – Web App Read Sections 21 and 27, pages 649 to 694 and 854 Development and ASP.NET to 878. Section 27 – Web App Development with ASP.NET Overview of ASP.NET Section Goals Goal Course Presentation Understanding Windows Understanding .NET Framework Foundation Project Concepts Creating a ASP.NET Client and Server Application Understanding the Visual Creating a ASP Project Studio Development Environment .NET – What Is It? • Software platform • Language neutral • In other words: • .NET is not a language (Runtime and a library for writing and executing written programs in any compliant language) What Is .NET • .Net is a new framework for developing web-based and windows-based applications within the Microsoft environment. • The framework offers a fundamental shift in Microsoft strategy: it moves application development from client-centric to server- centric. .NET – What Is It? .NET Application .NET Framework Operating System + Hardware Framework, Languages, And Tools VB VC++ VC# JScript … Common Language Specification Visual Studio.NET Visual ASP.NET: Web Services Windows and Web Forms Forms ADO.NET: Data and XML Base Class Library Common Language Runtime The .NET Framework .NET Framework Services • Common Language Runtime • Windows Communication Framework (WCF) • Windows® Forms • ASP.NET (Active Server Pages) • Web Forms • Web Services • ADO.NET, evolution of ADO • Visual Studio.NET Common Language Runtime (CLR) • CLR works like a virtual machine in executing all languages. • All .NET languages must obey the rules and standards imposed by CLR.
    [Show full text]