Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ARMV4 vs ARMV4I

1,535 views
Skip to first unread message

Mhaxx

unread,
Dec 19, 2005, 5:35:32 AM12/19/05
to
Could someone tell me what's the difference between these two CPUs: ARMV4
and ARMV4I.

Maybe the first is tipically used with Pocket PC devices, while ARMV4I is
tipically used with "Windows CE 4.20" devices?

On other words: which CPUs have I to select to compile my code by eVC4?

Mhaxx


Zhongwei Wang

unread,
Dec 19, 2005, 11:19:27 AM12/19/05
to
No, not like that.

You choose the CPU type based on the CPU of your target device. If you
don't know the target CPU type, choosing ARMV4 is safer for you.

ARMV4I CPUs support Thumb instructions, which increases the CPU performance
by using 16-bit instructions instead of 32-bit but has less access to CPU
resources.

--
Zhongwei Wang
Applied Data Systems
www.applieddata.net


"Mhaxx" <super...@despammed.com> wrote in message
news:OUZ$geIBGH...@TK2MSFTNGP12.phx.gbl...


K. S. Huang

unread,
Dec 19, 2005, 11:50:47 AM12/19/05
to

"Zhongwei Wang" <MWang@applieddata[dot]_net> 撰寫於郵件新聞:eWGY9fLB...@TK2MSFTNGP15.phx.gbl...

> No, not like that.
>
> You choose the CPU type based on the CPU of your target device. If you
> don't know the target CPU type, choosing ARMV4 is safer for you.
>
> ARMV4I CPUs support Thumb instructions, which increases the CPU
> performance
increasing?? Is that a typing mistake that might be "decrease"??

Zhongwei Wang

unread,
Dec 19, 2005, 2:52:58 PM12/19/05
to
No, it is not typing error.

Why do you think Thumb decrease CPU performance? My understanding is Thumb
has better code density, thus less instruction data to load. I thought the
whole point of Thumb was to provide better code density and lower cost
without compromising performance.

--
Zhongwei Wang
Applied Data Systems
www.applieddata.net


"K. S. Huang" <ksh_AT_bsquare_DOT_com> wrote in message
news:uET2gxL...@TK2MSFTNGP10.phx.gbl...


K. S. Huang

unread,
Dec 19, 2005, 9:53:04 PM12/19/05
to
That's right. but in thumb mode,
1) Most Thumb instructions are executed unconditionally,
2) Having restriction to access r8-r12

Quoted from "Addison Wesley - Steve Furber - ARM System-on-Chip Architecture
(2nd Edition)" at page 203
there is a summery about the Thumb and ARM instructions

‧ The Thumb code requires 70% of the space of the ARM code.
‧ The Thumb code uses 40% more instructions than the ARM code.
‧ With 32-bit memory, the ARM code is 40% faster than the Thumb code.
‧ With 16-bit memory, the Thumb code is 45% faster than the ARM code.
‧ Thumb code uses 30% less external memory power than ARM code.
So where performance is all-important, a system should use 32-bit memory and
run ARM code. Where cost and power consumption are more important, a 16-bit
memory system and Thumb code may be a better choice. However, there are
intermediate
positions which may give the best of both worlds...


"Zhongwei Wang" <MWang@applieddata[dot]_net> 撰寫於郵件新聞:e228QXNB...@TK2MSFTNGP09.phx.gbl...

Mhaxx

unread,
Dec 20, 2005, 9:20:40 AM12/20/05
to
> ARMV4I CPUs support Thumb instructions, which increases the CPU
performance

What are exactly Thumb instructions?

Mhaxx


Mhaxx

unread,
Dec 20, 2005, 9:23:26 AM12/20/05
to
> No, not like that.

But can you determine some general categories of device for ARMv4, ARMv4I
and ARMv4T? I.e. is ARMv4I is tipically used with "Windows CE 4.20" devices
and..

Mhaxx


Zhongwei Wang

unread,
Dec 20, 2005, 10:04:29 AM12/20/05
to
No, you can not determine the category simply by Pocket PC and Windows CE.
What matters is only the device CPU. Use ARMv4 for StrongARM CPUs, e.g.
SA1110; use ARMv4I for XScale CPUs, e.g. PXA255.

Applications compiled for ARMv4i may not run on ARMv4 CPU because ARMv4 CPU
doesn't support thumb mode. There is probably no 100% guarantee either, at
least I don't see the guarantee anywhere, that applications compiled for
ARMv4 will run and function properly on ARMv4i CPUs, but in most cases it
will. That is why I said using ARMv4 is safer for you if you don't know the
target device CPU, however, I assume most devices on the market are having
ARMv4I CPUs. ARMv4 CPUs are getting obsolete.

ARMv4I CPUs can execute both 32-bit ARM and 16-bit Thumb instructions, I
means interworking, i.e. interworking ARM and Thumb. Thumb instructions are
a subset of ARM instructions, say the most "popular" ARM instructions, they
are encoded into 16-bits so they have better code density. Althought the
instruction is 16-bit, they operate 32-bit values and produce 32-bit
addresses.

--
Zhongwei Wang
Applied Data Systems
www.applieddata.net


"Mhaxx" <super...@despammed.com> wrote in message

news:Od6BhCX...@TK2MSFTNGP09.phx.gbl...


Chris Tacke, eMVP

unread,
Dec 20, 2005, 11:49:02 AM12/20/05
to
16-bit instructions. I recommend you start Googling for infomation.

--
Chris Tacke
Co-founder
OpenNETCF.org
Are you using the SDF? Let's do a case study.
Email us at d c s @ o p e n n e t c f . c o m
http://www.opennetcf.org/donate


"Mhaxx" <super...@despammed.com> wrote in message

news:Ozf%239AXBG...@tk2msftngp13.phx.gbl...

Steve Maillet (eMVP)

unread,
Dec 20, 2005, 2:48:51 PM12/20/05
to
Maybe it does maybe it doesn't increase performance. 16 bit instructions
decrease the code size but add issues for the memory system which needs to
deal with fetching of hallfwords instead of the native word size. So, it's
not as straight forward an issue as you might think. Further more ARMV4I
actually increases the size, and decreases the performance of non-thumb code
(relating to extra interworking support for all function calls). The only
way to know for sure in any given situation is to profile the code and find
out.

--
Steve Maillet
EmbeddedFusion
www.EmbeddedFusion.com
smaillet at EmbeddedFusion dot com


Steve Maillet (eMVP)

unread,
Dec 20, 2005, 2:52:16 PM12/20/05
to
>No, you can not determine the category simply by Pocket PC and Windows CE.
>What matters is only the device CPU
That's not quite true. All Pocket PC 2002 & 2003 devices are ARMV4, All WM5
devices are ARMV4I. For other devices that are not official Pocket PCs or
Windows Mobile devices there is no general rule of thumb other than the fact
that devices that try to be like a specialize Pocket PC *usually*, but by no
means always, pick the instruction set that matches the currently available
Pocket PCs for the same OS version.

Steve Maillet (eMVP)

unread,
Dec 20, 2005, 2:53:27 PM12/20/05
to
>What are exactly Thumb instructions?

see: www.Arm.com

Zhongwei Wang

unread,
Dec 20, 2005, 10:04:37 PM12/20/05
to
Is this comment about Pocket PC SDK or the actual Pocket PC device CPU?
I know some Pocket PC 2003 devices, e.g. Symbol ones, are using XScale
processors, sharing some same application/driver binaries compiled for
ARMv4I with CE.Net devices. Do you mean these fall into the
specialized Pocket PC, and all standard Pocket PC 02&03 use ARMv4?

Steve Maillet (eMVP) wrote:

h...@40th.com

unread,
Dec 21, 2005, 7:08:16 PM12/21/05
to
PPC 2003 (ce4.2x) won't load a /machine:thumb
exe (wm5 ppc sdk requires this), so it's all
moot. If you want a single exe to run on
wm5 ppc and ppc 2003 you have to use armv4 (and
hence the ppc 2003 sdk). Yes, ppc 2003 armv4
apps will run just fine on wm5 ppc. As well
as anything else wm5-related, that is. The
ppc 2003 armv4 will also run on ppc 2002 and
even 2000. If you're careful and know what
you're doing, likely the older ce2.x pspc, too.

In short, anything built using the wm5 ppc sdk
is not going to run on anything ppc 2003. It
won't even load. It's probably a different
cpu id, not the 2577 of arm. I suppose you
could try changing that in the pe header, and
it might fly on ppc 2003...

--
40th Floor - Software @ http://40th.com/
iPlay : the ultimate audio player for mobiles
parametric eq, xfeed, reverb; all on a mobile

0 new messages