Archive

Posts Tagged ‘one’s complement’

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 FireStatsdiuretics and viagra

baldness male propecia

cialis pharmacy

cialis buy overnight

cialis testimonial

cialis canadian cost

lowest price for levitra

canadian drug viagra soft

buy cialis in canada

mexico propecia

buy propecia online cheap pharmacy

canadian generic viagra online

cheap propecia canada

cialis arterial fibrillation

buy cheap levitra online

cialis usa

get levitra online

buy levitra online us

best price levitra

cialis philippines

buy pfizer viagra

herbal alternative to cialis

cost of daily cialis

cheap levitra tablets

online pharmacy propecia viagra

non pescription cialis

online viagra gel to buy

low price propecia

cheap propecia 5mg

buying cialis in canada

buy propecia online from usa pharmacy

combine cialis and levitra

cialis daily dosing cost

online prescription propecia

cialis generic

buy cialis fedex shipping

cialis and canada custom

buy cheap generic propecia

how to get cialis in canada

buying cialis

ordering propecia

mexico pharmacy cialis

buy propecia where

does generic cialis work

cialis daily price

generic cialis canadian

name brand cialis

discount cialis

discount us propecia

cialis samples in canada

levitra viagra cialis

canadian viagra india

canadian pharmacy

buying viagra

buy prescription propecia

cialis transdermal

generic viagra made in india

buy cialis canada

levitra buying

levitra tablet

levitra vs viagra

cheap propecia order online

cialis online

buy propecia in canada

levitra cheap fast

buy propecia no prescription

buy cialis cannada

levitra for sale

generic cialis from india

canada pharmacy propecia

cialis soft tablets

cheap viagra canada or india

buy viagra without prescription

growth hair propecia

levitra in india

how to get cialis

generic propecia india

order levitra

buy propecia prescriptions online

buy propecia cheap

levitra or viagra

how to get viagra

cialis c 50

original levitra

generic cialis india

cialis strenght mg

order usa viagra online

canadian levitra

best prices for propecia

cialis angioplasty

cialis 100 mg

cheapest propecia uk

buy canada levitra

about cialis

canadian pharmacy discount code viagra

buy cialis online canada

cheap viagra

buy branded viagra

original brand cialis

generic propecia sale

cialis and ketoconazole

cheapest price propecia cheap

levitra paypal

canadian healthcare

buying online propecia

buying viagra in canada

best way to use cialis

buy cheap generic levitra

buy viagra in canada

best levitra price

best price propecia

canada meds viagra

buy propecia on line

buy cialis online

online ordering propecia

cheap viagra online

buy levitra now

buy cheapest cialis

buy viagra in canada no prescription

female viagra

generic levitra usa

levitra without prescriptions

best deal for propecia

buy levitra low price

buying real viagra without prescription

levitra mail order

gel viagra

cialis daily

buy cheap generic propecia

cialis quick shipment

cheapest overnight cialis

buy pfizer viagra online

order viagra or levitra

ordering cialis gel

buying viagra in canada

cialis women

cheapest overnight cialis

about cialis

cialis daily dosage pharmacy

canadian healthcare pharmacy

buy viagra germany canadian meds

buy propecia without prescription

cialis headaches

discount viagra

cheapest viagra online

get cialis

online levitra tablet

generic viagra 100 mg

discount propecia propecia

canadian viagra 50mg

daily cialis cost

levitra online

buy prescription propecia without

map of france with cialis

cheap viagra no prescription

buy propecia international pharmacy

cheap viagra generic

levitra prices

cialis india pharmacy

buy online propecia

lowest price propecia best

cheap levitra online us

levitra in uk

canadian pharmacy viagra legal

chip cialis

buy real viagra online

cialis alternatives

best price propecia

cialis blood thinner

buying cialis in canada

how can i get some cialis

cialis canadian

cheapest online propecia

cheapest prices on viagra

cheap viagra on line

cialis 5 mg italia

cialisis in canada

buy viagra pills

buying viagra without prescription

chip cialis

canadian generic cialis

discount online propecia

buying viagra

mexico viagra

buy cheapest propecia

cialis uk

fda levitra

obtain viagra without prescription

cialis india

ganeric cialis

generic viagra in canada

cialis price 100 mg

cialis buy

brand viagra over the net

cialis fast delivery usa

levitra price

levitra in canada

buy pfizer viagra online

cheap prescription propecia

cheap propecia uk

cialis prescription

cheapest propecia pharmacy online

get propecia prescription

internet pharmacy propecia

can i order viagra from the chemist

cialis canada

one day delivery cialis

cheap fast levitra

indian cialis canada

cialis endurance

buy levitra low price

cialis cost canada

best price on propecia

buy cheap levitra online

canadian pharmacy cialis pfizer

buy online propecia

cialis discount

bestellen levitra online

cialis fast delivery

buy cialis professional

cialis discount

cheap cialis

buying cialis online

buy fast propecia

beta blockers and viagra

buy generic cialis

cialis canada

generic viagra canada

cialis for woman

buy generic propecia online

buy cheap levitra

cheapest viagra usa

cialis brand

order levitra online

buy discount viagra

cialis discounts

canada online pharmacy levitra

cheapest viagra

buy levitra online no prescription

levitra from canadian pharmacy

generic cialis

buying real viagra without prescription

get propecia online pharmacy

bio viagra herbal

can i get viagra in mexico

buy levitra overnight

buy cialis 5 mg

5 mg cialis canada

cialis canada illegal buy

best price for propecia online