Notes on comments.
Welcome to our blog dedicated to the engineering of Microsoft Windows 7
As we connect through this blog and through all of those talking about Windows 7 it is clear that folks have a lot of passion around many topics. We learned early on about the passion around the boot/startup sequence and how important it was for that to go by quickly! At the same time, we know that it is really dull to watch a HDD light blink when resuming a machine from hibernate or powering up a machine. To improve this first connection with people, we set out to improve the boot sequence—jazz it up if you will. It sounds pretty easy, but as we looked into solving this we found it is a pretty significant engineering challenge. Our goal was to have fun while having no impact on the boot performance of the system. To explain this engineering and describe the boot sequence, Karen Wong, a program manager on our Core User Experience feature team, authored this post. --Steven
We use the word “personality” to refer to some of the characteristics of software that connect emotionally with people. ‘Light’ and ‘energy’ are some of the terms we use to describe the personality of Windows 7. As we designed Windows 7 it became clear that in order to showcase these elements of Win7’s personality, we needed go above and beyond what we did with Vista’s boot visuals.
From a design perspective, we know that the visual presentation of a feature plays a key role in the user’s perception of performance and quality. Our objective was to make Windows boot beautiful and was inspired by our Windows 7 personality of light and energy; and the way these forms reveal themselves in nature became our design palette. Words such as “bioluminescence”, “organic”, “humble beauty”, and “atmosphere” came up frequently in our brainstorming sessions. We know that in isolation these might sound a bit corny, but this is all part of the overall goals of Windows 7.
Over two dozen boot sequence designs were created, reviewed, and user tested to evaluate them against our goals. Designs varied in the saturation and/or brightness of color, the complexity of motion, and lighting effects. Here are some sketches from our design journey:
The final design in Windows 7 shows energy approaching from four directions, that join to form a light that projects through a window (of course it is no coincidence that the Windows logo resembles a window!). A subtle pulse indicates progress thereafter; another design detail that reinforces the liveliness of Windows 7’s personality.
From a design perspective, this new boot sequence met all of our design goals, and we were excited to send it out into the world. However, boot had to be more than just a pretty face. From an engineering perspective, we had some clear challenges to overcome, as we knew that “time to desktop” was still the most important thing to users. Visual delight could not trump getting to the desktop faster and many of you have been critical of features that are dubbed “eye candy” – the boot sequence is not going to be one of those features for sure.
If we had kept everything the same from Vista and simply updated the boot animation to the new Win7 look, we would not have achieved new levels performance and quality that we aspire to. In fact, significant code changes were required in order to make the new boot animation even possible in Win7.
In Vista, the boot loader is using a low resolution 640x480 screen, and file size required for the green animated progress bar is very small. Furthermore, the Vista boot screen had low color depth – 16 bits per pixel (bpp). We increased this in Win7 to 32 bpp, which enabled the color richness you see in the new boot animation. Updates to the Vista boot progress indicator were achieved via the CPU, which was susceptible to I/O time, therefore causing occasional glitches in the animation. With the low resolution screen, limited color depth, and susceptibility to glitches – we knew we had our work cut out for us if we wanted to build something fancier for Win7.
We started with the Win7 boot loader using a different mechanism to display the boot animation. It gets a pointer to the frame buffer from the firmware (either BIOS or UEFI firmware), and displays a higher resolution image (1024 x 768). It animates the image while the kernel and boot critical device drivers are loaded into memory. Since the native graphics driver for the display is not loaded into memory and initialized yet, the animation is run by using the CPU, and by updating the frame buffer for the graphics display. We made an additional optimization - to have the CPU use write-combined caching to accelerate performance.
Michael Fortin’s blog entry on boot performance describes how the early stage of boot is I/O bound, as it is loading the kernel, device driver files, and other system component files. We therefore limited the dimensions of the boot animation to a small region of the screen, to avoid introducing any delay during the early stage of boot. A larger animation area would require loading a larger set of animation images, which adds to the file I/O. The animation images are compressed by incorporating the bitmaps as resources, which are then compressed using WIM image compression. WIM image compression reduces the overall file size, thereby reducing the I/O required to read them in. It also reduces the on-disk footprint. Animating a smaller region of the screen, and using a slightly lower frame rate also keeps the CPU overhead of updating the frame buffer to a low enough level, that there is no added overhead to the boot time.
Another change we made that improved not only the performance of boot, but the quality, was the reduction of transitions in graphics mode. These transitions occur during initialization of the graphics subsystem and Windows shell. In Vista, these cause the boot experience to be less smooth, as the display changes (flashes black) a few times before presenting the user with a logon screen (or the user’s desktop if there is only one system user).
After looking deep into our boot architecture for performance and quality improvements to enable the new animation, we were pleasantly surprised that the act of beautifying the boot animation created a new opportunity to further decrease time to desktop. In Vista, when a customer powered on the machine, the boot sequence included an animation of the Windows flag, or ‘pearl’, before reaching the login screen (or the desktop if the user is set to auto-login). Due to the Vista boot architecture constraints, this pearl animation can only play after boot code has already completed.
Vista Boot Sequence, with Pearl Animation
Now that new boot visuals display a rich animation that reflects the Windows 7 personality, the pearl animation seemed out-of-date and redundant, and was removed. As a result, we saved the time it takes to play this animation after boot is complete.
Windows 7 Boot Sequence, Pearl Animation Removed
You may also be wondering what happened to the startup sound. In Vista, the sound had to be synchronized with the pearl animation to produce the highest quality experience. This has potential performance impact on some hardware, as we require the system’s sound stack to be loaded to complete the pearl sequence. In the cases when we are waiting for the system’s sound playback to be ready, a delay can occur in getting to the desktop. As such, we changed the sound to now play asynchronously, anytime after the logon screen loads. On most hardware that we tested, this is right when the logon screen displays. We heard customer feedback in Vista that the sound played and caught your attention, but boot was not yet complete. So in addition to performance benefits, this change also improves the user experience by letting users know when their machine is ready for use.
The sum of the boot code optimizations and removal of the pearl animation from Vista enabled us to add a rich, high-quality animation during boot, with no increase in the time it takes a user to reach the desktop.
The boot experience varies depending on the user’s hardware. We made some design decisions to ensure the best visual experience across a wide range of hardware, however the time it takes a system to get to the desktop is mainly hardware-dependent.
For example, you may notice that there is a delay before the animation starts during boot, and this delay time varies depending on system hardware. To optimize for showing immediate feedback, we actually display text on the boot screen before Windows has had a chance to start all the processors on the system. It is only when that is complete that the animation can run asynchronously to the rest of the I/O during boot (which as discussed earlier is necessary for optimal performance and quality).
You may also notice that the Windows flag’s dimensions during boot may change slightly on different screen sizes. Due to technical constraints in Win7, boot is always displayed in our recommended minimum resolution – 1024x768, regardless of the system’s native resolution. Today, most hardware is set to stretch the boot sequence to fill the screen, as opposed to centering it. Consequently, the boot animation is usually stretched on screens that are of different aspect ratio than 1024x768; however, we did test the sequence on common aspect ratios to ensure that visual quality was preserved.
With all this hard work to improve the boot experience, we couldn’t let it go to waste. As such, users will also have this experience when they resume from hibernate.
We know many of you might be asking if you could include your own animation or customize this sequence. This is not something we will support in Windows 7. We’ve talked about and shown a great many “personalization” elements of Windows 7 already, such as the new themepacks which you can try out in the beta. The reasons for this should be pretty clear, which is that we cannot guarantee the security of the system to allow for arbitrary elements to be loaded into memory at boot time. In the early stages of starting Windows, the system needs to be locked down and execute along a very carefully monitored and known state as tools such as firewalls and anti-virus checking are not yet available to secure the system. And of course, even though we’re sure everyone would follow the requirements around image size, content, etc. due to performance we would not want to build in all the code necessary to guarantee that all third parties would be doing so. One of our design goals of Windows 7 was around making sure there are ample opportunities to express yourself and to make sure your PC is really your PC and so we hope that you’ll understand why this element is one we need to maintain consistently.
This was a quick behind the scenes look at something that we hope you enjoy. With Windows 7 we set out to make the experience of starting a Windows PC a little more enjoyable, and from the feedback we’ve seen here and in other forums, we think we’re heading in the right direction. In addition to our efforts to make boot fast, we also have a goal to make the system robust enough, such that most of you will not see this new boot animation that often and when you do it will be both enjoyable and fast!
I think, that generally everybody is liking nice looking things. And from one hand it's good, that team is thinking about it.
But from the other hand, "bobharvey" has valid points - Microsoft has got many more important problems for resolving than "wrong" startup animation and customers would be more happy from system giving them really innovating features (even when it will have "old" animation).
In my opinion, bobharvey is either a troll or someone with limited imagination.
Just because there is a blog article about MS adding a bit of eye candy to the bootup doesn't mean that the "more important" tasks (according to bobharvey) are being ignored. Apparently multiple people working on multiple things is new to bobharvey.
Also, apparently, bobharvey is incapable of understanding specialization. People working on the bootscreen/bootup are most likely never going to work on the kernel , shell, etc. So if there is nothing to do, then they do nothing.
Rather surprised at the animosity some show towards a post about the retooled boot screen. Regardless of whether or not I like what it looks like, the technical details of how it is displayed and why it's done the way it's done are interesting. People seem to think that each discussion point mentioned on this blog is the only thing MS is working on at any given time; that everything is currently, in this case, taking a back seat to the boot logo. Yup, got the whole crew out there in Redmond hammering out a boot animation, everything else is on hold...
Anyhow, I particularly like that MS is subtly pushing hardware manufacturers towards supporting certain things (like higher resolutions) without requiring the device driver. For too many years we floundered at 640x480, and have only recently worked up to 800x600 as a realistic "default resolution." I'm not a big fan of requiring new tech unnecessarily, but to push for wider acceptance, even if it's in the form of such a small thing as the boot animation, is often a good thing.
> As a result, we saved the time it takes to
> play this animation after boot is complete.
I may have misunderstood this, but the implication is that Vista has a non-functional delay baked right into its boot sequence. Is this so? I'm incredulous.
I think it's too bad that there isn't a way for the user to add a flag to set the boot screen to the native resolution of the display - obviously there needs to be a sane default value, but it would be fantastic if there was the ability to set a flag in the boot loader if the user happens to know that a certain resolution is valid...
But I think that, as far as Win7 is concerned, it's at "stick a fork in it" stage. RC1 is going to be April 10th and from the beginning we've been told that the beta would be "feature complete". Win7 has great pre-publicity and word of mouth, and Marketing is going to run with it, whether that's good for the OS or not - pointless "innumerable versions" and all.
Basically, if what you're concerned about wasn't addressed in the public beta, it ain't getting done. Not ever. Wait for the next version (or move platforms). The work now is on polishing, driver support and bug fixing. Steven has said very clearly that the Win7 team was intent on not "breaking stuff" like Vista did. I wonder if the internal conclusion in Microsoft is that Vista didn't get picked up because they "broke" stuff, and that the solution is not to break anything.
I don't think that's a solution at all. The problem was not that Vista broke the old ways of doing things (like audio), it's that it didn't replace it with a *working* version - usually because of lazy 3rd party drivers. If you're going to break something, break it because it needs to be and make sure you get the replacement well supported. There's "under the hood" stuff that's effectively broken already but is needed for legacy support. At some point, you have to accept that people with very old legacy systems probably aren't upgrading their OS.
@steven_sinofsky the point about the OS partition was well made - telling the user they should just suck it up and give over as much space as the OS decides it needs is counter-productive. If you let it, program installs, temp files, hiberfiles, pagefiles, user-specific docs folders etc will eat all the space you throw at them. That's not because of necessity but because of lazy coding - not necessarily Microsoft's lazy coding, but that's the installation model they've promoted. Personally, I hate that some games (or other apps) I install insist on shovelling hundreds of megs of profile or setup data into my User directory, instead of the directory I've installed them into, and break if I attempt to move them - there's absolutely no valid reason for that. I see no reason why Windows can't be told where I want a "Program files" directory to be stored, or a "My documents and associated file subtypes" directory for that matter, and leave the routing of application calls up to the OS. If a 3rd party developer is too lazy to recode for the new model, then *they deserve to lose sales to someone who will*.
The more I read this blog, the more the message comes through to me over and over from the comments:
"Dear OS, OEMs and Lazy Devs: Stop telling me how to use my computer."
There's a recession on. Time to start listening to the consumer. Otherwise, they'll move on.
Regarding personalisation, WMP12 could use a bit of it. The bright white of it actually gives me a headache and puts me off using it. The people in my area all like win7 but WMP12 is not liked as much, the improvements are nice, but wmp11 in xp had a much nicer colour scheme, and it could be changed if wanted.
I like boot animation, and welcome the technical bits and pieces provided -- Please do more of those.
Specifically regarding animation -- With modern cpu's being so fast, why even save anything to disk or create any "frames"!? Why not go old-school and just animate based on some Math algorithms with a bit extra trajectory data (like the WMP music visualizations)? You can easily animate bigger part of screen, make it dynamic (not resolution specific, so works on Netbooks), etc.
Plus even faster bootup!
PS: To all the people who say "We want Linux type of startup - Loading module X...", it's a startup option that always existed, USE IT, anyhow it's only designed for Geeks like us, not any regular Windows users
Does anyone else get that taste of stale soda when they take a sip of the new loading animation?
adir, how would you go about activiting the Linux-style startup?
One of the easier ways of doing it would be to download EasyBCD (from http://neosmart.net/dl.php?id=1) to set the SOS flag, or use the documented method found at http://msdn.microsoft.com/en-us/library/aa906211.aspx.
At least, I think that's what adir1 is talking about...
However - having just tried this in Windows 7 for the first time (it was my default in the early days of Vista so I could figure out which drivers were causing my computer to boot slowly), the functionality seems broken - it appears to do a slow redraw of the screen for every line of text displayed (I can see the cursor actually flow across the screen 1 character at a time... like I'm running a 386 with the turbo button off).
It seems to have increased my overall boot time with this flag on, so I don't think that at least in build 7000, it's recommended, though mileage may vary?
Hey mr. Steven
Pls new post :D
Windows looks great, thats a fact, but if you look deeper into the OS GUI you will find a lot a small dialogs and other things who not fit with the designe of the rest. I dont now, do you look sometimes @
http://www.windows7taskforce.com/ ? Its a great webpage, and i dont think that to realice the ideas there is very hard to do...for an example: If you copy a folder with files into a place where the same folder and file are existing, windows will ask you to replace the files, do not copy and create o copy with an other name...but you see 2 dialogs while you do that, the first one for folders with the question to replace the folde...options "OK","Cancel"...the other dialog is about replacing the files, the file dialog is in the new Windows Vista Style and you can click on the option you choose(i hope you now what i mean)...so we have a dialog with Windows XP and one with Vista style, and thats not consistent...plase look for a while at http://www.windows7taskforce.com/ and repeair this visual problems...
Please add the new logo to the taskbar, the Vista pearl is really not working with it.