- Compiler For Intel Core I7 Mac Os X 10 12
- Intel I7 Processor
- Intel Core I7 X Series
- Intel Core I7 Reviews
Apple users are used to transitions, having moved from 68k-based Macs to Power PC processors, and the classic Mac OS 9 to Mac OS X. Now it's time for the third and most shocking transition of all: the move to Macs with Intel processors.
- I just purchsed a refurbished MacBook Pro thinking it would use OSX 10.6.8. This is because most of the software I have may not run on Lion. It just hit me that this computer was manufactured in June 2012 so probably will come with Lion installed. Does anyone know if it will run OS 10.6.8? 15.4-inch MacBook Pro 2.7GHz Quad-core Intel i7.
- Some products can support AES New Instructions with a Processor Configuration update, in particular, i7-2630QM/i7-2635QM, i7-2670QM/i7-2675QM, i5-2430M/i5-2435M, i5-2410M/i5-2415M. Please contact OEM for the BIOS that includes the latest Processor configuration update.
The optimization reports from the Intel Fortran Compiler are extremely useful and take advantage of the explicit vectorization compiler features as much as possible. Intel® Math Kernel Library is a great collection of ready-to-use math libraries that speed development and application performance.
There's one word on the lips of most Mac users at the moment, and that word is Intel. After more rumours than usual over the weekend preceding Steve Jobs' keynote at this year's Apple Worldwide Developers Conference (WWDC), this time concerning the company moving away from the Power PC processor architecture to Intel's x86, the Apple CEO confirmed that the rumours were, indeed, true. What this means is that, starting from 2006, Apple will ship Macintosh computers powered by x86 Intel processors, the same processors used by computers running Windows today. Intel will not be manufacturing any Power PC variant for Apple.
Let's Talk About Transitions...
Jobs introduced the topic of Macs with Intel processors by saying 'let's talk about transitions'. He went on to describe the two main transitions of the Mac's 21-year history. Firstly, the move from 68k processors to Power PC-based designs during 1994-96, which the Apple CEO described as having 'set Apple up for the next decade', calling it 'a good move' and, secondly, the more recent 'brain transplant' from Mac OS 9 to X during 2001-03. The change from Power PC to Intel marks the third major transition for the Mac, and while Jobs commented that Apple have 'great products right now' and 'some great Power PC products in the pipeline', he conceded that the company didn't know how to make the products they were envisaging with the current Power PC 'road map'.
Acknowledging that two years ago he stood on the same stage when introducing the Power Mac G5 and promised a 3GHz G5 within a year, Jobs was admirably candid about the fact that Apple hadn't been able to deliver either a 3GHz Power Mac G5 or a Power Book G5. According to Jobs, Intel will be able to help Apple in both of these departments: great performance is assured by utilising Intel's Pentium D dual-core desktop processors or a couple of dual-core Xeon processors for future desktop and server machines, but where Intel have really succeeded in recent years is in the mobile market. The Pentium M has been a huge success for Intel, as part of the Centrino brand, and in his keynote Jobs mentioned that Intel's projected performance per watt for mid-2006 was over four times higher than that of the Power PC.
Towards the end of the keynote, Jobs invited Intel President and CEO Paul Otellini onto the stage. The latter said of the Apple/Intel arrangement: 'The world's most innovative computer company and the world's most innovative chip company have finally teamed up.'
Mac OS X For Intel
Building a computer with Intel's technology shouldn't prove too difficult for Apple's engineers, but one of the most important factors in the transition to Intel-based Macs will be, as Jobs himself put it, 'making Mac OS X sing on Intel processors'. And here's where more rumours that have been floating around for a while turn out to be true, as the Apple CEO confirmed that 'Mac OS X has been leading a secret double life for the past five years', and that 'every release of Mac OS X has been compiled for both Power PC and Intel'. This should really be no surprise, since OS X's heritage is Nextstep, the operating system for which Apple effectively acquired Next, which ran on Intel processors.
Intel processors... coming fairly soon to a Mac near you.Jobs mentioned an Apple internal guideline stating that 'designs must be processor independent and projects must be built for both Power PC and Intel processors', before revealing that the machine he'd previously used in the keynote to demonstrate Dashboard widgets had, in fact, been running Mac OS 10.4 on an Intel processor. It seemed to be working pretty well — although, in many ways, there's no reason it shouldn't. Most modern operating systems, including UNIX, Linux and Windows NT, were either designed or have evolved to run on multiple architectures through modular designs and hardware abstraction. So getting OS X to 'sing' on Intel processors turns out not to be such a big deal, since Apple always had the 'just in case' scenario in mind. What is a big deal is the way in which third-party developers will deal with the Power PC-to-Intel transition, especially since they've only just got through the move to OS X.
This third transition finds Mac users and developers in pretty much the same situation they were in 10 years ago, during the move from 68k to Power PC, which many reading this column will remember. The biggest problem, in my opinion, isn't just getting the developers to port their code to the new platform: it's leaving them in a situation where they have to support two different architectures for the same operating system. In the first transition, Apple created what was termed a 'fat binary' that bound together 68k and Power PC binaries into a single package, so that developers could deliver one application to any Mac user. This time Apple have the same idea, except that the package containing both Power PC and Intel versions will be known as a Universal Binary. Developers may remember that porting 68k code to Power PC wasn't always straightforward, but (coming back to the present) Apple have released a new 2.1 update to the company's own Xcode developer tools, to make it simple to both port and maintain Mac OS X applications under two architectures.
The Universal Binary concept will really be important to you if you've just purchased a new Mac and want to be confident that it will be supported by Apple and third-party developers. Analysts and news reporters initially questioned whether the Mac platform could deal with another major shift; to counter this doubt, Apple are doing their best to convince everyone that it won't be too difficult for applications to be ported.
During the keynote, Jobs invited Wolfram Research co-founder Theo Gray on to the stage to describe how it had taken one of Wolfram's engineers only around two hours, a couple of days before the keynote, to make the Power PC-based Mac OS X version of Mathematica into a Universal Binary that could run under Mac OS X on the Intel platform. And since the keynote many other developers have commented on the speed with which they've got their applications running on Apple's Intel-based development systems. One such developer is Luxology, who managed to port their flagship surface-modelling application, Modo, in just 20 minutes. Apple are, of course, to be praised for making it easy for developers, but it's also worth remembering that, with the majority of applications being cross-platform, the source code should already be highly portable.
Rosetta: Translating The Code
No matter how easy Apple makes the process of creating Universal Binaries (see main text), it's unlikely that every application you run will be available with Intel-native code by the time Intel-based Macs are shipping, especially if one app you rely on is no longer supported or developed, for example. When Apple moved from 68k processors to the Power PC, the Power PC-based Macs included an emulator that could enable 68k applications to run if a 'fat binary' (again, see main text) wasn't available. This worked well for general-purpose software.
For the Power PC-to-Intel transition, Jobs introduced a technology called 'Rosetta', to bridge the gap between Power PC and Intel-based Macs. It allows Power PC binaries to be translated at 'runtime' and be executed on Intel-based Macs. An application running via Rosetta will never be quite as fast as if it were running natively, since the translation process itself entails some processing overhead. This means that those requiring high performance from music and audio software aren't going to find Rosetta too useful, but Jobs showed Adobe's Photoshop and Microsoft's Word running pretty successfully with Rosetta during his demonstration.
According to Apple's Universal Binaries guidelines, available publicly at www.apple.com/developer, Rosetta is capable of translating applications that can run on a G3 Mac with OS X, and the major restrictions are that it will not run OS 8 or 9 applications, or any code with Altivec or any other G4 or G5-specific instructions.
Mac, Music & Intel
So what does all of this mean for those running audio and music software on the Mac? Actually, it's probably mostly good news. It's no secret that, in terms of performance and battery life, Apple's current line of Power Books lags behind their Intel-based counterparts, so finally we should get Power Books that can once again live up to their name. And while the current high-end Power Mac offers good performance, as Intel and AMD-based machines move to faster and multiple cores it will be necessary for Apple to keep up with performance, since the hardware will now largely be the same.Intel's CEO and President Paul Otellini: 'We are thrilled to have the world's most innovative personal computer company as a customer'.
In terms of music and audio software companies releasing Universal Binaries, this shouldn't be quite as bad as the process of 'carbonisation' required to port OS 9 applications to OS X. The general application code, such as the user interface and so on, isn't likely to pose a problem, but performance and optimisation are likely to be bigger tasks in some cases, as optimisations for the Power PC — and specifically the Altivec instructions — will require rewriting for the Intel and SSE (Altivec equivalent) instruction sets. Fortunately this isn't so difficult, as Apple provide information regarding SSE equivalents for Altivec instructions in the freely available Universal Binary guidelines.
Many of the major music and audio applications are already cross-platform, so it's likely that optimisations and other processor-specific instructions can simply be adjusted from code that already exists. This should definitely help in companies like Steinberg, Ableton, Propellerhead and Digidesign. And Logic 's developers at Apple have plenty of experience in developing Intel-based code! The bottom line is that, with most software being developed on portable cross-platform frameworks these days, Apple are perhaps right in claiming that this transition will be a relatively painless one.
The Mactel Future
In the short term, Apple's move to Intel processors will not have a major effect on Mac users. Analysts have speculated that it might slow Mac sales until the newer Intel models appear, but Steve Jobs made it clear that 'this is not going to be a transition that happens overnight'. And that's probably a good thing. If you buy a Mac now, you're probably going to have a few good years of use from it before needing to upgrade to an Intel-based Mac. A year from now, Jobs said that Intel-based Macs would be shipping, and they're likely to be Macs that can benefit from the Pentium M chip, such as the Mac Mini, Power Book and iMac. But by the end of 2007 Apple expect the transition to be complete, and the thought of a new Power Mac based on multiple cores using x86 processors is pretty intriguing...
Published August 2005
Contents
Optimization manuals
This series of five manuals describes everything you need to know about optimizing code for x86 and x86-64 family microprocessors, including optimization advices for C++ and assembly language, details about the microarchitecture and instruction timings of most Intel, AMD and VIA processors, and details about different compilers and calling conventions.
Compiler For Intel Core I7 Mac Os X 10 12
Operating systems covered: DOS, Windows, Linux, BSD, Mac OS X Intel based, 32 and 64 bits.
Note that these manuals are not for beginners.
- 1. Optimizing software in C++: An optimization guide for Windows, Linux and Mac platforms
- This is an optimization manual for advanced C++ programmers. Topics include: The choice of platform and operating system. Choice of compiler and framework. Finding performance bottlenecks. The efficiency of different C++ constructs. Multi-core systems. Parallelization with vector operations. CPU dispatching. Efficient container class templates. Etc.
File name: optimizing_cpp.pdf, size: 1794013, last modified: 2020-Jan-17.
Download. - 2. Optimizing subroutines in assembly language: An optimization guide for x86 platforms
- This is an optimization manual for advanced assembly language programmers and compiler makers. Topics include: C++ instrinsic functions, inline assembly and stand-alone assembly. Linking optimized assembly subroutines into high level language programs. Making subroutine libraries compatible with multiple compilers and operating systems. Optimizing for speed or size. Memory access. Loops. Vector programming (XMM, YMM, SIMD). CPU-specific optimization and CPU dispatching.
File name: optimizing_assembly.pdf, size: 1521566, last modified: 2020-Mar-04.
Download. - 3. The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers
- This manual contains details about the internal working of various microprocessors from Intel, AMD and VIA. Topics include: Out-of-order execution, register renaming, pipeline structure, execution unit organization and branch prediction algorithms for each type of microprocessor. Describes many details that cannot be found in manuals from microprocessor vendors or anywhere else. The information is based on my own research and measurements rather than on official sources. This information will be useful to programmers who want to make CPU-specific optimizations as well as to compiler makers and students of microarchitecture.
File name: microarchitecture.pdf, size: 2180085, last modified: 2020-May-24.
Download. - 4. Instruction tables: Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs
- Contains detailed lists of instruction latencies, execution unit throughputs, micro-operation breakdown and other details for all common application instructions of most microprocessors from Intel, AMD and VIA. Intended as an appendix to the preceding manuals. Available as pdf file and as spreadsheet (ods format).
File name: instruction_tables.pdf, size: 1808674, last modified: 2020-Mar-08.
Download.
File name: instruction_tables.ods, size: 455640, last modified: 2020-Mar-08.
Download. - 5. Calling conventions for different C++ compilers and operating systems
- This document contains details about data representation, function calling conventions, register usage conventions, name mangling schemes, etc. for many different C++ compilers and operating systems. Discusses compatibilities and incompatibilities between different C++ compilers. Includes information that is not covered by the official Application Binary Interface standards (ABI's). The information provided here is based on my own research and therefore descriptive rather than normative. Intended as a source of reference for programmers who want to make function libraries compatible with multiple compilers or operating systems and for makers of compilers and other development tools who want their tools to be compatible with existing tools.
File name: calling_conventions.pdf, size: 1068828, last modified: 2019-Dec-30.
Download. - All five manuals
- Download all the above manuals together in one zip file.
File name: optimization_manuals.zip, size: 6763663, last modified: 2020-May-24.
Download.
C++ vector class library
This is a collection of C++ classes, functions and operators that makes it easier to use the the vector instructions (Single Instruction Multiple Data instructions) of modern CPUs without using assembly language. Supports the SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, FMA, XOP, and AVX512F/BW/DQ/VL instruction sets. Includes standard mathematical functions. Can compile for different instruction sets from the same source code.
Description and instructions.
Message board.
Source on Github.
Nice little instruction video by WhatsaCreel.
Description and instructions.
Message board.
Source on Github.
Nice little instruction video by WhatsaCreel.
Latest release.
Object file converter
This utility can be used for converting object files between COFF/PE, OMF, ELF and Mach-O formats for all 32-bit and 64-bit x86 platforms. Can modify symbol names in object files. Can build, modify and convert function libraries across platforms. Can dump object files and executable files. Also includes a very good disassembler supporting the SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP and Knights Corner instruction sets. Source code included (GPL). Manual.
File name: objconv.zip, size: 1055692, last modified: 2020-Jun-08.
Download.
Download.
Subroutine library
This is a library of optimized subroutines coded in assembly language. The functions in this library can be called from C, C++ and other compiled high-level languages. Supports many different compilers under Windows, Linux, BSD and Mac OS X operating systems, 32 and 64 bits. This library contains faster versions of common C/C++ memory and string functions, fast functions for string search and string parsing, fast integer division and integer vector division, as well as several useful functions not found elsewhere.
The package contains library files in many different file formats, C++ header file and assembly language source code. Gnu general public license applies. Manual.
File name: asmlib.zip, size: 883583, last modified: 2018-Apr-25.
Download.
Download.
ForwardCom: An open standard instruction set for high performance microprocessors
This is a proposal and discussion of how an ideal instruction set architecture can be constructed. The proposed instruction set combines the best from the RISC and CISC principles to produce a flexible, consistent, modular, orthogonal, scalable and expansible instruction set for high performance microprocessors and large vector processors.
The ForwardCom instruction set has variable-length vector registers and a special addressing mode that allows the software to automatically adapt to different microprocessors with different maximum vector lengths and make efficient loops through arrays regardless of whether the array size is divisible by the vector length. Standardization of the corresponding ecosystem of ABI standards, function libraries, compilers, etc. makes it possible to combine different programming languages in the same program.
Introduction: www.forwardcom.info.
Manual: File name: forwardcom.pdf, size: 769352, last modified: 2017-Nov-03.
Download.
Manual: File name: forwardcom.pdf, size: 769352, last modified: 2017-Nov-03.
Download.
Test programs for measuring clock cycles and performance monitoring
Test programs that I have used for my research. Can measure clock cycles and performance monitor counters such as cache misses, branch mispredictions, resource stalls etc. in a small piece of code in C, C++ or assembly. Can also set up performance monitor counters for reading inside another program. Supports Windows and Linux, 32 and 64 bit mode, multiple threads.
For experts only. Useful for analyzing small pieces of code but not for profiling a whole program.
File name: testp.zip, size: 1095188, last modified: 2018-Aug-08.
Download.
Download.
Floating point exception tracking and NAN propagation
This article discusses the problems with floating point exceptions in systems that use out-of-order parallelism and SIMD parallelism. A solution based on NAN propagation is recommended.
File name: nan_propagation.pdf, size: 212063, last modified: 2020-Apr-27.
Download.
File name: nan_propagation.pdf, size: 212063, last modified: 2020-Apr-27.
Download.
CPUID manipulation program for VIA
This is a program that can change the CPUID vendor string, family and model number on VIA Nano processors. See my blog for a discussion of the purpose of this program.
File name: cpuidfake.zip, size: 67593, last modified: 2010-Aug-08.
Download.
Download.
Useful software optimization links
Agner's CPU blog www.agner.org/forum
CPU-id tools and information www.cpuid.com
Intel I7 Processor
Godbolt compiler explorer. This is a very useful online tool to test how different compilers treat a piece of code. Supports the vector class library. www.godbolt.org
Masm Forum www.masmforum.com
ASM Community Messageboard www.asmcommunity.net/forums
Hutch's masm pages www.masm32.com
likwid performance measuring tools for Linux github.com/RRZE-HPC/likwid
Bit Twiddling Hacks graphics.stanford.edu/~seander/bithacks.html
Programmer's heaven assembler zone Programmers' Heaven
Virtual sandpile x86 Processor information www.sandpile.org
Online computer books www.computer-books.us/assembler.php
Instruction latency listings instlatx64.atw.hu/ and uops.info
NASM assembler www.nasm.us/
FASM assembler and messageboard flatassembler.net
JWASM assembler www.japheth.de
Yeppp open source library of assembly language functions bitbucket.org/MDukhan/yeppp
MAQAO (Modular Assembly Quality Analyzer and Optimizer), a tool for analyzing and optimizing binary codes. www.maqao.org
Intel resources
Reference manuals and other documents can be found at Intel's web site. Intel's web site is refurnished so often that any link I could provide here to specific documents would be broken after a few months. I will therefore recommend that you use the search facilities at www.intel.com and search for 'Software Developer's Manual' and 'Optimization Reference Manual'.
AMD resources
Microsoft resources
MASM manuals Microsoft Macro Assembler reference
Intel Core I7 X Series
2796821