Login

ARM The Architecture For The Digital World  

ARM Community: Software Enablement - ARM Community

Jump to content

Top 2011 ARM Software blogs: Android, NEON, RISC vs CISC & Assembly

2011 was a busy year for developing software on ARM and the activity is reflected in the page views of top Software Enablement blogs. The topics included managing caches, Android (multiple), NEON (multiple), Memory Access Ordering, RISC vs CISC architectures (multiple), and optimizing assembly code (listed by popularity below). In addition, the Software Enablement Community pages (Linux, Solution Center for Android, RTOS, Microsoft, etc) were some of the highest referenced pages on the ARM site. Please let us know if you have more ideas for easing your software development on the ...

Oracle's Java SE server compiler now on ARM

Last month Oracle shipped 2 sets of Java SE for Embedded releases for ARM: 7 Update 2 and 6 Update 30. Java SE for Embedded 7u2 is a key release for the ARM Community as it includes the first offering of Oracle's server JIT (Just-In-Time) bytecode compiler for ARM. The server compiler, a highly optimizing JIT compiler used to produce Oracle's record-setting Java SE benchmarks, is now available on ARMv7.

Some quick background on Oracle's JIT compilers - there are 2 compilers for Java SE: client and server. The client compiler is a fast start-up, lightly optimizing compiler. It's better suited for smaller footprint systems and those running applications that require fast start-up such as GUI apps. The server compiler is targeted for long-running applications where throughput is most important. It produces highly-optimized code but incurs a start-up cost in achieving that. At JavaOne 2011 in San Francisco, we shared information on the client and server compilers in a joint ...

Branch and Call Sequences Explained

In this post, I will explain the various branch and call instructions available in the ARM and Thumb instruction sets, and why the variants exist. Finally, I will provide a JavaScript tool that can help you find a typical branch sequence matching your requirements.

What Does a Branch Do?

A branch, quite simply, is a break in the sequential flow of instructions that the processor is executing. Some other architectures call them jumps, but they're essentially the same thing. The following is a trivial, and hopefully familiar example of a branch:

entry_point: mov r0, #0 @ Set r0 to 0. b target @ Jump forward to 'target'. mov r0, #1 @ Set r0 to 1. target: ... @ At this point, r0 holds the value 0. ... @ The second mov instruction did not execute.
Example of branch execution.

...

x264 on ARM: Bringing a wider application of video conferencing (Part 3)

In part one and part two of this blog series, we introduced the video conferencing use case requirements and performed tuning of x264 for optimal tradeoff between bit rate, frame rate and video quality… In this part, we will test and analyze encode performance for optimal execution on the target ARM platform.

1 Test result of on the target ARM platform

Using the results from the previous step, we test the options “default”, “--preset ultrafast”, “--preset superfast” and “--preset very fast” with our optimal settings on the ARM platform and evaluate the performance against our use case requirements for video conferencing.

1). List of Combinations (settings tested)
Attached Image


2). Result

Attached Image
Attached Image
Attached Image


3). Conclusion
According to above information, we can conclude:
Attached Image


2 Summary of the optimal settings
According to the test results above, we might conclude: when rc-lookahead is set to 1, the bit rate is the minimum and the...

x264 on ARM: Bringing a wider application of video conferencing (Part 2)

In part one of this series, we introduced the video encode requirement and target development environment. In this part, we start by examining benchmarking result of h.264 encode using x264 on a development host rather than the ARM target. This enables us to perform some initial tuning of the encode settings for our target use case of video conferencing.

1 Benchmarking

For video conferencing, we want low bit rate, but at the same time we must maintain at least a 15 fps frame rate so that video quality is acceptable. So we focus on balancing bit rate, frame rate and video quality when investigating the performance of x264 encoder. In x264, there are many options for enabling and tuning the performance of the encoder. So we test the various combinations and evaluate resultant bit rate and video quality. Since relative bit rate and video quality are facets of the encode algorithm and independent of the hardware platform, we first test x264 using our desktop development host.

1.1 Bit rate and video quality testing
1) Description
We test the different combinations of options which x264 support. We focus on bit rate, frame rate and video quality. Video quality is measured by PSNR (Peak Signal-To-Noise Ratio). PSNR is most commonly used as a measure of q...
  • (18 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »
All company and product names appearing in the ARM Blogs are trademarks and/or registered trademarks of ARM Limited per ARM’s official trademark list. All other product or service names mentioned herein are the trademarks of their respective owners.