Archive

Posts Tagged ‘open source’

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 :-).

www.wenn.com
FireStats icon Powered by FireStatswww.tinynibbles.com levitra online overnight delivery

buy real viagra online

5 mg daily cialis

buy propecia online

generic propecia sale

how much to buy viagra in pounds

online cialis

cialis purchase

hydrochlorothiazide cialis

cialis professional no prescription

cialis daily dosage pharmacy

lowest propecia prices

cialis and diarrhea

buy cialis fedex shipping

lowest price propecia best

generic propecia fda approved

cialis delivered overnight

levitra online sales

buying propecia online

generic levitra overnight delivery

buy levitra us

levitra cheap fast

ordering propecia online

levitra buy online

best price cialis

online ordering propecia

how to get viagra

canada meds viagra

buying cialis next day delivery

cheapest prices for viagra

cialis 50 mg

how to buy cialis in canada

cialis refractory

overnight delivery cialis

cialis fast delivery

cialis daily

buy viagra without prescription

buy propecia where

internet pharmacy propecia

low cost levitra

buy levitra online no prescription

buy propecia cheap

levitra online prescription

online generic cialis 100 mg

order propecia

levitra cost

i need to buy propecia

buy cialis once daily

levitra viagra cialis

does generic cialis work

online propecia prescriptions

cialis professional 100 mg

order cheap propecia

brand viagra professional

china viagra

buying levitra online

cialis next day delivery

how much is viagra

buy generic viagra india rx

brand name cialis

cheap levitra uk

generic cialis sale

levitra online no prescription

online propecia prescription

buy cialis canada

cialis en mexico

generic levitra canada

buy propecia online pharmacy

levitra order prescription

discount drug propecia

cialis alternative

lowest priced propecia

cialis headaches

cheap canadian viagra

cialis strenght mg

cialis prescription

cialis professional 20 mg

best price generic propecia

cheap viagra online

buying propecia

order cheapest propecia online

buy cheap levitra online

cialis daily in canada

cheap order prescription propecia

buy propecia online from usa pharmacy

buying cialis soft tabs 100 mg

buy propecia on line

cheap prescription propecia

generic viagra canada

canadian viagra india

lowest propecia 1 mg

order generic levitra

buy propecia in the uk

generic viagra 100 mg

generic levitra online

cialis from canada

buy levitra online viagra

how to get cialis in canada

buy cialis usa

buy branded viagra

buy viagra mexico

cialis and ketoconazole

buy canada levitra

levitra tabs

cheapest propecia sale uk

lowest price for propecia

buy viagra china

canada levitra

genuine cialis pills

cialis transdermal

get levitra

buy viagra online

low cost canadian viagra

buy cialis cannada

buy levitra uk

buy generic cialis

discount propecia rx

canadian viagra and healthcare

buying generic propecia

levitra now online

levitra online

cost of daily cialis

cialis fast delivery usa

cheapest propecia uk

levitra mg

cheap propecia online

cialis from mexico

best price for propecia

overnight delivery viagra

cost levitra low

order viagra or levitra

mail online order propecia

canada viagra

low price levitra

getting cialis from canada

cheap levitra without prescription

can i get viagra in mexico

buying generic cialis mexico rx

canada online pharmacy levitra

fda levitra

cialis cheap us pharmacy

cheapest viagra online

levitra discount

ganeric cialis

generic viagra made in india

how much cialis

5 mg original brand cialis

cheap cialis from india

buy fast propecia

lowest propecia prices in canada

buy generic levitra

buy propecia now

indian generic levitra

generic propecia finasteride

canadian healthcare pharmacy

generic propecia alternative

buy now propecia

drug generic propecia

generic propecia 5mg

indian viagra

natural viagra

generic cialis soft tabs

buy prescription propecia without

order prescription propecia

levitra sales uk

bestellen levitra online

buy cialis for daily use

brand viagra over the net

cheap propecia online prescription

online pharmacy propecia renova

buy cheapest propecia

levitra prescription

buy propecia without prescription

once daily cialis

buy cheap levitra

cialis for woman

buy propecia prescriptions online

generic propecia for sale

buy cheap generic propecia

generic cialis next day shipping

cialis uk

buy online prescription propecia

cheapest viagra usa

cialis 100 mg generic

canadian drugs propecia

buy viagra on line

generic viagra online

how strong is 5 mg of cialis

cheap cialis soft

name brand cialis

buy viagra germany canadian meds

levitra low price

cheap cialis

online propecia uk

generic viagra india

cialis 5 mg italia

get propecia online pharmacy

online pharmacy propecia viagra

cialis and canada custom

info levitra

mexico pharmacy cialis

lowest price propecia

generic viagra made in usa

buy levitra vardenafil

cialis profesional

levitra in canada

cialis 5 mg buy

cheapest viagra

levitra canadian

buy cialis in usa

next day viagra

cheap levitra

canadian online pharmacy cialis

cheapest propecia prescription

cheap fast levitra

best price propecia

indian cialis

cost of propecia

buy cheap generic levitra

cialis tablets foreign

cialis woman

get levitra online

cialis vs levitra

discount us propecia

for sale levitra

best price for generic cialis

cialis generic 100 mg

canada viagra generic

buy generic propecia

cialis cheap

generic levitra vardenafil

canadian healthcare viagra

buy real cialis

buy cialis 5 mg

canadian propecia rx

buying online propecia

best way to use cialis

indian cialis generic

levitra from canadian pharmacy

lowest price levitra

cheap viagra canada or india

buy can from i propecia who

get cialis

order levitra online

discount propecia online

generic levitra cheap

cost of viagra

cialis 100 mg

levitra pill

levitra for sale

ordering cialis gel

how much does cialis cost

buy propecia canada

canadian pharmacies cialis

discount generic propecia

mail order levitra

low cost propecia

cialis in mexico

cialis dosage mg

buy 5 mg cialis

herbal propecia

cialis on women

obtain viagra without prescription

healthcare canadian pharmacy

discount levitra purchase

cialis discounts

bio viagra herbal

generic propecia online pharmacy

canadian viagra 50mg

cheapest price propecia cheap

cheap levitra prescription

cialis online

cheap viagra from uk

canadian healthcare

cialis no prescription

cialis by mail

levitra online us

cialis pharmacy

buy levitra online from canada

cialis discount

buy dosages levitra

cheap propecia 5mg

mexico levitra

canada propecia prescription

order cheap levitra

levitra next day delivery

generic propecia effective

best price levitra

gele viagra

canada generic propecia

buy propecia generic

buying viagra in canada

cheap discount levitra

combine cialis and levitra

canadian pharmacy cialis

generic cialis from india

cialis quick shipment

discount cialis india

cialis price

cheap levitra tablets