打印
[应用相关]

请问,怎么才能实现并行处理,例如在STM32或者C51处理器中

[复制链接]
5566|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一直思考这个问题已经很长时间了,并行应该是两个指令一块儿同时运行,可是单片机大多只有一个核心,也就是说是单核CPU,那为什么却能够并行处理呢?请各位大神来指点小弟两句,万分感激
沙发
nstel| | 2016-8-9 19:20 | 只看该作者
用汇编语言。汇编是天生的多任务系统。C语言是单任务系统。

使用特权

评论回复
板凳
nstel| | 2016-8-9 19:22 | 只看该作者
C语言用在单片机上,有着不可克服的缺陷。基本上,用C语言去开发单片机,只能做一些普通的程序。

使用特权

评论回复
地板
nstel| | 2016-8-9 19:22 | 只看该作者
VC的多任务,是操作系统来完成的。

使用特权

评论回复
5
奋斗吧,蜗牛!|  楼主 | 2016-8-9 19:26 | 只看该作者
nstel 发表于 2016-8-9 19:20
用汇编语言。汇编是天生的多任务系统。C语言是单任务系统。

汇编的多任务主要体现在哪里呢

使用特权

评论回复
6
奋斗吧,蜗牛!|  楼主 | 2016-8-9 19:27 | 只看该作者
nstel 发表于 2016-8-9 19:22
C语言用在单片机上,有着不可克服的缺陷。基本上,用C语言去开发单片机,只能做一些普通的程序。 ...

那如果想使用汇编亦或者是C,在单片机上实现并行处理该怎么弄?

使用特权

评论回复
7
290399937| | 2016-8-9 19:54 | 只看该作者
并行是什么意思?这个先表示清楚。。。有些事件 完全不需要CPU处理。单片机  外设之间直接交换了。。。。完全并行 的话,单片是不好做的。。。。要用FPGA

使用特权

评论回复
8
maiweiqi| | 2016-8-9 21:12 | 只看该作者
要并行,只能fpga。

使用特权

评论回复
9
xyz549040622| | 2016-8-9 21:35 | 只看该作者
一个核心,是没法并行的。那些并行,都是伪并行,只能上fpga了。

使用特权

评论回复
10
a136498491| | 2016-8-9 21:39 | 只看该作者
比如,单片机上跑了操作系统,然后就并行处理了。
其实不是,单个CPU一个时刻只能执行一条指令,加了操作系统,作用是,每隔一段时间就换一个任务,比如1ms吧,那么整体看起来就是并行的了,但微观上还是。。。串行

使用特权

评论回复
11
戈卫东| | 2016-8-9 21:42 | 只看该作者
你可以在一个PCB上焊两个或更多MCU。

使用特权

评论回复
12
泰山特曲123| | 2016-8-9 23:24 | 只看该作者
nstel 发表于 2016-8-9 19:22
C语言用在单片机上,有着不可克服的缺陷。基本上,用C语言去开发单片机,只能做一些普通的程序。 ...

怎样的程序是普通的程序?为什么说汇编天生是多任务?

使用特权

评论回复
13
fly1974| | 2016-8-10 08:11 | 只看该作者
把串行行为1、2分别分解成N和M个串联行为,那么N0、M0、N1、M1....NN、MM这样的执行就可以看做是并行的。

使用特权

评论回复
14
dirtwillfly| | 2016-8-10 08:12 | 只看该作者
可以考虑用多核的处理器,也能真正并行运行

使用特权

评论回复
15
mcu5i51| | 2016-8-10 08:18 | 只看该作者
单核处理器无法真正并行运行程序,可以用多核处理器做;线程太多的话只有FPGA了;
对于电脑,单片机上常说的并行处理,一般是指的宏观上

使用特权

评论回复
16
manbo789| | 2016-8-10 08:46 | 只看该作者
单核一般是不可能真并行的,只能伪并行,

楼主,你如果想要伪并行多任务,可以了解一下像ucos这样的小型操作系统,

如果没有太多精力学习操作系统,可以百度一下smset大神的作品“小小调度器”,极易学习上手,有兴趣请联系我,

使用特权

评论回复
17
huangqi412| | 2016-8-10 09:27 | 只看该作者
单核时间片频繁切换

使用特权

评论回复
18
nstel| | 2016-8-10 09:29 | 只看该作者
并行,可以是指令级并行,也可以是任务及并行,还可以是分段级并行!
指令级并行,多核处理器也做不到。就是说:几条指令同时执行,需要独立的核,独立的内存,独立的外设。多核处理器只是独立的核做到了,外设和内存都是共用的,所以,多核处理器做不到真正的指令级并行。
任务级并行,VC语言能做到,单片机C语言很难做到,并且运行不可靠!
分段级并行,多核能做到,汇编能做到。
为什么说单片机C语言只能编制普通程序呢?因为:C语言是顺序执行的,跳转多了之后,不但是编程者自己搞不清,编译器也会出错了!就是说:C语言编制跳转程序,先天不足!
C语言受制于语法结构,无法完成多任务编程。
汇编语言,没有语法限制,你想怎么编就怎么编。你想单任务,双任务,多任务都行了!

使用特权

评论回复
19
mmuuss586| | 2016-8-10 09:40 | 只看该作者
又不是完全的并行;

使用特权

评论回复
20
datouyuan| | 2016-8-10 10:14 | 只看该作者
nstel 发表于 2016-8-10 09:29
并行,可以是指令级并行,也可以是任务及并行,还可以是分段级并行!
指令级并行,多核处理器也做不到。就 ...

不懂你说什么.

不管是汇编 C VC,都是一种编程语言,最终都转换成机器码.不能说这个语言能做,那个语言不能做.

我觉得用汇编语言处理一些很简单的程序可以效率最高,但要处理复杂的程序,C和VC应该更好.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

粉丝