Porting OpenVMS to x Update

Similar documents
State of the Port to x86_64 July 2017

Update on the Port to x86-64

State of the Port to x86_64 April 2017

OpenVMS I64 Technical Update

Porting OpenVMS Applications to the Itanium Processor Family

Porting OpenVMS to the Itanium Processor Family

The Future of OpenVMS. Duane Harris CEO

Technical Update: VAFS and the Port to x86-64

The Challenges of X86 Hardware Virtualization. GCC- Virtualization: Rajeev Wankar 36

CPU Structure and Function

Virtualization. Pradipta De

Virtual Machines. Part 2: starting 19 years ago. Operating Systems In Depth IX 1 Copyright 2018 Thomas W. Doeppner. All rights reserved.

OpenVMS Rolling Roadmap

8/16/12. Computer Organization. Architecture. Computer Organization. Computer Basics

William Stallings Computer Organization and Architecture. Chapter 11 CPU Structure and Function

ECE 498 Linux Assembly Language Lecture 1

CHAPTER 8: MEMORY MANAGEMENT. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

Chapter 8: Main Memory

OpenVMS Rolling Roadmap

Chapter 8: Memory-Management Strategies

UNIT- 5. Chapter 12 Processor Structure and Function

CHAPTER 8 - MEMORY MANAGEMENT STRATEGIES

Lecture 7. Xen and the Art of Virtualization. Paul Braham, Boris Dragovic, Keir Fraser et al. 16 November, Advanced Operating Systems

CSE 120 Principles of Operating Systems

OpenVMS Rolling Roadmap

Chapter 8: Main Memory. Operating System Concepts 9 th Edition

Chapter 8 Main Memory

Chapter 7: Main Memory. Operating System Concepts Essentials 8 th Edition

Background. Contiguous Memory Allocation

Unit 2 : Computer and Operating System Structure

CPU Structure and Function. Chapter 12, William Stallings Computer Organization and Architecture 7 th Edition

Chapter 8: Main Memory

10 Steps to Virtualization

Protection and System Calls. Otto J. Anshus

Building Binary Optimizer with LLVM

CS307: Operating Systems

CSCI 8530 Advanced Operating Systems. Part 19 Virtualization

Chapter 8 Memory Management

Spring 2017 :: CSE 506. Introduction to. Virtual Machines. Nima Honarmand

ECE 471 Embedded Systems Lecture 4

Memory management. Last modified: Adaptation of Silberschatz, Galvin, Gagne slides for the textbook Applied Operating Systems Concepts

Högnivåspråk och översättning

Cross-architecture Virtualisation

Virtual Machines and Dynamic Translation: Implementing ISAs in Software

Virtualization. Virtualization

OpenVMS VAX/Alpha to Integrity Migration Experiences

Virtualization and memory hierarchy

Getting started. Roel Jordans

Advanced Operating Systems (CS 202) Virtualization

COMPUTER ARCHITECTURE. Virtualization and Memory Hierarchy

Faculty of Computer Science, Operating Systems Group. The L4Re Microkernel. Adam Lackorzynski. July 2017

Advanced Computer Architecture

Linux and Xen. Andrea Sarro. andrea.sarro(at)quadrics.it. Linux Kernel Hacking Free Course IV Edition

Performance of Various Levels of Storage. Movement between levels of storage hierarchy can be explicit or implicit

William Stallings Computer Organization and Architecture 8 th Edition. Chapter 12 Processor Structure and Function

Linux Driver and Embedded Developer

Chapter 12. CPU Structure and Function. Yonsei University

Xen and the Art of Virtualization

ECE 550D Fundamentals of Computer Systems and Engineering. Fall 2017

OpenVMS KP Services. Doug Gordon. OpenVMS Engineering

Table of Contents. Page 3. Copyright 2005 Hewlett-Packard Development Company, L.P.

The Architecture of Virtual Machines Lecture for the Embedded Systems Course CSD, University of Crete (April 29, 2014)

Virtualization (II) SPD Course 17/03/2010 Massimo Coppola

CS 350 Winter 2011 Current Topics: Virtual Machines + Solid State Drives

Java and Software Design

Chapter 8: Memory- Management Strategies. Operating System Concepts 9 th Edition

Chapter 8: Memory- Management Strategies

Mechanisms and constructs for System Virtualization

Lecture 8 Memory Management Strategies (chapter 8)

Lecture 2 - Fundamental Concepts

A Set Of Machine Language Instructions For A Program Is Called Source Code >>>CLICK HERE<<<

Chapter 8: Memory- Management Strategies. Operating System Concepts 9 th Edition

Porting FreeBSD to AArch64

Virtualization. Operating Systems, 2016, Meni Adler, Danny Hendler & Amnon Meisels

Chapter 9 Memory Management Main Memory Operating system concepts. Sixth Edition. Silberschatz, Galvin, and Gagne 8.1

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program.

CMSC131. Hardware and Software. Hardware

CMSC131. Hardware and Software

CS 471 Operating Systems. Yue Cheng. George Mason University Fall 2017

Computer Basics 1/24/13. Computer Organization. Computer systems consist of hardware and software.

Chapter 2: Instructions How we talk to the computer

ARM-KVM: Weather Report Korea Linux Forum

Virtual Machine Monitors (VMMs) are a hot topic in

6 - Main Memory EECE 315 (101) ECE UBC 2013 W2

System Virtual Machines

Instruction Set Principles and Examples. Appendix B

CSC 5930/9010 Cloud S & P: Virtualization

The Kernel Abstraction

CS510 Operating System Foundations. Jonathan Walpole

Cache Performance and Memory Management: From Absolute Addresses to Demand Paging. Cache Performance

Porting HP OpenVMS Applications to Intel Itanium Architecture

Chapter 5 C. Virtual machines

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design

CS 410/510. Mark P Jones Portland State University

Operating Systems 4/27/2015

Intel s Virtualization Extensions (VT-x) So you want to build a hypervisor?

HPVM and Xen/ia64. Dennis Mattoon HP Integrity Virtual Machines

Computer System: An Overview

Operating Systems. II. Processes

Computer Science and Engineering 331. Midterm Examination #1. Fall Name: Solutions S.S.#:

Transcription:

Porting OpenVMS to x86-64 Update October 16, 2015

Porting OpenVMS to x86-64 Update This information contains forward looking statements and is provided solely for your convenience. While the information herein is based on our current best estimates, such information is subject to change without notice.

Update Topics Review The Plan Executable Images Architecture-Specific Needs Virtual Machines

Porting Play Book (The Plan) Chapter 1 Executable Images Definition: Register Mapping, Calling Standard extensions Creation: Compilers, Assembler Action: LIBRARIAN, LINKER, INSTALL, Image Activator Analysis: SDA, DEBUG/XDELTA, ANALYZE IMAGE, ANALYZE OBJECT Chapter 2 Architecture-Specific Needs (a.k.a. The 5% ) Booting Interrupts, Exceptions Memory Management: protection types, access modes, address space, etc. Atomic Instructions Floating Point Special needs for code in assembler (e.g. VAX QUEUE instruction emulation) Chapter 3 Compiling and Linking Everything Else (a.k.a. The 95% ) Large task but mostly mechanical Flush out any remaining inter-routine linkage problems

VMS Itanium Compilers and Image Building C BLISS FORTRAN BASIC GEM.obj LINKER.exe COBOL PASCAL MACRO C++ Intel Ada AdaCore Assembler Interface Inner Workings of GEM 1. Get source code and command line directives 2. Create Intermediate representation (IR) 3. Interpret IR 4. Generate target object file

Future VMS Compiler Strategy C BLISS FORTRAN BASIC GEM IR Translator LLVM IR LLVM.obj* LINKER.exe* COBOL Standard Interface Standard SS Interface Assembler Interface * = ELF just like Itanium PASCAL MACRO C++ clang Ada??? Continue with current GEM-based frontends Use open source LLVM for backend code generation Create internal representation (IR) translator LLVM targets x86, ARM, PowerPC, MIPS, SPARC, and more

Executable Images Compilers LLVM Compiled on VMS 99% complete, good enough for now GEM IR to LLVM IR translator design mostly complete Implementation of Wave 1 tuples has started XMACRO is about to get started Register mapping Initial definition in place Subject to change as XMACRO work unfolds Rewriting Ada code evaluating now ACME in C Security_Server in C++ Calling Standard work starting soon Based on AMD64 Application Binary Interface Like Itanium - ELF, DWARF, unwind tables

Executable Images (continued) LINKER initial outline of work Relocations and fixups need thorough investigation but minimal work expected Calculate virtual address space some work Pass 2 most of the change is here Writing executable/shareable images and symbol table files small change LIBRARIAN - minimal work INSTALL, Loader, Image Activator Relocations/fixups small change Share most crucial pieces of code

First Boot (with Cross Tools) Images C LLVM translator BLISS XMACRO Calling Standard BLISS C XMACRO LINKER Assembler

Analysis Tools: Laying the Foundation x86 Instruction Set Decoder complete 640 opcodes in total Test byte streams created for each instruction; developed/verified on linux Used by SDA, DELTA/XDELTA, DEBUG, SCD, ANALYZE/OBJECT Evaluate LIB$IPF_CALLING_STANDARD routines; used by stack walkers and others Invocation Context (current, previous) Registers Unwind data

Architecture-Specific Needs Boot Path Memory Management Use of Assembler

Boot Path VMS_LOADER.EFI Loader is built with Visual Studio on a PC Using UEFI 2.3 toolkit Itanium and x86 Itanium VMS implements the original Intel EFI (circa 2002) Debugging some newness issues on Itanium Fix memory disk booting Make better use of UEFI device drivers Replace HP-specific interfaces to ACPI with direct ACPI calls Replace use of Itanium s SAL and PAL services Create memory descriptors Interrupt Vector Table (IVT) Machine Check frame CPU enumeration list x86-specific structures Implement cleaner socket/core/thread initialization XPB (descendent of VMB APB IPB) little change

Memory Management Initial investigation complete Tasks identified and sized (S, M, L) Continue diving into details Currently working on boot path conversion of memory descriptors and the related ACPI location info into VMS data structures Factoids: Four levels of page tables VMS will run in two hardware processor modes Page protection requires page tables per mode No PROBE instruction; look it up in page tables Page sizes 4KB, 2MB, 1GB

Running in Two Processor Modes x86 has four modes (rings) 0, 1, 2, 3. They do not provide the strict hierarchy of memory access protection expected by VMS. Example: No way to allow kernel write and prevent exec write. VMS will run in two hardware processor modes privileged (0) and unprivileged (3). Supervisor (1) and Exec (2) memory protections will be implemented in software. With a small (we think) amount of change we can test two-mode operation on Itanium now.

Leveraging Previous Porting Work Many related architecture-specific details in one place: Software Interrupt Services (SWIS), Exception, AST Delivery Conceptually architecture independent the code is specific for each platform but it performs the same logical functions The largest single piece of concentrated assembler code apart from IMATHRTL Hides the details from the rest of VMS Many aspects of the Calling Standard Entering a more privileged mode Interrupt handling Software Interrupts ASTs External Interrupts Saved state Exception frames Context switching System service calling

Use of Assembler Evaluate Itanium assembler code 1. Eliminate what is not needed 2. Replace with C equivalents if possible 3. Convert to x86 assembler Priority: Follow the boot path If better performance is needed then use assembler difficult to predict, just let it happen and react

Virtual Machines Using CentOS-7 / kvm on Proliant DL380 Gen8 as development platform Create / delete / clone domains as needed Used so far for Debugging parts of VMS_LOADER.EFI Examining memory descriptors Getting info from ACPI tables Verifying transition to XPB Investigating domain tickless timing Starting to work with xen and Virtual Box Investigating and writing design specs for paravirtualized (virtio) drivers for kvm and VB xen s I/O interfaces

For more information, please contact us at: RnD@vmssoftware.com VMS Software, Inc. 580 Main Street Bolton MA 01740 +1 978 451 0110