Jerry_Suiter

Expedition PCB Memory Usage

Discussion created by Jerry_Suiter on Feb 27, 2009
Latest reply on Mar 2, 2009 by yu.yanfeng

Hello,

 

There have been a few questions about Expedition PCB memory usage.  I would like to provide a little information on this topic.

 

As Expedition PCB is a 32 bit application, it’s limited to the amount of addressable memory that can be defined for a single process.  For operating systems based on the Microsoft Windows NT technology, this limitation is 2 GB of virtual address space for a single process.

 

History

 

Starting back in 2006 we started to see a few customer designs exceeding this 2 GB limitation.  When this occurs the application will crash.  Exceeding this limitation can be caused by many factors:

 

Bugs (memory leaks) – This type of issue is seen when the design opens with far less than 2 GB of memory and after a relatively short time within the design environment the process runs out of memory.   If this type of situation is seen, it’s best to log a bug through CSD.  The bug will then be resolved within engineering.

 

Extraneous number of graphic objects – I have seen some customer designs where construction objects have been poorly managed.  In this case the user kept importing DXF data into the design without removing the previous data.  A relatively small design had over 1.2 GB of user graphics which was mostly graphics shapes on top of other graphics shapes.  This type of situation can be resolved by cleaning up the construction elements imported onto user layers.

 

Small hatch widths for drawn plane data – In this case the board was the size of a full panel and the positive plane data was hatched with a 1 mil line.  This situation was easily solved by changing over to 274X Gerber using a solid shape fill instead of hatching.

 

Migration – I saw one truly large customer design in which moving from 2005.X to 2007.X would crash when running out of memory during the load process.  In this case the load process was migrating between two major releases.  Seeing no other solution for this situation we enabled our 2007.X software to support Windows extended memory.

 

Starting with 2007 Release Windows OS

 

In 2007, we started building our Expedition PCB application using Microsoft’s ‘/LARGEADDRESSAWARE’ option.  This feature allows 32 bit processes to access an additional 1 GB of additional virtual address space above 2 GB.

Even though Expedition PCB is built to support this additional virtual address space, it is still limited to 2 GB, unless the /3GB switch is used in the Boot.ini file.  The following example shows how to add the /3GB parameter to the Boot.ini file to enable application memory tuning:

 

     [boot loader]

     timeout=30

     default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS

     [operating systems]

     multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /3GB

 

Therefore, starting with 2007.0, Expedition PCB can support up to 3GB of virtual address space if the /3GB parameter is added to the Boot.ini running on Windows XP/Vista.

 

When running Windows Server 2003 Enterprise Edition you can also enable more memory beyond 2 GB of virtual address space. Customers running this OS can enable Physical Address Extension, thus allowing the operating system to access 1 GB additional virtual address space.  To enable the operating system to use PAE, the ‘/PAE’ switch must be defined in the Boot.ini file. 

 

64 Bit OS

 

Another option is for customers to use a 64 bit version of Windows which allows a 32 bit process to access up to 4 GB of virtual address space.  True 64 bit versions of XP and Vista are available and these versions allow 32 bit applications even more virtual address space than is supported by the same 32 bit versions.  No changes are needed to these 64 bit operating systems to take advantage of the additional virtual address space.

 

Linux

 

When running 32 bit Linux, the default addressable memory size is also 3 GB.  However, 4 GB of virtual address space can be accessed by a process if the HugeMem kernel is used.  64 bit Linux supports up to 4 GB of virtual address space natively.

 

Graphics Cards and Memory

 

The last thing to be aware of is that if you have a 32 bit operating system, you’re limited to 4 GB of virtual address space.  However, this same virtual address space is also used to map the physical memory within your graphics card.  Therefore, the total address space available to the operating system is reduced to less than 4 GB.  In this case, if you have a graphics card with 512 MB of RAM, the available virtual address space will be reduced to 3.5 GB.  64 bit operating systems don’t have this issue since they allow greater than 4 GB of virtual address space.

 

Reference

 

Here are some additional references on how Windows operating systems handles large memory support:

http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx

http://msdn.microsoft.com/en-us/library/bb613473(VS.85).aspx

 

Regards,

Jerry Suiter

ExpeditionPCB/XtremePCB Product Marketing Manager

 

Outcomes