Archive

Posts Tagged ‘saturate’

Designing a processor for increased source portability costs

February 9th, 2010 Derek-Jones 4 comments

How might a vendor make it difficult for developers to port open source applications to their proprietary cpu? Keeping the instruction set secret is one technique, another is to design a cpu that breaks often relied upon assumptions that developers have about the characteristics of the architecture on which their code executes.

Of course breaking architectural assumptions does not prevent open source being ported to a platform, but could significantly slow down the migration; giving more time for customers to become locked into the software shipped with the product.

Which assumptions should be broken to have the maximum impact on porting open source? The major open source applications (e.g., Firefox, MySQL, etc) run on 32/64-bit architectures that have an unsigned address space, whose integer representation uses two’s complement arithmetic and arithmetic operations on these integer values wrap on over/underflow.

32/64-bit. There is plenty of experience showing that migrating code from 16-bit to 32-bit environments can involve a lot of effort (e.g., migrating Windows 286/386 code to the Intel 486) and plenty of companies are finding the migration from 32 to 64-bits costly.

Designing a 128-bit processor might not be cost effective, but what about a 40-bit processor, like a number of high end DSP chips? I suspect that there are many power-of-2 assumptions lurking in a lot of code. A 40-bit integer type could prove very expensive for ports of code written with a 32/64-bit mindset (dare I suggest a 20-bit short; DSP vendors have preferred 16-bits because it uses less storage?).

Unsigned address space (i.e., lowest address is zero). Some code assumes that addresses with the top bit set are at the top end of memory and not just below the middle (e.g., some garbage collectors). Processors having a signed address space (i.e., zero is in the middle of storage) are sufficiently rare (e.g., the Inmos Transputer) that source is unlikely to support a HAS_SIGNED_ADDRESS build option.

How much code might need to be rewritten? I have no idea. While the code is likely to be very important there might not be a lot of it.

Two’s complement. Developers are constantly told not to write code that relies on the internal representation of data types. However, they might be forgiven for thinking that nobody uses anything other than two’s complement to represent integer types these days (I suspect Univac does not have that much new code ported to it’s range of one’s complement machines).

How much code will break when ported to a one’s complement processor? The representation of negative numbers in one’s complement and two’s complement is different and the representation of positive numbers the same. In common usage positive values are significantly more common than negative values and many variables (having a signed type) never get to hold a negative value.

While I have no practical experience, or know of anybody who has, I suspect the use of one’s complement might not be that big a problem. If you have experience please comment.

Arithmetic that wraps (i.e., positive values overflow negative and negative values underflow positive). While expressions explicitly written to wrap might be rare, how many calculations contain intermediate values that have wrapped but deliver a correct final result because they are ‘unwrapped’ by a subsequent operation?

Arithmetic operation that saturate are needed in applications such as graphics where, for instance, increasing the brightness should not suddenly cause the darkest setting to occur. Some graphics processors include support for arithmetic operations that saturate.

The impact of saturation arithmetic on portability is difficult to judge. A lot of code contains variables having signed char and short types, but when they appear as the operand in a binary operation these are promoted to int in C/C++/etc which probably has sufficient range not to overflow (most values created during program execution are small). Again I am lacking in practical experience and comments are welcome.

Floating-point. Many programs do not make use of floating-point arithmetic and those that do rarely manipulate such values at the bit level. Using a non-IEEE 754 floating-point representation will probably have little impact on the portability of applications of interest to most users.

Update. Thanks to Cate for pointing out that I had forgotten to discuss why using non-8-bit chars does is not a worthwhile design decision.

Both POSIX and the C/C++ Standards require that the char type be represented in at least 8 bits. Computers supporting less than 8-bits were still being used in the early 80s (e.g., the much beloved ICL 1900 supported 6-bit characters). The C Standard also requires that char be the smallest unit of addressable storage, which means that it must be possible for a pointer to point at an object having a char type.

Designing a processor where the smallest unit of storage is greater than 8-bits but not a power-of-2 is likely to substantially increase all sorts of costs and complicate things enormously (e.g., interfaces to main memory which are designed to work with power of two interfaces). The purpose of this design is to increase other people’s cost, not the proprietary vendor’s cost.

What about that pointer requirement? Perhaps the smallest unit of storage that a pointer could address might be 16 or 40 bits? Such processors exist and compiler writers have used both solutions to the problems they present. One solution is for a pointer to contain the address of the storage location + offset of the byte within that storage (Cray used this approach on a processor whose pointers could only point at 64-bit chunks of storage, with the compiler generating the code to extract the appropriate byte), the other is to declare that the char type occupies 40-bits (several DSP compilers have taken this approach).

Having the compiler declare that char is not 8-bits wide would cause all sorts of grief, so lets not go there. What about the Cray compiler approach?

Some of the address bits on 64-bit processors are not used yet (because few customers need that amount of storage) so compiler writers could get around host-processor pointers not supporting the granularity needed to point at 8-bit objects by storing the extra information in ‘unused’ pointer bits (the compiler generating the appropriate insertion and extraction code). The end result is that the compiler can hide pointer addressability issues :-).

FireStats icon Powered by FireStatslevitra mail order

cialis brand name

express viagra delivery

levitra price

cheap propecia order online

how much is viagra

cialis overnight delivery

does generic cialis work

indian cialis canada

buy cheap online propecia

canadian pharmacy cialis pfizer

cheap canadian viagra

buy cheap levitra

order levitra

online propecia uk

canadian viagra

buy cialis without a prescription

lowest price on non generic levitra

generic cialis next day delivery

buy generic propecia

cialis soft tablets

generic cialis sale

buy propecia prescriptions online

buy viagra

cheap discount levitra

buy branded viagra online

levitra cheap fast

buy now viagra

how much to buy viagra in pounds

cheapest priced propecia

online propecia prescriptions

buy cheap propecia

buy cialis on line

ordering propecia online

cialis order

mexico pharmacy cialis

levitra buy online

cialis soft pills

cheap levitra without prescription

cheap viagra from uk

cialis uk

cialis for women

buy generic levitra

cost of cialis

buy viagra pills

cialis generic

order propecia prescriptions

cialis vs levitra

cialis and ketoconazole

buy cialis in canada

cialis next day delivery

generic cialis

cialis tablets foreign

non pescription cialis

cheapest online propecia

canadian healthcare pharmacy

buy levitra online us

levitra tablets

indian cialis

buy drug propecia

cheapest prices for viagra

how you get pfizer viagra

canadian viagra and healthcare

buy pfizer viagra in canada

fda levitra

order cheapest propecia online

buy online propecia

cialis delivered overnight

get viagra

cialis refractory

cialis generic 100 mg

canadian healthcare cialis

cialis by mail

buy now propecia

mail order propecia

buy cheapest cialis

cialis c 50

buy real viagra online without prescription

cialis usa

cialis soft

buy cialis on line

canada levitra

canada propecia prescription

buy cialis without prescription

cialis fast delivery

cialis for sale

once daily cialis

cialis canada

online cheap viagra

cialis one a day

can i order viagra from the chemist

buy branded viagra online

best price propecia

order propecia

buy propecia pills

buy viagra china

lowest price propecia

canada propecia prescription

indian cialis generic

buy prescription propecia without

buy cialis next day delivery

buying cialis

buy propecia prescriptions online

cost of daily cialis

buy propecia generic

buy propecia generic

best price levitra online

cialis samples

generic propecia finasteride

discount levitra pharmacy purchase

buy cheap propecia online

overnight canadian viagra

cialis for less 20 mg

cialis no rx

cialis overnight

buy propecia online cheap pharmacy

cheapest propecia online

buy propecia online prescription

cost of propecia

best price generic propecia

cheap viagra online

cheapest prices for viagra

cialis cost

low cost levitra

generic viagra

buy propecia and proscar

next day delivery cialis

cialis daily

canadian generic cialis

online generic cialis 100 mg

cialis on sale

buy levitra vardenafil

cheapest viagra online

buy levitra american pharmacy

how to get cialis

healthcare of canada pharmacy

buy levitra with no prescription

how strong is 5 mg of cialis

low price cialis

cheap viagra no prescription

buy propecia canada

cialis blood thinner

best online levitra

cost of viagra

canada viagra

chip cialis

buy levitra by mail

cialis professional

canadain viagra india

levitra in uk

cheap levitra tablets

buy propecia where

levitra vs cialis

online propecia prescription

cialis brand

cialis okay for women

buy generic cialis

buying viagra with no prescription

cialis once daily

cialis samples

cialis woman

canadian viagra india

levitra 20mg

cialis fast delivery usa

buy canada levitra

buy pfizer viagra in canada

cialis endurance

buy propecia online from usa pharmacy

canada pharmacy propecia

buy propecia online usa

how to buy cialis in canada

cialis fast delivery

buy levitra vardenafil

cialis pharmacy

levitra sex pill

canada viagra

can i order viagra from the chemist

cialis 20 mg

cialis kanada

buy 5 mg cialis

generic propecia for sale

buy fast propecia

generic cialis canadian

cialis brand name

low price cialis

buy real viagra online without prescription

index

ordering viagra

low cost propecia

cialis woman

cialis 50 mg dose

cialis fast delivery

buy cialis once daily

generic levitra india

cialis en mexico

cialis transdermal

bio viagra herbal

buying viagra in canada

buying propecia online

cialis at real low prices

how much does cialis cost

best price cialis

bruising on cialis

china viagra

cheap levitra prescription

buy cialis fedex shipping

buy pfizer viagra

buy propecia on line

levitra where to buy

cialis low price

cialis at real low prices

buy cialis usa

cialis and women

discount levitra online viagra

cialis generic

cialis 5 mg buy

discount canadian cialis

cialis price

cialis daily dosing cost

buying cialis next day delivery

discount generic propecia

cheap cialis fast delivery time

for sale levitra

cheap levitra prescription

canadian viagra 50mg

generic propecia effective

buy levitra now

effect of cialis on women

cheap viagra pills

cialis daily dosage pharmacy

discount us propecia

buy now online propecia

online levitra tablet

buy cialis

cheap cialis soft

cheap viagra pills

cialis canadian

cialis headaches

once a day viagra

cialis cheap us pharmacy

cialis daily in canada

low cost canadian viagra

buy cialis canada

cialis iop

buy cialis canada

healthcare canadian pharmacy

cheapest prices on propecia

buy viagra pills

brand viagra professional

buy real cialis